diff --git a/A01基础公司管理/U_CustInput.dfm b/A01基础公司管理/U_CustInput.dfm
index 0419b64..8fa49cb 100644
--- a/A01基础公司管理/U_CustInput.dfm
+++ b/A01基础公司管理/U_CustInput.dfm
@@ -3,13 +3,13 @@ inherited frmCustInput: TfrmCustInput
Top = 149
Caption = #23458#25143#36164#26009#24405#20837
ClientHeight = 673
- ClientWidth = 1210
+ ClientWidth = 1600
Font.Charset = GB2312_CHARSET
Font.Height = -16
OldCreateOrder = True
Position = poScreenCenter
OnClose = FormClose
- ExplicitWidth = 1226
+ ExplicitWidth = 1616
ExplicitHeight = 712
PixelsPerInch = 96
TextHeight = 21
@@ -17,7 +17,7 @@ inherited frmCustInput: TfrmCustInput
Tag = 1
Left = 0
Top = 0
- Width = 1210
+ Width = 1600
Height = 30
AutoSize = True
ButtonHeight = 30
@@ -30,6 +30,7 @@ inherited frmCustInput: TfrmCustInput
ParentColor = False
ShowCaptions = True
TabOrder = 0
+ ExplicitWidth = 1210
object ToolButton3: TToolButton
Left = 0
Top = 0
@@ -58,7 +59,7 @@ inherited frmCustInput: TfrmCustInput
object ScrollBox1: TScrollBox [1]
Left = 0
Top = 30
- Width = 1210
+ Width = 1600
Height = 255
Align = alTop
BevelInner = bvNone
@@ -67,7 +68,7 @@ inherited frmCustInput: TfrmCustInput
Ctl3D = False
ParentCtl3D = False
TabOrder = 1
- ExplicitTop = 31
+ ExplicitWidth = 1210
object Label2: TLabel
Left = 40
Top = 12
@@ -374,24 +375,26 @@ inherited frmCustInput: TfrmCustInput
object Panel1: TPanel [2]
Left = 0
Top = 285
- Width = 1210
+ Width = 1600
Height = 388
Align = alClient
Caption = 'Panel1'
TabOrder = 2
+ ExplicitWidth = 1210
object Panel3: TPanel
Left = 1
Top = 1
- Width = 748
+ Width = 1138
Height = 386
Align = alClient
Caption = 'Panel1'
TabOrder = 0
+ ExplicitWidth = 748
object ToolBar3: TToolBar
Tag = 1
Left = 1
Top = 1
- Width = 746
+ Width = 1136
Height = 30
AutoSize = True
ButtonHeight = 30
@@ -404,6 +407,7 @@ inherited frmCustInput: TfrmCustInput
ParentColor = False
ShowCaptions = True
TabOrder = 0
+ ExplicitWidth = 746
object ToolButton2: TToolButton
Left = 0
Top = 0
@@ -432,11 +436,12 @@ inherited frmCustInput: TfrmCustInput
object cxGrid2: TcxGrid
Left = 1
Top = 31
- Width = 746
+ Width = 1136
Height = 354
Align = alClient
BorderStyle = cxcbsNone
TabOrder = 1
+ ExplicitWidth = 746
object TV2: TcxGridDBTableView
Navigator.Buttons.CustomButtons = <>
Navigator.Buttons.Delete.Enabled = False
@@ -543,13 +548,14 @@ inherited frmCustInput: TfrmCustInput
end
end
object Panel2: TPanel
- Left = 749
+ Left = 1139
Top = 1
Width = 460
Height = 386
Align = alRight
Caption = 'Panel1'
TabOrder = 1
+ ExplicitLeft = 749
object cxGrid1: TcxGrid
Left = 1
Top = 31
diff --git a/A01基础公司管理/U_Customer.dfm b/A01基础公司管理/U_Customer.dfm
index b74d663..e9683af 100644
--- a/A01基础公司管理/U_Customer.dfm
+++ b/A01基础公司管理/U_Customer.dfm
@@ -3,13 +3,13 @@ inherited frmCustomer: TfrmCustomer
Top = 169
Caption = #23458#25143#36164#26009#31649#29702
ClientHeight = 537
- ClientWidth = 1167
+ ClientWidth = 1583
Color = clBtnFace
Font.Height = -16
FormStyle = fsMDIChild
Position = poScreenCenter
Visible = True
- ExplicitWidth = 1183
+ ExplicitWidth = 1599
ExplicitHeight = 576
PixelsPerInch = 96
TextHeight = 21
@@ -17,7 +17,7 @@ inherited frmCustomer: TfrmCustomer
Tag = 1
Left = 0
Top = 0
- Width = 1167
+ Width = 1583
Height = 30
AutoSize = True
ButtonHeight = 30
@@ -31,6 +31,7 @@ inherited frmCustomer: TfrmCustomer
ParentColor = False
ShowCaptions = True
TabOrder = 5
+ ExplicitWidth = 1167
object TBRafresh: TToolButton
Left = 0
Top = 0
@@ -131,7 +132,7 @@ inherited frmCustomer: TfrmCustomer
object Panel1: TPanel [1]
Left = 0
Top = 30
- Width = 1167
+ Width = 1583
Height = 62
Align = alTop
BevelInner = bvRaised
@@ -139,6 +140,7 @@ inherited frmCustomer: TfrmCustomer
ParentBackground = False
ParentColor = True
TabOrder = 6
+ ExplicitWidth = 1167
object Label3: TLabel
Left = 182
Top = 20
@@ -223,11 +225,12 @@ inherited frmCustomer: TfrmCustomer
object cxGrid1: TcxGrid [2]
Left = 0
Top = 120
- Width = 1167
+ Width = 1583
Height = 214
Align = alClient
PopupMenu = PopupMenu1
TabOrder = 2
+ ExplicitWidth = 1167
object Tv1: TcxGridDBTableView
PopupMenu = PopupMenu1
Navigator.Buttons.CustomButtons = <>
@@ -392,18 +395,20 @@ inherited frmCustomer: TfrmCustomer
object Panel2: TPanel [3]
Left = 0
Top = 334
- Width = 1167
+ Width = 1583
Height = 203
Align = alBottom
Caption = 'Panel2'
TabOrder = 3
+ ExplicitWidth = 1167
object cxGrid2: TcxGrid
Left = 1
Top = 1
- Width = 598
+ Width = 1014
Height = 201
Align = alClient
TabOrder = 0
+ ExplicitWidth = 598
object Tv2: TcxGridDBTableView
Navigator.Buttons.CustomButtons = <>
Navigator.Buttons.Delete.Enabled = False
@@ -436,6 +441,20 @@ inherited frmCustomer: TfrmCustomer
Options.Editing = False
Width = 76
end
+ object Tv2Column2: TcxGridDBColumn
+ Caption = #22320#22336
+ DataBinding.FieldName = 'mxaddress'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 111
+ end
+ object Tv2Column3: TcxGridDBColumn
+ Caption = #21306#22495
+ DataBinding.FieldName = 'mxarea'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 112
+ end
object cxGridDBColumn1: TcxGridDBColumn
Caption = #32852#31995#20154
DataBinding.FieldName = 'Contacts'
@@ -493,32 +512,19 @@ inherited frmCustomer: TfrmCustomer
Options.Editing = False
Width = 169
end
- object Tv2Column2: TcxGridDBColumn
- Caption = #22320#22336
- DataBinding.FieldName = 'mxaddress'
- DataBinding.IsNullValueType = True
- HeaderAlignmentHorz = taCenter
- Width = 77
- end
- object Tv2Column3: TcxGridDBColumn
- Caption = #21306#22495
- DataBinding.FieldName = 'mxarea'
- DataBinding.IsNullValueType = True
- HeaderAlignmentHorz = taCenter
- Width = 74
- end
end
object cxGridLevel2: TcxGridLevel
GridView = Tv2
end
end
object cxGrid3: TcxGrid
- Left = 599
+ Left = 1015
Top = 1
Width = 567
Height = 201
Align = alRight
TabOrder = 1
+ ExplicitLeft = 599
object Tv3: TcxGridDBTableView
Navigator.Buttons.CustomButtons = <>
Navigator.Buttons.Delete.Enabled = False
@@ -559,7 +565,7 @@ inherited frmCustomer: TfrmCustomer
object cxTabControl1: TcxTabControl [4]
Left = 0
Top = 92
- Width = 1167
+ Width = 1583
Height = 28
Align = alTop
TabOrder = 4
@@ -572,6 +578,7 @@ inherited frmCustomer: TfrmCustomer
#20840#37096)
LookAndFeel.Kind = lfUltraFlat
OnChange = cxTabControl1Change
+ ExplicitWidth = 1167
ClientRectRight = 0
ClientRectTop = 0
end
diff --git a/A05基础资料管理/BaseInfo.dpr b/A05基础资料管理/BaseInfo.dpr
index fccc880..7b53911 100644
--- a/A05基础资料管理/BaseInfo.dpr
+++ b/A05基础资料管理/BaseInfo.dpr
@@ -31,7 +31,8 @@ uses
U_globalVar in '..\..\..\public10\design\U_globalVar.pas',
U_WindowFormdesign in '..\..\..\public10\design\U_WindowFormdesign.pas',
uSZHN_JSON in '..\..\..\public10\ThreeFun\Fun\uSZHN_JSON.pas',
- U_printPdf in '..\..\..\public10\ThreeFun\Fun\U_printPdf.pas';
+ U_printPdf in '..\..\..\public10\ThreeFun\Fun\U_printPdf.pas',
+ U_EmployeeSel in '..\A00ͨô\U_EmployeeSel.pas' {frmEmployeeSel};
{$R *.res}
diff --git a/A05基础资料管理/BaseInfo.dproj b/A05基础资料管理/BaseInfo.dproj
index 7aac423..a216b04 100644
--- a/A05基础资料管理/BaseInfo.dproj
+++ b/A05基础资料管理/BaseInfo.dproj
@@ -198,6 +198,10 @@
+
+
+ dfm
+
Cfg_2
Base
diff --git a/A05基础资料管理/U_MachineInPut.dfm b/A05基础资料管理/U_MachineInPut.dfm
index 036cf71..46bbf03 100644
--- a/A05基础资料管理/U_MachineInPut.dfm
+++ b/A05基础资料管理/U_MachineInPut.dfm
@@ -18,9 +18,6 @@ inherited frmMachineInPut: TfrmMachineInPut
Height = 303
Align = alClient
TabOrder = 0
- ExplicitLeft = -8
- ExplicitTop = 71
- ExplicitHeight = 262
object Tv1: TcxGridDBTableView
Navigator.Buttons.CustomButtons = <>
ScrollbarAnnotations.CustomAnnotations = <>
@@ -63,6 +60,13 @@ inherited frmMachineInPut: TfrmMachineInPut
Caption = #21496#26426
DataBinding.FieldName = 'Driver'
DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxButtonEditProperties'
+ Properties.Buttons = <
+ item
+ Default = True
+ Kind = bkEllipsis
+ end>
+ Properties.OnButtonClick = Tv1Column2PropertiesButtonClick
HeaderAlignmentHorz = taCenter
Width = 226
end
diff --git a/A05基础资料管理/U_MachineInPut.pas b/A05基础资料管理/U_MachineInPut.pas
index 301e702..0090435 100644
--- a/A05基础资料管理/U_MachineInPut.pas
+++ b/A05基础资料管理/U_MachineInPut.pas
@@ -40,6 +40,7 @@ type
procedure TBSaveClick(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure TBAddClick(Sender: TObject);
+ procedure Tv1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
private
{ Private declarations }
function SaveCKData(): Boolean;
@@ -54,7 +55,7 @@ var
implementation
uses
- U_DataLink, U_RTFun, U_ZDYHelp;
+ U_DataLink, U_RTFun, U_ZDYHelp, U_EmployeeSel;
{$R *.dfm}
@@ -231,5 +232,33 @@ begin
WriteCxGrid(trim(self.Caption), Tv1, 'Ⱦɫֿ');
end;
+procedure TfrmMachineInPut.Tv1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
+begin
+ inherited;
+
+ try
+ frmEmployeeSel := TfrmEmployeeSel.Create(Application);
+ with frmEmployeeSel do
+ begin
+ FPost := '˾';
+ if ShowModal = 1 then
+ begin
+
+// FRCode := Trim(TSpeedButton(Sender).Hint);
+// FRName := Trim(TSpeedButton(Sender).Caption);
+ with self.CDS_Sub do
+ begin
+ Edit;
+ FieldByName('Driver').Value := FRName;
+ Post;
+ end;
+ end;
+ end;
+ finally
+ frmEmployeeSel.Free;
+ end;
+
+end;
+
end.
diff --git a/A05基础资料管理/U_MachineManage.dfm b/A05基础资料管理/U_MachineManage.dfm
index 6f1f0b1..04bcddb 100644
--- a/A05基础资料管理/U_MachineManage.dfm
+++ b/A05基础资料管理/U_MachineManage.dfm
@@ -18,7 +18,7 @@ inherited frmMachineManage: TfrmMachineManage
Height = 30
AutoSize = True
ButtonHeight = 30
- ButtonWidth = 67
+ ButtonWidth = 59
Caption = 'ToolBar1'
Color = clSkyBlue
DisabledImages = DataLink_BaseInfo.cxImageList_bar
@@ -36,7 +36,7 @@ inherited frmMachineManage: TfrmMachineManage
OnClick = TBRafreshClick
end
object ToolButton2: TToolButton
- Left = 71
+ Left = 63
Top = 0
AutoSize = True
Caption = #36807#28388
@@ -44,15 +44,15 @@ inherited frmMachineManage: TfrmMachineManage
Visible = False
end
object ToolButton4: TToolButton
- Left = 142
+ Left = 126
Top = 0
AutoSize = True
- Caption = #22686#34892
+ Caption = #26032#22686
ImageIndex = 9
OnClick = ToolButton4Click
end
object ToolButton6: TToolButton
- Left = 213
+ Left = 189
Top = 0
AutoSize = True
Caption = #20462#25913
@@ -60,7 +60,7 @@ inherited frmMachineManage: TfrmMachineManage
OnClick = ToolButton6Click
end
object ToolButton5: TToolButton
- Left = 284
+ Left = 252
Top = 0
AutoSize = True
Caption = #21024#34892
@@ -68,7 +68,7 @@ inherited frmMachineManage: TfrmMachineManage
OnClick = ToolButton5Click
end
object ToolButton3: TToolButton
- Left = 355
+ Left = 315
Top = 0
AutoSize = True
Caption = #25171#21360
@@ -76,7 +76,7 @@ inherited frmMachineManage: TfrmMachineManage
OnClick = ToolButton3Click
end
object ToolButton1: TToolButton
- Left = 426
+ Left = 378
Top = 0
AutoSize = True
Caption = #23548#20986
@@ -84,7 +84,7 @@ inherited frmMachineManage: TfrmMachineManage
OnClick = ToolButton1Click
end
object TBClose: TToolButton
- Left = 497
+ Left = 441
Top = 0
AutoSize = True
Caption = #20851#38381
@@ -167,6 +167,7 @@ inherited frmMachineManage: TfrmMachineManage
Caption = #21496#26426
DataBinding.FieldName = 'Driver'
DataBinding.IsNullValueType = True
+ Options.Editing = False
end
end
object cxGridLevel1: TcxGridLevel
@@ -202,6 +203,9 @@ inherited frmMachineManage: TfrmMachineManage
Width = 158
end
end
+ inherited cxProgressBar2: TcxProgressBar
+ ExplicitHeight = 29
+ end
inherited ADOQueryBaseCmd: TADOQuery
Connection = DataLink_BaseInfo.ADOLink
Left = 113
diff --git a/A05基础资料管理/U_MachineManage.pas b/A05基础资料管理/U_MachineManage.pas
index 98a3995..42a3e15 100644
--- a/A05基础资料管理/U_MachineManage.pas
+++ b/A05基础资料管理/U_MachineManage.pas
@@ -233,20 +233,7 @@ begin
finally
frmMachineInPut.Free;
end;
-// VNO.SetFocus;
-// if GetLSNo(ADOQueryCmd, maxId, 'M', 'Bs_Vehicle', 4, 1) = False then
-// begin
-// Application.MessageBox('ȡʧܣ', 'ʾ', 0);
-// Exit;
-// end;
-// with ADOQueryCmd do
-// begin
-// Close;
-// sql.Clear;
-// sql.Add('insert into Bs_Vehicle(Filler) values(' + quotedstr(Trim(dname)) + ')');
-// ExecSQL;
-// end;
-// InitGrid();
+
end;
procedure TfrmMachineManage.ToolButton5Click(Sender: TObject);
diff --git a/T03贸易布匹检验/AES.pas b/T03贸易布匹检验/AES.pas
new file mode 100644
index 0000000..3b8432d
--- /dev/null
+++ b/T03贸易布匹检验/AES.pas
@@ -0,0 +1,317 @@
+(**************************************************)
+
+unit AES;
+
+interface
+
+uses
+ SysUtils, Classes, Math, ElAES;
+
+type
+ TKeyBit = (kb128, kb192, kb256);
+
+function StrToHex(Value: string): string;
+function HexToStr(Value: string): string;
+function EncryptString(Value: string; Key: string;
+ KeyBit: TKeyBit = kb128): string;
+function DecryptString(Value: string; Key: string;
+ KeyBit: TKeyBit = kb128): string;
+function EncryptStream(Stream: TStream; Key: string;
+ KeyBit: TKeyBit = kb128): TStream;
+function DecryptStream(Stream: TStream; Key: string;
+ KeyBit: TKeyBit = kb128): TStream;
+procedure EncryptFile(SourceFile, DestFile: string;
+ Key: string; KeyBit: TKeyBit = kb128);
+procedure DecryptFile(SourceFile, DestFile: string;
+ Key: string; KeyBit: TKeyBit = kb128);
+
+implementation
+
+function StrToHex(Value: string): string;
+var
+ I: Integer;
+begin
+ Result := '';
+ for I := 1 to Length(Value) do
+ Result := Result + IntToHex(Ord(Value[I]), 2);
+end;
+
+function HexToStr(Value: string): string;
+var
+ I: Integer;
+begin
+ Result := '';
+ for I := 1 to Length(Value) do
+ begin
+ if ((I mod 2) = 1) then
+ Result := Result + Chr(StrToInt('0x'+ Copy(Value, I, 2)));
+ end;
+end;
+
+{ -- ַܺ Ĭϰ 128 λܳ -- }
+function EncryptString(Value: string; Key: string;
+ KeyBit: TKeyBit = kb128): string;
+var
+ SS, DS: TStringStream;
+ Size: Int64;
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+begin
+ Result := '';
+ SS := TStringStream.Create(Value);
+ DS := TStringStream.Create('');
+ try
+ Size := SS.Size;
+ DS.WriteBuffer(Size, SizeOf(Size));
+ { -- 128 λܳΪ 16 ַ -- }
+ if KeyBit = kb128 then
+ begin
+ FillChar(AESKey128, SizeOf(AESKey128), 0 );
+ Move(PChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
+ EncryptAESStreamECB(SS, 0, AESKey128, DS);
+ end;
+ { -- 192 λܳΪ 24 ַ -- }
+ if KeyBit = kb192 then
+ begin
+ FillChar(AESKey192, SizeOf(AESKey192), 0 );
+ Move(PChar(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
+ EncryptAESStreamECB(SS, 0, AESKey192, DS);
+ end;
+ { -- 256 λܳΪ 32 ַ -- }
+ if KeyBit = kb256 then
+ begin
+ FillChar(AESKey256, SizeOf(AESKey256), 0 );
+ Move(PChar(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
+ EncryptAESStreamECB(SS, 0, AESKey256, DS);
+ end;
+ Result := StrToHex(DS.DataString);
+ finally
+ SS.Free;
+ DS.Free;
+ end;
+end;
+
+{ -- ַܺ Ĭϰ 128 λܳ -- }
+function DecryptString(Value: string; Key: string;
+ KeyBit: TKeyBit = kb128): string;
+var
+ SS, DS: TStringStream;
+ Size: Int64;
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+begin
+ Result := '';
+ SS := TStringStream.Create(HexToStr(Value));
+ DS := TStringStream.Create('');
+ try
+ Size := SS.Size;
+ SS.ReadBuffer(Size, SizeOf(Size));
+ { -- 128 λܳΪ 16 ַ -- }
+ if KeyBit = kb128 then
+ begin
+ FillChar(AESKey128, SizeOf(AESKey128), 0 );
+ Move(PChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
+ DecryptAESStreamECB(SS, SS.Size - SS.Position, AESKey128, DS);
+ end;
+ { -- 192 λܳΪ 24 ַ -- }
+ if KeyBit = kb192 then
+ begin
+ FillChar(AESKey192, SizeOf(AESKey192), 0 );
+ Move(PChar(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
+ DecryptAESStreamECB(SS, SS.Size - SS.Position, AESKey192, DS);
+ end;
+ { -- 256 λܳΪ 32 ַ -- }
+ if KeyBit = kb256 then
+ begin
+ FillChar(AESKey256, SizeOf(AESKey256), 0 );
+ Move(PChar(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
+ DecryptAESStreamECB(SS, SS.Size - SS.Position, AESKey256, DS);
+ end;
+ Result := DS.DataString;
+ finally
+ SS.Free;
+ DS.Free;
+ end;
+end;
+
+{ -- ܺ Ĭϰ 128 λܳ -- }
+function EncryptStream(Stream: TStream; Key: string;
+ KeyBit: TKeyBit = kb128): TStream;
+var
+ Count: Int64;
+ OutStrm: TStream;
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+begin
+ OutStrm := TStream.Create;
+ Stream.Position := 0;
+ Count := Stream.Size;
+ OutStrm.Write(Count, SizeOf(Count));
+ try
+ { -- 128 λܳΪ 16 ַ -- }
+ if KeyBit = kb128 then
+ begin
+ FillChar(AESKey128, SizeOf(AESKey128), 0 );
+ Move(PChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
+ EncryptAESStreamECB(Stream, 0, AESKey128, OutStrm);
+ end;
+ { -- 192 λܳΪ 24 ַ -- }
+ if KeyBit = kb192 then
+ begin
+ FillChar(AESKey192, SizeOf(AESKey192), 0 );
+ Move(PChar(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
+ EncryptAESStreamECB(Stream, 0, AESKey192, OutStrm);
+ end;
+ { -- 256 λܳΪ 32 ַ -- }
+ if KeyBit = kb256 then
+ begin
+ FillChar(AESKey256, SizeOf(AESKey256), 0 );
+ Move(PChar(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
+ EncryptAESStreamECB(Stream, 0, AESKey256, OutStrm);
+ end;
+ Result := OutStrm;
+ finally
+ OutStrm.Free;
+ end;
+end;
+
+{ -- ܺ Ĭϰ 128 λܳ -- }
+function DecryptStream(Stream: TStream; Key: string;
+ KeyBit: TKeyBit = kb128): TStream;
+var
+ Count, OutPos: Int64;
+ OutStrm: TStream;
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+begin
+ OutStrm := TStream.Create;
+ Stream.Position := 0;
+ OutPos :=OutStrm.Position;
+ Stream.ReadBuffer(Count, SizeOf(Count));
+ try
+ { -- 128 λܳΪ 16 ַ -- }
+ if KeyBit = kb128 then
+ begin
+ FillChar(AESKey128, SizeOf(AESKey128), 0 );
+ Move(PChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
+ DecryptAESStreamECB(Stream, Stream.Size - Stream.Position,
+ AESKey128, OutStrm);
+ end;
+ { -- 192 λܳΪ 24 ַ -- }
+ if KeyBit = kb192 then
+ begin
+ FillChar(AESKey192, SizeOf(AESKey192), 0 );
+ Move(PChar(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
+ DecryptAESStreamECB(Stream, Stream.Size - Stream.Position,
+ AESKey192, OutStrm);
+ end;
+ { -- 256 λܳΪ 32 ַ -- }
+ if KeyBit = kb256 then
+ begin
+ FillChar(AESKey256, SizeOf(AESKey256), 0 );
+ Move(PChar(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
+ DecryptAESStreamECB(Stream, Stream.Size - Stream.Position,
+ AESKey256, OutStrm);
+ end;
+ OutStrm.Size := OutPos + Count;
+ OutStrm.Position := OutPos;
+ Result := OutStrm;
+ finally
+ OutStrm.Free;
+ end;
+end;
+
+{ -- ļܺ Ĭϰ 128 λܳ -- }
+procedure EncryptFile(SourceFile, DestFile: string;
+ Key: string; KeyBit: TKeyBit = kb128);
+var
+ SFS, DFS: TFileStream;
+ Size: Int64;
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+begin
+ SFS := TFileStream.Create(SourceFile, fmOpenRead);
+ try
+ DFS := TFileStream.Create(DestFile, fmCreate);
+ try
+ Size := SFS.Size;
+ DFS.WriteBuffer(Size, SizeOf(Size));
+ { -- 128 λܳΪ 16 ַ -- }
+ if KeyBit = kb128 then
+ begin
+ FillChar(AESKey128, SizeOf(AESKey128), 0 );
+ Move(PChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
+ EncryptAESStreamECB(SFS, 0, AESKey128, DFS);
+ end;
+ { -- 192 λܳΪ 24 ַ -- }
+ if KeyBit = kb192 then
+ begin
+ FillChar(AESKey192, SizeOf(AESKey192), 0 );
+ Move(PChar(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
+ EncryptAESStreamECB(SFS, 0, AESKey192, DFS);
+ end;
+ { -- 256 λܳΪ 32 ַ -- }
+ if KeyBit = kb256 then
+ begin
+ FillChar(AESKey256, SizeOf(AESKey256), 0 );
+ Move(PChar(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
+ EncryptAESStreamECB(SFS, 0, AESKey256, DFS);
+ end;
+ finally
+ DFS.Free;
+ end;
+ finally
+ SFS.Free;
+ end;
+end;
+
+{ -- ļܺ Ĭϰ 128 λܳ -- }
+procedure DecryptFile(SourceFile, DestFile: string;
+ Key: string; KeyBit: TKeyBit = kb128);
+var
+ SFS, DFS: TFileStream;
+ Size: Int64;
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+begin
+ SFS := TFileStream.Create(SourceFile, fmOpenRead);
+ try
+ SFS.ReadBuffer(Size, SizeOf(Size));
+ DFS := TFileStream.Create(DestFile, fmCreate);
+ try
+ { -- 128 λܳΪ 16 ַ -- }
+ if KeyBit = kb128 then
+ begin
+ FillChar(AESKey128, SizeOf(AESKey128), 0 );
+ Move(PChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
+ DecryptAESStreamECB(SFS, SFS.Size - SFS.Position, AESKey128, DFS);
+ end;
+ { -- 192 λܳΪ 24 ַ -- }
+ if KeyBit = kb192 then
+ begin
+ FillChar(AESKey192, SizeOf(AESKey192), 0 );
+ Move(PChar(Key)^, AESKey192, Min(SizeOf(AESKey192), Length(Key)));
+ DecryptAESStreamECB(SFS, SFS.Size - SFS.Position, AESKey192, DFS);
+ end;
+ { -- 256 λܳΪ 32 ַ -- }
+ if KeyBit = kb256 then
+ begin
+ FillChar(AESKey256, SizeOf(AESKey256), 0 );
+ Move(PChar(Key)^, AESKey256, Min(SizeOf(AESKey256), Length(Key)));
+ DecryptAESStreamECB(SFS, SFS.Size - SFS.Position, AESKey256, DFS);
+ end;
+ DFS.Size := Size;
+ finally
+ DFS.Free;
+ end;
+ finally
+ SFS.Free;
+ end;
+end;
+end.
diff --git a/T03贸易布匹检验/AllSkins.skinres b/T03贸易布匹检验/AllSkins.skinres
new file mode 100644
index 0000000..bfaa46e
Binary files /dev/null and b/T03贸易布匹检验/AllSkins.skinres differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/entries b/T03贸易布匹检验/DbPanel/.svn/entries
new file mode 100644
index 0000000..8a3498e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/entries
@@ -0,0 +1,538 @@
+10
+
+dir
+4312
+svn://192.168.71.68/ftsource/mgg/%E9%A9%AC%E5%9B%BD%E9%92%A2%E5%BC%80%E5%8F%91%E4%BB%A3%E7%A0%81/%E9%A1%B9%E7%9B%AE%E4%BB%A3%E7%A0%81/%E5%AF%8C%E5%BC%BA%E7%9A%AE%E5%A1%91/%E4%BA%BA%E4%BA%8B/KQEnter(%E8%80%83%E5%8B%A4EXE)/DbPanel
+svn://192.168.71.68/ftsource
+
+
+
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ef2f1445-a04c-0b43-b547-5002d5acc4ff
+
+dbpanel.dcu
+file
+
+
+
+
+2005-06-29T10:14:56.000000Z
+8b826c9850c49392add3d17d2a732535
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+17512
+
+L_DBDateTime.dcr
+file
+
+
+
+
+1999-12-04T03:57:56.000000Z
+8e404868006b2df037d388cd91c03f5b
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2164
+
+JKFootpanel.dcu
+file
+
+
+
+
+2006-02-07T01:38:42.000000Z
+3dfed577d2b0cbe7a26ce0543bb78500
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+12497
+
+Dbpanel.pas
+file
+
+
+
+
+2005-06-29T10:14:26.000000Z
+f90d83413145b739d30cdf376104bf2d
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+12415
+
+L_DBDateTime.dcu
+file
+
+
+
+
+2006-07-20T13:00:32.000000Z
+209b4061eeeb5526ddf939cdde0f62c0
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6578
+
+JKFootpanel.pas
+file
+
+
+
+
+2005-12-31T09:01:50.000000Z
+3cedd12399fd69e1f190208ae53a85e8
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+10303
+
+JkPanel.dcu
+file
+
+
+
+
+2006-02-07T01:38:42.000000Z
+31c43b5168a7049bf83acd8bd7f45548
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+42037
+
+L_DBDateTime.pas
+file
+
+
+
+
+2000-02-16T08:06:06.000000Z
+d74c282fada89437bf2713438c9d511a
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3629
+
+MovePanel.dcu
+file
+
+
+
+
+2006-07-20T13:00:32.000000Z
+24189494b4f07ee2147946e7a732a8e8
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4292
+
+AutoPanel.dcu
+file
+
+
+
+
+2006-07-19T07:05:22.000000Z
+f2a4b17861f738dd07402899b1fba98b
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+33997
+
+dsr.dcu
+file
+
+
+
+
+2011-01-10T08:00:04.700500Z
+7dc76d775b292ca12e4e18bd2cf82a62
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6467
+
+JkPanel.pas
+file
+
+
+
+
+2006-02-07T01:35:12.000000Z
+895ae606414168977b3a1d3fb99a0a87
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+39429
+
+MovePanel.pas
+file
+
+
+
+
+2005-07-01T01:00:14.000000Z
+a7c721193dc82acd02386489752554fd
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1998
+
+AutoPanel.pas
+file
+
+
+
+
+2005-10-19T01:47:14.000000Z
+ccea78917a93c0ff2f549dd98ae9e101
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+24603
+
+dsr.pas
+file
+
+
+
+
+2006-02-06T07:55:00.000000Z
+a2af085bce0f5fd3cbf187eb65d5e17d
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+9279
+
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/AutoPanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/AutoPanel.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/AutoPanel.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/JKFootpanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/JKFootpanel.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/JKFootpanel.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/JkPanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/JkPanel.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/JkPanel.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/L_DBDateTime.dcr.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/L_DBDateTime.dcr.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/L_DBDateTime.dcr.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/L_DBDateTime.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/L_DBDateTime.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/L_DBDateTime.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/MovePanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/MovePanel.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/MovePanel.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/dbpanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/dbpanel.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/dbpanel.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/prop-base/dsr.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/prop-base/dsr.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/prop-base/dsr.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/AutoPanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/AutoPanel.dcu.svn-base
new file mode 100644
index 0000000..a463adb
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/AutoPanel.dcu.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/AutoPanel.pas.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/AutoPanel.pas.svn-base
new file mode 100644
index 0000000..6b99df7
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/text-base/AutoPanel.pas.svn-base
@@ -0,0 +1,707 @@
+unit AutoPanel;
+
+interface
+uses
+ Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
+ ExtCtrls,dbctrls,stdctrls,db,ADODB,ComCtrls,Variants,Gauges,
+ SqlExpr,DBGrids,MovePanel;
+
+type
+ TEditorstyle = (TsMemo,Tscombox,Tsedit);
+
+type
+ TAutoPanel = class(TPanel)
+ private
+ { Private declarations }
+ FEditorstyle:Teditorstyle;
+ FLeft :Integer;
+ FTop :Integer;
+ maxTextLen :Integer;
+ maxLabelLen :Integer;
+ FTitleVisible :Boolean;
+ FDataReadOnly :Boolean;
+ FPageCount :Integer;
+
+ FPass_Grid :TDBGrid;
+ FP_Move :TMovePanel;
+ FP_Parent :TPanel;
+
+ FPageControl: TPageControl; {ҳؼ}
+ FTabSheets :array of TTabSheet;
+ FScrollBox :array of TScrollBox; {ؼ}
+ FLineHeight :Integer;
+
+ //ؼ̬
+ MemoEditors :array of TMemo;
+ comEditors :array of TCombobox;
+ edEditors :array of Tedit;
+ ProgressEditor :array of Tedit;
+ Labels :array of TLabel; //ֶα⣬̬
+ ProgressBars :array of TGauge;
+ Shapes :array of TShape;
+ FDataSource :TDataSource; // Դ
+ FDataField_A :String; // DataField
+ FDataField_B :String; // DataField
+ FDataField_C :String; // DataField
+ FDataField_D :String; // DataField
+ FDataField_E :String; // DataField
+ FDataField_F :String; // DataField
+ FStore :String;
+ Fcnnstr :String;
+ FListSql :String;
+ FBerthFieldName :String;
+ FStoreFieldName :String;
+ FBerthTableName :String;
+
+ FColumns :Integer; //ʾ
+ tmpado :TadoDataset;
+ tmpDs :TDataSource;
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender:TObject; var Key :Word; Shift:TShiftState);
+ procedure AKeyPress(Sender:TObject; var Key :Char);
+ procedure AProgressEditorChange(Sender :TObject);
+ procedure inti_Grid(sender :TObject);
+ procedure LabelsClick(Sender: TObject);
+ procedure FP_MovePanelDblClick(Sender: TObject);
+ function comEditor(Index :Integer):TComboBox;
+ function edEditor(Index :Integer):Tedit;
+ function MemoEditor(Index :Integer) :TMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner:TComponent); override;
+ destructor Destroy; override;
+ procedure Setedit(Value :TEditorstyle);
+ procedure CreateEditors(var DS :TDataSource; cnnstr :String); //ֶεؼ
+ procedure ClearHits(ItemIndex :Integer);
+ procedure AddHits(ItemIndex:Integer; Hits :array of string);
+
+ { Public declarations }
+ published
+
+ property LimitLeft :Integer read FLeft write FLeft default 10;
+ property LimitTop :Integer read FTop write FTop default 10;
+ property Editorstyle :TEditorstyle read FEditorstyle write Setedit default TsMemo;
+
+ property EditorWidth :Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth :Integer read maxLabelLen write maxLabelLen default 100;
+ property TitleVisible :Boolean read FTitleVisible write FTitleVisible default True;
+ property DataReadOnly :Boolean read FDataReadOnly write FDataReadOnly; //default True;
+ property LineHeight :Integer read FLineHeight write FLineHeight default 15;
+ property DataSource :TDataSource read FDataSource write FDataSource; //Դ
+ property DataField_Editor :String read FDataField_A write FDataField_A;
+ property DataField_Title :String read FDataField_B write FDataField_B;
+ property DataField_Progress :String read FDataField_C write FDataField_C;
+ property DataField_BerthArea :String read FDataField_D write FDataField_D;
+ property DataField_IconLeft :String read FDataField_E write FDataField_E;
+ property DataField_IconTop :String read FDataField_F write FDataField_F;
+
+ property Data_BerthListSql :String read FListSql write FListSql;
+ property Data_BerthField :String read FBerthFieldName write FBerthFieldName;
+ property Data_StoreField :String read FStoreFieldName write FStoreFieldName;
+
+ property Data_BerthTable :String read FBerthTableName write FBerthTableName;
+ property Store_Name :String read FStore write FStore;
+ property Columns :Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TAutoPanel]);
+end;
+
+procedure TAutoPanel.Setedit(Value :TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TAutoPanel.AddHits(ItemIndex :Integer; Hits :array of string);
+var
+ m,n,i :Integer;
+begin
+
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:= 0 to m - 1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TAutoPanel.AKeyDown(Sender :TObject; var Key :Word; Shift :TShiftState);
+begin
+ //
+end;
+
+procedure TAutoPanel.AProgressEditorChange(Sender :TObject);
+begin
+ //
+end;
+
+procedure TAutoPanel.AKeyPress(Sender :TObject; var Key :Char);
+begin
+ if (Sender is TComboBox) or (Sender is Tedit) or (Sender is TMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TAutoPanel.ClearHits(ItemIndex :Integer);
+var
+ n :Integer;
+begin
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+constructor TAutoPanel.Create(AOwner :TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft := 20;
+ FTop := 20;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+ FTitleVisible := True;
+ FDataReadOnly := True;
+end;
+
+{ ֶεؼķ}
+procedure TAutoPanel.CreateEditors(var DS :TDataSource; cnnstr :String);
+
+var
+ i,j,n,This_Index,TextHeight :Integer;
+ tmp_col0,Tmp_Row0,tmp_col1,Tmp_Row1 :Integer;
+ XXX :TStringList;
+ tmpFlag :Boolean;
+begin
+ if (Store_Name = '')
+ or (Data_BerthTable = '')
+ or (DataField_BerthArea = '') then
+ exit;
+ { ͷȫؼڴ}
+ FreeEditors;
+
+ if DS = nil then exit;
+ if DataSource = nil then FDataSource := Ds;
+ if not DataSource.DataSet.Active then exit;
+ if (DataSource.DataSet is TAdoDataSet) = False then exit;
+ FPageCount := 0;
+ tmp_col1 := -1;
+ Tmp_Row1 := 0;
+
+ n := DataSource.DataSet.RecordCount;
+ if n <= 0 then exit;
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+
+ { ڴ}
+ SetLength(Labels,n);
+ SetLength(ProgressBars,n);
+ SetLength(ProgressEditor,n);
+ SetLength(Shapes,n);
+ if Columns = 0 then Columns := 6;
+ try
+ tmpado := TadoDataset.Create(Owner);
+ tmpDs := TDatasource.Create(Owner);
+ tmpDs.DataSet := tmpado;
+ with tmpado do
+ begin
+ Active := False;
+ Fcnnstr := cnnstr;
+ tmpado.ConnectionString := Fcnnstr;
+ //tmpado.Connection := (DataSource.DataSet as TAdoDataset).Connection;
+ tmpado.CommandText := ' Select '+DataField_BerthArea+' '
+ + ' from '+Data_BerthTable+' where '+DataField_BerthArea+' is not null'
+ + ' and '+Data_StoreField+' = '''+Store_Name+''''
+ + ' Group by '+DataField_BerthArea+' order by '+DataField_BerthArea+'';
+ Active := True;
+ FPageCount := RecordCount;
+ if FPageCount = 0 then exit;
+
+ first;
+ // PageControl
+ FPageControl := TPageControl.Create(Owner);
+ FPageControl.Parent := Self;
+ FPageControl.Font.Name := '';
+ FPageControl.Font.Size := 9;
+ FPageControl.Align := alClient;
+ FPageControl.Visible := False;
+
+ { ڴ}
+ setlength(FTabSheets,FPageCount+1);
+ setlength(FScrollBox,FPageCount+1);
+ XXX := TStringList.Create();
+ for j := 0 to FPageCount do
+ begin
+ { FPageControlҳ}
+ FTabSheets[j] := TTabSheet.Create(Owner);
+ FTabSheets[j].Parent := FPageControl;
+ FTabSheets[j].ParentFont := True;
+ FTabSheets[j].PageControl := FPageControl;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].PageIndex := j;
+
+ if j < FPageCount then
+ begin
+ FTabSheets[j].Caption := '' + trim(fieldByName(DataField_BerthArea).AsString);
+ FTabSheets[j].Hint := trim(fieldByName(DataField_BerthArea).AsString);
+ XXX.Append(trim(fieldByName(DataField_BerthArea).AsString));
+ end
+ else
+ begin
+ FTabSheets[j].Caption := 'δָ';
+ FTabSheets[j].Hint := '';
+ XXX.Append('δָ');
+ end;
+ FTabSheets[j].ShowHint := False;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].Align := alClient;
+
+ //
+ FScrollBox[j] := TScrollBox.Create(Owner);
+ FScrollBox[j].Visible := True;
+ FScrollBox[j].Parent := FTabSheets[j];
+ FScrollBox[j].Color := ClBlack;//clTeal;
+ FScrollBox[j].Align := alClient;
+ FScrollBox[j].Hint := FTabSheets[j].Hint;
+ FScrollBox[j].ShowHint := False;
+
+ next;
+ end;
+
+ end;
+
+ if FEditorstyle = Tscombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = Tsedit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ //DataField_BerthArea
+ if DataSource.DataSet.Fieldbyname(DataField_BerthArea).AsVariant = null then
+ This_Index := FPageCount
+ else
+ This_Index := XXX.IndexOf(trim(DataSource.DataSet.Fieldbyname(DataField_BerthArea).Asstring));
+
+ tmpFlag := False;
+ if DataSource.DataSet.Fieldbyname(DataField_IconLeft).AsVariant <> null then
+ tmp_col0 := DataSource.DataSet.Fieldbyname(DataField_IconLeft).Asinteger -1
+ else
+ begin
+ tmpFlag := True;
+ if tmp_col1 = Columns -1 then
+ begin
+ tmp_col1 := 0;
+ tmp_Row1 := tmp_Row1 +1;
+ end
+ else
+ tmp_col1 := tmp_col1 + 1;
+ tmp_col0 := tmp_col1;
+ This_Index := FPageCount;
+ end;
+
+ if DataSource.DataSet.Fieldbyname(DataField_IconTop).AsVariant <> null then
+ tmp_Row0 := DataSource.DataSet.Fieldbyname(DataField_IconTop).Asinteger - 1
+ else
+ begin
+ if not tmpFlag then
+ begin
+ if tmp_col1 = Columns - 1 then
+ begin
+ tmp_col1 := 0;
+ tmp_Row1 := tmp_Row1 +1;
+ end
+ else
+ tmp_col1 := tmp_col1 + 1;
+ end;
+ tmp_Row0 := tmp_Row1;
+ This_Index := FPageCount;
+ end;
+ { }
+ Labels[i] := TLabel.Create(owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := (FScrollBox[This_Index] as TScrollBox); // FScrollBox[This_Index];
+ Labels[i].Font.Name := '';
+ Labels[i].Font.Size := 9;
+ Labels[i].Font.Color := ClBlue;
+ Labels[i].OnClick := LabelsClick;
+ //Labels[i].Font.Style := [FsBold];
+ Labels[i].Transparent := True;
+ if DataSource.DataSet.Fieldbyname(DataField_Title).AsVariant <> null then
+ Labels[i].caption := DataSource.DataSet.Fieldbyname(DataField_Title).AsString
+ else
+ Labels[i].caption := '';
+ Labels[i].Hint := 'λ[' + Labels[i].caption + ']';
+ Labels[i].ShowHint := True;
+ if FEditorstyle = TsMemo then
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*3+30) + 2;
+ Labels[i].Left := FLeft + (maxLabelLen + 40) * tmp_Col0 + 10;
+ Labels[i].Width := maxLabelLen;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*2+30) + 2;
+ Labels[i].Left := FLeft + (maxLabelLen + 30) * tmp_Col0 + 10;
+ Labels[i].Width := maxLabelLen;
+ end;
+
+ { ݶ}
+ ProgressEditor[i] := Tedit.Create(Owner);
+ ProgressEditor[i].visible := False;
+ ProgressEditor[i].Parent := FScrollBox[This_Index];
+ if DataSource.DataSet.Fieldbyname(DataField_Progress).AsVariant <> null then
+ ProgressEditor[i].Text := DataSource.DataSet.Fieldbyname(DataField_Progress).AsString
+ else
+ ProgressEditor[i].Text := '0';
+ ProgressEditor[i].OnChange := AProgressEditorChange;
+
+ { Ϣʾݶ}
+ if FEditorstyle = Tscombox then
+ begin
+ comEditors[i] := TComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox[This_Index]; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+20;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ comEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := True;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkHorizontalBar;
+ ProgressBars[i].Left := comEditors[i].Left;
+ ProgressBars[i].Width := comEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := comEditors[i].Top+comEditors[i].height+2;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ edEditors[i] := Tedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox[This_Index];
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+20;
+ edEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ edEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := True;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkHorizontalBar;
+ ProgressBars[i].Left := edEditors[i].Left;
+ ProgressBars[i].Width := edEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := edEditors[i].Top+edEditors[i].height+2;;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end
+ else
+ begin
+ MemoEditors[i] := Tmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox[This_Index];
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+20;
+ MemoEditors[i].Height := 60;
+ MemoEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ MemoEditors[i].Lines.Add(DataSource.DataSet.Fieldbyname(DataField_Editor).AsString);
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := False;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkVerticalBar;
+ ProgressBars[i].Left := MemoEditors[i].Left + MemoEditors[i].Width +1;
+ ProgressBars[i].Width := 10;
+ ProgressBars[i].Height := MemoEditors[i].Height;
+ ProgressBars[i].Top := MemoEditors[i].Top;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end;
+ if ProgressBars[i].Progress <= 20 then
+ ProgressBars[i].ForeColor := RGB(48,48,96)
+ else if (ProgressBars[i].Progress > 20) and (ProgressBars[i].Progress <= 40) then
+ ProgressBars[i].ForeColor := RGB(48,48,144)
+ else if (ProgressBars[i].Progress > 40) and (ProgressBars[i].Progress <= 60) then
+ ProgressBars[i].ForeColor := RGB(96,48,144)
+ else if (ProgressBars[i].Progress > 60) and (ProgressBars[i].Progress <= 80) then
+ ProgressBars[i].ForeColor := RGB(144,48,144)
+ else if ProgressBars[i].Progress > 80 then
+ ProgressBars[i].ForeColor := RGB(200,48,48);
+
+ Shapes[i] := TShape.Create(Owner);
+ Shapes[i].Parent := FScrollBox[This_Index];
+ Shapes[i].Left := Labels[i].Left - 10;
+ Shapes[i].top := Labels[i].Top - 10;
+ if FEditorstyle = TsMemo then
+ begin
+ Shapes[i].height := ProgressBars[i].height + Labels[i].height +20 +10;
+ Shapes[i].Width := (ProgressBars[i].left - Labels[i].left) + ProgressBars[i].Width + 20;
+ end
+ else
+ begin
+ Shapes[i].height := (ProgressBars[i].Top - Labels[i].Top) + ProgressBars[i].Height + 20;
+ Shapes[i].Width := Labels[i].Width +20;
+ end;
+ Shapes[i].Brush.Color := clSkyBlue;
+ Shapes[i].Visible := True;
+ Shapes[i].SendToBack;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ tmpado.Close;
+ XXX.Free;
+ if FPageControl.PageCount > 0 then
+ begin
+ FPageControl.ActivePageIndex := FPageControl.PageCount-1;
+ FPageControl.ActivePageIndex := 0;
+ end;
+ Finally
+ FPageControl.Visible := True;
+ end;
+end;
+
+destructor TAutoPanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TAutoPanel.comEditor(Index :Integer) :TComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TAutoPanel.edEditor(Index :Integer) :Tedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TAutoPanel.MemoEditor(Index :Integer) :TMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+procedure TAutoPanel.inti_Grid(sender :TObject);
+begin
+ try
+ // FP_Parent
+ FP_Parent := TPanel.Create(Owner);
+ with FP_Parent Do
+ begin
+ Parent := Self;
+ Visible := False;
+ Font.Name := '';
+ Font.Size := 9;
+ Font.Style:= [fsBold];
+ Align := AlNone;
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ Width := 380;
+ Height := 250;
+ try
+ Left := round(((Sender as Tlabel).Parent.Width-380)/2);
+ Top := round(((Sender as Tlabel).Parent.height-250)/2);
+ except
+ Left := 0;
+ Top := 0;
+ end;
+ end;
+
+ FP_Move := TMovePanel.Create(Owner);
+ with FP_Move do
+ begin
+ Parent := FP_Parent;
+ ParentFont := true;
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ Height := 26;
+ Align := AlTop;
+ Color := clSkyBlue;
+ Caption := '';
+ OnDblClick := FP_MovePanelDblClick;
+ Visible := True;
+ end;
+
+ FPass_Grid := TDBGrid.Create(Owner);
+ with FPass_Grid do
+ begin
+ Parent := FP_Parent;
+ ParentFont := true;
+ Font.Style:= [];
+ Align := AlClient;
+ Visible := True;
+ DataSource := TmpDs;
+ end;
+ except
+ FPass_Grid := Nil;
+ FP_Move := Nil;
+ FP_Parent := Nil;
+ end;
+end;
+
+//ӦLabels[i]Click¼
+procedure TAutoPanel.LabelsClick(Sender: TObject);
+var
+ i :integer;
+ Tmp_Area,Tmp_Berth :String;
+begin
+ try
+ if FP_Parent = nil then inti_Grid(Sender);
+ if FP_Parent = nil then exit;
+ Tmp_Berth := trim((Sender as Tlabel).Caption);
+ Tmp_Area := trim(((Sender as Tlabel).Parent as TScrollBox).Hint);
+ if tmpado.Active then
+ begin
+ if tmpado.FieldValues['λ'] <> null then
+ if tmpado.FieldByName('λ').AsString = Tmp_Berth then
+ exit;
+ end;
+ screen.Cursor := crSQLWait;
+ //FP_Parent.Visible := False;
+ //FP_Parent.Left := FPageControl.Left + (Sender as Tlabel).Left + (Sender as Tlabel).Width + 28;
+ //FP_Parent.Top := FPageControl.Top + (Sender as Tlabel).top + (Sender as Tlabel).Height +4;
+ FP_Move.Caption := trim((Sender as Tlabel).Hint) + 'ϸб';
+ with tmpado do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ tmpado.CursorType := ctStatic;
+ tmpado.LockType := ltReadOnly;
+ CommandText := 'Exec '+Data_BerthListSql+' '''+Store_Name+''','''+Tmp_Area+''','''+Tmp_Berth+'''';
+ Active := True;
+ First;
+ EnableConTrols;
+ for i := 0 to Fields.Count -1 do
+ begin
+ Fields[i].Alignment := taCenter;
+ if i = 0 then
+ fields[i].DisplayWidth := 20
+ else
+ fields[i].DisplayWidth := 8;
+
+ Fpass_Grid.Columns[i].Title.Alignment := taCenter;
+ Fpass_Grid.Columns[i].Title.Font.Style:= [];
+ end;
+
+ end;
+ screen.Cursor := crDefault;
+ FP_Parent.Visible := True;
+ except
+ screen.Cursor := crDefault;
+ end;
+end;
+
+procedure TAutoPanel.FP_MovePanelDblClick(Sender: TObject);
+begin
+ FP_Parent.Visible := False;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TAutoPanel.FreeEditors;
+begin
+ if FPageControl <> nil then
+ begin
+ if FP_Parent <> nil then
+ begin
+ try
+ FPass_Grid.Free;
+ FP_Move.Free;
+ FP_Parent.Free;
+ except
+ //
+ end;
+ end;
+ FPass_Grid := nil;
+ FP_Move := nil;
+ FP_Parent := nil;
+ Shapes := nil;
+ ProgressBars := nil;
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox := nil;
+ tmpDs.Free;
+ tmpado.Free;
+ FPageControl.Free;
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/Dbpanel.pas.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/Dbpanel.pas.svn-base
new file mode 100644
index 0000000..6278e0f
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/text-base/Dbpanel.pas.svn-base
@@ -0,0 +1,380 @@
+unit Dbpanel;
+
+interface
+uses
+ Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs,
+ ExtCtrls, dbctrls, stdctrls, db, ADODB, ComCtrls;
+
+type
+ TEditorstyle = (TsDbMemo,TsDBcombox,Tsdbedit);
+
+type
+ TDBPanel = class(TPanel)
+ private
+ { Private declarations }
+ FEditorstyle:Teditorstyle;
+ FLeft: Integer;
+ FTop: Integer;
+ maxTextLen: Integer;
+ maxLabelLen: Integer;
+ FTitleVisible :Boolean;
+ FScrollBox: TScrollBox; {ؼ}
+ FLineHeight: Integer;
+
+ //ؼ̬
+ MemoEditors: array of TDBMemo;
+ comEditors: array of TDBCombobox;
+ edEditors: array of TDBedit;
+ ProgressEditor :array of TDBedit;
+ Labels: array of TDBText; //ֶα⣬̬
+ ProgressBars: array of TProgressBar;
+
+ FDataSource: TDataSource; // Դ
+ FDataField_A: String; // DataField
+ FDataField_B: String; // DataField
+ FDataField_C: String; // DataField
+ FColumns: Integer; //ʾ
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender:TObject; var Key: Word; Shift:TShiftState);
+ procedure AKeyPress(Sender:TObject; var Key: Char);
+ procedure AProgressEditorChange(Sender: TObject);
+ function comEditor(Index: Integer):TDBComboBox;
+ function edEditor(Index: Integer):TDBedit;
+ function MemoEditor(Index: Integer): TDBMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner:TComponent); override;
+ destructor Destroy; override;
+ function Get_TitleVisible() :Boolean;
+ procedure Set_TitleVisible(Value : Boolean);
+ procedure Setedit(Value : TEditorstyle);
+ procedure CreateEditors(DS: TDataSource; ColCount: Integer); //ֶεؼ
+ procedure ClearHits(ItemIndex: Integer);
+ procedure AddHits(ItemIndex:Integer; Hits: array of string);
+
+ { Public declarations }
+ published
+
+ property LimitLeft: Integer read FLeft write FLeft default 10;
+ property LimitTop: Integer read FTop write FTop default 10;
+ property Editorstyle : TEditorstyle read FEditorstyle write Setedit default tsdbMemo;
+ property EditorWidth: Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth: Integer read maxLabelLen write maxLabelLen default 100;
+ property TitleVisible : Boolean read Get_TitleVisible write Set_TitleVisible default True;
+ property LineHeight: Integer read FLineHeight write FLineHeight default 15;
+ //property OnOkClick: TNotifyEvent read FClick write FClick;
+ property DataSource: TDataSource read FDataSource write FDataSource; //Դ
+ property DataField_Editor: String read FDataField_A write FDataField_A;
+ property DataField_Title: String read FDataField_B write FDataField_B;
+ property DataField_Progress: String read FDataField_C write FDataField_C;
+ property Columns: Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TDBPanel]);
+end;
+
+function TDBPanel.Get_TitleVisible() :Boolean;
+begin
+ Result := FTitleVisible;
+end;
+
+procedure TDBPanel.Set_TitleVisible(Value : Boolean);
+begin
+ FTitleVisible := Value;
+end;
+
+procedure TDBPanel.Setedit(Value : TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TDBPanel.AddHits(ItemIndex:
+Integer; Hits: array of string);
+var
+ m,n,i: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TDBPanel.AKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+ if (Sender is TDBComboBox) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBComboBox).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBComboBox).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBedit) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBedit).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBedit).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBMemo) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBMemo).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBMemo).DataSource.DataSet.Prior;
+ end;
+ end;
+end;
+
+procedure TDBPanel.AProgressEditorChange(Sender: TObject);
+begin
+ //
+end;
+
+procedure TDBPanel.AKeyPress(Sender: TObject; var Key: Char);
+begin
+ if (Sender is TDBComboBox) or (Sender is TDBedit) or (Sender is TDBMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TDBPanel.ClearHits(ItemIndex: Integer);
+var
+ n: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+constructor TDBPanel.Create(AOwner: TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft :=10;
+ FTop := 10;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+end;
+
+{ ֶεؼķ}
+procedure TDBPanel.CreateEditors(DS: TDataSource; ColCount: Integer);
+var
+ i, n, RowCount: Integer;
+ TextHeight: Integer;
+begin
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ n := DataSource.DataSet.RecordCount;
+ if n > 0 then
+ begin
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+ { }
+ if (FColumns = 0) or (FColumns <> ColCount) then FColumns := ColCount;
+ RowCount := n div Columns;
+ if n mod Columns <> 0 then inc(RowCount);
+ { ڴ}
+ FreeEditors;
+ SetLength(Labels,n);
+ SetLength(ProgressBars,n);
+ SetLength(ProgressEditor,n);
+ if FEditorstyle = TsDBcombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = TsDBEdit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+ { }
+ FScrollBox := TScrollBox.Create(Owner);
+ FScrollBox.Visible := False;
+ FScrollBox.Parent := Self;
+ FScrollBox.Align := alClient;
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ { }
+ Labels[i] := TDBText.Create(Owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := FScrollBox;
+ Labels[i].DataField := DataField_Title;
+ Labels[i].DataSource := DataSource;
+ Labels[i].Left := FLeft + (maxLabelLen + 36) * (i div RowCount)+16; //+maxTextLen
+ if FEditorstyle = TsDBMemo then
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*4+10) + 2;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*2+10) + 2;
+ Labels[i].Width := maxLabelLen;
+ end;
+ { ݶ}
+ ProgressEditor[i] := TDBedit.Create(Owner);
+ ProgressEditor[i].visible := False;
+ ProgressEditor[i].Parent := FScrollBox;
+ ProgressEditor[i].DataField := DataField_Progress;
+ ProgressEditor[i].DataSource := DataSource;
+ ProgressEditor[i].OnChange := AProgressEditorChange;
+
+ { Ϣʾݶ}
+ if FEditorstyle = TsDBcombox then
+ begin
+ comEditors[i] := TDBComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+20;
+ comEditors[i].DataSource := DataSource;
+ comEditors[i].DataField := DataField_Editor;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbHorizontal;
+ ProgressBars[i].Left := comEditors[i].Left;
+ ProgressBars[i].Width := comEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := comEditors[i].Top+comEditors[i].height+2;
+ ProgressBars[i].Position := i*4
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ edEditors[i] := TDBedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox;
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+20;
+ edEditors[i].DataSource := DataSource;
+ edEditors[i].DataField := DataField_Editor;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbHorizontal;
+ ProgressBars[i].Left := edEditors[i].Left;
+ ProgressBars[i].Width := edEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := edEditors[i].Top+edEditors[i].height+2;;
+ ProgressBars[i].Position := i*4
+ end
+ else
+ begin
+ MemoEditors[i] := TDBmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox;
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+20;
+ MemoEditors[i].DataSource := DataSource;
+ MemoEditors[i].DataField := DataField_Editor;
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbVertical;
+ ProgressBars[i].Left := MemoEditors[i].Left + MemoEditors[i].Width +1;
+ ProgressBars[i].Width := 10;
+ ProgressBars[i].Height := MemoEditors[i].Height;
+ ProgressBars[i].Top := MemoEditors[i].Top;
+ ProgressBars[i].Position := i*4
+ end;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ FScrollBox.Visible := True;
+ end;
+end;
+
+destructor TDBPanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TDBPanel.comEditor(Index: Integer): TDBComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TDBPanel.edEditor(Index: Integer): TDBedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TDBPanel.MemoEditor(Index: Integer): TDBMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TDBPanel.FreeEditors;
+begin
+ if FScrollBox <> nil then
+ begin
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox.Free;
+ FScrollBox := nil;
+ end;
+end;
+
+end.
+
\ No newline at end of file
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.dcu.svn-base
new file mode 100644
index 0000000..6bb88fb
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.dcu.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.pas.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.pas.svn-base
new file mode 100644
index 0000000..66afa28
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/text-base/JKFootpanel.pas.svn-base
@@ -0,0 +1,339 @@
+unit JKFootpanel;
+
+interface
+uses
+ Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs,
+ ExtCtrls, dbctrls, stdctrls, db, ADODB, ComCtrls;
+
+type
+ TEditorstyle = (TsDbMemo,TsDBcombox,Tsdbedit);
+
+type
+ TJKFootpanel = class(TPanel)
+ private
+ { Private declarations }
+ FLeft: Integer;
+ FTop: Integer;
+ maxTextLen: Integer;
+ maxLabelLen: Integer;
+ FScrollBox: TScrollBox; {ؼ}
+ FLineHeight: Integer;
+ FEditorstyle:Teditorstyle;
+ FTitleVisible :Boolean;
+ //ؼ̬
+ MemoEditors :array of TDBMemo;
+ comEditors :array of TDBCombobox;
+ edEditors :array of TDBedit;
+ Labels :array of TLAbel; //ֶα⣬̬
+ FDataSource :TDataSource; // Դ
+ FColumns :Integer; //ʾ
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender :TObject; var Key: Word; Shift:TShiftState);
+ procedure AKeyPress(Sender :TObject; var Key: Char);
+ function comEditor(Index :Integer):TDBComboBox;
+ function edEditor(Index :Integer):TDBedit;
+ function MemoEditor(Index :Integer): TDBMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner :TComponent); override;
+ destructor Destroy; override;
+ procedure Setedit(Value :TEditorstyle);
+ procedure ClearHits(ItemIndex :Integer);
+ procedure AddHits(ItemIndex :Integer; Hits :array of string);
+ Function CreateEditors(DS :TDataSource; ColCount :Integer) :integer; //ֶεؼ
+
+ { Public declarations }
+ published
+
+ property LimitLeft :Integer read FLeft write FLeft default 10;
+ property LimitTop :Integer read FTop write FTop default 10;
+ property Editorstyle :TEditorstyle read FEditorstyle write FEditorstyle default Tsdbedit;
+ property EditorWidth :Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth :Integer read maxLabelLen write maxLabelLen default 100;
+ property LineHeight :Integer read FLineHeight write FLineHeight default 15;
+ property TitleVisible :Boolean read FTitleVisible write FTitleVisible default True;
+ property DataSource :TDataSource read FDataSource write FDataSource; //Դ
+ property Columns :Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+constructor TJKFootpanel.Create(AOwner: TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft :=16;
+ FTop := 10;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+ FTitleVisible := True;
+ Editorstyle := Tsdbedit;
+end;
+
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TJKFootpanel]);
+end;
+
+
+procedure TJKFootpanel.Setedit(Value : TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TJKFootpanel.AddHits(ItemIndex:
+Integer; Hits: array of string);
+var
+ m,n,i: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TJKFootpanel.AKeyPress(Sender: TObject; var Key: Char);
+begin
+ if (Sender is TDBComboBox) or (Sender is TDBedit) or (Sender is TDBMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TJKFootpanel.ClearHits(ItemIndex: Integer);
+var
+ n: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+{ ֶεؼķ}
+Function TJKFootpanel.CreateEditors(DS: TDataSource; ColCount: Integer):Integer ;
+var
+ i, n, RowCount: Integer;
+ TextHeight: Integer;
+begin
+ result := 120;
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ Columns := ColCount;
+ if Columns = 0 then exit;
+ n := DataSource.DataSet.fieldCount;
+ if n > 0 then
+ begin
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+ { }
+ if Columns > n then
+ Columns := n
+ else
+ Columns := ColCount;
+
+ RowCount := n div Columns;
+ if n mod Columns <> 0 then inc(RowCount);
+ { ڴ}
+ FreeEditors;
+ SetLength(Labels,n);
+ if FEditorstyle = TsDBcombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = TsDBEdit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+ { }
+ FScrollBox := TScrollBox.Create(Owner);
+ FScrollBox.Visible := False;
+ FScrollBox.Parent := Self;
+ FScrollBox.Align := alClient;
+ //FScrollBox.Color := clSkyBlue;
+ FScrollBox.OnDblClick := OnDblClick;
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ { }
+ Labels[i] := TLabel.Create(Owner);
+ Labels[i].visible := TitleVisible;
+ Labels[i].Parent := FScrollBox;
+ Labels[i].Caption := DataSource.DataSet.Fields[i].FieldName;
+ Labels[i].Left := FLeft + (maxLabelLen + 16) * (i div RowCount)+ 2; //+maxTextLen
+ if FEditorstyle = TsDBMemo then
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*2+4) + 12;
+ end
+ else
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*1 +12)
+ end;
+
+ { Ϣʾݶ}
+ if FEditorstyle = TsDBcombox then
+ begin
+ comEditors[i] := TDBComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+15;
+ comEditors[i].DataSource := DataSource;
+ comEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ comEditors[i].Font.Color := ClBlue;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ edEditors[i] := TDBedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox;
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+15;
+ edEditors[i].DataSource := DataSource;
+ edEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ edEditors[i].Font.Color := ClBlue;
+
+ end
+ else
+ begin
+ MemoEditors[i] := TDBmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox;
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+15;
+ MemoEditors[i].DataSource := DataSource;
+ MemoEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ MemoEditors[i].Font.Color := ClBlue;
+ end;
+ end;
+ if FEditorstyle = TsDBMemo then
+ result := RowCount*TextHeight*4 +20
+ else
+ result := RowCount*TextHeight*2 +20;
+ DataSource.DataSet.EnableControls;
+ FScrollBox.Visible := True;
+ end;
+end;
+
+destructor TJKFootpanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TJKFootpanel.comEditor(Index: Integer): TDBComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TJKFootpanel.edEditor(Index: Integer): TDBedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TJKFootpanel.MemoEditor(Index: Integer): TDBMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TJKFootpanel.FreeEditors;
+begin
+ if FScrollBox <> nil then
+ begin
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox.Free;
+ FScrollBox := nil;
+ end;
+end;
+
+
+procedure TJKFootpanel.AKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+{
+ if (Sender is TDBComboBox) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBComboBox).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBComboBox).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBedit) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBedit).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBedit).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBMemo) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBMemo).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBMemo).DataSource.DataSet.Prior;
+ end;
+ end;
+ }
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.dcu.svn-base
new file mode 100644
index 0000000..ee1cc67
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.dcu.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.pas.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.pas.svn-base
new file mode 100644
index 0000000..90b6a8f
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/text-base/JkPanel.pas.svn-base
@@ -0,0 +1,1123 @@
+unit JkPanel;
+
+interface
+uses
+ Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
+ ExtCtrls,dbctrls,stdctrls,db,ADODB,ComCtrls,Variants,Gauges,
+ SqlExpr,Grids,DBGrids,MovePanel,JKFootpanel,Buttons,dsr;
+
+type
+ TEditorstyle = (TsMemo,Tscombox,Tsedit);
+
+type
+ TJkPanel = class(TPanel)
+ private
+ { Private declarations }
+ This_Jth :string; //̨
+ This_TaskOrder :string; //
+
+ FEditorstyle:Teditorstyle;
+ FLeft :Integer;
+ FTop :Integer;
+ maxTextLen :Integer;
+ maxLabelLen :Integer;
+ maxDgheight :Integer;
+ maxFootHeight :integer;
+ FTitleVisible :Boolean;
+ FEditorVisible :Boolean;
+ FDataReadOnly :Boolean;
+ FPageCount :Integer;
+
+ FPass_Grid :TDBGrid;
+ FP_Move :TMovePanel;
+ FP_Parent :TPanel;
+
+ ColorLabels :array of TLabel;
+ Co_Shapes :array of TShape;
+ Co_DllBtn :array of TSpeedButton;
+ Co_Panels :array of TPanel;
+
+ FPageControl: TPageControl; {ҳؼ}
+ FTabSheets :array of TTabSheet;
+
+ ScrollBoxs :array of TScrollBox; {ؼ}
+ Splitters :array of TSplitter; {ָؼ}
+ FootPanels :array of TJKFootpanel; {Footҳʾؼ}
+ FLineHeight :Integer;
+
+ //ؼ̬
+ MemoEditors :array of TMemo;
+ comEditors :array of TCombobox;
+ edEditors :array of Tedit;
+
+ DGLists :array of TDbGrid;
+ AdoLists :array of TadoDataset;
+ DsLists :array of TDataSource;
+
+ DGGlides :array of TDbGrid;
+ AdoGlides :TadoDataset;
+ DsGlides :TDataSource;
+
+ ProgressEditor :array of Tedit;
+ Labels :array of TLabel; //ֶα⣬̬
+
+ ProgressBars :array of TGauge;
+ Shapes :array of TShape;
+ FDataSource :TDataSource; // Դ
+ FDataField_A :String; // DataField
+ FDataField_B :String; // DataField
+ FDataField_C :String; // DataField
+ FDataField_ColA :String; // DataField
+ FDataField_ColB :String; // DataField
+ Fcnnstr :String;
+ FPageSql :string;
+ FListSql :String;
+ FFootSql :string;
+ FGlideSql :String;
+ FCheJianFieldName :String;
+
+ FColumns :Integer; //ʾ
+ tmpado :TadoDataset;
+ tmpDs :TDataSource;
+ TmpDgListIdx,TmpDgListCol:integer;
+
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender:TObject; var Key :Word; Shift:TShiftState);
+ procedure AKeyPress(Sender:TObject; var Key :Char);
+ procedure AProgressEditorChange(Sender :TObject);
+ //procedure inti_Grid(sender :TObject);
+ procedure LabelsClick(Sender: TObject);
+ procedure Co_DllBtnClick(Sender: TObject);
+ procedure AdolistsAfterScroll(DataSet: TDataSet);
+ procedure DGListsCellClick(Column: TColumn);
+ procedure DGListsDrawColumnCell(Sender: TObject;
+ const Rect: TRect;DataCol: Integer;
+ Column: TColumn;State: TGridDrawState);
+ procedure refreshFootpanel(Tag :integer);
+ procedure DGGlideDrawColumnCell(Sender: TObject;
+ const Rect: TRect; DataCol: Integer; Column: TColumn;
+ State: TGridDrawState);
+
+ procedure FP_MovePanelDblClick(Sender: TObject);
+ procedure FootPanelDblclick(Sender: TObject);
+ //function comEditor(Index :Integer):TComboBox;
+ //function edEditor(Index :Integer):Tedit;
+ //function MemoEditor(Index :Integer) :TMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner:TComponent); override;
+ // destructor Destroy; override;
+ procedure Setedit(Value :TEditorstyle);
+ procedure CreateEditors(var DS :TDataSource; cnnstr :String;
+ Const Defaultsheet :String = ''); //ֶεؼ
+ procedure ClearHits(ItemIndex :Integer);
+ procedure AddHits(ItemIndex:Integer; Hits :array of string);
+
+ { Public declarations }
+ published
+
+ property LimitLeft :Integer read FLeft write FLeft default 10;
+ property LimitTop :Integer read FTop write FTop default 10;
+ property Editorstyle :TEditorstyle read FEditorstyle write Setedit default TsMemo;
+
+ property EditorWidth :Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth :Integer read maxLabelLen write maxLabelLen default 100;
+ property DgHeight :Integer read maxDgheight write maxDgheight default 300;
+ property FootHeight :Integer read maxFootHeight write maxFootHeight default 200;
+ property TitleVisible :Boolean read FTitleVisible write FTitleVisible default True;
+ property EditorVisible :Boolean read FEditorVisible write FEditorVisible default True;
+ property DataReadOnly :Boolean read FDataReadOnly write FDataReadOnly; //default True;
+ property LineHeight :Integer read FLineHeight write FLineHeight default 15;
+ property DataSource :TDataSource read FDataSource write FDataSource; //Դ
+ property DataField_ColA :String read FDataField_A write FDataField_ColA;
+ property DataField_ColB :String read FDataField_B write FDataField_ColB;
+ property DataField_Editor :String read FDataField_A write FDataField_A;
+ property DataField_Title :String read FDataField_B write FDataField_B;
+ property DataField_Progress :String read FDataField_C write FDataField_C;
+
+ property Data_PageSql :String read FPageSql write FPageSql;
+ property Data_DgListSql :String read FListSql write FListSql;
+ property Data_FootSql :String read FFootSql write FFootSql;
+ property Data_GlideSql :String read FGlideSql write FGlideSql;
+ property Data_CheJianField :String read FCheJianFieldName write FCheJianFieldName;
+ property Columns :Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+
+constructor TJkPanel.Create(AOwner :TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft := 20;
+ FTop := 20;
+ maxTextLen := 250;
+ maxLabelLen := 250;
+ maxDgheight := 200;
+ maxFootHeight := 150;
+ FLineHeight := 15;
+ FTitleVisible := True;
+ FDataReadOnly := True;
+end;
+
+procedure TJkPanel.Setedit(Value :TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TJkPanel.AddHits(ItemIndex :Integer; Hits :array of string);
+var
+ m,n,i :Integer;
+begin
+
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:= 0 to m - 1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TJkPanel.AKeyDown(Sender :TObject; var Key :Word; Shift :TShiftState);
+begin
+ //
+end;
+
+procedure TJkPanel.AProgressEditorChange(Sender :TObject);
+begin
+ //
+end;
+
+procedure TJkPanel.AKeyPress(Sender :TObject; var Key :Char);
+begin
+ if (Sender is TComboBox) or (Sender is Tedit) or (Sender is TMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TJkPanel.ClearHits(ItemIndex :Integer);
+var
+ n :Integer;
+begin
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+
+{ ֶεؼķ}
+procedure TJkPanel.CreateEditors(var DS :TDataSource; cnnstr :String; Const Defaultsheet :String = '');
+var
+ Tmp_CheJian,Tmp_Parm :String;
+ i,j,n,k,This_Index,TextHeight :Integer;
+ tmp_col0,Tmp_Row0,Tmp_Row1 :Integer;
+ XXX :TStringList;
+ kkk,RRR :array of integer;
+ DefaultIndex :Integer; //Ĭϳ
+begin
+ if (Data_CheJianField = '') then exit;
+ { ͷȫؼڴ}
+ FreeEditors;
+ if DS = nil then exit;
+ if DataSource = nil then FDataSource := Ds;
+ if not DataSource.DataSet.Active then exit;
+ if (DataSource.DataSet is TAdoDataSet) = False then exit;
+ TmpDgListIdx := -1;
+ FPageCount := 0;
+ DefaultIndex := 0;
+ n := DataSource.DataSet.RecordCount;
+ if n <= 0 then exit;
+ DataSource.DataSet.DisableControls;
+ if TitleWidth < maxTextLen then
+ maxTextLen := TitleWidth;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + LineHeight; //10;
+
+ { ڴ}
+ SetLength(AdoLists,n);
+ SetLength(DsLists,n);
+ SetLength(DGLists,n);
+
+ SetLength(Labels,n);
+ SetLength(ColorLabels,n);
+ SetLength(ProgressEditor,n);
+ SetLength(Shapes,n);
+
+ { ݸ֪ؼ AdoGlidesDsGlides}
+ AdoGlides := TadoDataset.Create(owner);
+ DsGlides := TDatasource.Create(owner);
+ DsGlides.DataSet := AdoGlides;
+
+ if Columns = 0 then Columns := 6;
+ try
+ tmpado := TadoDataset.Create(Owner);
+ tmpDs := TDatasource.Create(Owner);
+ tmpDs.DataSet := tmpado;
+ with tmpado do
+ begin
+ Active := False;
+ Fcnnstr := cnnstr;
+ tmpado.ConnectionString := Fcnnstr;
+ tmpado.CommandText := Data_PageSql;
+ Active := True;
+ FPageCount := RecordCount;
+ if FPageCount = 0 then exit;
+
+ setlength(kkk,FPageCount);
+ for i := 0 to high(kkk) do
+ kkk[i] := -1;
+ SetLength(RRR,FPageCount);
+ for i := 0 to high(RRR) do
+ RRR[i] := 0;
+ first;
+ // PageControl
+ FPageControl := TPageControl.Create(Owner);
+ FPageControl.Parent := Self;
+ FPageControl.Font.Name := '';
+ FPageControl.Font.Size := 9;
+ FPageControl.Align := alClient;
+ FPageControl.Visible := False;
+
+ { ڴ}
+ setlength(FTabSheets,FPageCount+1);
+ setlength(ScrollBoxs,FPageCount+1);
+ setlength(FootPanels,FPageCount+1);
+ setlength(Splitters,FPageCount+1);
+ setlength(Co_Shapes,FPageCount+1);
+ setlength(Co_DllBtn,FPageCount+1);
+ setlength(Co_Panels,FPageCount+1);
+ SetLength(DGGlides,FPageCount+1);
+
+ XXX := TStringList.Create();
+ for j := 0 to FPageCount do
+ begin
+ { FPageControlҳ}
+ FTabSheets[j] := TTabSheet.Create(Owner);
+ FTabSheets[j].Parent := FPageControl;
+ FTabSheets[j].ParentFont := True;
+ FTabSheets[j].PageControl := FPageControl;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].PageIndex := j;
+
+ if j < FPageCount then
+ begin
+ Tmp_CheJian := trim(fieldByName(Data_CheJianField).AsString);
+ if Defaultsheet <> '' then //ָĬϳ
+ begin
+ if Tmp_CheJian = Defaultsheet then
+ DefaultIndex := j;
+ end;
+ FTabSheets[j].Caption := '䣺' + Tmp_CheJian;
+ FTabSheets[j].Hint := Tmp_CheJian;
+ XXX.Append(Tmp_CheJian);
+ end
+ else
+ begin
+ Tmp_CheJian := '';
+ FTabSheets[j].Caption := 'δָ';
+ FTabSheets[j].Hint := Tmp_CheJian;
+ XXX.Append('δָ');
+ end;
+ FTabSheets[j].ShowHint := False;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].Align := alClient;
+
+ //Footҳʾؼ
+ FootPanels[j] := TJKFootpanel.Create(Owner);
+ with FootPanels[j] do
+ begin
+ Visible := True;
+ Parent := FTabSheets[j];
+ // BevelInner := bvLowered;
+ //BevelOuter := bvRaised;
+ Left := 0;
+ Width := 1;
+ Align := alRight;
+ Hint := FTabSheets[j].Hint;
+ ShowHint := False;
+ onDblclick := FootPanelDblclick;
+ LimitLeft := 8;
+ Ctl3D := False;
+ end;
+
+ //ɫʾؼ
+ Co_Panels[j] := Tpanel.Create(Owner);
+ with Co_Panels[j] do
+ begin
+ Visible := True;
+ Parent := FootPanels[j];
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ height := 40;
+ Co_Panels[j].BorderWidth := 2;
+ Align := alTop;
+ end;
+
+ //ɫʾؼ
+ Co_Shapes[j] := TShape.Create(Owner);
+ with Co_Shapes[j] do
+ begin
+ Visible := True;
+ Parent := Co_Panels[j];
+ Width := FootHeight;
+ Align := alClient;
+ end;
+
+ //ťؼ
+ Co_DllBtn[j] := TSpeedButton.Create(Owner);
+ with Co_DllBtn[j] do
+ begin
+ Visible := True;
+ Parent := FootPanels[j];
+ height := 25;
+ Tag := j;
+ Font.name := '';
+ Font.Size := 9;
+ Align := alTop;
+ Font.Color := ClBlue;
+ //Flat := true;
+ caption := '̴';
+ OnClick := Co_DllBtnClick;
+ end;
+
+ { DbGridؼ DGGlides}
+ DGGlides[j]:= TDBGrid.Create(owner);
+ with DGGlides[j] do
+ begin
+ Visible := True;
+ Parent := FootPanels[j];
+ height := 110;
+ Align := alTop;
+ Tag := j;
+ Font.name := '';
+ Font.Size := 9;
+ ReadOnly := True;
+ Options := [dgEditing,dgMultiSelect]; //,dgRowLines,dgColumnResize,
+ FixedColor := clSkyBlue;
+ OnDrawColumnCell := DGGlideDrawColumnCell;
+ end;
+
+ //ָؼ
+ Splitters[j] := TSplitter.Create(Owner);
+ with Splitters[j] do
+ begin
+ Visible := True;
+ Parent := FTabSheets[j];
+ Width := 4;
+ Align := alRight;
+ end;
+
+ //
+ ScrollBoxs[j] := TScrollBox.Create(Owner);
+ with ScrollBoxs[j] do
+ begin
+ Visible := True;
+ Parent := FTabSheets[j];
+ Color := RGB(100,100,100);//clTeal;
+ Align := alClient;
+ Hint := FTabSheets[j].Hint;
+ ShowHint := False;
+ end;
+
+ next;
+ end;
+
+ end;
+
+ if FEditorstyle = Tscombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = Tsedit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ if DataSource.DataSet.Fieldbyname(Data_CheJianField).AsVariant = null then
+ This_Index := FPageCount
+ else
+ This_Index := XXX.IndexOf(trim(DataSource.DataSet.Fieldbyname(Data_CheJianField).Asstring));
+ if kkk[This_Index] >= Columns -1 then
+ begin
+ kkk[This_Index] := 0;
+ RRR[This_Index] := RRR[This_Index] +1;
+ end
+ else
+ kkk[This_Index] := kkk[This_Index] + 1;
+ tmp_col0 := kkk[This_Index];
+ tmp_Row0 := RRR[This_Index];
+
+ { ݸ֪ؼ AdoListsDsLists}
+ AdoLists[i] := TadoDataset.Create(owner);
+ AdoLists[i].Tag := i;
+ AdoLists[i].AfterScroll:= AdolistsAfterScroll;
+ DsLists[i] := TDatasource.Create(owner);
+ DsLists[i].DataSet := AdoLists[i];
+ DsLists[i].Tag := i;
+ //DsLists[i].OnDataChange := DsListsDataChange;
+ { }
+ Labels[i] := TLabel.Create(owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := (ScrollBoxs[This_Index] as TScrollBox);
+ Labels[i].Font.Name := '';
+ Labels[i].Font.Size := 9;
+ Labels[i].Font.Color := ClBlue;
+ Labels[i].OnClick := LabelsClick;
+ Labels[i].Tag := i;
+ //Labels[i].Font.Style := [FsBold];
+ Labels[i].Transparent := True;
+
+ //̨
+ if DataSource.DataSet.Fieldbyname(DataField_Title).AsVariant <> null then
+ Labels[i].caption := DataSource.DataSet.Fieldbyname(DataField_Title).AsString
+ else
+ Labels[i].caption := '';
+ Tmp_CheJian := trim((ScrollBoxs[This_Index] as TScrollBox).Hint);
+
+ //̨
+ if DataSource.DataSet.Fieldbyname(DataField_ColA).AsVariant <> null then
+ Labels[i].Hint := trim(DataSource.DataSet.Fieldbyname(DataField_ColA).AsString)
+ else
+ Labels[i].Hint := '';
+ Labels[i].ShowHint := False;
+
+ if FEditorstyle = TsMemo then
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*3+DgHeight+5) + 2;
+ Labels[i].Left := FLeft + (TitleWidth + 20) * tmp_Col0 + 5;
+ Labels[i].Width := TitleWidth;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*2+DgHeight+5) + 2;
+ Labels[i].Left := FLeft + (TitleWidth + 12) * tmp_Col0;
+ Labels[i].Width := TitleWidth;
+ end;
+
+ { Ϣʾݶ}
+ if FEditorstyle = Tscombox then
+ begin
+ comEditors[i] := TComboBox.Create(Owner);
+ comEditors[i].Parent := ScrollBoxs[This_Index]; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ if FTitleVisible then
+ comEditors[i].Top := Labels[i].Top+14
+ else
+ comEditors[i].Top := Labels[i].Top;
+
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ comEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ comEditors[i].OnKeyPress := OnKeyPress;
+ comEditors[i].OnKeyDown := OnKeyDown;
+ comEditors[i].Visible := EditorVisible;
+ comEditors[i].Tag := i;
+
+ DGLists[i] := TDbGrid.Create(Owner);
+ DGLists[i].Parent := ScrollBoxs[This_Index];
+ DGLists[i].Font.name := '';
+ DGLists[i].Font.Size := 9;
+ DGLists[i].ReadOnly := True;
+ DGLists[i].FixedColor := clSkyBlue;
+ DGLists[i].Left := comEditors[i].Left;
+ DGLists[i].Width := comEditors[i].Width;
+ DGLists[i].Height := DgHeight;
+ DGLists[i].Options := [dgRowSelect];
+ if EditorVisible then
+ DGLists[i].Top := comEditors[i].Top+comEditors[i].height+2
+ else
+ DGLists[i].Top := comEditors[i].Top+2;
+ DGLists[i].Hint := trim(Labels[i].caption);
+ DGLists[i].ShowHint := False;
+
+ DGLists[i].OnDrawColumnCell := DGListsDrawColumnCell;
+ DGLists[i].OnCellClick := DGListsCellClick;
+ DGLists[i].Tag := i;
+ ColorLabels[i] := TLabel.Create(Owner);
+ ColorLabels[i].Parent := ScrollBoxs[This_Index];
+ ColorLabels[i].AutoSize := true;
+ ColorLabels[i].Font.name := '';
+ ColorLabels[i].Font.Size := 9;
+ ColorLabels[i].Top := Labels[i].top;
+ ColorLabels[i].Left := Labels[i].Left + round(Labels[i].Width/2)+20;
+ ColorLabels[i].Width := round(Labels[i].Width/2)-20;
+ ColorLabels[i].BringToFront;
+ ColorLabels[i].Tag := i;
+ ColorLabels[i].Font.Color := ClWhite;
+ ColorLabels[i].Color := RGB(100,100,100);
+ ColorLabels[i].Caption := '';
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ edEditors[i] := Tedit.Create(Owner);
+ edEditors[i].Parent := ScrollBoxs[This_Index];
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ if FTitleVisible then
+ edEditors[i].Top := Labels[i].Top+14
+ else
+ edEditors[i].Top := Labels[i].Top;
+ edEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ edEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ edEditors[i].OnKeyPress := OnKeyPress;
+ edEditors[i].OnKeyDown := OnKeyDown;
+ edEditors[i].Visible := EditorVisible;
+ DGLists[i] := TDbGrid.Create(Owner);
+ DGLists[i].Parent := ScrollBoxs[This_Index];
+ DGLists[i].Font.name := '';
+ DGLists[i].Font.Size := 9;
+ DGLists[i].ReadOnly := True;
+ DGLists[i].Options := [dgRowSelect];
+ DGLists[i].FixedColor := clSkyBlue;
+ DGLists[i].Left := edEditors[i].Left;
+ DGLists[i].Width := edEditors[i].Width;
+ DGLists[i].Height := DgHeight;
+ DGLists[i].Tag := i;
+ if EditorVisible then
+ DGLists[i].Top := edEditors[i].Top+edEditors[i].height+2
+ else
+ DGLists[i].Top := edEditors[i].Top+2;
+ DGLists[i].Hint := trim(Labels[i].caption);
+ DGLists[i].ShowHint := False;
+ DGLists[i].OnDrawColumnCell := DGListsDrawColumnCell;
+ DGLists[i].OnCellClick := DGListsCellClick;
+ DGLists[i].Tag := i;
+
+ ColorLabels[i] := TLabel.Create(Owner);
+ ColorLabels[i].Parent := ScrollBoxs[This_Index];
+ ColorLabels[i].AutoSize := False;
+ ColorLabels[i].Font.name := '';
+ ColorLabels[i].Font.Size := 9;
+ ColorLabels[i].Top := Labels[i].top;
+ ColorLabels[i].Left := Labels[i].Left + round(Labels[i].Width/2)+20;
+ ColorLabels[i].Width := round(Labels[i].Width/2)-20;
+ ColorLabels[i].BringToFront;
+ ColorLabels[i].Tag := i;
+ ColorLabels[i].Font.Color := ClWhite;
+ ColorLabels[i].Color := RGB(100,100,100);
+ ColorLabels[i].Caption := '';
+ end
+ else
+ begin
+ MemoEditors[i] := Tmemo.Create(Owner);
+ MemoEditors[i].Parent := ScrollBoxs[This_Index];
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ if FTitleVisible then
+ MemoEditors[i].Top := Labels[i].Top+14
+ else
+ MemoEditors[i].Top := Labels[i].Top;
+ MemoEditors[i].Height := 60;
+ MemoEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ MemoEditors[i].Lines.Add(DataSource.DataSet.Fieldbyname(DataField_Editor).AsString);
+ MemoEditors[i].OnKeyPress := OnKeyPress;
+ MemoEditors[i].OnKeyDown := OnKeyDown;
+ MemoEditors[i].Visible := EditorVisible;
+ MemoEditors[i].Tag := i;
+ DGLists[i] := TDbGrid.Create(Owner);
+ DGLists[i].Parent := ScrollBoxs[This_Index];
+ DGLists[i].Font.name := '';
+ DGLists[i].Font.Size := 9;
+ DGLists[i].ReadOnly := True;
+ DGLists[i].FixedColor := clSkyBlue;
+ DGLists[i].Left := MemoEditors[i].Left;
+ DGLists[i].Width := MemoEditors[i].Width;
+ DGLists[i].Height := DgHeight;
+ DGLists[i].Options := [dgRowSelect];
+ if EditorVisible then
+ DGLists[i].Top := MemoEditors[i].Top+MemoEditors[i].height+2
+ else
+ DGLists[i].Top := MemoEditors[i].Top+2;
+ DGLists[i].Hint := trim(Labels[i].caption);
+ DGLists[i].ShowHint := False;
+ DGLists[i].OnDrawColumnCell := DGListsDrawColumnCell;
+ DGLists[i].OnCellClick := DGListsCellClick;
+ DGLists[i].Tag := i;
+
+ ColorLabels[i] := TLabel.Create(Owner);
+ ColorLabels[i].Parent := ScrollBoxs[This_Index];
+ ColorLabels[i].AutoSize := False;
+ ColorLabels[i].Font.name := '';
+ ColorLabels[i].Font.Size := 9;
+ ColorLabels[i].Left := DGLists[i].Left + DGLists[i].Width +1;
+ ColorLabels[i].Height := DGLists[i].Height + MemoEditors[i].Height;
+ ColorLabels[i].Top := DGLists[i].Top;
+ ColorLabels[i].Tag := i;
+ ColorLabels[i].Font.Color := ClWhite;
+ ColorLabels[i].Color := RGB(100,100,100);
+ ColorLabels[i].Caption := '';
+ end;
+ Tmp_Parm := trim(DataSource.DataSet.Fieldbyname(DataField_Editor).Value);
+ with AdoLists[i] do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr; //ݿӴ
+ CursorType := ctStatic;
+ LockType := ltReadOnly;
+ CommandText := Data_DgListSql;
+ Parameters.ParamValues['ListParm'] := Tmp_Parm;
+ Active := True;
+ {
+ tmpSql := 'select a.AutoID,case a.MachMiss when ''0000000000'' then '
+ + 'convert(varchar(20),f.GlideName) else convert(varchar(20),d.ShortName) end'
+ + ' as ShortName,rtrim(b.MP_Crock) as MP_Crock,'
+ + 'convert(varchar(20),c.ChnName) as ChnName,a.MachLen,'
+ + 'convert(varchar(20),f.GlideName) as GlideName,'
+ + 'a.MachMiss,a.TaskOrder,a.Status,'
+ + 'c.RedCode,c.GreenCode,c.BlueCode'
+ + ' from MD_Dev_Mission a '+#10#13
+ + ' left join MD_PlanCrock b on b.mp_autocrk = left(a.MachMiss,10)'
+ + ' left join Mc_color c on c.ColorId = b.MP_Color '
+ + ' left join Mc_Glide f on f.GlideNo = a.MachGlide'+#10#13
+ + ' left join BC_Customer d on d.customno = b.MP_Customno'+#10#13
+ + ' where a.Status <> ''6'''
+ + ' and a.Machine =:ListParm'+#10#13
+ + ' order by a.Machine,a.TaskOrder';
+ }
+ for k := 0 to Fields.Count -1 do
+ Fields[k].Visible := False;
+ Fieldbyname('ShortName').Visible := True; //ӹλ
+ Fieldbyname('MP_Crock').Visible := True; //Ǹ
+ Fieldbyname('ChnName').Visible := True; //ɫ
+ Fieldbyname('MachLen').Visible := True; //
+ Fieldbyname('GlideName').Visible := True; //
+ DGLists[i].DataSource := DsLists[i];
+ EnableConTrols;
+ DGLists[i].Columns[0].width := 50;
+ DGLists[i].Columns[1].width := 30;
+ DGLists[i].Columns[2].width := 55;
+ DGLists[i].Columns[3].width := 45;
+ DGLists[i].Columns[4].width := 50;
+ //DGLists[i].Columns[0].Alignment := TaCenter;
+ //DGLists[i].Columns[1].Alignment := TaCenter;
+ //DGLists[i].Columns[2].Alignment := TaCenter;
+ //DGLists[i].Columns[3].Alignment := TaCenter;
+ //DGLists[i].Columns[4].Alignment := TaCenter;
+ First;
+ end;
+
+ Shapes[i] := TShape.Create(Owner);
+ Shapes[i].Parent := ScrollBoxs[This_Index];
+ Shapes[i].Left := Labels[i].Left - 5;
+ Shapes[i].top := Labels[i].Top - 5;
+ if FEditorstyle = TsMemo then
+ begin
+ Shapes[i].height := ColorLabels[i].height + Labels[i].height +20 +10;
+ Shapes[i].Width := (ColorLabels[i].left - Labels[i].left) + ColorLabels[i].Width + 10;
+ end
+ else
+ begin
+ Shapes[i].height := (DGLists[i].Top + DGLists[i].Height - Labels[i].Top)+ 10;
+ Shapes[i].Width := Labels[i].Width +10;
+ end;
+ Shapes[i].Brush.Color := clSkyBlue;
+ Shapes[i].Visible := True;
+ Shapes[i].SendToBack;
+ Shapes[i].Tag := i;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ tmpado.Close;
+ XXX.Free;
+ if FPageControl.PageCount > 0 then
+ begin
+ FPageControl.ActivePageIndex := FPageControl.PageCount-1;
+ FPageControl.ActivePageIndex := DefaultIndex;
+ end;
+ Finally
+ FPageControl.Visible := True;
+ end;
+end;
+
+procedure TJkPanel.Co_DllBtnClick(Sender: TObject);
+var
+ this_Gh :String;
+ k :Integer;
+
+begin
+ if not CanLCCL then //жǷȨ
+ begin
+ application.messagebox('ԲĿǰûбȨܡ','Ϣʾ',mb_ok or MB_ICONInformation);
+ Exit;
+ end;
+ k := (sender as TSpeedButton).Tag;
+ if not FootPanels[k].DataSource.dataset.active then exit;
+ if Co_DllBtn[k].Caption = '̴' then
+ begin
+ if FootPanels[k].DataSource.dataset.FieldValues[''] = null then exit;
+ this_Gh := FootPanels[k].DataSource.dataset.fieldbyname('').AsString;
+ //̴ִ
+ DoAbnormalC(TmpHandle,cnn_Base,V_UserId,V_User,this_Gh);
+ end
+ else
+ begin
+ //ִϴ
+ if This_Jth <> '' then
+ DoRinseprt(TmpHandle,cnn_Base,V_UserId,V_User,This_Jth,This_TaskOrder);
+ end;
+end;
+
+procedure TJkPanel.DGListsDrawColumnCell(Sender: TObject;
+ const Rect: TRect; DataCol: Integer; Column: TColumn;
+ State: TGridDrawState);
+var
+ Redcode,GreenCode,BlueCode,TmpStatus :Integer;
+begin
+ with (Sender as TdbGrid) do
+ begin
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ Redcode := (DataSource.DataSet as TAdoDataset).fieldByName('Redcode').AsInteger;
+ Greencode := (DataSource.DataSet as TAdoDataset).fieldByName('Greencode').AsInteger;
+ Bluecode := (DataSource.DataSet as TAdoDataset).fieldByName('Bluecode').AsInteger;
+ TmpStatus := (DataSource.DataSet as TAdoDataset).fieldByName('Status').AsInteger;
+ if gdFocused in State then
+ begin
+ Canvas.Brush.Color := clblack;
+ Canvas.Font.Color := Clred;
+ end
+ else if TmpStatus = 5 then
+ begin
+ Canvas.Font.Color := clBlue;
+ Canvas.Brush.Color := clWhite;
+ Canvas.Font.Style := [fsBold]; //fsItalic
+ ColorLabels[(Sender as TDbGrid).Tag].Color := RGB(Redcode,Greencode,Bluecode);
+ if (Redcode <=10) or (Bluecode <=10) or (Greencode <=10) then
+ ColorLabels[(Sender as TDbGrid).Tag].Font.Color := ClWhite
+ else
+ ColorLabels[(Sender as TDbGrid).Tag].Font.Color := ClBlack;
+ ColorLabels[(Sender as TDbGrid).Tag].Caption := '';
+ end
+ else if (Redcode <=100) or (Greencode <=100) then
+ begin
+ Canvas.Font.Color := ClWhite;
+ Canvas.Brush.Color := RGB(Redcode,Greencode,Bluecode);
+ end
+ else
+ begin
+ Canvas.Font.Color := ClBlack;
+ Canvas.Brush.Color := RGB(Redcode,Greencode,Bluecode);
+ end;
+ DefaultDrawColumnCell(Rect,DataCol,Column,State);
+ end;
+end;
+
+procedure TJkPanel.DGGlideDrawColumnCell(Sender: TObject;
+ const Rect: TRect; DataCol: Integer; Column: TColumn;
+ State: TGridDrawState);
+begin
+ with (Sender as TDbGrid) do
+ begin
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ if gdFocused in State then exit;
+ if (Sender as TDbGrid).SelectedRows.CurrentRowSelected then
+ begin
+ Canvas.Brush.Color := clHighlight;
+ Canvas.Font.Color := ClWhite;
+ end
+ else if DataSource.DataSet.RecNo mod 2 = 0 then
+ begin
+ Canvas.Brush.Color := $00DEDEDE;
+ Canvas.Font.Color := ClBlack;
+ end
+ else
+ begin
+ Canvas.Brush.Color := clwhite;
+ Canvas.Font.Color := ClBlack;
+ end;
+ DefaultDrawColumnCell(Rect,DataCol,Column,State);
+ end;
+end;
+
+procedure TJkPanel.refreshFootpanel(Tag :integer);
+var
+ i,Listindex,PageIndex :integer;
+ R,G,B :Integer;
+ tmpCarN0 :String;
+ TmpMachMiss :String; //
+begin
+ try
+ PageIndex := FPageControl.ActivePageIndex;
+ Listindex := Tag;
+ if AdoLists[Listindex].RecordCount = 0 then
+ begin
+ FootPanels[PageIndex].DataSource := Nil;
+ exit;
+ end;
+ //ȡ̨
+ This_Jth := Labels[Listindex].Hint;
+ //ȡ
+ This_TaskOrder := trim(AdoLists[Listindex].FieldByName('TaskOrder').AsString);
+ TmpMachMiss := trim(AdoLists[Listindex].FieldByName('MachMiss').AsString);
+ if TmpMachMiss = '0000000000' then
+ Co_DllBtn[PageIndex].Caption := 'ϴ'
+ else
+ Co_DllBtn[PageIndex].Caption := '̴';
+
+ with tmpado do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ CursorType := ctStatic;
+ LockType := ltReadOnly;
+ CommandText := Data_FootSql;
+ Parameters.ParamValues['FootParm'] := AdoLists[Listindex].Fields[0].Value;
+ Active := True;
+ for i := 0 to fieldCount -1 do
+ tmpado.Fields[i].Alignment := taLeftJustify;
+ tmpDs.dataset := tmpado;
+ EnableConTrols;
+ end;
+ with adoGlides do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ CursorType := ctStatic;
+ LockType := ltReadOnly;
+ CommandText := Data_GlideSql;
+ if AdoLists[Listindex].Fieldbyname('MachMiss').AsString <> null then
+ begin
+ tmpCarN0 := trim(AdoLists[Listindex].Fieldbyname('MachMiss').AsString);
+ tmpCarN0 := Copy(tmpCarN0,1,10);
+ end
+ else
+ tmpCarN0 := '////';
+ Parameters.ParamValues['PCarNo'] := tmpCarN0;
+ Active := True;
+ First;
+ EnableConTrols;
+ end;
+ DGGlides[PageIndex].DataSource := DsGlides;
+ DGGlides[PageIndex].Columns[0].Width := 74;
+ DGGlides[PageIndex].Columns[1].Width := 40;
+ FootPanels[PageIndex].Width := 140;
+ FootPanels[PageIndex].Columns := 1;
+ FootPanels[PageIndex].DataSource := tmpDs;
+ FootPanels[PageIndex].CreateEditors(tmpDs,1);
+ R := 255; G:= 255; B := 255;
+ R := AdoLists[Listindex].Fieldbyname('RedCode').AsInteger;
+ G := AdoLists[Listindex].Fieldbyname('GreenCode').AsInteger;
+ B := AdoLists[Listindex].Fieldbyname('BlueCode').AsInteger;
+ Co_Shapes[PageIndex].Brush.Color := RGB(R,G,B);
+ except
+ //
+ end;
+end;
+
+procedure TJkPanel.DGListsCellClick(Column: TColumn);
+var
+ tmpIdx,TmpCol,TmpTag :Integer;
+begin
+ if not Column.Grid.DataSource.DataSet.Active then exit;
+ if Column.Grid.DataSource.DataSet.RecordCount = 0 then exit;
+
+ if Column.Grid.DataSource.DataSet.RecNo = 1 then
+ begin
+ tmpIdx := (Column.Grid as TCustomDbGrid).ComponentIndex;
+ TmpCol := Column.Index;
+ if TmpDgListIdx = -1 then
+ begin
+ TmpDgListIdx := tmpIdx;
+ TmpDgListCol := TmpCol;
+ refreshFootpanel((Column.Grid as TCustomDbGrid).DataSource.DataSet.Tag);
+ end
+ else
+ begin
+ if TmpDgListIdx <> tmpIdx then
+ refreshFootpanel((Column.Grid as TCustomDbGrid).DataSource.DataSet.Tag);
+ TmpDgListIdx := tmpIdx;
+ TmpDgListCol := TmpCol;
+ end;
+ (Column.Grid as TCustomDbGrid).SetFocus;
+ end
+end;
+
+procedure TJkPanel.AdolistsAfterScroll(DataSet: TDataSet);
+begin
+ //ˢ Footpanel
+ refreshFootpanel(DataSet.tag);
+end;
+
+
+//ӦLabels[i]Click¼
+procedure TJkPanel.LabelsClick(Sender: TObject);
+begin
+ //
+end;
+
+{
+procedure TJkPanel.LabelsClick(Sender: TObject);
+var
+ i :integer;
+ Tmp_CheJian,Tmp_JiTai :String;
+begin
+
+ try
+ if FP_Parent = nil then inti_Grid(Sender);
+ if FP_Parent = nil then exit;
+ Tmp_JiTai := trim((Sender as Tlabel).Caption);
+ Tmp_CheJian := trim(((Sender as Tlabel).Parent as TScrollBox).Hint);
+ if tmpado.Active then
+ begin
+ if tmpado.FieldValues['̨'] <> null then
+ if tmpado.FieldByName('̨').AsString = Tmp_JiTai then
+ exit;
+ end;
+ screen.Cursor := crSQLWait;
+ //FP_Parent.Visible := False;
+ //FP_Parent.Left := FPageControl.Left + (Sender as Tlabel).Left + (Sender as Tlabel).Width + 28;
+ //FP_Parent.Top := FPageControl.Top + (Sender as Tlabel).top + (Sender as Tlabel).Height +4;
+ FP_Move.Caption := trim((Sender as Tlabel).Hint) + 'ϸб';
+ with tmpado do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ tmpado.CursorType := ctStatic;
+ tmpado.LockType := ltReadOnly;
+ CommandText := 'Exec '+Data_BerthListSql+' '''+Tmp_CheJian+''','''+Tmp_JiTai+'''';
+ Active := True;
+ First;
+ EnableConTrols;
+ for i := 0 to Fields.Count -1 do
+ begin
+ Fields[i].Alignment := taCenter;
+ if i = 0 then
+ fields[i].DisplayWidth := 20
+ else
+ fields[i].DisplayWidth := 8;
+
+ Fpass_Grid.Columns[i].Title.Alignment := taCenter;
+ Fpass_Grid.Columns[i].Title.Font.Style:= [];
+ end;
+
+ end;
+ screen.Cursor := crDefault;
+ FP_Parent.Visible := True;
+ except
+ screen.Cursor := crDefault;
+ end;
+end;
+ }
+
+procedure TJkPanel.FootPanelDblclick(Sender: TObject);
+begin
+ if sender is TScrollBox then
+ (sender as TScrollBox).Parent.width := 1;
+end;
+
+procedure TJkPanel.FP_MovePanelDblClick(Sender: TObject);
+begin
+ FP_Parent.Visible := False;
+end;
+
+ //Registerؼ
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TJkPanel]);
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TJkPanel.FreeEditors;
+begin
+ if FPageControl <> nil then
+ begin
+ if FP_Parent <> nil then
+ begin
+ try
+ FPass_Grid.Free;
+ FP_Move.Free;
+ FP_Parent.Free;
+ except
+ //
+ end;
+ end;
+ DGGlides := nil;
+ DsGlides := nil;
+ AdoGlides := nil;
+ DsGlides.Free;
+ AdoGlides.Free;
+
+ DGLists := nil;
+ DsLists := nil;
+ AdoLists := nil;
+
+ FPass_Grid := nil;
+ FP_Move := nil;
+ FP_Parent := nil;
+ Shapes := nil;
+ ProgressBars := nil;
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ ScrollBoxs := nil;
+
+ Splitters := nil;
+ Co_Shapes:= nil;
+ Co_DllBtn := Nil;
+ Co_Panels:= nil;
+ FootPanels := nil;
+
+ tmpDs.Free;
+ tmpado.Free;
+
+ FPageControl.Free;
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.dcr.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.dcr.svn-base
new file mode 100644
index 0000000..1350977
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.dcr.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.dcu.svn-base
new file mode 100644
index 0000000..eb169d5
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.dcu.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.pas.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.pas.svn-base
new file mode 100644
index 0000000..0b404ff
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/text-base/L_DBDateTime.pas.svn-base
@@ -0,0 +1,143 @@
+unit L_DBDateTime;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,db,dbtables,dbctrls,Dialogs,
+ ComCtrls;
+
+type
+ TDBDateTime = class(TDateTimePicker)
+ private
+ FDataLink:TFieldDataLink;
+ //TFieldDataLinkTDataLink࣬
+ // ֶDataSourceĽ
+ procedure DataChange(sender:Tobject);
+//DataSetļ¼ı䣨¼
+// ʱOnDataChange
+ // ¼DataChangeΪ¼¼
+ procedure UpdateData(sender:Tobject);
+ //DataSetǰOnUpdateData¼
+ // UpdateDataΪ¼¼
+ function GetDataSource:TDataSource;
+ procedure SetdataSource(value:TDataSource);
+ Function GetDataField:String;
+ procedure SetdataField(Value:String);
+ procedure CMexit(var Message:TCMExit);
+ message CM_EXIT;//ؼʧȥʱCM_EXITϢ
+ protected
+ procedure Change;override;//ؼڡ
+ // ʱıʱOnChange¼
+ procedure Notification(AComponent:TComponent;
+ Operation:Toperation);override;
+ //ijһؼFORMʱDELPHI
+ // IDEø÷֪ͨؼ
+ public
+ constructor Create(AOwner:Tcomponent);override;
+ destructor Destroy;override;
+ published
+ property DataSource:TDataSource read GetDataSource
+ write SetDataSource;//ΪؼDataSourceԣ
+// ʹDataSource
+ property DataField:String read GetDataField
+ write SetDataField;
+ end;//ΪؼDataFieldԣ
+ // ʹָijһֶεTField
+
+procedure Register;//עṹ
+
+implementation
+
+procedure TDBDateTime.CMExit;
+begin
+ try
+ FDataLink.UpdateRecord;
+ //ؼʧȥʱDataSet
+ // ⽫OnUpdateData¼
+ except
+ Setfocus;
+ raise;
+ end;
+ DoExit;
+end;
+
+constructor TDBDateTime.Create(Aowner:Tcomponent);
+begin
+ inherited Create(Aowner);
+//DataLinkҽOnDataChange
+ //OnUpdateData¼
+ FDataLink:=TFieldDataLInk.Create;
+ FDataLink.OnDataChange:=DataChange;
+ FDataLink.OnUpdateData:=Updatedata;
+end;
+
+Destructor TDBDateTime.Destroy;
+begin
+ FDataLink.OnDataChange:=nil;
+ FDataLink.OnUpdateData:=nil;
+ FDataLink.Free;
+ inherited Destroy;
+end;
+
+function TDBDateTime.GetdataSource:TdataSource;
+begin
+ result:=FDataLink.DataSource;
+end;
+
+Procedure TDBDateTime.SetDataSource
+ (Value:TDataSource);
+begin
+ FDataLink.DataSource:=Value;
+end;
+
+function TDBDateTime.GetDatafield:String;
+begin
+ result:=FDataLink.FieldName;
+end;
+
+procedure TDBDateTime.SetDataField(value:String);
+begin
+ FdataLink.FieldName:=value;
+end;
+
+procedure TDBDateTime.DataChange(Sender:Tobject);
+begin
+DateTime:=now;
+//ؼ˻DataSetݼ䶯ʱ
+ //ؼʾǰ¼Ӧֵֶ
+if FDataLink.Field<>nil then
+ if FDataLink.Field.Text<>'' then
+ DateTime:=FDatalink.Field.AsDateTime;
+end;
+
+Procedure TDBDateTime.UpdateData(sender:Tobject);
+begin
+ FDatalink.Field.AsDateTime:=DateTime;
+ //ÿؼеڡʱӦֶ
+end;
+
+procedure TDBDateTime.Change;
+begin
+//ûı˿ؼеʱDataSetΪ༭״̬
+ FDataLink.Modified;
+ if not FDataLink.Editing then
+ FdataLink.Edit;
+ inherited Change;
+end;
+procedure TDBDateTime.Notification
+ (AComponent:TComponent;Operation:TOperation);
+begin
+ inherited Notification(Acomponent,Operation);
+//ؼTdataSource
+// ɾʱؼDataSourceΪ
+ if (Operation=opRemove) and (FDataLink<>nil)
+ and (AComponent=Datasource) then
+ DataSource:=nil;
+ end;
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls',[TDBDateTime]);
+end;
+
+end.
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/MovePanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/MovePanel.dcu.svn-base
new file mode 100644
index 0000000..e07116e
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/MovePanel.dcu.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/MovePanel.pas.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/MovePanel.pas.svn-base
new file mode 100644
index 0000000..c38c5b5
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/text-base/MovePanel.pas.svn-base
@@ -0,0 +1,84 @@
+unit MovePanel;
+
+interface
+uses
+ Windows, Classes, Controls,ExtCtrls;
+type
+ TMovePanel = class(TPanel) //ؼǼ̳Tpanel
+ private
+ PrePoint:TPoint;
+ Down:Boolean;
+ { Private declarations }
+ protected
+ { Protected declarations }
+ public
+ constructor Create(AOwner:TComponent);
+ override;
+ //¼ȴϢ
+procedure MouseDown(Button: TMouseButton;
+ Shift: TShiftState; X, Y: Integer);override;
+ procedure MouseUp(Button: TMouseButton;
+Shift: TShiftState; X, Y: Integer);override;
+ procedure MouseMove(Shift: TShiftState;
+ X, Y: Integer);override;
+ { Public declarations }
+ published
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+constructor TMovePanel.Create(AOwner:TComponent);
+begin
+ inherited Create(AOwner); //̳иCreate
+end;
+
+procedure TMovePanel.MouseDown(Button:
+TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+ if (Button=MBLeft) then
+ begin
+ Down:=true;
+ GetCursorPos(PrePoint);
+ end;
+ //ѴڣʹӦ¼ȥӴɷô쳣
+ if assigned(OnMouseDown) then
+ OnMouseDown(self,Button,shift,x,y);
+end;
+
+procedure TMovePanel.MouseUp(Button:
+TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+ if (Button=MBLeft) and Down then
+ Down:=False;
+ if assigned(OnMouseUp) then
+ OnMouseUp(Self,Button,shift,X,y);
+end;
+
+procedure TMovePanel.MouseMove(Shift:
+ TShiftState; X, Y: Integer);
+Var
+ NowPoint:TPoint;
+begin
+ if down then
+ begin
+GetCursorPos(nowPoint);
+//self.ParentFormоMovePanelڵĴ壬MovePanelڵPanel
+ self.Parent.Left:=self.Parent.left
+ +NowPoint.x-PrePoint.x;
+ self.parent.Top:=self.Parent.Top
+ +NowPoint.y-PrePoint.y;
+ PrePoint:=NowPoint;
+ end;
+ if Assigned(OnMouseMove) then
+ OnMouseMove(self,Shift,X,y);
+end;
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TMovePanel]);
+end;
+
+end.
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/dbpanel.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/dbpanel.dcu.svn-base
new file mode 100644
index 0000000..0dedd95
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/dbpanel.dcu.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/dsr.dcu.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/dsr.dcu.svn-base
new file mode 100644
index 0000000..7044617
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/.svn/text-base/dsr.dcu.svn-base differ
diff --git a/T03贸易布匹检验/DbPanel/.svn/text-base/dsr.pas.svn-base b/T03贸易布匹检验/DbPanel/.svn/text-base/dsr.pas.svn-base
new file mode 100644
index 0000000..3a15c4e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/.svn/text-base/dsr.pas.svn-base
@@ -0,0 +1,330 @@
+unit dsr;
+
+interface
+uses
+ SysUtils, StrUtils, Forms, Classes, DB, ADODB, Grids, DBGrids, Messages;
+
+var
+ CanLCCL :Boolean;
+ V_User,V_UserID :string;
+ TmpHandle :THandle;
+ cnn_Base :TAdoConnection;
+
+function SplitString(STR_Source :string; STR_Split:string):TStringList;
+
+procedure DoAbnormalC(H: THandle;AConn: TADOConnection;UID: String;
+ UName: String;TRCarNo: String);stdcall;external 'frabnml.dll';
+{
+procedure DoRinseprt(H: THandle;//ôھ
+ AConn: TADOConnection;//ADO
+ UID: String;//Ա
+ UName: String;//Ա
+ Machine: String;//̨
+ Task: String//
+ );stdcall;
+}
+procedure DoRinseprt(H: THandle;AConn: TADOConnection;UID:String;
+ UName :String; Machine:String; Task:String); stdcall; external 'rinsepf.dll';
+
+
+procedure Set_NextControl( Pass_Form: TCustomForm;var Key:Char);
+
+function checkfunc(handle: Integer; DogFlag: String): Integer; stdcall; external 'FUTONG.DLL';
+//Ӳ
+// handleΪھ
+// DogFlagΪݿвѯӲϢ
+// DLLԶӲDogFlagϢǷʱ3Զ
+
+function GetParm(flag: Integer; out len: Integer; outHex: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//ӲлȡضϢIPַݿƣû
+//ԶflagȡֵΧΪ0--4洢ռһΪ20ֽڣΪĵַռ
+//Ҳ0óΪ20ʱ
+// 4óΪ4
+//DogFlagΪַϢ
+
+function SetParm(flag, len: Integer; inHex: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//flag=5IP,=6User,=7Pass,=8DB
+//ӲòIPʱΪ C8A00164ʽ루192.168.1.100
+//Զ÷ͬ
+
+function InfoFunc(order: Integer; info: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//ȡӲϢֵΪ
+//ǵijЩƶҪѯ̶Ϣ
+//װʱҪƳƶ
+//orderΪڼ0ʼ
+
+function GetHostIpAddr(DogParm, HostName, IPAddr: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//ȡӲʶ,IPַοΪжIPַȡֻ֮һ
+//Լ
+
+function PBEncode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+function PBEncode1(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+function PBDecode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+
+implementation
+
+
+function SplitString(STR_Source :string; STR_Split:string):TStringList;
+var
+ temp:String;
+ i:Integer;
+begin
+ Result:=TStringList.Create;
+ //ǿԷؿб
+ if trim(STR_Source) = '' then exit;
+ temp:=STR_Source;
+ i:=pos(STR_Split,STR_Source);
+ while i <> 0 do
+ begin
+ Result.add(copy(temp,0,i-1));
+ Delete(temp,1,i+length(STR_Split)-1); //STR_Splitȴ1Ļ,ԭֻɾSTR_Splitַĵһ.
+ i:=pos(STR_Split,temp);
+ end;
+ Result.add(temp);
+end;
+
+procedure Set_NextControl( Pass_Form: TCustomForm;var Key:Char);
+label
+ labe_A;
+begin
+ if key=#13 then
+ if not (Pass_Form.ActiveControl is TDbgrid) Then
+ Begin
+ key:=#0;
+ Pass_Form.perform(WM_NEXTDLGCTL,0,0);
+ end
+ else
+ if (Pass_Form.ActiveControl is TDbgrid) Then
+ begin
+ With TDbgrid(Pass_Form.ActiveControl) Do
+ begin
+ labe_A:
+ if Selectedindex<(FieldCount-1) then
+ Selectedindex:=Selectedindex+1
+ else Selectedindex:=0;
+ if not Columns[Selectedindex].Visible then
+ goto labe_A;
+ end;
+ end;
+end;
+
+
+function PBEncode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+var
+ table: array[0..63] of AnsiChar;
+ c80, c81, c82, c6: AnsiChar;
+ i, k, len: Integer;
+ Tmpbuf: array[0..255] of AnsiChar;
+begin
+ table := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+ if (nInLen*4)>(nOutLen*3+3) then Result := 1;
+
+ k := nInLen div 3;
+ len := k*4;
+
+ for i:=0 to k-1 do
+ begin
+ c80 := Inbuf[i*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[i*4] := table[Integer(c6) and $3f];
+
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[i*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[i*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ c82 := Inbuf[i*3+2];
+ c6 := Char((Integer(c82) shr 6) and $03);
+ Tmpbuf[i*4+2] := table[Integer(c81) or Integer(c6)];
+
+ Tmpbuf[i*4+3] := table[Integer(c82) and $3f];
+ end;
+
+ i := nInLen mod 3;
+ k := nInLen div 3;
+
+ if i<>0 then
+ begin
+ len := len+4;
+
+ c80 := Inbuf[k*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[k*4] := table[Integer(c6) and $3f];
+
+ if k=1 then
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ Tmpbuf[k*4+1] := table[Integer(c80)];
+
+ Tmpbuf[k*4+2] := '=';
+ end
+ else
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[k*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[k*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ Tmpbuf[k*4+2] := table[Integer(c81)];
+ end;
+ Tmpbuf[k*4+3] := '=';
+ end;
+ Tmpbuf[len] := #0;
+ Outbuf := Tmpbuf;
+ Result := len;
+end;
+
+function PBEncode1(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+var
+ table: array[0..63] of AnsiChar;
+ c80, c81, c82, c6: AnsiChar;
+ i, k, len: Integer;
+ Tmpbuf: array[0..255] of AnsiChar;
+begin
+ table := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+ if (nInLen*4)>(nOutLen*3+3) then Result := 1;
+
+ k := nInLen div 3;
+ len := k*4;
+
+ for i:=0 to k-1 do
+ begin
+ c80 := Inbuf[i*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[i*4] := table[Integer(c6) and $3f];
+
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[i*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[i*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ c82 := Inbuf[i*3+2];
+ c6 := Char((Integer(c82) shr 6) and $03);
+ Tmpbuf[i*4+2] := table[Integer(c81) or Integer(c6)];
+
+ Tmpbuf[i*4+3] := table[Integer(c82) and $3f];
+ end;
+
+ i := nInLen mod 3;
+ k := nInLen div 3;
+
+ if i<>0 then
+ begin
+ len := len+4;
+
+ c80 := Inbuf[k*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[k*4] := table[Integer(c6) and $3f];
+
+ if i=1 then
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ Tmpbuf[k*4+1] := table[Integer(c80)];
+
+ Tmpbuf[k*4+2] := '=';
+ end
+ else
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[k*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[k*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ Tmpbuf[k*4+2] := table[Integer(c81)];
+ end;
+ Tmpbuf[k*4+3] := '=';
+ end;
+ Tmpbuf[len] := #0;
+ Outbuf := Tmpbuf;
+ Result := len;
+end;
+
+function PBDecode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+var
+ pBufIn: PAnsiChar;
+ szBufTmp: array[0..255] of AnsiChar;
+ i, dwCoded, nprbytes, nbytesdecoded: Integer;
+ pszCoded: PAnsiChar;
+ szBufout: array[0..255] of AnsiChar;
+ pszBufout: PAnsiChar;
+ pr2six: array[0..255] of Word;
+begin
+ for i := 0 to 42 do
+ pr2six[i] := 64;
+ pr2six[43] := 62;
+ for i := 44 to 46 do
+ pr2six[i] := 64;
+ pr2six[47] := 63;
+ for i := 48 to 57 do
+ pr2six[i] := i+4;
+ for i := 58 to 64 do
+ pr2six[i] := 64;
+ for i := 65 to 90 do
+ pr2six[i] := i-65;
+ for i := 91 to 96 do
+ pr2six[i] := 64;
+ for i := 97 to 122 do
+ pr2six[i] := i-71;
+ for i := 123 to 255 do
+ pr2six[i] := 64;
+
+ dwCoded := nInlen;
+ pszCoded := Inbuf;
+
+ while (dwCoded>0) and (pszCoded=' ') do
+ begin
+ Inc(pszCoded);
+ Dec(dwCoded);
+ end;
+
+ if dwCoded>(350-4) then result := 1;
+
+ StrLCopy(szBufTmp, pszCoded, dwCoded);
+ szBufTmp[dwCoded] := #0;
+ szBufTmp[dwCoded+1] := #0;
+ szBufTmp[dwCoded+2] := #0;
+ szBufTmp[dwCoded+3] := #0;
+
+ pBufIn := szBufTmp;
+
+ repeat
+ i := pr2six[Integer(pBufIn^)];
+ Inc(pBufIn);
+ until i>63;
+ nprbytes := pBufin-szBufTmp-1;
+ nbytesdecoded := ((nprbytes+3) div 4)*3;
+ if nOutLen(256-4) then result := 2;
+
+ pszBufout := szBufout;
+ pBufin := szBufTmp;
+
+ while nprbytes>0 do
+ begin
+ pszBufout^ := Char((pr2six[Integer(pBufin[0])] shl 2) or ((pr2six[Integer(pBufin[1])] shr 4)));
+ Inc(pszBufout);
+ pszBufout^ := Char((pr2six[Integer(pBufin[1])] shl 4) or ((pr2six[Integer(pBufin[2])] shr 2)));
+ Inc(pszBufout);
+ pszBufout^ := Char((pr2six[Integer(pBufin[2])] shl 6) or (pr2six[Integer(pBufin[3])]));
+ Inc(pszBufout);
+ Inc(pBufin, 4);
+ Dec(nprbytes, 4);
+ end;
+ if (nprbytes and $03) <> 0 then
+ begin
+ if pr2six[Integer(pBufin[-2])]>63 then Dec(nbytesdecoded, 2)
+ else Dec(nbytesdecoded);
+ end;
+ szBufout[nbytesdecoded] := #0;
+ Outbuf := szBufout;
+ result := nbytesdecoded;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DbPanel/AutoPanel.pas b/T03贸易布匹检验/DbPanel/AutoPanel.pas
new file mode 100644
index 0000000..6b99df7
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/AutoPanel.pas
@@ -0,0 +1,707 @@
+unit AutoPanel;
+
+interface
+uses
+ Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
+ ExtCtrls,dbctrls,stdctrls,db,ADODB,ComCtrls,Variants,Gauges,
+ SqlExpr,DBGrids,MovePanel;
+
+type
+ TEditorstyle = (TsMemo,Tscombox,Tsedit);
+
+type
+ TAutoPanel = class(TPanel)
+ private
+ { Private declarations }
+ FEditorstyle:Teditorstyle;
+ FLeft :Integer;
+ FTop :Integer;
+ maxTextLen :Integer;
+ maxLabelLen :Integer;
+ FTitleVisible :Boolean;
+ FDataReadOnly :Boolean;
+ FPageCount :Integer;
+
+ FPass_Grid :TDBGrid;
+ FP_Move :TMovePanel;
+ FP_Parent :TPanel;
+
+ FPageControl: TPageControl; {ҳؼ}
+ FTabSheets :array of TTabSheet;
+ FScrollBox :array of TScrollBox; {ؼ}
+ FLineHeight :Integer;
+
+ //ؼ̬
+ MemoEditors :array of TMemo;
+ comEditors :array of TCombobox;
+ edEditors :array of Tedit;
+ ProgressEditor :array of Tedit;
+ Labels :array of TLabel; //ֶα⣬̬
+ ProgressBars :array of TGauge;
+ Shapes :array of TShape;
+ FDataSource :TDataSource; // Դ
+ FDataField_A :String; // DataField
+ FDataField_B :String; // DataField
+ FDataField_C :String; // DataField
+ FDataField_D :String; // DataField
+ FDataField_E :String; // DataField
+ FDataField_F :String; // DataField
+ FStore :String;
+ Fcnnstr :String;
+ FListSql :String;
+ FBerthFieldName :String;
+ FStoreFieldName :String;
+ FBerthTableName :String;
+
+ FColumns :Integer; //ʾ
+ tmpado :TadoDataset;
+ tmpDs :TDataSource;
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender:TObject; var Key :Word; Shift:TShiftState);
+ procedure AKeyPress(Sender:TObject; var Key :Char);
+ procedure AProgressEditorChange(Sender :TObject);
+ procedure inti_Grid(sender :TObject);
+ procedure LabelsClick(Sender: TObject);
+ procedure FP_MovePanelDblClick(Sender: TObject);
+ function comEditor(Index :Integer):TComboBox;
+ function edEditor(Index :Integer):Tedit;
+ function MemoEditor(Index :Integer) :TMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner:TComponent); override;
+ destructor Destroy; override;
+ procedure Setedit(Value :TEditorstyle);
+ procedure CreateEditors(var DS :TDataSource; cnnstr :String); //ֶεؼ
+ procedure ClearHits(ItemIndex :Integer);
+ procedure AddHits(ItemIndex:Integer; Hits :array of string);
+
+ { Public declarations }
+ published
+
+ property LimitLeft :Integer read FLeft write FLeft default 10;
+ property LimitTop :Integer read FTop write FTop default 10;
+ property Editorstyle :TEditorstyle read FEditorstyle write Setedit default TsMemo;
+
+ property EditorWidth :Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth :Integer read maxLabelLen write maxLabelLen default 100;
+ property TitleVisible :Boolean read FTitleVisible write FTitleVisible default True;
+ property DataReadOnly :Boolean read FDataReadOnly write FDataReadOnly; //default True;
+ property LineHeight :Integer read FLineHeight write FLineHeight default 15;
+ property DataSource :TDataSource read FDataSource write FDataSource; //Դ
+ property DataField_Editor :String read FDataField_A write FDataField_A;
+ property DataField_Title :String read FDataField_B write FDataField_B;
+ property DataField_Progress :String read FDataField_C write FDataField_C;
+ property DataField_BerthArea :String read FDataField_D write FDataField_D;
+ property DataField_IconLeft :String read FDataField_E write FDataField_E;
+ property DataField_IconTop :String read FDataField_F write FDataField_F;
+
+ property Data_BerthListSql :String read FListSql write FListSql;
+ property Data_BerthField :String read FBerthFieldName write FBerthFieldName;
+ property Data_StoreField :String read FStoreFieldName write FStoreFieldName;
+
+ property Data_BerthTable :String read FBerthTableName write FBerthTableName;
+ property Store_Name :String read FStore write FStore;
+ property Columns :Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TAutoPanel]);
+end;
+
+procedure TAutoPanel.Setedit(Value :TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TAutoPanel.AddHits(ItemIndex :Integer; Hits :array of string);
+var
+ m,n,i :Integer;
+begin
+
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:= 0 to m - 1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TAutoPanel.AKeyDown(Sender :TObject; var Key :Word; Shift :TShiftState);
+begin
+ //
+end;
+
+procedure TAutoPanel.AProgressEditorChange(Sender :TObject);
+begin
+ //
+end;
+
+procedure TAutoPanel.AKeyPress(Sender :TObject; var Key :Char);
+begin
+ if (Sender is TComboBox) or (Sender is Tedit) or (Sender is TMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TAutoPanel.ClearHits(ItemIndex :Integer);
+var
+ n :Integer;
+begin
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+constructor TAutoPanel.Create(AOwner :TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft := 20;
+ FTop := 20;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+ FTitleVisible := True;
+ FDataReadOnly := True;
+end;
+
+{ ֶεؼķ}
+procedure TAutoPanel.CreateEditors(var DS :TDataSource; cnnstr :String);
+
+var
+ i,j,n,This_Index,TextHeight :Integer;
+ tmp_col0,Tmp_Row0,tmp_col1,Tmp_Row1 :Integer;
+ XXX :TStringList;
+ tmpFlag :Boolean;
+begin
+ if (Store_Name = '')
+ or (Data_BerthTable = '')
+ or (DataField_BerthArea = '') then
+ exit;
+ { ͷȫؼڴ}
+ FreeEditors;
+
+ if DS = nil then exit;
+ if DataSource = nil then FDataSource := Ds;
+ if not DataSource.DataSet.Active then exit;
+ if (DataSource.DataSet is TAdoDataSet) = False then exit;
+ FPageCount := 0;
+ tmp_col1 := -1;
+ Tmp_Row1 := 0;
+
+ n := DataSource.DataSet.RecordCount;
+ if n <= 0 then exit;
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+
+ { ڴ}
+ SetLength(Labels,n);
+ SetLength(ProgressBars,n);
+ SetLength(ProgressEditor,n);
+ SetLength(Shapes,n);
+ if Columns = 0 then Columns := 6;
+ try
+ tmpado := TadoDataset.Create(Owner);
+ tmpDs := TDatasource.Create(Owner);
+ tmpDs.DataSet := tmpado;
+ with tmpado do
+ begin
+ Active := False;
+ Fcnnstr := cnnstr;
+ tmpado.ConnectionString := Fcnnstr;
+ //tmpado.Connection := (DataSource.DataSet as TAdoDataset).Connection;
+ tmpado.CommandText := ' Select '+DataField_BerthArea+' '
+ + ' from '+Data_BerthTable+' where '+DataField_BerthArea+' is not null'
+ + ' and '+Data_StoreField+' = '''+Store_Name+''''
+ + ' Group by '+DataField_BerthArea+' order by '+DataField_BerthArea+'';
+ Active := True;
+ FPageCount := RecordCount;
+ if FPageCount = 0 then exit;
+
+ first;
+ // PageControl
+ FPageControl := TPageControl.Create(Owner);
+ FPageControl.Parent := Self;
+ FPageControl.Font.Name := '';
+ FPageControl.Font.Size := 9;
+ FPageControl.Align := alClient;
+ FPageControl.Visible := False;
+
+ { ڴ}
+ setlength(FTabSheets,FPageCount+1);
+ setlength(FScrollBox,FPageCount+1);
+ XXX := TStringList.Create();
+ for j := 0 to FPageCount do
+ begin
+ { FPageControlҳ}
+ FTabSheets[j] := TTabSheet.Create(Owner);
+ FTabSheets[j].Parent := FPageControl;
+ FTabSheets[j].ParentFont := True;
+ FTabSheets[j].PageControl := FPageControl;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].PageIndex := j;
+
+ if j < FPageCount then
+ begin
+ FTabSheets[j].Caption := '' + trim(fieldByName(DataField_BerthArea).AsString);
+ FTabSheets[j].Hint := trim(fieldByName(DataField_BerthArea).AsString);
+ XXX.Append(trim(fieldByName(DataField_BerthArea).AsString));
+ end
+ else
+ begin
+ FTabSheets[j].Caption := 'δָ';
+ FTabSheets[j].Hint := '';
+ XXX.Append('δָ');
+ end;
+ FTabSheets[j].ShowHint := False;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].Align := alClient;
+
+ //
+ FScrollBox[j] := TScrollBox.Create(Owner);
+ FScrollBox[j].Visible := True;
+ FScrollBox[j].Parent := FTabSheets[j];
+ FScrollBox[j].Color := ClBlack;//clTeal;
+ FScrollBox[j].Align := alClient;
+ FScrollBox[j].Hint := FTabSheets[j].Hint;
+ FScrollBox[j].ShowHint := False;
+
+ next;
+ end;
+
+ end;
+
+ if FEditorstyle = Tscombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = Tsedit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ //DataField_BerthArea
+ if DataSource.DataSet.Fieldbyname(DataField_BerthArea).AsVariant = null then
+ This_Index := FPageCount
+ else
+ This_Index := XXX.IndexOf(trim(DataSource.DataSet.Fieldbyname(DataField_BerthArea).Asstring));
+
+ tmpFlag := False;
+ if DataSource.DataSet.Fieldbyname(DataField_IconLeft).AsVariant <> null then
+ tmp_col0 := DataSource.DataSet.Fieldbyname(DataField_IconLeft).Asinteger -1
+ else
+ begin
+ tmpFlag := True;
+ if tmp_col1 = Columns -1 then
+ begin
+ tmp_col1 := 0;
+ tmp_Row1 := tmp_Row1 +1;
+ end
+ else
+ tmp_col1 := tmp_col1 + 1;
+ tmp_col0 := tmp_col1;
+ This_Index := FPageCount;
+ end;
+
+ if DataSource.DataSet.Fieldbyname(DataField_IconTop).AsVariant <> null then
+ tmp_Row0 := DataSource.DataSet.Fieldbyname(DataField_IconTop).Asinteger - 1
+ else
+ begin
+ if not tmpFlag then
+ begin
+ if tmp_col1 = Columns - 1 then
+ begin
+ tmp_col1 := 0;
+ tmp_Row1 := tmp_Row1 +1;
+ end
+ else
+ tmp_col1 := tmp_col1 + 1;
+ end;
+ tmp_Row0 := tmp_Row1;
+ This_Index := FPageCount;
+ end;
+ { }
+ Labels[i] := TLabel.Create(owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := (FScrollBox[This_Index] as TScrollBox); // FScrollBox[This_Index];
+ Labels[i].Font.Name := '';
+ Labels[i].Font.Size := 9;
+ Labels[i].Font.Color := ClBlue;
+ Labels[i].OnClick := LabelsClick;
+ //Labels[i].Font.Style := [FsBold];
+ Labels[i].Transparent := True;
+ if DataSource.DataSet.Fieldbyname(DataField_Title).AsVariant <> null then
+ Labels[i].caption := DataSource.DataSet.Fieldbyname(DataField_Title).AsString
+ else
+ Labels[i].caption := '';
+ Labels[i].Hint := 'λ[' + Labels[i].caption + ']';
+ Labels[i].ShowHint := True;
+ if FEditorstyle = TsMemo then
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*3+30) + 2;
+ Labels[i].Left := FLeft + (maxLabelLen + 40) * tmp_Col0 + 10;
+ Labels[i].Width := maxLabelLen;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*2+30) + 2;
+ Labels[i].Left := FLeft + (maxLabelLen + 30) * tmp_Col0 + 10;
+ Labels[i].Width := maxLabelLen;
+ end;
+
+ { ݶ}
+ ProgressEditor[i] := Tedit.Create(Owner);
+ ProgressEditor[i].visible := False;
+ ProgressEditor[i].Parent := FScrollBox[This_Index];
+ if DataSource.DataSet.Fieldbyname(DataField_Progress).AsVariant <> null then
+ ProgressEditor[i].Text := DataSource.DataSet.Fieldbyname(DataField_Progress).AsString
+ else
+ ProgressEditor[i].Text := '0';
+ ProgressEditor[i].OnChange := AProgressEditorChange;
+
+ { Ϣʾݶ}
+ if FEditorstyle = Tscombox then
+ begin
+ comEditors[i] := TComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox[This_Index]; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+20;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ comEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := True;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkHorizontalBar;
+ ProgressBars[i].Left := comEditors[i].Left;
+ ProgressBars[i].Width := comEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := comEditors[i].Top+comEditors[i].height+2;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ edEditors[i] := Tedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox[This_Index];
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+20;
+ edEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ edEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := True;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkHorizontalBar;
+ ProgressBars[i].Left := edEditors[i].Left;
+ ProgressBars[i].Width := edEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := edEditors[i].Top+edEditors[i].height+2;;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end
+ else
+ begin
+ MemoEditors[i] := Tmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox[This_Index];
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+20;
+ MemoEditors[i].Height := 60;
+ MemoEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ MemoEditors[i].Lines.Add(DataSource.DataSet.Fieldbyname(DataField_Editor).AsString);
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TGauge.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox[This_Index];
+ ProgressBars[i].Font.name := '';
+ ProgressBars[i].Font.Size := 9;
+ ProgressBars[i].ShowText := False;
+ ProgressBars[i].Font.Color := ClWindow;
+ ProgressBars[i].Kind := gkVerticalBar;
+ ProgressBars[i].Left := MemoEditors[i].Left + MemoEditors[i].Width +1;
+ ProgressBars[i].Width := 10;
+ ProgressBars[i].Height := MemoEditors[i].Height;
+ ProgressBars[i].Top := MemoEditors[i].Top;
+ ProgressBars[i].Progress := Round((DataSource.DataSet
+ .Fieldbyname(DataField_Progress).Ascurrency)*100);
+ end;
+ if ProgressBars[i].Progress <= 20 then
+ ProgressBars[i].ForeColor := RGB(48,48,96)
+ else if (ProgressBars[i].Progress > 20) and (ProgressBars[i].Progress <= 40) then
+ ProgressBars[i].ForeColor := RGB(48,48,144)
+ else if (ProgressBars[i].Progress > 40) and (ProgressBars[i].Progress <= 60) then
+ ProgressBars[i].ForeColor := RGB(96,48,144)
+ else if (ProgressBars[i].Progress > 60) and (ProgressBars[i].Progress <= 80) then
+ ProgressBars[i].ForeColor := RGB(144,48,144)
+ else if ProgressBars[i].Progress > 80 then
+ ProgressBars[i].ForeColor := RGB(200,48,48);
+
+ Shapes[i] := TShape.Create(Owner);
+ Shapes[i].Parent := FScrollBox[This_Index];
+ Shapes[i].Left := Labels[i].Left - 10;
+ Shapes[i].top := Labels[i].Top - 10;
+ if FEditorstyle = TsMemo then
+ begin
+ Shapes[i].height := ProgressBars[i].height + Labels[i].height +20 +10;
+ Shapes[i].Width := (ProgressBars[i].left - Labels[i].left) + ProgressBars[i].Width + 20;
+ end
+ else
+ begin
+ Shapes[i].height := (ProgressBars[i].Top - Labels[i].Top) + ProgressBars[i].Height + 20;
+ Shapes[i].Width := Labels[i].Width +20;
+ end;
+ Shapes[i].Brush.Color := clSkyBlue;
+ Shapes[i].Visible := True;
+ Shapes[i].SendToBack;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ tmpado.Close;
+ XXX.Free;
+ if FPageControl.PageCount > 0 then
+ begin
+ FPageControl.ActivePageIndex := FPageControl.PageCount-1;
+ FPageControl.ActivePageIndex := 0;
+ end;
+ Finally
+ FPageControl.Visible := True;
+ end;
+end;
+
+destructor TAutoPanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TAutoPanel.comEditor(Index :Integer) :TComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TAutoPanel.edEditor(Index :Integer) :Tedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TAutoPanel.MemoEditor(Index :Integer) :TMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+procedure TAutoPanel.inti_Grid(sender :TObject);
+begin
+ try
+ // FP_Parent
+ FP_Parent := TPanel.Create(Owner);
+ with FP_Parent Do
+ begin
+ Parent := Self;
+ Visible := False;
+ Font.Name := '';
+ Font.Size := 9;
+ Font.Style:= [fsBold];
+ Align := AlNone;
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ Width := 380;
+ Height := 250;
+ try
+ Left := round(((Sender as Tlabel).Parent.Width-380)/2);
+ Top := round(((Sender as Tlabel).Parent.height-250)/2);
+ except
+ Left := 0;
+ Top := 0;
+ end;
+ end;
+
+ FP_Move := TMovePanel.Create(Owner);
+ with FP_Move do
+ begin
+ Parent := FP_Parent;
+ ParentFont := true;
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ Height := 26;
+ Align := AlTop;
+ Color := clSkyBlue;
+ Caption := '';
+ OnDblClick := FP_MovePanelDblClick;
+ Visible := True;
+ end;
+
+ FPass_Grid := TDBGrid.Create(Owner);
+ with FPass_Grid do
+ begin
+ Parent := FP_Parent;
+ ParentFont := true;
+ Font.Style:= [];
+ Align := AlClient;
+ Visible := True;
+ DataSource := TmpDs;
+ end;
+ except
+ FPass_Grid := Nil;
+ FP_Move := Nil;
+ FP_Parent := Nil;
+ end;
+end;
+
+//ӦLabels[i]Click¼
+procedure TAutoPanel.LabelsClick(Sender: TObject);
+var
+ i :integer;
+ Tmp_Area,Tmp_Berth :String;
+begin
+ try
+ if FP_Parent = nil then inti_Grid(Sender);
+ if FP_Parent = nil then exit;
+ Tmp_Berth := trim((Sender as Tlabel).Caption);
+ Tmp_Area := trim(((Sender as Tlabel).Parent as TScrollBox).Hint);
+ if tmpado.Active then
+ begin
+ if tmpado.FieldValues['λ'] <> null then
+ if tmpado.FieldByName('λ').AsString = Tmp_Berth then
+ exit;
+ end;
+ screen.Cursor := crSQLWait;
+ //FP_Parent.Visible := False;
+ //FP_Parent.Left := FPageControl.Left + (Sender as Tlabel).Left + (Sender as Tlabel).Width + 28;
+ //FP_Parent.Top := FPageControl.Top + (Sender as Tlabel).top + (Sender as Tlabel).Height +4;
+ FP_Move.Caption := trim((Sender as Tlabel).Hint) + 'ϸб';
+ with tmpado do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ tmpado.CursorType := ctStatic;
+ tmpado.LockType := ltReadOnly;
+ CommandText := 'Exec '+Data_BerthListSql+' '''+Store_Name+''','''+Tmp_Area+''','''+Tmp_Berth+'''';
+ Active := True;
+ First;
+ EnableConTrols;
+ for i := 0 to Fields.Count -1 do
+ begin
+ Fields[i].Alignment := taCenter;
+ if i = 0 then
+ fields[i].DisplayWidth := 20
+ else
+ fields[i].DisplayWidth := 8;
+
+ Fpass_Grid.Columns[i].Title.Alignment := taCenter;
+ Fpass_Grid.Columns[i].Title.Font.Style:= [];
+ end;
+
+ end;
+ screen.Cursor := crDefault;
+ FP_Parent.Visible := True;
+ except
+ screen.Cursor := crDefault;
+ end;
+end;
+
+procedure TAutoPanel.FP_MovePanelDblClick(Sender: TObject);
+begin
+ FP_Parent.Visible := False;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TAutoPanel.FreeEditors;
+begin
+ if FPageControl <> nil then
+ begin
+ if FP_Parent <> nil then
+ begin
+ try
+ FPass_Grid.Free;
+ FP_Move.Free;
+ FP_Parent.Free;
+ except
+ //
+ end;
+ end;
+ FPass_Grid := nil;
+ FP_Move := nil;
+ FP_Parent := nil;
+ Shapes := nil;
+ ProgressBars := nil;
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox := nil;
+ tmpDs.Free;
+ tmpado.Free;
+ FPageControl.Free;
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DbPanel/Dbpanel.pas b/T03贸易布匹检验/DbPanel/Dbpanel.pas
new file mode 100644
index 0000000..6278e0f
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/Dbpanel.pas
@@ -0,0 +1,380 @@
+unit Dbpanel;
+
+interface
+uses
+ Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs,
+ ExtCtrls, dbctrls, stdctrls, db, ADODB, ComCtrls;
+
+type
+ TEditorstyle = (TsDbMemo,TsDBcombox,Tsdbedit);
+
+type
+ TDBPanel = class(TPanel)
+ private
+ { Private declarations }
+ FEditorstyle:Teditorstyle;
+ FLeft: Integer;
+ FTop: Integer;
+ maxTextLen: Integer;
+ maxLabelLen: Integer;
+ FTitleVisible :Boolean;
+ FScrollBox: TScrollBox; {ؼ}
+ FLineHeight: Integer;
+
+ //ؼ̬
+ MemoEditors: array of TDBMemo;
+ comEditors: array of TDBCombobox;
+ edEditors: array of TDBedit;
+ ProgressEditor :array of TDBedit;
+ Labels: array of TDBText; //ֶα⣬̬
+ ProgressBars: array of TProgressBar;
+
+ FDataSource: TDataSource; // Դ
+ FDataField_A: String; // DataField
+ FDataField_B: String; // DataField
+ FDataField_C: String; // DataField
+ FColumns: Integer; //ʾ
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender:TObject; var Key: Word; Shift:TShiftState);
+ procedure AKeyPress(Sender:TObject; var Key: Char);
+ procedure AProgressEditorChange(Sender: TObject);
+ function comEditor(Index: Integer):TDBComboBox;
+ function edEditor(Index: Integer):TDBedit;
+ function MemoEditor(Index: Integer): TDBMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner:TComponent); override;
+ destructor Destroy; override;
+ function Get_TitleVisible() :Boolean;
+ procedure Set_TitleVisible(Value : Boolean);
+ procedure Setedit(Value : TEditorstyle);
+ procedure CreateEditors(DS: TDataSource; ColCount: Integer); //ֶεؼ
+ procedure ClearHits(ItemIndex: Integer);
+ procedure AddHits(ItemIndex:Integer; Hits: array of string);
+
+ { Public declarations }
+ published
+
+ property LimitLeft: Integer read FLeft write FLeft default 10;
+ property LimitTop: Integer read FTop write FTop default 10;
+ property Editorstyle : TEditorstyle read FEditorstyle write Setedit default tsdbMemo;
+ property EditorWidth: Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth: Integer read maxLabelLen write maxLabelLen default 100;
+ property TitleVisible : Boolean read Get_TitleVisible write Set_TitleVisible default True;
+ property LineHeight: Integer read FLineHeight write FLineHeight default 15;
+ //property OnOkClick: TNotifyEvent read FClick write FClick;
+ property DataSource: TDataSource read FDataSource write FDataSource; //Դ
+ property DataField_Editor: String read FDataField_A write FDataField_A;
+ property DataField_Title: String read FDataField_B write FDataField_B;
+ property DataField_Progress: String read FDataField_C write FDataField_C;
+ property Columns: Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TDBPanel]);
+end;
+
+function TDBPanel.Get_TitleVisible() :Boolean;
+begin
+ Result := FTitleVisible;
+end;
+
+procedure TDBPanel.Set_TitleVisible(Value : Boolean);
+begin
+ FTitleVisible := Value;
+end;
+
+procedure TDBPanel.Setedit(Value : TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TDBPanel.AddHits(ItemIndex:
+Integer; Hits: array of string);
+var
+ m,n,i: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TDBPanel.AKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+ if (Sender is TDBComboBox) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBComboBox).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBComboBox).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBedit) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBedit).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBedit).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBMemo) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBMemo).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBMemo).DataSource.DataSet.Prior;
+ end;
+ end;
+end;
+
+procedure TDBPanel.AProgressEditorChange(Sender: TObject);
+begin
+ //
+end;
+
+procedure TDBPanel.AKeyPress(Sender: TObject; var Key: Char);
+begin
+ if (Sender is TDBComboBox) or (Sender is TDBedit) or (Sender is TDBMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TDBPanel.ClearHits(ItemIndex: Integer);
+var
+ n: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+constructor TDBPanel.Create(AOwner: TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft :=10;
+ FTop := 10;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+end;
+
+{ ֶεؼķ}
+procedure TDBPanel.CreateEditors(DS: TDataSource; ColCount: Integer);
+var
+ i, n, RowCount: Integer;
+ TextHeight: Integer;
+begin
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ n := DataSource.DataSet.RecordCount;
+ if n > 0 then
+ begin
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+ { }
+ if (FColumns = 0) or (FColumns <> ColCount) then FColumns := ColCount;
+ RowCount := n div Columns;
+ if n mod Columns <> 0 then inc(RowCount);
+ { ڴ}
+ FreeEditors;
+ SetLength(Labels,n);
+ SetLength(ProgressBars,n);
+ SetLength(ProgressEditor,n);
+ if FEditorstyle = TsDBcombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = TsDBEdit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+ { }
+ FScrollBox := TScrollBox.Create(Owner);
+ FScrollBox.Visible := False;
+ FScrollBox.Parent := Self;
+ FScrollBox.Align := alClient;
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ { }
+ Labels[i] := TDBText.Create(Owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := FScrollBox;
+ Labels[i].DataField := DataField_Title;
+ Labels[i].DataSource := DataSource;
+ Labels[i].Left := FLeft + (maxLabelLen + 36) * (i div RowCount)+16; //+maxTextLen
+ if FEditorstyle = TsDBMemo then
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*4+10) + 2;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*2+10) + 2;
+ Labels[i].Width := maxLabelLen;
+ end;
+ { ݶ}
+ ProgressEditor[i] := TDBedit.Create(Owner);
+ ProgressEditor[i].visible := False;
+ ProgressEditor[i].Parent := FScrollBox;
+ ProgressEditor[i].DataField := DataField_Progress;
+ ProgressEditor[i].DataSource := DataSource;
+ ProgressEditor[i].OnChange := AProgressEditorChange;
+
+ { Ϣʾݶ}
+ if FEditorstyle = TsDBcombox then
+ begin
+ comEditors[i] := TDBComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+20;
+ comEditors[i].DataSource := DataSource;
+ comEditors[i].DataField := DataField_Editor;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbHorizontal;
+ ProgressBars[i].Left := comEditors[i].Left;
+ ProgressBars[i].Width := comEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := comEditors[i].Top+comEditors[i].height+2;
+ ProgressBars[i].Position := i*4
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ edEditors[i] := TDBedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox;
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+20;
+ edEditors[i].DataSource := DataSource;
+ edEditors[i].DataField := DataField_Editor;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbHorizontal;
+ ProgressBars[i].Left := edEditors[i].Left;
+ ProgressBars[i].Width := edEditors[i].Width;
+ ProgressBars[i].Height := 10;
+ ProgressBars[i].Top := edEditors[i].Top+edEditors[i].height+2;;
+ ProgressBars[i].Position := i*4
+ end
+ else
+ begin
+ MemoEditors[i] := TDBmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox;
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+20;
+ MemoEditors[i].DataSource := DataSource;
+ MemoEditors[i].DataField := DataField_Editor;
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ ProgressBars[i] := TProgressBar.Create(Owner);
+ ProgressBars[i].Parent := FScrollBox;
+ ProgressBars[i].Orientation := pbVertical;
+ ProgressBars[i].Left := MemoEditors[i].Left + MemoEditors[i].Width +1;
+ ProgressBars[i].Width := 10;
+ ProgressBars[i].Height := MemoEditors[i].Height;
+ ProgressBars[i].Top := MemoEditors[i].Top;
+ ProgressBars[i].Position := i*4
+ end;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ FScrollBox.Visible := True;
+ end;
+end;
+
+destructor TDBPanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TDBPanel.comEditor(Index: Integer): TDBComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TDBPanel.edEditor(Index: Integer): TDBedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TDBPanel.MemoEditor(Index: Integer): TDBMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TDBPanel.FreeEditors;
+begin
+ if FScrollBox <> nil then
+ begin
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox.Free;
+ FScrollBox := nil;
+ end;
+end;
+
+end.
+
\ No newline at end of file
diff --git a/T03贸易布匹检验/DbPanel/JKFootpanel.pas b/T03贸易布匹检验/DbPanel/JKFootpanel.pas
new file mode 100644
index 0000000..66afa28
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/JKFootpanel.pas
@@ -0,0 +1,339 @@
+unit JKFootpanel;
+
+interface
+uses
+ Windows, Messages, SysUtils, Classes,Graphics, Controls, Forms, Dialogs,
+ ExtCtrls, dbctrls, stdctrls, db, ADODB, ComCtrls;
+
+type
+ TEditorstyle = (TsDbMemo,TsDBcombox,Tsdbedit);
+
+type
+ TJKFootpanel = class(TPanel)
+ private
+ { Private declarations }
+ FLeft: Integer;
+ FTop: Integer;
+ maxTextLen: Integer;
+ maxLabelLen: Integer;
+ FScrollBox: TScrollBox; {ؼ}
+ FLineHeight: Integer;
+ FEditorstyle:Teditorstyle;
+ FTitleVisible :Boolean;
+ //ؼ̬
+ MemoEditors :array of TDBMemo;
+ comEditors :array of TDBCombobox;
+ edEditors :array of TDBedit;
+ Labels :array of TLAbel; //ֶα⣬̬
+ FDataSource :TDataSource; // Դ
+ FColumns :Integer; //ʾ
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender :TObject; var Key: Word; Shift:TShiftState);
+ procedure AKeyPress(Sender :TObject; var Key: Char);
+ function comEditor(Index :Integer):TDBComboBox;
+ function edEditor(Index :Integer):TDBedit;
+ function MemoEditor(Index :Integer): TDBMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner :TComponent); override;
+ destructor Destroy; override;
+ procedure Setedit(Value :TEditorstyle);
+ procedure ClearHits(ItemIndex :Integer);
+ procedure AddHits(ItemIndex :Integer; Hits :array of string);
+ Function CreateEditors(DS :TDataSource; ColCount :Integer) :integer; //ֶεؼ
+
+ { Public declarations }
+ published
+
+ property LimitLeft :Integer read FLeft write FLeft default 10;
+ property LimitTop :Integer read FTop write FTop default 10;
+ property Editorstyle :TEditorstyle read FEditorstyle write FEditorstyle default Tsdbedit;
+ property EditorWidth :Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth :Integer read maxLabelLen write maxLabelLen default 100;
+ property LineHeight :Integer read FLineHeight write FLineHeight default 15;
+ property TitleVisible :Boolean read FTitleVisible write FTitleVisible default True;
+ property DataSource :TDataSource read FDataSource write FDataSource; //Դ
+ property Columns :Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+constructor TJKFootpanel.Create(AOwner: TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft :=16;
+ FTop := 10;
+ maxTextLen := 100;
+ maxLabelLen := 100;
+ FLineHeight := 15;
+ FTitleVisible := True;
+ Editorstyle := Tsdbedit;
+end;
+
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TJKFootpanel]);
+end;
+
+
+procedure TJKFootpanel.Setedit(Value : TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TJKFootpanel.AddHits(ItemIndex:
+Integer; Hits: array of string);
+var
+ m,n,i: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TJKFootpanel.AKeyPress(Sender: TObject; var Key: Char);
+begin
+ if (Sender is TDBComboBox) or (Sender is TDBedit) or (Sender is TDBMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TJKFootpanel.ClearHits(ItemIndex: Integer);
+var
+ n: Integer;
+begin
+ if FEditorstyle = TsDBcombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsDBMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+{ ֶεؼķ}
+Function TJKFootpanel.CreateEditors(DS: TDataSource; ColCount: Integer):Integer ;
+var
+ i, n, RowCount: Integer;
+ TextHeight: Integer;
+begin
+ result := 120;
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ Columns := ColCount;
+ if Columns = 0 then exit;
+ n := DataSource.DataSet.fieldCount;
+ if n > 0 then
+ begin
+ DataSource.DataSet.DisableControls;
+ if maxLabelLen < maxTextLen then
+ maxTextLen := maxLabelLen;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + FLineHeight; //10;
+ { }
+ if Columns > n then
+ Columns := n
+ else
+ Columns := ColCount;
+
+ RowCount := n div Columns;
+ if n mod Columns <> 0 then inc(RowCount);
+ { ڴ}
+ FreeEditors;
+ SetLength(Labels,n);
+ if FEditorstyle = TsDBcombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = TsDBEdit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+ { }
+ FScrollBox := TScrollBox.Create(Owner);
+ FScrollBox.Visible := False;
+ FScrollBox.Parent := Self;
+ FScrollBox.Align := alClient;
+ //FScrollBox.Color := clSkyBlue;
+ FScrollBox.OnDblClick := OnDblClick;
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ { }
+ Labels[i] := TLabel.Create(Owner);
+ Labels[i].visible := TitleVisible;
+ Labels[i].Parent := FScrollBox;
+ Labels[i].Caption := DataSource.DataSet.Fields[i].FieldName;
+ Labels[i].Left := FLeft + (maxLabelLen + 16) * (i div RowCount)+ 2; //+maxTextLen
+ if FEditorstyle = TsDBMemo then
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*2+4) + 12;
+ end
+ else
+ begin
+ Labels[i].Width := maxLabelLen;
+ Labels[i].Top := FTop + (i mod RowCount) * (TextHeight*1 +12)
+ end;
+
+ { Ϣʾݶ}
+ if FEditorstyle = TsDBcombox then
+ begin
+ comEditors[i] := TDBComboBox.Create(Owner);
+ comEditors[i].Parent := FScrollBox; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ comEditors[i].Top := Labels[i].Top+15;
+ comEditors[i].DataSource := DataSource;
+ comEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ comEditors[i].OnKeyPress := AKeyPress;
+ comEditors[i].OnKeyDown := AKeyDown;
+ comEditors[i].Font.Color := ClBlue;
+ end
+ else if FEditorstyle = TsDBEdit then
+ begin
+ edEditors[i] := TDBedit.Create(Owner);
+ edEditors[i].Parent := FScrollBox;
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ edEditors[i].Top := Labels[i].Top+15;
+ edEditors[i].DataSource := DataSource;
+ edEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ edEditors[i].OnKeyPress := AKeyPress;
+ edEditors[i].OnKeyDown := AKeyDown;
+ edEditors[i].Font.Color := ClBlue;
+
+ end
+ else
+ begin
+ MemoEditors[i] := TDBmemo.Create(Owner);
+ MemoEditors[i].Parent := FScrollBox;
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ MemoEditors[i].Top := Labels[i].Top+15;
+ MemoEditors[i].DataSource := DataSource;
+ MemoEditors[i].DataField := DataSource.DataSet.Fields[i].FieldName;
+ MemoEditors[i].OnKeyPress := AKeyPress;
+ MemoEditors[i].OnKeyDown := AKeyDown;
+ MemoEditors[i].Font.Color := ClBlue;
+ end;
+ end;
+ if FEditorstyle = TsDBMemo then
+ result := RowCount*TextHeight*4 +20
+ else
+ result := RowCount*TextHeight*2 +20;
+ DataSource.DataSet.EnableControls;
+ FScrollBox.Visible := True;
+ end;
+end;
+
+destructor TJKFootpanel.Destroy;
+begin
+ FreeEditors;
+ Inherited Destroy;
+end;
+
+function TJKFootpanel.comEditor(Index: Integer): TDBComboBox;
+begin
+ if Index< Length(comEditors) then Result := comEditors[Index]
+ else Result := nil;
+end;
+
+function TJKFootpanel.edEditor(Index: Integer): TDBedit;
+begin
+ if Index < Length(edEditors) then Result := edEditors[Index]
+ else Result := nil;
+end;
+function TJKFootpanel.MemoEditor(Index: Integer): TDBMemo;
+begin
+ if Index< Length(MemoEditors) then Result := MemoEditors[Index]
+ else Result := nil;
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TJKFootpanel.FreeEditors;
+begin
+ if FScrollBox <> nil then
+ begin
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ FScrollBox.Free;
+ FScrollBox := nil;
+ end;
+end;
+
+
+procedure TJKFootpanel.AKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+{
+ if (Sender is TDBComboBox) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBComboBox).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBComboBox).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBedit) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBedit).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBedit).DataSource.DataSet.Prior;
+ end;
+ end
+ else if (Sender is TDBMemo) then
+ begin
+ case Key of
+ VK_Next: (Sender as TDBMemo).DataSource.DataSet.Next;
+ VK_PRIOR: (Sender as TDBMemo).DataSource.DataSet.Prior;
+ end;
+ end;
+ }
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DbPanel/JkPanel.pas b/T03贸易布匹检验/DbPanel/JkPanel.pas
new file mode 100644
index 0000000..90b6a8f
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/JkPanel.pas
@@ -0,0 +1,1123 @@
+unit JkPanel;
+
+interface
+uses
+ Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
+ ExtCtrls,dbctrls,stdctrls,db,ADODB,ComCtrls,Variants,Gauges,
+ SqlExpr,Grids,DBGrids,MovePanel,JKFootpanel,Buttons,dsr;
+
+type
+ TEditorstyle = (TsMemo,Tscombox,Tsedit);
+
+type
+ TJkPanel = class(TPanel)
+ private
+ { Private declarations }
+ This_Jth :string; //̨
+ This_TaskOrder :string; //
+
+ FEditorstyle:Teditorstyle;
+ FLeft :Integer;
+ FTop :Integer;
+ maxTextLen :Integer;
+ maxLabelLen :Integer;
+ maxDgheight :Integer;
+ maxFootHeight :integer;
+ FTitleVisible :Boolean;
+ FEditorVisible :Boolean;
+ FDataReadOnly :Boolean;
+ FPageCount :Integer;
+
+ FPass_Grid :TDBGrid;
+ FP_Move :TMovePanel;
+ FP_Parent :TPanel;
+
+ ColorLabels :array of TLabel;
+ Co_Shapes :array of TShape;
+ Co_DllBtn :array of TSpeedButton;
+ Co_Panels :array of TPanel;
+
+ FPageControl: TPageControl; {ҳؼ}
+ FTabSheets :array of TTabSheet;
+
+ ScrollBoxs :array of TScrollBox; {ؼ}
+ Splitters :array of TSplitter; {ָؼ}
+ FootPanels :array of TJKFootpanel; {Footҳʾؼ}
+ FLineHeight :Integer;
+
+ //ؼ̬
+ MemoEditors :array of TMemo;
+ comEditors :array of TCombobox;
+ edEditors :array of Tedit;
+
+ DGLists :array of TDbGrid;
+ AdoLists :array of TadoDataset;
+ DsLists :array of TDataSource;
+
+ DGGlides :array of TDbGrid;
+ AdoGlides :TadoDataset;
+ DsGlides :TDataSource;
+
+ ProgressEditor :array of Tedit;
+ Labels :array of TLabel; //ֶα⣬̬
+
+ ProgressBars :array of TGauge;
+ Shapes :array of TShape;
+ FDataSource :TDataSource; // Դ
+ FDataField_A :String; // DataField
+ FDataField_B :String; // DataField
+ FDataField_C :String; // DataField
+ FDataField_ColA :String; // DataField
+ FDataField_ColB :String; // DataField
+ Fcnnstr :String;
+ FPageSql :string;
+ FListSql :String;
+ FFootSql :string;
+ FGlideSql :String;
+ FCheJianFieldName :String;
+
+ FColumns :Integer; //ʾ
+ tmpado :TadoDataset;
+ tmpDs :TDataSource;
+ TmpDgListIdx,TmpDgListCol:integer;
+
+ procedure FreeEditors; //ͷؼڴ
+ procedure AKeyDown(Sender:TObject; var Key :Word; Shift:TShiftState);
+ procedure AKeyPress(Sender:TObject; var Key :Char);
+ procedure AProgressEditorChange(Sender :TObject);
+ //procedure inti_Grid(sender :TObject);
+ procedure LabelsClick(Sender: TObject);
+ procedure Co_DllBtnClick(Sender: TObject);
+ procedure AdolistsAfterScroll(DataSet: TDataSet);
+ procedure DGListsCellClick(Column: TColumn);
+ procedure DGListsDrawColumnCell(Sender: TObject;
+ const Rect: TRect;DataCol: Integer;
+ Column: TColumn;State: TGridDrawState);
+ procedure refreshFootpanel(Tag :integer);
+ procedure DGGlideDrawColumnCell(Sender: TObject;
+ const Rect: TRect; DataCol: Integer; Column: TColumn;
+ State: TGridDrawState);
+
+ procedure FP_MovePanelDblClick(Sender: TObject);
+ procedure FootPanelDblclick(Sender: TObject);
+ //function comEditor(Index :Integer):TComboBox;
+ //function edEditor(Index :Integer):Tedit;
+ //function MemoEditor(Index :Integer) :TMemo;
+ protected
+ { Protected declarations }
+
+ public
+ constructor Create(AOwner:TComponent); override;
+ // destructor Destroy; override;
+ procedure Setedit(Value :TEditorstyle);
+ procedure CreateEditors(var DS :TDataSource; cnnstr :String;
+ Const Defaultsheet :String = ''); //ֶεؼ
+ procedure ClearHits(ItemIndex :Integer);
+ procedure AddHits(ItemIndex:Integer; Hits :array of string);
+
+ { Public declarations }
+ published
+
+ property LimitLeft :Integer read FLeft write FLeft default 10;
+ property LimitTop :Integer read FTop write FTop default 10;
+ property Editorstyle :TEditorstyle read FEditorstyle write Setedit default TsMemo;
+
+ property EditorWidth :Integer read maxTextLen write maxTextLen default 100;
+ property TitleWidth :Integer read maxLabelLen write maxLabelLen default 100;
+ property DgHeight :Integer read maxDgheight write maxDgheight default 300;
+ property FootHeight :Integer read maxFootHeight write maxFootHeight default 200;
+ property TitleVisible :Boolean read FTitleVisible write FTitleVisible default True;
+ property EditorVisible :Boolean read FEditorVisible write FEditorVisible default True;
+ property DataReadOnly :Boolean read FDataReadOnly write FDataReadOnly; //default True;
+ property LineHeight :Integer read FLineHeight write FLineHeight default 15;
+ property DataSource :TDataSource read FDataSource write FDataSource; //Դ
+ property DataField_ColA :String read FDataField_A write FDataField_ColA;
+ property DataField_ColB :String read FDataField_B write FDataField_ColB;
+ property DataField_Editor :String read FDataField_A write FDataField_A;
+ property DataField_Title :String read FDataField_B write FDataField_B;
+ property DataField_Progress :String read FDataField_C write FDataField_C;
+
+ property Data_PageSql :String read FPageSql write FPageSql;
+ property Data_DgListSql :String read FListSql write FListSql;
+ property Data_FootSql :String read FFootSql write FFootSql;
+ property Data_GlideSql :String read FGlideSql write FGlideSql;
+ property Data_CheJianField :String read FCheJianFieldName write FCheJianFieldName;
+ property Columns :Integer read FColumns write FColumns default 4;//
+
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+
+constructor TJkPanel.Create(AOwner :TComponent);
+begin
+ Inherited Create(AOWner);
+ FLeft := 20;
+ FTop := 20;
+ maxTextLen := 250;
+ maxLabelLen := 250;
+ maxDgheight := 200;
+ maxFootHeight := 150;
+ FLineHeight := 15;
+ FTitleVisible := True;
+ FDataReadOnly := True;
+end;
+
+procedure TJkPanel.Setedit(Value :TEditorstyle);
+begin
+ if FEditorstyle <> Value then
+ begin
+ FEditorstyle := Value;
+ Invalidate;
+ end;
+end;
+
+{ ΪIֶʾϢķ}
+procedure TJkPanel.AddHits(ItemIndex :Integer; Hits :array of string);
+var
+ m,n,i :Integer;
+begin
+
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:= 0 to m - 1 do
+ comEditors[ItemIndex].Items.Add(Hits[i]);
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ edEditors[ItemIndex].Hint:= Hits[i];
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(memoEditors);
+ m := Length(Hits);
+ if ItemIndex< n then
+ for i:=0 to m-1 do
+ memoEditors[ItemIndex].Hint:= Hits[i];
+ end;
+end;
+
+procedure TJkPanel.AKeyDown(Sender :TObject; var Key :Word; Shift :TShiftState);
+begin
+ //
+end;
+
+procedure TJkPanel.AProgressEditorChange(Sender :TObject);
+begin
+ //
+end;
+
+procedure TJkPanel.AKeyPress(Sender :TObject; var Key :Char);
+begin
+ if (Sender is TComboBox) or (Sender is Tedit) or (Sender is TMemo) then
+ if Key=#13 then
+ (Owner as TForm).Perform(WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TJkPanel.ClearHits(ItemIndex :Integer);
+var
+ n :Integer;
+begin
+ if FEditorstyle = Tscombox then
+ begin
+ n := Length(comEditors);
+ if ItemIndex< n then comEditors[ItemIndex].Items.Clear;
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ n := Length(edEditors);
+ if ItemIndex< n then edEditors[ItemIndex].Hint:='';;
+ end
+ else if FEditorstyle = TsMemo then
+ begin
+ n := Length(MemoEditors);
+ if ItemIndex< n then MemoEditors[ItemIndex].Hint:='';;
+ end;
+
+end;
+
+
+{ ֶεؼķ}
+procedure TJkPanel.CreateEditors(var DS :TDataSource; cnnstr :String; Const Defaultsheet :String = '');
+var
+ Tmp_CheJian,Tmp_Parm :String;
+ i,j,n,k,This_Index,TextHeight :Integer;
+ tmp_col0,Tmp_Row0,Tmp_Row1 :Integer;
+ XXX :TStringList;
+ kkk,RRR :array of integer;
+ DefaultIndex :Integer; //Ĭϳ
+begin
+ if (Data_CheJianField = '') then exit;
+ { ͷȫؼڴ}
+ FreeEditors;
+ if DS = nil then exit;
+ if DataSource = nil then FDataSource := Ds;
+ if not DataSource.DataSet.Active then exit;
+ if (DataSource.DataSet is TAdoDataSet) = False then exit;
+ TmpDgListIdx := -1;
+ FPageCount := 0;
+ DefaultIndex := 0;
+ n := DataSource.DataSet.RecordCount;
+ if n <= 0 then exit;
+ DataSource.DataSet.DisableControls;
+ if TitleWidth < maxTextLen then
+ maxTextLen := TitleWidth;
+
+ { ıⳤȼʾ}
+ DataSource.DataSet.First;
+ { ߶}
+ TextHeight := Canvas.TextHeight(DataSource.DataSet.Fields[0].DisplayLabel) + LineHeight; //10;
+
+ { ڴ}
+ SetLength(AdoLists,n);
+ SetLength(DsLists,n);
+ SetLength(DGLists,n);
+
+ SetLength(Labels,n);
+ SetLength(ColorLabels,n);
+ SetLength(ProgressEditor,n);
+ SetLength(Shapes,n);
+
+ { ݸ֪ؼ AdoGlidesDsGlides}
+ AdoGlides := TadoDataset.Create(owner);
+ DsGlides := TDatasource.Create(owner);
+ DsGlides.DataSet := AdoGlides;
+
+ if Columns = 0 then Columns := 6;
+ try
+ tmpado := TadoDataset.Create(Owner);
+ tmpDs := TDatasource.Create(Owner);
+ tmpDs.DataSet := tmpado;
+ with tmpado do
+ begin
+ Active := False;
+ Fcnnstr := cnnstr;
+ tmpado.ConnectionString := Fcnnstr;
+ tmpado.CommandText := Data_PageSql;
+ Active := True;
+ FPageCount := RecordCount;
+ if FPageCount = 0 then exit;
+
+ setlength(kkk,FPageCount);
+ for i := 0 to high(kkk) do
+ kkk[i] := -1;
+ SetLength(RRR,FPageCount);
+ for i := 0 to high(RRR) do
+ RRR[i] := 0;
+ first;
+ // PageControl
+ FPageControl := TPageControl.Create(Owner);
+ FPageControl.Parent := Self;
+ FPageControl.Font.Name := '';
+ FPageControl.Font.Size := 9;
+ FPageControl.Align := alClient;
+ FPageControl.Visible := False;
+
+ { ڴ}
+ setlength(FTabSheets,FPageCount+1);
+ setlength(ScrollBoxs,FPageCount+1);
+ setlength(FootPanels,FPageCount+1);
+ setlength(Splitters,FPageCount+1);
+ setlength(Co_Shapes,FPageCount+1);
+ setlength(Co_DllBtn,FPageCount+1);
+ setlength(Co_Panels,FPageCount+1);
+ SetLength(DGGlides,FPageCount+1);
+
+ XXX := TStringList.Create();
+ for j := 0 to FPageCount do
+ begin
+ { FPageControlҳ}
+ FTabSheets[j] := TTabSheet.Create(Owner);
+ FTabSheets[j].Parent := FPageControl;
+ FTabSheets[j].ParentFont := True;
+ FTabSheets[j].PageControl := FPageControl;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].PageIndex := j;
+
+ if j < FPageCount then
+ begin
+ Tmp_CheJian := trim(fieldByName(Data_CheJianField).AsString);
+ if Defaultsheet <> '' then //ָĬϳ
+ begin
+ if Tmp_CheJian = Defaultsheet then
+ DefaultIndex := j;
+ end;
+ FTabSheets[j].Caption := '䣺' + Tmp_CheJian;
+ FTabSheets[j].Hint := Tmp_CheJian;
+ XXX.Append(Tmp_CheJian);
+ end
+ else
+ begin
+ Tmp_CheJian := '';
+ FTabSheets[j].Caption := 'δָ';
+ FTabSheets[j].Hint := Tmp_CheJian;
+ XXX.Append('δָ');
+ end;
+ FTabSheets[j].ShowHint := False;
+ FTabSheets[j].Visible := True;
+ FTabSheets[j].Align := alClient;
+
+ //Footҳʾؼ
+ FootPanels[j] := TJKFootpanel.Create(Owner);
+ with FootPanels[j] do
+ begin
+ Visible := True;
+ Parent := FTabSheets[j];
+ // BevelInner := bvLowered;
+ //BevelOuter := bvRaised;
+ Left := 0;
+ Width := 1;
+ Align := alRight;
+ Hint := FTabSheets[j].Hint;
+ ShowHint := False;
+ onDblclick := FootPanelDblclick;
+ LimitLeft := 8;
+ Ctl3D := False;
+ end;
+
+ //ɫʾؼ
+ Co_Panels[j] := Tpanel.Create(Owner);
+ with Co_Panels[j] do
+ begin
+ Visible := True;
+ Parent := FootPanels[j];
+ BevelInner := bvLowered;
+ BevelOuter := bvRaised;
+ height := 40;
+ Co_Panels[j].BorderWidth := 2;
+ Align := alTop;
+ end;
+
+ //ɫʾؼ
+ Co_Shapes[j] := TShape.Create(Owner);
+ with Co_Shapes[j] do
+ begin
+ Visible := True;
+ Parent := Co_Panels[j];
+ Width := FootHeight;
+ Align := alClient;
+ end;
+
+ //ťؼ
+ Co_DllBtn[j] := TSpeedButton.Create(Owner);
+ with Co_DllBtn[j] do
+ begin
+ Visible := True;
+ Parent := FootPanels[j];
+ height := 25;
+ Tag := j;
+ Font.name := '';
+ Font.Size := 9;
+ Align := alTop;
+ Font.Color := ClBlue;
+ //Flat := true;
+ caption := '̴';
+ OnClick := Co_DllBtnClick;
+ end;
+
+ { DbGridؼ DGGlides}
+ DGGlides[j]:= TDBGrid.Create(owner);
+ with DGGlides[j] do
+ begin
+ Visible := True;
+ Parent := FootPanels[j];
+ height := 110;
+ Align := alTop;
+ Tag := j;
+ Font.name := '';
+ Font.Size := 9;
+ ReadOnly := True;
+ Options := [dgEditing,dgMultiSelect]; //,dgRowLines,dgColumnResize,
+ FixedColor := clSkyBlue;
+ OnDrawColumnCell := DGGlideDrawColumnCell;
+ end;
+
+ //ָؼ
+ Splitters[j] := TSplitter.Create(Owner);
+ with Splitters[j] do
+ begin
+ Visible := True;
+ Parent := FTabSheets[j];
+ Width := 4;
+ Align := alRight;
+ end;
+
+ //
+ ScrollBoxs[j] := TScrollBox.Create(Owner);
+ with ScrollBoxs[j] do
+ begin
+ Visible := True;
+ Parent := FTabSheets[j];
+ Color := RGB(100,100,100);//clTeal;
+ Align := alClient;
+ Hint := FTabSheets[j].Hint;
+ ShowHint := False;
+ end;
+
+ next;
+ end;
+
+ end;
+
+ if FEditorstyle = Tscombox then
+ SetLength(comEditors,n)
+ else if FEditorstyle = Tsedit then
+ SetLength(edEditors,n)
+ else
+ SetLength(MemoEditors,n);
+
+
+ { ༭}
+ for i := 0 to n - 1 do
+ begin
+ if DataSource.DataSet.Fieldbyname(Data_CheJianField).AsVariant = null then
+ This_Index := FPageCount
+ else
+ This_Index := XXX.IndexOf(trim(DataSource.DataSet.Fieldbyname(Data_CheJianField).Asstring));
+ if kkk[This_Index] >= Columns -1 then
+ begin
+ kkk[This_Index] := 0;
+ RRR[This_Index] := RRR[This_Index] +1;
+ end
+ else
+ kkk[This_Index] := kkk[This_Index] + 1;
+ tmp_col0 := kkk[This_Index];
+ tmp_Row0 := RRR[This_Index];
+
+ { ݸ֪ؼ AdoListsDsLists}
+ AdoLists[i] := TadoDataset.Create(owner);
+ AdoLists[i].Tag := i;
+ AdoLists[i].AfterScroll:= AdolistsAfterScroll;
+ DsLists[i] := TDatasource.Create(owner);
+ DsLists[i].DataSet := AdoLists[i];
+ DsLists[i].Tag := i;
+ //DsLists[i].OnDataChange := DsListsDataChange;
+ { }
+ Labels[i] := TLabel.Create(owner);
+ Labels[i].visible := FTitleVisible;
+ Labels[i].Parent := (ScrollBoxs[This_Index] as TScrollBox);
+ Labels[i].Font.Name := '';
+ Labels[i].Font.Size := 9;
+ Labels[i].Font.Color := ClBlue;
+ Labels[i].OnClick := LabelsClick;
+ Labels[i].Tag := i;
+ //Labels[i].Font.Style := [FsBold];
+ Labels[i].Transparent := True;
+
+ //̨
+ if DataSource.DataSet.Fieldbyname(DataField_Title).AsVariant <> null then
+ Labels[i].caption := DataSource.DataSet.Fieldbyname(DataField_Title).AsString
+ else
+ Labels[i].caption := '';
+ Tmp_CheJian := trim((ScrollBoxs[This_Index] as TScrollBox).Hint);
+
+ //̨
+ if DataSource.DataSet.Fieldbyname(DataField_ColA).AsVariant <> null then
+ Labels[i].Hint := trim(DataSource.DataSet.Fieldbyname(DataField_ColA).AsString)
+ else
+ Labels[i].Hint := '';
+ Labels[i].ShowHint := False;
+
+ if FEditorstyle = TsMemo then
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*3+DgHeight+5) + 2;
+ Labels[i].Left := FLeft + (TitleWidth + 20) * tmp_Col0 + 5;
+ Labels[i].Width := TitleWidth;
+ end
+ else
+ begin
+ Labels[i].Top := FTop + tmp_Row0 * (TextHeight*2+DgHeight+5) + 2;
+ Labels[i].Left := FLeft + (TitleWidth + 12) * tmp_Col0;
+ Labels[i].Width := TitleWidth;
+ end;
+
+ { Ϣʾݶ}
+ if FEditorstyle = Tscombox then
+ begin
+ comEditors[i] := TComboBox.Create(Owner);
+ comEditors[i].Parent := ScrollBoxs[This_Index]; //Self;
+ comEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ comEditors[i].Width := maxTextLen;
+ if FTitleVisible then
+ comEditors[i].Top := Labels[i].Top+14
+ else
+ comEditors[i].Top := Labels[i].Top;
+
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ comEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ comEditors[i].OnKeyPress := OnKeyPress;
+ comEditors[i].OnKeyDown := OnKeyDown;
+ comEditors[i].Visible := EditorVisible;
+ comEditors[i].Tag := i;
+
+ DGLists[i] := TDbGrid.Create(Owner);
+ DGLists[i].Parent := ScrollBoxs[This_Index];
+ DGLists[i].Font.name := '';
+ DGLists[i].Font.Size := 9;
+ DGLists[i].ReadOnly := True;
+ DGLists[i].FixedColor := clSkyBlue;
+ DGLists[i].Left := comEditors[i].Left;
+ DGLists[i].Width := comEditors[i].Width;
+ DGLists[i].Height := DgHeight;
+ DGLists[i].Options := [dgRowSelect];
+ if EditorVisible then
+ DGLists[i].Top := comEditors[i].Top+comEditors[i].height+2
+ else
+ DGLists[i].Top := comEditors[i].Top+2;
+ DGLists[i].Hint := trim(Labels[i].caption);
+ DGLists[i].ShowHint := False;
+
+ DGLists[i].OnDrawColumnCell := DGListsDrawColumnCell;
+ DGLists[i].OnCellClick := DGListsCellClick;
+ DGLists[i].Tag := i;
+ ColorLabels[i] := TLabel.Create(Owner);
+ ColorLabels[i].Parent := ScrollBoxs[This_Index];
+ ColorLabels[i].AutoSize := true;
+ ColorLabels[i].Font.name := '';
+ ColorLabels[i].Font.Size := 9;
+ ColorLabels[i].Top := Labels[i].top;
+ ColorLabels[i].Left := Labels[i].Left + round(Labels[i].Width/2)+20;
+ ColorLabels[i].Width := round(Labels[i].Width/2)-20;
+ ColorLabels[i].BringToFront;
+ ColorLabels[i].Tag := i;
+ ColorLabels[i].Font.Color := ClWhite;
+ ColorLabels[i].Color := RGB(100,100,100);
+ ColorLabels[i].Caption := '';
+ end
+ else if FEditorstyle = Tsedit then
+ begin
+ edEditors[i] := Tedit.Create(Owner);
+ edEditors[i].Parent := ScrollBoxs[This_Index];
+ edEditors[i].Left := Labels[i].Left; //+ Labels[i].Width;
+ edEditors[i].Width := maxTextLen;
+ if FTitleVisible then
+ edEditors[i].Top := Labels[i].Top+14
+ else
+ edEditors[i].Top := Labels[i].Top;
+ edEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ edEditors[i].Text := DataSource.DataSet.Fieldbyname(DataField_Editor).AsString;
+ edEditors[i].OnKeyPress := OnKeyPress;
+ edEditors[i].OnKeyDown := OnKeyDown;
+ edEditors[i].Visible := EditorVisible;
+ DGLists[i] := TDbGrid.Create(Owner);
+ DGLists[i].Parent := ScrollBoxs[This_Index];
+ DGLists[i].Font.name := '';
+ DGLists[i].Font.Size := 9;
+ DGLists[i].ReadOnly := True;
+ DGLists[i].Options := [dgRowSelect];
+ DGLists[i].FixedColor := clSkyBlue;
+ DGLists[i].Left := edEditors[i].Left;
+ DGLists[i].Width := edEditors[i].Width;
+ DGLists[i].Height := DgHeight;
+ DGLists[i].Tag := i;
+ if EditorVisible then
+ DGLists[i].Top := edEditors[i].Top+edEditors[i].height+2
+ else
+ DGLists[i].Top := edEditors[i].Top+2;
+ DGLists[i].Hint := trim(Labels[i].caption);
+ DGLists[i].ShowHint := False;
+ DGLists[i].OnDrawColumnCell := DGListsDrawColumnCell;
+ DGLists[i].OnCellClick := DGListsCellClick;
+ DGLists[i].Tag := i;
+
+ ColorLabels[i] := TLabel.Create(Owner);
+ ColorLabels[i].Parent := ScrollBoxs[This_Index];
+ ColorLabels[i].AutoSize := False;
+ ColorLabels[i].Font.name := '';
+ ColorLabels[i].Font.Size := 9;
+ ColorLabels[i].Top := Labels[i].top;
+ ColorLabels[i].Left := Labels[i].Left + round(Labels[i].Width/2)+20;
+ ColorLabels[i].Width := round(Labels[i].Width/2)-20;
+ ColorLabels[i].BringToFront;
+ ColorLabels[i].Tag := i;
+ ColorLabels[i].Font.Color := ClWhite;
+ ColorLabels[i].Color := RGB(100,100,100);
+ ColorLabels[i].Caption := '';
+ end
+ else
+ begin
+ MemoEditors[i] := Tmemo.Create(Owner);
+ MemoEditors[i].Parent := ScrollBoxs[This_Index];
+ MemoEditors[i].Left := Labels[i].Left;
+ MemoEditors[i].Width := maxTextLen;
+ if FTitleVisible then
+ MemoEditors[i].Top := Labels[i].Top+14
+ else
+ MemoEditors[i].Top := Labels[i].Top;
+ MemoEditors[i].Height := 60;
+ MemoEditors[i].ReadOnly := DataReadOnly;
+ if DataSource.DataSet.Fieldbyname(DataField_Editor).AsVariant <> null then
+ MemoEditors[i].Lines.Add(DataSource.DataSet.Fieldbyname(DataField_Editor).AsString);
+ MemoEditors[i].OnKeyPress := OnKeyPress;
+ MemoEditors[i].OnKeyDown := OnKeyDown;
+ MemoEditors[i].Visible := EditorVisible;
+ MemoEditors[i].Tag := i;
+ DGLists[i] := TDbGrid.Create(Owner);
+ DGLists[i].Parent := ScrollBoxs[This_Index];
+ DGLists[i].Font.name := '';
+ DGLists[i].Font.Size := 9;
+ DGLists[i].ReadOnly := True;
+ DGLists[i].FixedColor := clSkyBlue;
+ DGLists[i].Left := MemoEditors[i].Left;
+ DGLists[i].Width := MemoEditors[i].Width;
+ DGLists[i].Height := DgHeight;
+ DGLists[i].Options := [dgRowSelect];
+ if EditorVisible then
+ DGLists[i].Top := MemoEditors[i].Top+MemoEditors[i].height+2
+ else
+ DGLists[i].Top := MemoEditors[i].Top+2;
+ DGLists[i].Hint := trim(Labels[i].caption);
+ DGLists[i].ShowHint := False;
+ DGLists[i].OnDrawColumnCell := DGListsDrawColumnCell;
+ DGLists[i].OnCellClick := DGListsCellClick;
+ DGLists[i].Tag := i;
+
+ ColorLabels[i] := TLabel.Create(Owner);
+ ColorLabels[i].Parent := ScrollBoxs[This_Index];
+ ColorLabels[i].AutoSize := False;
+ ColorLabels[i].Font.name := '';
+ ColorLabels[i].Font.Size := 9;
+ ColorLabels[i].Left := DGLists[i].Left + DGLists[i].Width +1;
+ ColorLabels[i].Height := DGLists[i].Height + MemoEditors[i].Height;
+ ColorLabels[i].Top := DGLists[i].Top;
+ ColorLabels[i].Tag := i;
+ ColorLabels[i].Font.Color := ClWhite;
+ ColorLabels[i].Color := RGB(100,100,100);
+ ColorLabels[i].Caption := '';
+ end;
+ Tmp_Parm := trim(DataSource.DataSet.Fieldbyname(DataField_Editor).Value);
+ with AdoLists[i] do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr; //ݿӴ
+ CursorType := ctStatic;
+ LockType := ltReadOnly;
+ CommandText := Data_DgListSql;
+ Parameters.ParamValues['ListParm'] := Tmp_Parm;
+ Active := True;
+ {
+ tmpSql := 'select a.AutoID,case a.MachMiss when ''0000000000'' then '
+ + 'convert(varchar(20),f.GlideName) else convert(varchar(20),d.ShortName) end'
+ + ' as ShortName,rtrim(b.MP_Crock) as MP_Crock,'
+ + 'convert(varchar(20),c.ChnName) as ChnName,a.MachLen,'
+ + 'convert(varchar(20),f.GlideName) as GlideName,'
+ + 'a.MachMiss,a.TaskOrder,a.Status,'
+ + 'c.RedCode,c.GreenCode,c.BlueCode'
+ + ' from MD_Dev_Mission a '+#10#13
+ + ' left join MD_PlanCrock b on b.mp_autocrk = left(a.MachMiss,10)'
+ + ' left join Mc_color c on c.ColorId = b.MP_Color '
+ + ' left join Mc_Glide f on f.GlideNo = a.MachGlide'+#10#13
+ + ' left join BC_Customer d on d.customno = b.MP_Customno'+#10#13
+ + ' where a.Status <> ''6'''
+ + ' and a.Machine =:ListParm'+#10#13
+ + ' order by a.Machine,a.TaskOrder';
+ }
+ for k := 0 to Fields.Count -1 do
+ Fields[k].Visible := False;
+ Fieldbyname('ShortName').Visible := True; //ӹλ
+ Fieldbyname('MP_Crock').Visible := True; //Ǹ
+ Fieldbyname('ChnName').Visible := True; //ɫ
+ Fieldbyname('MachLen').Visible := True; //
+ Fieldbyname('GlideName').Visible := True; //
+ DGLists[i].DataSource := DsLists[i];
+ EnableConTrols;
+ DGLists[i].Columns[0].width := 50;
+ DGLists[i].Columns[1].width := 30;
+ DGLists[i].Columns[2].width := 55;
+ DGLists[i].Columns[3].width := 45;
+ DGLists[i].Columns[4].width := 50;
+ //DGLists[i].Columns[0].Alignment := TaCenter;
+ //DGLists[i].Columns[1].Alignment := TaCenter;
+ //DGLists[i].Columns[2].Alignment := TaCenter;
+ //DGLists[i].Columns[3].Alignment := TaCenter;
+ //DGLists[i].Columns[4].Alignment := TaCenter;
+ First;
+ end;
+
+ Shapes[i] := TShape.Create(Owner);
+ Shapes[i].Parent := ScrollBoxs[This_Index];
+ Shapes[i].Left := Labels[i].Left - 5;
+ Shapes[i].top := Labels[i].Top - 5;
+ if FEditorstyle = TsMemo then
+ begin
+ Shapes[i].height := ColorLabels[i].height + Labels[i].height +20 +10;
+ Shapes[i].Width := (ColorLabels[i].left - Labels[i].left) + ColorLabels[i].Width + 10;
+ end
+ else
+ begin
+ Shapes[i].height := (DGLists[i].Top + DGLists[i].Height - Labels[i].Top)+ 10;
+ Shapes[i].Width := Labels[i].Width +10;
+ end;
+ Shapes[i].Brush.Color := clSkyBlue;
+ Shapes[i].Visible := True;
+ Shapes[i].SendToBack;
+ Shapes[i].Tag := i;
+ if not DataSource.DataSet.Eof then
+ DataSource.DataSet.next;
+ end;
+ DataSource.DataSet.EnableControls;
+ tmpado.Close;
+ XXX.Free;
+ if FPageControl.PageCount > 0 then
+ begin
+ FPageControl.ActivePageIndex := FPageControl.PageCount-1;
+ FPageControl.ActivePageIndex := DefaultIndex;
+ end;
+ Finally
+ FPageControl.Visible := True;
+ end;
+end;
+
+procedure TJkPanel.Co_DllBtnClick(Sender: TObject);
+var
+ this_Gh :String;
+ k :Integer;
+
+begin
+ if not CanLCCL then //жǷȨ
+ begin
+ application.messagebox('ԲĿǰûбȨܡ','Ϣʾ',mb_ok or MB_ICONInformation);
+ Exit;
+ end;
+ k := (sender as TSpeedButton).Tag;
+ if not FootPanels[k].DataSource.dataset.active then exit;
+ if Co_DllBtn[k].Caption = '̴' then
+ begin
+ if FootPanels[k].DataSource.dataset.FieldValues[''] = null then exit;
+ this_Gh := FootPanels[k].DataSource.dataset.fieldbyname('').AsString;
+ //̴ִ
+ DoAbnormalC(TmpHandle,cnn_Base,V_UserId,V_User,this_Gh);
+ end
+ else
+ begin
+ //ִϴ
+ if This_Jth <> '' then
+ DoRinseprt(TmpHandle,cnn_Base,V_UserId,V_User,This_Jth,This_TaskOrder);
+ end;
+end;
+
+procedure TJkPanel.DGListsDrawColumnCell(Sender: TObject;
+ const Rect: TRect; DataCol: Integer; Column: TColumn;
+ State: TGridDrawState);
+var
+ Redcode,GreenCode,BlueCode,TmpStatus :Integer;
+begin
+ with (Sender as TdbGrid) do
+ begin
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ Redcode := (DataSource.DataSet as TAdoDataset).fieldByName('Redcode').AsInteger;
+ Greencode := (DataSource.DataSet as TAdoDataset).fieldByName('Greencode').AsInteger;
+ Bluecode := (DataSource.DataSet as TAdoDataset).fieldByName('Bluecode').AsInteger;
+ TmpStatus := (DataSource.DataSet as TAdoDataset).fieldByName('Status').AsInteger;
+ if gdFocused in State then
+ begin
+ Canvas.Brush.Color := clblack;
+ Canvas.Font.Color := Clred;
+ end
+ else if TmpStatus = 5 then
+ begin
+ Canvas.Font.Color := clBlue;
+ Canvas.Brush.Color := clWhite;
+ Canvas.Font.Style := [fsBold]; //fsItalic
+ ColorLabels[(Sender as TDbGrid).Tag].Color := RGB(Redcode,Greencode,Bluecode);
+ if (Redcode <=10) or (Bluecode <=10) or (Greencode <=10) then
+ ColorLabels[(Sender as TDbGrid).Tag].Font.Color := ClWhite
+ else
+ ColorLabels[(Sender as TDbGrid).Tag].Font.Color := ClBlack;
+ ColorLabels[(Sender as TDbGrid).Tag].Caption := '';
+ end
+ else if (Redcode <=100) or (Greencode <=100) then
+ begin
+ Canvas.Font.Color := ClWhite;
+ Canvas.Brush.Color := RGB(Redcode,Greencode,Bluecode);
+ end
+ else
+ begin
+ Canvas.Font.Color := ClBlack;
+ Canvas.Brush.Color := RGB(Redcode,Greencode,Bluecode);
+ end;
+ DefaultDrawColumnCell(Rect,DataCol,Column,State);
+ end;
+end;
+
+procedure TJkPanel.DGGlideDrawColumnCell(Sender: TObject;
+ const Rect: TRect; DataCol: Integer; Column: TColumn;
+ State: TGridDrawState);
+begin
+ with (Sender as TDbGrid) do
+ begin
+ if DataSource = nil then exit;
+ if not DataSource.DataSet.Active then exit;
+ if gdFocused in State then exit;
+ if (Sender as TDbGrid).SelectedRows.CurrentRowSelected then
+ begin
+ Canvas.Brush.Color := clHighlight;
+ Canvas.Font.Color := ClWhite;
+ end
+ else if DataSource.DataSet.RecNo mod 2 = 0 then
+ begin
+ Canvas.Brush.Color := $00DEDEDE;
+ Canvas.Font.Color := ClBlack;
+ end
+ else
+ begin
+ Canvas.Brush.Color := clwhite;
+ Canvas.Font.Color := ClBlack;
+ end;
+ DefaultDrawColumnCell(Rect,DataCol,Column,State);
+ end;
+end;
+
+procedure TJkPanel.refreshFootpanel(Tag :integer);
+var
+ i,Listindex,PageIndex :integer;
+ R,G,B :Integer;
+ tmpCarN0 :String;
+ TmpMachMiss :String; //
+begin
+ try
+ PageIndex := FPageControl.ActivePageIndex;
+ Listindex := Tag;
+ if AdoLists[Listindex].RecordCount = 0 then
+ begin
+ FootPanels[PageIndex].DataSource := Nil;
+ exit;
+ end;
+ //ȡ̨
+ This_Jth := Labels[Listindex].Hint;
+ //ȡ
+ This_TaskOrder := trim(AdoLists[Listindex].FieldByName('TaskOrder').AsString);
+ TmpMachMiss := trim(AdoLists[Listindex].FieldByName('MachMiss').AsString);
+ if TmpMachMiss = '0000000000' then
+ Co_DllBtn[PageIndex].Caption := 'ϴ'
+ else
+ Co_DllBtn[PageIndex].Caption := '̴';
+
+ with tmpado do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ CursorType := ctStatic;
+ LockType := ltReadOnly;
+ CommandText := Data_FootSql;
+ Parameters.ParamValues['FootParm'] := AdoLists[Listindex].Fields[0].Value;
+ Active := True;
+ for i := 0 to fieldCount -1 do
+ tmpado.Fields[i].Alignment := taLeftJustify;
+ tmpDs.dataset := tmpado;
+ EnableConTrols;
+ end;
+ with adoGlides do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ CursorType := ctStatic;
+ LockType := ltReadOnly;
+ CommandText := Data_GlideSql;
+ if AdoLists[Listindex].Fieldbyname('MachMiss').AsString <> null then
+ begin
+ tmpCarN0 := trim(AdoLists[Listindex].Fieldbyname('MachMiss').AsString);
+ tmpCarN0 := Copy(tmpCarN0,1,10);
+ end
+ else
+ tmpCarN0 := '////';
+ Parameters.ParamValues['PCarNo'] := tmpCarN0;
+ Active := True;
+ First;
+ EnableConTrols;
+ end;
+ DGGlides[PageIndex].DataSource := DsGlides;
+ DGGlides[PageIndex].Columns[0].Width := 74;
+ DGGlides[PageIndex].Columns[1].Width := 40;
+ FootPanels[PageIndex].Width := 140;
+ FootPanels[PageIndex].Columns := 1;
+ FootPanels[PageIndex].DataSource := tmpDs;
+ FootPanels[PageIndex].CreateEditors(tmpDs,1);
+ R := 255; G:= 255; B := 255;
+ R := AdoLists[Listindex].Fieldbyname('RedCode').AsInteger;
+ G := AdoLists[Listindex].Fieldbyname('GreenCode').AsInteger;
+ B := AdoLists[Listindex].Fieldbyname('BlueCode').AsInteger;
+ Co_Shapes[PageIndex].Brush.Color := RGB(R,G,B);
+ except
+ //
+ end;
+end;
+
+procedure TJkPanel.DGListsCellClick(Column: TColumn);
+var
+ tmpIdx,TmpCol,TmpTag :Integer;
+begin
+ if not Column.Grid.DataSource.DataSet.Active then exit;
+ if Column.Grid.DataSource.DataSet.RecordCount = 0 then exit;
+
+ if Column.Grid.DataSource.DataSet.RecNo = 1 then
+ begin
+ tmpIdx := (Column.Grid as TCustomDbGrid).ComponentIndex;
+ TmpCol := Column.Index;
+ if TmpDgListIdx = -1 then
+ begin
+ TmpDgListIdx := tmpIdx;
+ TmpDgListCol := TmpCol;
+ refreshFootpanel((Column.Grid as TCustomDbGrid).DataSource.DataSet.Tag);
+ end
+ else
+ begin
+ if TmpDgListIdx <> tmpIdx then
+ refreshFootpanel((Column.Grid as TCustomDbGrid).DataSource.DataSet.Tag);
+ TmpDgListIdx := tmpIdx;
+ TmpDgListCol := TmpCol;
+ end;
+ (Column.Grid as TCustomDbGrid).SetFocus;
+ end
+end;
+
+procedure TJkPanel.AdolistsAfterScroll(DataSet: TDataSet);
+begin
+ //ˢ Footpanel
+ refreshFootpanel(DataSet.tag);
+end;
+
+
+//ӦLabels[i]Click¼
+procedure TJkPanel.LabelsClick(Sender: TObject);
+begin
+ //
+end;
+
+{
+procedure TJkPanel.LabelsClick(Sender: TObject);
+var
+ i :integer;
+ Tmp_CheJian,Tmp_JiTai :String;
+begin
+
+ try
+ if FP_Parent = nil then inti_Grid(Sender);
+ if FP_Parent = nil then exit;
+ Tmp_JiTai := trim((Sender as Tlabel).Caption);
+ Tmp_CheJian := trim(((Sender as Tlabel).Parent as TScrollBox).Hint);
+ if tmpado.Active then
+ begin
+ if tmpado.FieldValues['̨'] <> null then
+ if tmpado.FieldByName('̨').AsString = Tmp_JiTai then
+ exit;
+ end;
+ screen.Cursor := crSQLWait;
+ //FP_Parent.Visible := False;
+ //FP_Parent.Left := FPageControl.Left + (Sender as Tlabel).Left + (Sender as Tlabel).Width + 28;
+ //FP_Parent.Top := FPageControl.Top + (Sender as Tlabel).top + (Sender as Tlabel).Height +4;
+ FP_Move.Caption := trim((Sender as Tlabel).Hint) + 'ϸб';
+ with tmpado do
+ begin
+ DisableConTrols;
+ Active := False;
+ ConnectionString := Fcnnstr;
+ tmpado.CursorType := ctStatic;
+ tmpado.LockType := ltReadOnly;
+ CommandText := 'Exec '+Data_BerthListSql+' '''+Tmp_CheJian+''','''+Tmp_JiTai+'''';
+ Active := True;
+ First;
+ EnableConTrols;
+ for i := 0 to Fields.Count -1 do
+ begin
+ Fields[i].Alignment := taCenter;
+ if i = 0 then
+ fields[i].DisplayWidth := 20
+ else
+ fields[i].DisplayWidth := 8;
+
+ Fpass_Grid.Columns[i].Title.Alignment := taCenter;
+ Fpass_Grid.Columns[i].Title.Font.Style:= [];
+ end;
+
+ end;
+ screen.Cursor := crDefault;
+ FP_Parent.Visible := True;
+ except
+ screen.Cursor := crDefault;
+ end;
+end;
+ }
+
+procedure TJkPanel.FootPanelDblclick(Sender: TObject);
+begin
+ if sender is TScrollBox then
+ (sender as TScrollBox).Parent.width := 1;
+end;
+
+procedure TJkPanel.FP_MovePanelDblClick(Sender: TObject);
+begin
+ FP_Parent.Visible := False;
+end;
+
+ //Registerؼ
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TJkPanel]);
+end;
+
+// ڴͷҪ˳ģԴ෴˳Уǵ֮иӹϵʱ
+procedure TJkPanel.FreeEditors;
+begin
+ if FPageControl <> nil then
+ begin
+ if FP_Parent <> nil then
+ begin
+ try
+ FPass_Grid.Free;
+ FP_Move.Free;
+ FP_Parent.Free;
+ except
+ //
+ end;
+ end;
+ DGGlides := nil;
+ DsGlides := nil;
+ AdoGlides := nil;
+ DsGlides.Free;
+ AdoGlides.Free;
+
+ DGLists := nil;
+ DsLists := nil;
+ AdoLists := nil;
+
+ FPass_Grid := nil;
+ FP_Move := nil;
+ FP_Parent := nil;
+ Shapes := nil;
+ ProgressBars := nil;
+ comEditors := nil;
+ edEditors := nil;
+ MemoEditors := nil;
+ ScrollBoxs := nil;
+
+ Splitters := nil;
+ Co_Shapes:= nil;
+ Co_DllBtn := Nil;
+ Co_Panels:= nil;
+ FootPanels := nil;
+
+ tmpDs.Free;
+ tmpado.Free;
+
+ FPageControl.Free;
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DbPanel/L_DBDateTime.dcr b/T03贸易布匹检验/DbPanel/L_DBDateTime.dcr
new file mode 100644
index 0000000..1350977
Binary files /dev/null and b/T03贸易布匹检验/DbPanel/L_DBDateTime.dcr differ
diff --git a/T03贸易布匹检验/DbPanel/L_DBDateTime.pas b/T03贸易布匹检验/DbPanel/L_DBDateTime.pas
new file mode 100644
index 0000000..0b404ff
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/L_DBDateTime.pas
@@ -0,0 +1,143 @@
+unit L_DBDateTime;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,db,dbtables,dbctrls,Dialogs,
+ ComCtrls;
+
+type
+ TDBDateTime = class(TDateTimePicker)
+ private
+ FDataLink:TFieldDataLink;
+ //TFieldDataLinkTDataLink࣬
+ // ֶDataSourceĽ
+ procedure DataChange(sender:Tobject);
+//DataSetļ¼ı䣨¼
+// ʱOnDataChange
+ // ¼DataChangeΪ¼¼
+ procedure UpdateData(sender:Tobject);
+ //DataSetǰOnUpdateData¼
+ // UpdateDataΪ¼¼
+ function GetDataSource:TDataSource;
+ procedure SetdataSource(value:TDataSource);
+ Function GetDataField:String;
+ procedure SetdataField(Value:String);
+ procedure CMexit(var Message:TCMExit);
+ message CM_EXIT;//ؼʧȥʱCM_EXITϢ
+ protected
+ procedure Change;override;//ؼڡ
+ // ʱıʱOnChange¼
+ procedure Notification(AComponent:TComponent;
+ Operation:Toperation);override;
+ //ijһؼFORMʱDELPHI
+ // IDEø÷֪ͨؼ
+ public
+ constructor Create(AOwner:Tcomponent);override;
+ destructor Destroy;override;
+ published
+ property DataSource:TDataSource read GetDataSource
+ write SetDataSource;//ΪؼDataSourceԣ
+// ʹDataSource
+ property DataField:String read GetDataField
+ write SetDataField;
+ end;//ΪؼDataFieldԣ
+ // ʹָijһֶεTField
+
+procedure Register;//עṹ
+
+implementation
+
+procedure TDBDateTime.CMExit;
+begin
+ try
+ FDataLink.UpdateRecord;
+ //ؼʧȥʱDataSet
+ // ⽫OnUpdateData¼
+ except
+ Setfocus;
+ raise;
+ end;
+ DoExit;
+end;
+
+constructor TDBDateTime.Create(Aowner:Tcomponent);
+begin
+ inherited Create(Aowner);
+//DataLinkҽOnDataChange
+ //OnUpdateData¼
+ FDataLink:=TFieldDataLInk.Create;
+ FDataLink.OnDataChange:=DataChange;
+ FDataLink.OnUpdateData:=Updatedata;
+end;
+
+Destructor TDBDateTime.Destroy;
+begin
+ FDataLink.OnDataChange:=nil;
+ FDataLink.OnUpdateData:=nil;
+ FDataLink.Free;
+ inherited Destroy;
+end;
+
+function TDBDateTime.GetdataSource:TdataSource;
+begin
+ result:=FDataLink.DataSource;
+end;
+
+Procedure TDBDateTime.SetDataSource
+ (Value:TDataSource);
+begin
+ FDataLink.DataSource:=Value;
+end;
+
+function TDBDateTime.GetDatafield:String;
+begin
+ result:=FDataLink.FieldName;
+end;
+
+procedure TDBDateTime.SetDataField(value:String);
+begin
+ FdataLink.FieldName:=value;
+end;
+
+procedure TDBDateTime.DataChange(Sender:Tobject);
+begin
+DateTime:=now;
+//ؼ˻DataSetݼ䶯ʱ
+ //ؼʾǰ¼Ӧֵֶ
+if FDataLink.Field<>nil then
+ if FDataLink.Field.Text<>'' then
+ DateTime:=FDatalink.Field.AsDateTime;
+end;
+
+Procedure TDBDateTime.UpdateData(sender:Tobject);
+begin
+ FDatalink.Field.AsDateTime:=DateTime;
+ //ÿؼеڡʱӦֶ
+end;
+
+procedure TDBDateTime.Change;
+begin
+//ûı˿ؼеʱDataSetΪ༭״̬
+ FDataLink.Modified;
+ if not FDataLink.Editing then
+ FdataLink.Edit;
+ inherited Change;
+end;
+procedure TDBDateTime.Notification
+ (AComponent:TComponent;Operation:TOperation);
+begin
+ inherited Notification(Acomponent,Operation);
+//ؼTdataSource
+// ɾʱؼDataSourceΪ
+ if (Operation=opRemove) and (FDataLink<>nil)
+ and (AComponent=Datasource) then
+ DataSource:=nil;
+ end;
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls',[TDBDateTime]);
+end;
+
+end.
diff --git a/T03贸易布匹检验/DbPanel/MovePanel.pas b/T03贸易布匹检验/DbPanel/MovePanel.pas
new file mode 100644
index 0000000..c38c5b5
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/MovePanel.pas
@@ -0,0 +1,84 @@
+unit MovePanel;
+
+interface
+uses
+ Windows, Classes, Controls,ExtCtrls;
+type
+ TMovePanel = class(TPanel) //ؼǼ̳Tpanel
+ private
+ PrePoint:TPoint;
+ Down:Boolean;
+ { Private declarations }
+ protected
+ { Protected declarations }
+ public
+ constructor Create(AOwner:TComponent);
+ override;
+ //¼ȴϢ
+procedure MouseDown(Button: TMouseButton;
+ Shift: TShiftState; X, Y: Integer);override;
+ procedure MouseUp(Button: TMouseButton;
+Shift: TShiftState; X, Y: Integer);override;
+ procedure MouseMove(Shift: TShiftState;
+ X, Y: Integer);override;
+ { Public declarations }
+ published
+ { Published declarations }
+ end;
+
+procedure Register;
+
+implementation
+
+constructor TMovePanel.Create(AOwner:TComponent);
+begin
+ inherited Create(AOwner); //̳иCreate
+end;
+
+procedure TMovePanel.MouseDown(Button:
+TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+ if (Button=MBLeft) then
+ begin
+ Down:=true;
+ GetCursorPos(PrePoint);
+ end;
+ //ѴڣʹӦ¼ȥӴɷô쳣
+ if assigned(OnMouseDown) then
+ OnMouseDown(self,Button,shift,x,y);
+end;
+
+procedure TMovePanel.MouseUp(Button:
+TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+ if (Button=MBLeft) and Down then
+ Down:=False;
+ if assigned(OnMouseUp) then
+ OnMouseUp(Self,Button,shift,X,y);
+end;
+
+procedure TMovePanel.MouseMove(Shift:
+ TShiftState; X, Y: Integer);
+Var
+ NowPoint:TPoint;
+begin
+ if down then
+ begin
+GetCursorPos(nowPoint);
+//self.ParentFormоMovePanelڵĴ壬MovePanelڵPanel
+ self.Parent.Left:=self.Parent.left
+ +NowPoint.x-PrePoint.x;
+ self.parent.Top:=self.Parent.Top
+ +NowPoint.y-PrePoint.y;
+ PrePoint:=NowPoint;
+ end;
+ if Assigned(OnMouseMove) then
+ OnMouseMove(self,Shift,X,y);
+end;
+
+procedure Register;
+begin
+ RegisterComponents('Data Controls', [TMovePanel]);
+end;
+
+end.
diff --git a/T03贸易布匹检验/DbPanel/dsr.pas b/T03贸易布匹检验/DbPanel/dsr.pas
new file mode 100644
index 0000000..3a15c4e
--- /dev/null
+++ b/T03贸易布匹检验/DbPanel/dsr.pas
@@ -0,0 +1,330 @@
+unit dsr;
+
+interface
+uses
+ SysUtils, StrUtils, Forms, Classes, DB, ADODB, Grids, DBGrids, Messages;
+
+var
+ CanLCCL :Boolean;
+ V_User,V_UserID :string;
+ TmpHandle :THandle;
+ cnn_Base :TAdoConnection;
+
+function SplitString(STR_Source :string; STR_Split:string):TStringList;
+
+procedure DoAbnormalC(H: THandle;AConn: TADOConnection;UID: String;
+ UName: String;TRCarNo: String);stdcall;external 'frabnml.dll';
+{
+procedure DoRinseprt(H: THandle;//ôھ
+ AConn: TADOConnection;//ADO
+ UID: String;//Ա
+ UName: String;//Ա
+ Machine: String;//̨
+ Task: String//
+ );stdcall;
+}
+procedure DoRinseprt(H: THandle;AConn: TADOConnection;UID:String;
+ UName :String; Machine:String; Task:String); stdcall; external 'rinsepf.dll';
+
+
+procedure Set_NextControl( Pass_Form: TCustomForm;var Key:Char);
+
+function checkfunc(handle: Integer; DogFlag: String): Integer; stdcall; external 'FUTONG.DLL';
+//Ӳ
+// handleΪھ
+// DogFlagΪݿвѯӲϢ
+// DLLԶӲDogFlagϢǷʱ3Զ
+
+function GetParm(flag: Integer; out len: Integer; outHex: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//ӲлȡضϢIPַݿƣû
+//ԶflagȡֵΧΪ0--4洢ռһΪ20ֽڣΪĵַռ
+//Ҳ0óΪ20ʱ
+// 4óΪ4
+//DogFlagΪַϢ
+
+function SetParm(flag, len: Integer; inHex: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//flag=5IP,=6User,=7Pass,=8DB
+//ӲòIPʱΪ C8A00164ʽ루192.168.1.100
+//Զ÷ͬ
+
+function InfoFunc(order: Integer; info: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//ȡӲϢֵΪ
+//ǵijЩƶҪѯ̶Ϣ
+//װʱҪƳƶ
+//orderΪڼ0ʼ
+
+function GetHostIpAddr(DogParm, HostName, IPAddr: PAnsiChar): Integer; stdcall; external 'FUTONG.DLL';
+//ȡӲʶ,IPַοΪжIPַȡֻ֮һ
+//Լ
+
+function PBEncode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+function PBEncode1(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+function PBDecode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+
+implementation
+
+
+function SplitString(STR_Source :string; STR_Split:string):TStringList;
+var
+ temp:String;
+ i:Integer;
+begin
+ Result:=TStringList.Create;
+ //ǿԷؿб
+ if trim(STR_Source) = '' then exit;
+ temp:=STR_Source;
+ i:=pos(STR_Split,STR_Source);
+ while i <> 0 do
+ begin
+ Result.add(copy(temp,0,i-1));
+ Delete(temp,1,i+length(STR_Split)-1); //STR_Splitȴ1Ļ,ԭֻɾSTR_Splitַĵһ.
+ i:=pos(STR_Split,temp);
+ end;
+ Result.add(temp);
+end;
+
+procedure Set_NextControl( Pass_Form: TCustomForm;var Key:Char);
+label
+ labe_A;
+begin
+ if key=#13 then
+ if not (Pass_Form.ActiveControl is TDbgrid) Then
+ Begin
+ key:=#0;
+ Pass_Form.perform(WM_NEXTDLGCTL,0,0);
+ end
+ else
+ if (Pass_Form.ActiveControl is TDbgrid) Then
+ begin
+ With TDbgrid(Pass_Form.ActiveControl) Do
+ begin
+ labe_A:
+ if Selectedindex<(FieldCount-1) then
+ Selectedindex:=Selectedindex+1
+ else Selectedindex:=0;
+ if not Columns[Selectedindex].Visible then
+ goto labe_A;
+ end;
+ end;
+end;
+
+
+function PBEncode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+var
+ table: array[0..63] of AnsiChar;
+ c80, c81, c82, c6: AnsiChar;
+ i, k, len: Integer;
+ Tmpbuf: array[0..255] of AnsiChar;
+begin
+ table := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+ if (nInLen*4)>(nOutLen*3+3) then Result := 1;
+
+ k := nInLen div 3;
+ len := k*4;
+
+ for i:=0 to k-1 do
+ begin
+ c80 := Inbuf[i*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[i*4] := table[Integer(c6) and $3f];
+
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[i*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[i*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ c82 := Inbuf[i*3+2];
+ c6 := Char((Integer(c82) shr 6) and $03);
+ Tmpbuf[i*4+2] := table[Integer(c81) or Integer(c6)];
+
+ Tmpbuf[i*4+3] := table[Integer(c82) and $3f];
+ end;
+
+ i := nInLen mod 3;
+ k := nInLen div 3;
+
+ if i<>0 then
+ begin
+ len := len+4;
+
+ c80 := Inbuf[k*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[k*4] := table[Integer(c6) and $3f];
+
+ if k=1 then
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ Tmpbuf[k*4+1] := table[Integer(c80)];
+
+ Tmpbuf[k*4+2] := '=';
+ end
+ else
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[k*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[k*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ Tmpbuf[k*4+2] := table[Integer(c81)];
+ end;
+ Tmpbuf[k*4+3] := '=';
+ end;
+ Tmpbuf[len] := #0;
+ Outbuf := Tmpbuf;
+ Result := len;
+end;
+
+function PBEncode1(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+var
+ table: array[0..63] of AnsiChar;
+ c80, c81, c82, c6: AnsiChar;
+ i, k, len: Integer;
+ Tmpbuf: array[0..255] of AnsiChar;
+begin
+ table := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+ if (nInLen*4)>(nOutLen*3+3) then Result := 1;
+
+ k := nInLen div 3;
+ len := k*4;
+
+ for i:=0 to k-1 do
+ begin
+ c80 := Inbuf[i*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[i*4] := table[Integer(c6) and $3f];
+
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[i*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[i*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ c82 := Inbuf[i*3+2];
+ c6 := Char((Integer(c82) shr 6) and $03);
+ Tmpbuf[i*4+2] := table[Integer(c81) or Integer(c6)];
+
+ Tmpbuf[i*4+3] := table[Integer(c82) and $3f];
+ end;
+
+ i := nInLen mod 3;
+ k := nInLen div 3;
+
+ if i<>0 then
+ begin
+ len := len+4;
+
+ c80 := Inbuf[k*3];
+ c6 := Char(Integer(c80) shr 2);
+ Tmpbuf[k*4] := table[Integer(c6) and $3f];
+
+ if i=1 then
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ Tmpbuf[k*4+1] := table[Integer(c80)];
+
+ Tmpbuf[k*4+2] := '=';
+ end
+ else
+ begin
+ c80 := Char((Integer(c80) shl 4) and $30);
+ c81 := Inbuf[k*3+1];
+ c6 := Char((Integer(c81) shr 4) and $0f);
+ Tmpbuf[k*4+1] := table[Integer(c80) or Integer(c6)];
+
+ c81 := Char((Integer(c81) shl 2) and $3c);
+ Tmpbuf[k*4+2] := table[Integer(c81)];
+ end;
+ Tmpbuf[k*4+3] := '=';
+ end;
+ Tmpbuf[len] := #0;
+ Outbuf := Tmpbuf;
+ Result := len;
+end;
+
+function PBDecode(Inbuf: PAnsiChar; out Outbuf: AnsiString; nInLen: Word; nOutLen: Word): Integer;
+var
+ pBufIn: PAnsiChar;
+ szBufTmp: array[0..255] of AnsiChar;
+ i, dwCoded, nprbytes, nbytesdecoded: Integer;
+ pszCoded: PAnsiChar;
+ szBufout: array[0..255] of AnsiChar;
+ pszBufout: PAnsiChar;
+ pr2six: array[0..255] of Word;
+begin
+ for i := 0 to 42 do
+ pr2six[i] := 64;
+ pr2six[43] := 62;
+ for i := 44 to 46 do
+ pr2six[i] := 64;
+ pr2six[47] := 63;
+ for i := 48 to 57 do
+ pr2six[i] := i+4;
+ for i := 58 to 64 do
+ pr2six[i] := 64;
+ for i := 65 to 90 do
+ pr2six[i] := i-65;
+ for i := 91 to 96 do
+ pr2six[i] := 64;
+ for i := 97 to 122 do
+ pr2six[i] := i-71;
+ for i := 123 to 255 do
+ pr2six[i] := 64;
+
+ dwCoded := nInlen;
+ pszCoded := Inbuf;
+
+ while (dwCoded>0) and (pszCoded=' ') do
+ begin
+ Inc(pszCoded);
+ Dec(dwCoded);
+ end;
+
+ if dwCoded>(350-4) then result := 1;
+
+ StrLCopy(szBufTmp, pszCoded, dwCoded);
+ szBufTmp[dwCoded] := #0;
+ szBufTmp[dwCoded+1] := #0;
+ szBufTmp[dwCoded+2] := #0;
+ szBufTmp[dwCoded+3] := #0;
+
+ pBufIn := szBufTmp;
+
+ repeat
+ i := pr2six[Integer(pBufIn^)];
+ Inc(pBufIn);
+ until i>63;
+ nprbytes := pBufin-szBufTmp-1;
+ nbytesdecoded := ((nprbytes+3) div 4)*3;
+ if nOutLen(256-4) then result := 2;
+
+ pszBufout := szBufout;
+ pBufin := szBufTmp;
+
+ while nprbytes>0 do
+ begin
+ pszBufout^ := Char((pr2six[Integer(pBufin[0])] shl 2) or ((pr2six[Integer(pBufin[1])] shr 4)));
+ Inc(pszBufout);
+ pszBufout^ := Char((pr2six[Integer(pBufin[1])] shl 4) or ((pr2six[Integer(pBufin[2])] shr 2)));
+ Inc(pszBufout);
+ pszBufout^ := Char((pr2six[Integer(pBufin[2])] shl 6) or (pr2six[Integer(pBufin[3])]));
+ Inc(pszBufout);
+ Inc(pBufin, 4);
+ Dec(nprbytes, 4);
+ end;
+ if (nprbytes and $03) <> 0 then
+ begin
+ if pr2six[Integer(pBufin[-2])]>63 then Dec(nbytesdecoded, 2)
+ else Dec(nbytesdecoded);
+ end;
+ szBufout[nbytesdecoded] := #0;
+ Outbuf := szBufout;
+ result := nbytesdecoded;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/DjdMachineInsp.dpr b/T03贸易布匹检验/DjdMachineInsp.dpr
new file mode 100644
index 0000000..ad45858
--- /dev/null
+++ b/T03贸易布匹检验/DjdMachineInsp.dpr
@@ -0,0 +1,80 @@
+library DjdMachineInsp;
+
+uses
+ SysUtils,
+ classes,
+ forms,
+ WinTypes,
+ WinProcs,
+ midaslib,
+ U_GetDllForm in 'U_GetDllForm.pas',
+ U_DataLink in 'U_DataLink.pas' {DataLink_TradeInsp: TDataModule},
+ U_iniParam in 'U_iniParam.pas',
+ U_BaseHelp in '..\..\..\public10\design\U_BaseHelp.pas' {frmBaseHelp},
+ U_BaseInput in '..\..\..\public10\design\U_BaseInput.pas' {frmBaseInput},
+ U_BaseList in '..\..\..\public10\design\U_BaseList.pas' {frmBaseList},
+ U_cxGridCustomCss in '..\..\..\public10\design\U_cxGridCustomCss.pas',
+ U_globalVar in '..\..\..\public10\design\U_globalVar.pas',
+ U_WindowFormdesign in '..\..\..\public10\design\U_WindowFormdesign.pas',
+ U_CompressionFun in '..\..\..\public10\ThreeFun\Fun\U_CompressionFun.pas',
+ U_RTFun in '..\..\..\public10\ThreeFun\Fun\U_RTFun.pas',
+ U_ZDYHelp in '..\..\..\public10\ThreeFun\Form\U_ZDYHelp.pas' {frmZDYHelp},
+ U_AttachmentUpload in '..\A00ͨô\U_AttachmentUpload.pas' {frmFjList_RZ},
+ U_CompanySel in '..\A00ͨô\U_CompanySel.pas' {frmCompanySel},
+ U_EmployeeSel in '..\A00ͨô\U_EmployeeSel.pas' {frmEmployeeSel},
+ U_TradeMachInsp in 'U_TradeMachInsp.pas' {frmTradeMachInsp},
+ U_FormLayOutDesign in '..\..\..\public10\design\U_FormLayOutDesign.pas',
+ U_cxGridCustomSet in '..\..\..\public10\design\U_cxGridCustomSet.pas',
+ U_LabelMapSet in '..\A00ͨô\U_LabelMapSet.pas' {frmLabelMapSet},
+ U_BaseDataLink in '..\..\..\public10\design\U_BaseDataLink.pas' {BaseDataLink: TDataModule},
+ U_MachRollMain in 'U_MachRollMain.pas' {frmMachRollMain},
+ U_frameBads in 'U_frameBads.pas' {frameBads: TFrame},
+ U_frameParam in 'U_frameParam.pas' {FrameParam: TFrame},
+ U_ParamSet in 'U_ParamSet.pas' {frmParamSet},
+ U_SysLogList in 'U_SysLogList.pas' {frmSysLogList},
+ U_KeyBoard in 'U_KeyBoard.pas' {FrameKeyBoard: TFrame},
+ U_ProductListHelp in 'U_ProductListHelp.pas' {frmProductListHelp},
+ U_ProductJYHZList in 'U_ProductJYHZList.pas' {frmProductJYHZList},
+ U_TradePack in 'U_TradePack.pas' {frmTradePack},
+ U_TradeClothWaitPack in 'U_TradeClothWaitPack.pas' {frmTradeClothWaitPack},
+ U_TradeClothInspList in 'U_TradeClothInspList.pas' {frmTradeClothInspList},
+ U_DjdDjClList in 'U_DjdDjClList.pas' {frmDjdDjClList},
+ U_ControlData in '..\..\..\public10\ThreeFun\Fun\U_ControlData.pas',
+ U_LabelPrint in '..\A00ͨô\U_LabelPrint.pas' {frmLabelPrint},
+ U_DeviceJkTest in 'U_DeviceJkTest.pas' {frmDeviceJkTest},
+ U_DeviceJkDll in 'U_DeviceJkDll.pas',
+ U_BatchMdyData in 'U_BatchMdyData.pas' {frmBatchMdyData},
+ U_AdoFunc in '..\..\..\public10\ThreeFun\Fun\U_AdoFunc.pas',
+ FrameDateSel in '..\A00ͨ\FrameDateSel.pas' {frmFrameDateSel: TFrame},
+ U_BillPrintList in 'U_BillPrintList.pas' {frmBillPrintList},
+ U_printPdf in '..\..\..\public10\ThreeFun\Fun\U_printPdf.pas',
+ U_TradeClothTotalOutSel in 'U_TradeClothTotalOutSel.pas' {frmTradeClothTotalOutSel},
+ U_CustomFun in '..\A00ͨ÷\U_CustomFun.pas',
+ uSZHN_JSON in '..\..\..\public10\ThreeFun\Fun\uSZHN_JSON.pas';
+
+{$R *.res}
+
+procedure DllEnterPoint(dwReason: DWORD); far; stdcall;
+begin
+ DLLProc := @DLLEnterPoint;
+ DllEnterPoint(DLL_PROCESS_ATTACH);
+end;
+
+procedure DLLUnloadProc(Reason: Integer); register;
+begin
+// if (Reason = DLL_PROCESS_DETACH) or (Reason = DLL_THREAD_DETACH) then
+// Application := NewDllApp;
+end;
+
+exports
+ GetDllForm;
+
+begin
+ try
+ NewDllApp := Application;
+ DLLProc := @DLLUnloadProc;
+ except
+
+ end;
+end.
+
diff --git a/T03贸易布匹检验/DjdMachineInsp.dproj b/T03贸易布匹检验/DjdMachineInsp.dproj
new file mode 100644
index 0000000..7e3172f
--- /dev/null
+++ b/T03贸易布匹检验/DjdMachineInsp.dproj
@@ -0,0 +1,1042 @@
+
+
+ {7B70AA99-C84C-40AE-B4AE-13C5223B874C}
+ DjdMachineInsp.dpr
+ True
+ Debug
+ 38017
+ Library
+ VCL
+ 19.2
+ Win32
+
+
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ false
+ false
+ false
+ true
+ false
+ 00400000
+ 1
+ 1
+ D:\富通ERP;$(DCC_UnitSearchPath)
+ vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;dclOffice2k;Rave50CLX;Rave50VCL;$(DCC_UsePackage)
+ true
+ DjdMachineInsp
+ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;Data.Win;$(DCC_Namespace)
+ 2052
+ CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
+
+
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+
+
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png
+
+
+ System.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)
+ 1033
+ InformationBase_Icon.ico
+
+
+ InformationBase_Icon.ico
+
+
+ RELEASE;$(DCC_Define)
+ 0
+ false
+ 0
+
+
+ Debug
+
+
+ Debug
+
+
+ Debug
+
+
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)
+ D:\Dp10RepoV1\项目代码\djdPack\G03贸易布匹检验\testDll.exe
+
+
+ DEBUG;$(DCC_Define)
+ false
+ true
+
+
+ Debug
+
+
+ Debug
+
+
+ Debug
+
+
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)
+ D:\Dp10RepoV1\项目代码\D10myLvsheng\T03贸易布匹检验\testDll.exe
+
+
+
+ MainSource
+
+
+
+
+ TDataModule
+
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+
+
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+
+
+ dfm
+
+
+
+ dfm
+ TDataModule
+
+
+
+ dfm
+
+
+
+ dfm
+ TFrame
+
+
+
+ dfm
+ TFrame
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+ TFrame
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+
+ dfm
+
+
+
+ dfm
+
+
+
+
+ dfm
+
+
+
+
+ dfm
+ TFrame
+
+
+
+ dfm
+
+
+
+
+ dfm
+
+
+
+
+ Cfg_2
+ Base
+
+
+ Base
+
+
+ Cfg_1
+ Base
+
+
+
+ Delphi.Personality.12
+
+
+
+
+ DjdMachineInsp.dpr
+
+
+
+ True
+ True
+ True
+ True
+ True
+ False
+
+
+
+
+ DjdMachineInsp.dll
+ true
+
+
+
+
+ 1
+
+
+ 0
+
+
+
+
+ classes
+ 1
+
+
+ classes
+ 1
+
+
+
+
+ res\xml
+ 1
+
+
+ res\xml
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\armeabi
+ 1
+
+
+ library\lib\armeabi
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\mips
+ 1
+
+
+ library\lib\mips
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\values-v21
+ 1
+
+
+ res\values-v21
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-ldpi
+ 1
+
+
+ res\drawable-ldpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-small
+ 1
+
+
+ res\drawable-small
+ 1
+
+
+
+
+ res\drawable-normal
+ 1
+
+
+ res\drawable-normal
+ 1
+
+
+
+
+ res\drawable-large
+ 1
+
+
+ res\drawable-large
+ 1
+
+
+
+
+ res\drawable-xlarge
+ 1
+
+
+ res\drawable-xlarge
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+
+
+ 1
+ .framework
+
+
+ 1
+ .framework
+
+
+ 0
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 0
+ .dll;.bpl
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 0
+ .bpl
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+ 12
+
+
+
+
+
diff --git a/T03贸易布匹检验/DjdMachineInsp.res b/T03贸易布匹检验/DjdMachineInsp.res
new file mode 100644
index 0000000..1b34824
Binary files /dev/null and b/T03贸易布匹检验/DjdMachineInsp.res differ
diff --git a/T03贸易布匹检验/DjdMachineInsp.skincfg b/T03贸易布匹检验/DjdMachineInsp.skincfg
new file mode 100644
index 0000000..bf678b8
--- /dev/null
+++ b/T03贸易布匹检验/DjdMachineInsp.skincfg
@@ -0,0 +1,62 @@
+[ExpressSkins]
+Default=0
+ShowNotifications=0
+Enabled=1
+dxSkinBasic=0
+dxSkinBlack=0
+dxSkinBlue=0
+dxSkinBlueprint=0
+dxSkinCaramel=0
+dxSkinCoffee=0
+dxSkinDarkroom=0
+dxSkinDarkSide=0
+dxSkinDevExpressDarkStyle=0
+dxSkinDevExpressStyle=0
+dxSkinFoggy=0
+dxSkinGlassOceans=0
+dxSkinHighContrast=0
+dxSkiniMaginary=0
+dxSkinLilian=0
+dxSkinLiquidSky=0
+dxSkinLondonLiquidSky=0
+dxSkinMcSkin=0
+dxSkinMetropolis=0
+dxSkinMetropolisDark=0
+dxSkinMoneyTwins=0
+dxSkinOffice2007Black=0
+dxSkinOffice2007Blue=0
+dxSkinOffice2007Green=0
+dxSkinOffice2007Pink=0
+dxSkinOffice2007Silver=0
+dxSkinOffice2010Black=0
+dxSkinOffice2010Blue=0
+dxSkinOffice2010Silver=0
+dxSkinOffice2013DarkGray=0
+dxSkinOffice2013LightGray=0
+dxSkinOffice2013White=0
+dxSkinOffice2016Colorful=0
+dxSkinOffice2016Dark=0
+dxSkinOffice2019Black=0
+dxSkinOffice2019Colorful=0
+dxSkinOffice2019DarkGray=0
+dxSkinOffice2019White=0
+dxSkinPumpkin=0
+dxSkinSeven=0
+dxSkinSevenClassic=0
+dxSkinSharp=0
+dxSkinSharpPlus=0
+dxSkinSilver=0
+dxSkinSpringtime=0
+dxSkinStardust=0
+dxSkinSummer2008=0
+dxSkinTheAsphaltWorld=0
+dxSkinTheBezier=0
+dxSkinsDefaultPainters=0
+dxSkinValentine=0
+dxSkinVisualStudio2013Blue=0
+dxSkinVisualStudio2013Dark=0
+dxSkinVisualStudio2013Light=0
+dxSkinVS2010=0
+dxSkinWhiteprint=0
+dxSkinWXI=1
+dxSkinXmas2008Blue=0
diff --git a/T03贸易布匹检验/ElAES.pas b/T03贸易布匹检验/ElAES.pas
new file mode 100644
index 0000000..7a3e6c8
--- /dev/null
+++ b/T03贸易布匹检验/ElAES.pas
@@ -0,0 +1,2488 @@
+(**************************************************)
+(* *)
+(* Advanced Encryption Standard (AES) *)
+(* *)
+(* Copyright (c) 1998-2001 *)
+(* EldoS, Alexander Ionov *)
+(* *)
+(**************************************************)
+
+unit ElAES;
+
+interface
+
+uses
+ Classes, SysUtils;
+
+type
+ EAESError = class(Exception);
+
+ PInteger = ^Integer;
+
+ TAESBuffer = array [0..15] of byte;
+ TAESKey128 = array [0..15] of byte;
+ TAESKey192 = array [0..23] of byte;
+ TAESKey256 = array [0..31] of byte;
+ TAESExpandedKey128 = array [0..43] of longword;
+ TAESExpandedKey192 = array [0..53] of longword;
+ TAESExpandedKey256 = array [0..63] of longword;
+
+ PAESBuffer =^TAESBuffer;
+ PAESKey128 =^TAESKey128;
+ PAESKey192 =^TAESKey192;
+ PAESKey256 =^TAESKey256;
+ PAESExpandedKey128 =^TAESExpandedKey128;
+ PAESExpandedKey192 =^TAESExpandedKey192;
+ PAESExpandedKey256 =^TAESExpandedKey256;
+
+// Key expansion routines for encryption
+
+procedure ExpandAESKeyForEncryption(const Key: TAESKey128;
+ var ExpandedKey: TAESExpandedKey128); overload;
+procedure ExpandAESKeyForEncryption(const Key: TAESKey192;
+ var ExpandedKey: TAESExpandedKey192); overload;
+procedure ExpandAESKeyForEncryption(const Key: TAESKey256;
+ var ExpandedKey: TAESExpandedKey256); overload;
+
+// Block encryption routines
+
+procedure EncryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey128;
+ var OutBuf: TAESBuffer); overload;
+procedure EncryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey192;
+ var OutBuf: TAESBuffer); overload;
+procedure EncryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey256;
+ var OutBuf: TAESBuffer); overload;
+
+// Stream encryption routines (ECB mode)
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; Dest: TStream); overload;
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; Dest: TStream); overload;
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; Dest: TStream); overload;
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; Dest: TStream); overload;
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; Dest: TStream); overload;
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; Dest: TStream); overload;
+
+// Stream encryption routines (CBC mode)
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; const InitVector: TAESBuffer; Dest: TStream); overload;
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; const InitVector: TAESBuffer;
+ Dest: TStream); overload;
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; const InitVector: TAESBuffer; Dest: TStream); overload;
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; const InitVector: TAESBuffer;
+ Dest: TStream); overload;
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; const InitVector: TAESBuffer; Dest: TStream); overload;
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; const InitVector: TAESBuffer;
+ Dest: TStream); overload;
+
+// Key transformation routines for decryption
+
+procedure ExpandAESKeyForDecryption(var ExpandedKey: TAESExpandedKey128); overload;
+procedure ExpandAESKeyForDecryption(const Key: TAESKey128;
+ var ExpandedKey: TAESExpandedKey128); overload;
+
+procedure ExpandAESKeyForDecryption(var ExpandedKey: TAESExpandedKey192); overload;
+procedure ExpandAESKeyForDecryption(const Key: TAESKey192;
+ var ExpandedKey: TAESExpandedKey192); overload;
+
+procedure ExpandAESKeyForDecryption(var ExpandedKey: TAESExpandedKey256); overload;
+procedure ExpandAESKeyForDecryption(const Key: TAESKey256;
+ var ExpandedKey: TAESExpandedKey256); overload;
+
+// Block decryption routines
+
+procedure DecryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey128;
+ var OutBuf: TAESBuffer); overload;
+procedure DecryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey192;
+ var OutBuf: TAESBuffer); overload;
+procedure DecryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey256;
+ var OutBuf: TAESBuffer); overload;
+
+// Stream decryption routines (ECB mode)
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; Dest: TStream); overload;
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; Dest: TStream); overload;
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; Dest: TStream); overload;
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; Dest: TStream); overload;
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; Dest: TStream); overload;
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; Dest: TStream); overload;
+
+// Stream decryption routines (CBC mode)
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; const InitVector: TAESBuffer; Dest: TStream); overload;
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; const InitVector: TAESBuffer;
+ Dest: TStream); overload;
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; const InitVector: TAESBuffer; Dest: TStream); overload;
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; const InitVector: TAESBuffer;
+ Dest: TStream); overload;
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; const InitVector: TAESBuffer; Dest: TStream); overload;
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; const InitVector: TAESBuffer;
+ Dest: TStream); overload;
+
+resourcestring
+ SInvalidInBufSize = 'Invalid buffer size for decryption';
+ SReadError = 'Stream read error';
+ SWriteError = 'Stream write error';
+
+implementation
+
+type
+ PLongWord = ^LongWord;
+
+function Min(A, B: integer): integer;
+begin
+ if A < B then
+ Result := A
+ else
+ Result := B;
+end;
+
+const
+ Rcon: array [1..30] of longword = (
+ $00000001, $00000002, $00000004, $00000008, $00000010, $00000020,
+ $00000040, $00000080, $0000001B, $00000036, $0000006C, $000000D8,
+ $000000AB, $0000004D, $0000009A, $0000002F, $0000005E, $000000BC,
+ $00000063, $000000C6, $00000097, $00000035, $0000006A, $000000D4,
+ $000000B3, $0000007D, $000000FA, $000000EF, $000000C5, $00000091
+ );
+
+ ForwardTable: array [0..255] of longword = (
+ $A56363C6, $847C7CF8, $997777EE, $8D7B7BF6, $0DF2F2FF, $BD6B6BD6, $B16F6FDE, $54C5C591,
+ $50303060, $03010102, $A96767CE, $7D2B2B56, $19FEFEE7, $62D7D7B5, $E6ABAB4D, $9A7676EC,
+ $45CACA8F, $9D82821F, $40C9C989, $877D7DFA, $15FAFAEF, $EB5959B2, $C947478E, $0BF0F0FB,
+ $ECADAD41, $67D4D4B3, $FDA2A25F, $EAAFAF45, $BF9C9C23, $F7A4A453, $967272E4, $5BC0C09B,
+ $C2B7B775, $1CFDFDE1, $AE93933D, $6A26264C, $5A36366C, $413F3F7E, $02F7F7F5, $4FCCCC83,
+ $5C343468, $F4A5A551, $34E5E5D1, $08F1F1F9, $937171E2, $73D8D8AB, $53313162, $3F15152A,
+ $0C040408, $52C7C795, $65232346, $5EC3C39D, $28181830, $A1969637, $0F05050A, $B59A9A2F,
+ $0907070E, $36121224, $9B80801B, $3DE2E2DF, $26EBEBCD, $6927274E, $CDB2B27F, $9F7575EA,
+ $1B090912, $9E83831D, $742C2C58, $2E1A1A34, $2D1B1B36, $B26E6EDC, $EE5A5AB4, $FBA0A05B,
+ $F65252A4, $4D3B3B76, $61D6D6B7, $CEB3B37D, $7B292952, $3EE3E3DD, $712F2F5E, $97848413,
+ $F55353A6, $68D1D1B9, $00000000, $2CEDEDC1, $60202040, $1FFCFCE3, $C8B1B179, $ED5B5BB6,
+ $BE6A6AD4, $46CBCB8D, $D9BEBE67, $4B393972, $DE4A4A94, $D44C4C98, $E85858B0, $4ACFCF85,
+ $6BD0D0BB, $2AEFEFC5, $E5AAAA4F, $16FBFBED, $C5434386, $D74D4D9A, $55333366, $94858511,
+ $CF45458A, $10F9F9E9, $06020204, $817F7FFE, $F05050A0, $443C3C78, $BA9F9F25, $E3A8A84B,
+ $F35151A2, $FEA3A35D, $C0404080, $8A8F8F05, $AD92923F, $BC9D9D21, $48383870, $04F5F5F1,
+ $DFBCBC63, $C1B6B677, $75DADAAF, $63212142, $30101020, $1AFFFFE5, $0EF3F3FD, $6DD2D2BF,
+ $4CCDCD81, $140C0C18, $35131326, $2FECECC3, $E15F5FBE, $A2979735, $CC444488, $3917172E,
+ $57C4C493, $F2A7A755, $827E7EFC, $473D3D7A, $AC6464C8, $E75D5DBA, $2B191932, $957373E6,
+ $A06060C0, $98818119, $D14F4F9E, $7FDCDCA3, $66222244, $7E2A2A54, $AB90903B, $8388880B,
+ $CA46468C, $29EEEEC7, $D3B8B86B, $3C141428, $79DEDEA7, $E25E5EBC, $1D0B0B16, $76DBDBAD,
+ $3BE0E0DB, $56323264, $4E3A3A74, $1E0A0A14, $DB494992, $0A06060C, $6C242448, $E45C5CB8,
+ $5DC2C29F, $6ED3D3BD, $EFACAC43, $A66262C4, $A8919139, $A4959531, $37E4E4D3, $8B7979F2,
+ $32E7E7D5, $43C8C88B, $5937376E, $B76D6DDA, $8C8D8D01, $64D5D5B1, $D24E4E9C, $E0A9A949,
+ $B46C6CD8, $FA5656AC, $07F4F4F3, $25EAEACF, $AF6565CA, $8E7A7AF4, $E9AEAE47, $18080810,
+ $D5BABA6F, $887878F0, $6F25254A, $722E2E5C, $241C1C38, $F1A6A657, $C7B4B473, $51C6C697,
+ $23E8E8CB, $7CDDDDA1, $9C7474E8, $211F1F3E, $DD4B4B96, $DCBDBD61, $868B8B0D, $858A8A0F,
+ $907070E0, $423E3E7C, $C4B5B571, $AA6666CC, $D8484890, $05030306, $01F6F6F7, $120E0E1C,
+ $A36161C2, $5F35356A, $F95757AE, $D0B9B969, $91868617, $58C1C199, $271D1D3A, $B99E9E27,
+ $38E1E1D9, $13F8F8EB, $B398982B, $33111122, $BB6969D2, $70D9D9A9, $898E8E07, $A7949433,
+ $B69B9B2D, $221E1E3C, $92878715, $20E9E9C9, $49CECE87, $FF5555AA, $78282850, $7ADFDFA5,
+ $8F8C8C03, $F8A1A159, $80898909, $170D0D1A, $DABFBF65, $31E6E6D7, $C6424284, $B86868D0,
+ $C3414182, $B0999929, $772D2D5A, $110F0F1E, $CBB0B07B, $FC5454A8, $D6BBBB6D, $3A16162C
+ );
+
+ LastForwardTable: array [0..255] of longword = (
+ $00000063, $0000007C, $00000077, $0000007B, $000000F2, $0000006B, $0000006F, $000000C5,
+ $00000030, $00000001, $00000067, $0000002B, $000000FE, $000000D7, $000000AB, $00000076,
+ $000000CA, $00000082, $000000C9, $0000007D, $000000FA, $00000059, $00000047, $000000F0,
+ $000000AD, $000000D4, $000000A2, $000000AF, $0000009C, $000000A4, $00000072, $000000C0,
+ $000000B7, $000000FD, $00000093, $00000026, $00000036, $0000003F, $000000F7, $000000CC,
+ $00000034, $000000A5, $000000E5, $000000F1, $00000071, $000000D8, $00000031, $00000015,
+ $00000004, $000000C7, $00000023, $000000C3, $00000018, $00000096, $00000005, $0000009A,
+ $00000007, $00000012, $00000080, $000000E2, $000000EB, $00000027, $000000B2, $00000075,
+ $00000009, $00000083, $0000002C, $0000001A, $0000001B, $0000006E, $0000005A, $000000A0,
+ $00000052, $0000003B, $000000D6, $000000B3, $00000029, $000000E3, $0000002F, $00000084,
+ $00000053, $000000D1, $00000000, $000000ED, $00000020, $000000FC, $000000B1, $0000005B,
+ $0000006A, $000000CB, $000000BE, $00000039, $0000004A, $0000004C, $00000058, $000000CF,
+ $000000D0, $000000EF, $000000AA, $000000FB, $00000043, $0000004D, $00000033, $00000085,
+ $00000045, $000000F9, $00000002, $0000007F, $00000050, $0000003C, $0000009F, $000000A8,
+ $00000051, $000000A3, $00000040, $0000008F, $00000092, $0000009D, $00000038, $000000F5,
+ $000000BC, $000000B6, $000000DA, $00000021, $00000010, $000000FF, $000000F3, $000000D2,
+ $000000CD, $0000000C, $00000013, $000000EC, $0000005F, $00000097, $00000044, $00000017,
+ $000000C4, $000000A7, $0000007E, $0000003D, $00000064, $0000005D, $00000019, $00000073,
+ $00000060, $00000081, $0000004F, $000000DC, $00000022, $0000002A, $00000090, $00000088,
+ $00000046, $000000EE, $000000B8, $00000014, $000000DE, $0000005E, $0000000B, $000000DB,
+ $000000E0, $00000032, $0000003A, $0000000A, $00000049, $00000006, $00000024, $0000005C,
+ $000000C2, $000000D3, $000000AC, $00000062, $00000091, $00000095, $000000E4, $00000079,
+ $000000E7, $000000C8, $00000037, $0000006D, $0000008D, $000000D5, $0000004E, $000000A9,
+ $0000006C, $00000056, $000000F4, $000000EA, $00000065, $0000007A, $000000AE, $00000008,
+ $000000BA, $00000078, $00000025, $0000002E, $0000001C, $000000A6, $000000B4, $000000C6,
+ $000000E8, $000000DD, $00000074, $0000001F, $0000004B, $000000BD, $0000008B, $0000008A,
+ $00000070, $0000003E, $000000B5, $00000066, $00000048, $00000003, $000000F6, $0000000E,
+ $00000061, $00000035, $00000057, $000000B9, $00000086, $000000C1, $0000001D, $0000009E,
+ $000000E1, $000000F8, $00000098, $00000011, $00000069, $000000D9, $0000008E, $00000094,
+ $0000009B, $0000001E, $00000087, $000000E9, $000000CE, $00000055, $00000028, $000000DF,
+ $0000008C, $000000A1, $00000089, $0000000D, $000000BF, $000000E6, $00000042, $00000068,
+ $00000041, $00000099, $0000002D, $0000000F, $000000B0, $00000054, $000000BB, $00000016
+ );
+
+ InverseTable: array [0..255] of longword = (
+ $50A7F451, $5365417E, $C3A4171A, $965E273A, $CB6BAB3B, $F1459D1F, $AB58FAAC, $9303E34B,
+ $55FA3020, $F66D76AD, $9176CC88, $254C02F5, $FCD7E54F, $D7CB2AC5, $80443526, $8FA362B5,
+ $495AB1DE, $671BBA25, $980EEA45, $E1C0FE5D, $02752FC3, $12F04C81, $A397468D, $C6F9D36B,
+ $E75F8F03, $959C9215, $EB7A6DBF, $DA595295, $2D83BED4, $D3217458, $2969E049, $44C8C98E,
+ $6A89C275, $78798EF4, $6B3E5899, $DD71B927, $B64FE1BE, $17AD88F0, $66AC20C9, $B43ACE7D,
+ $184ADF63, $82311AE5, $60335197, $457F5362, $E07764B1, $84AE6BBB, $1CA081FE, $942B08F9,
+ $58684870, $19FD458F, $876CDE94, $B7F87B52, $23D373AB, $E2024B72, $578F1FE3, $2AAB5566,
+ $0728EBB2, $03C2B52F, $9A7BC586, $A50837D3, $F2872830, $B2A5BF23, $BA6A0302, $5C8216ED,
+ $2B1CCF8A, $92B479A7, $F0F207F3, $A1E2694E, $CDF4DA65, $D5BE0506, $1F6234D1, $8AFEA6C4,
+ $9D532E34, $A055F3A2, $32E18A05, $75EBF6A4, $39EC830B, $AAEF6040, $069F715E, $51106EBD,
+ $F98A213E, $3D06DD96, $AE053EDD, $46BDE64D, $B58D5491, $055DC471, $6FD40604, $FF155060,
+ $24FB9819, $97E9BDD6, $CC434089, $779ED967, $BD42E8B0, $888B8907, $385B19E7, $DBEEC879,
+ $470A7CA1, $E90F427C, $C91E84F8, $00000000, $83868009, $48ED2B32, $AC70111E, $4E725A6C,
+ $FBFF0EFD, $5638850F, $1ED5AE3D, $27392D36, $64D90F0A, $21A65C68, $D1545B9B, $3A2E3624,
+ $B1670A0C, $0FE75793, $D296EEB4, $9E919B1B, $4FC5C080, $A220DC61, $694B775A, $161A121C,
+ $0ABA93E2, $E52AA0C0, $43E0223C, $1D171B12, $0B0D090E, $ADC78BF2, $B9A8B62D, $C8A91E14,
+ $8519F157, $4C0775AF, $BBDD99EE, $FD607FA3, $9F2601F7, $BCF5725C, $C53B6644, $347EFB5B,
+ $7629438B, $DCC623CB, $68FCEDB6, $63F1E4B8, $CADC31D7, $10856342, $40229713, $2011C684,
+ $7D244A85, $F83DBBD2, $1132F9AE, $6DA129C7, $4B2F9E1D, $F330B2DC, $EC52860D, $D0E3C177,
+ $6C16B32B, $99B970A9, $FA489411, $2264E947, $C48CFCA8, $1A3FF0A0, $D82C7D56, $EF903322,
+ $C74E4987, $C1D138D9, $FEA2CA8C, $360BD498, $CF81F5A6, $28DE7AA5, $268EB7DA, $A4BFAD3F,
+ $E49D3A2C, $0D927850, $9BCC5F6A, $62467E54, $C2138DF6, $E8B8D890, $5EF7392E, $F5AFC382,
+ $BE805D9F, $7C93D069, $A92DD56F, $B31225CF, $3B99ACC8, $A77D1810, $6E639CE8, $7BBB3BDB,
+ $097826CD, $F418596E, $01B79AEC, $A89A4F83, $656E95E6, $7EE6FFAA, $08CFBC21, $E6E815EF,
+ $D99BE7BA, $CE366F4A, $D4099FEA, $D67CB029, $AFB2A431, $31233F2A, $3094A5C6, $C066A235,
+ $37BC4E74, $A6CA82FC, $B0D090E0, $15D8A733, $4A9804F1, $F7DAEC41, $0E50CD7F, $2FF69117,
+ $8DD64D76, $4DB0EF43, $544DAACC, $DF0496E4, $E3B5D19E, $1B886A4C, $B81F2CC1, $7F516546,
+ $04EA5E9D, $5D358C01, $737487FA, $2E410BFB, $5A1D67B3, $52D2DB92, $335610E9, $1347D66D,
+ $8C61D79A, $7A0CA137, $8E14F859, $893C13EB, $EE27A9CE, $35C961B7, $EDE51CE1, $3CB1477A,
+ $59DFD29C, $3F73F255, $79CE1418, $BF37C773, $EACDF753, $5BAAFD5F, $146F3DDF, $86DB4478,
+ $81F3AFCA, $3EC468B9, $2C342438, $5F40A3C2, $72C31D16, $0C25E2BC, $8B493C28, $41950DFF,
+ $7101A839, $DEB30C08, $9CE4B4D8, $90C15664, $6184CB7B, $70B632D5, $745C6C48, $4257B8D0
+ );
+
+ LastInverseTable: array [0..255] of longword = (
+ $00000052, $00000009, $0000006A, $000000D5, $00000030, $00000036, $000000A5, $00000038,
+ $000000BF, $00000040, $000000A3, $0000009E, $00000081, $000000F3, $000000D7, $000000FB,
+ $0000007C, $000000E3, $00000039, $00000082, $0000009B, $0000002F, $000000FF, $00000087,
+ $00000034, $0000008E, $00000043, $00000044, $000000C4, $000000DE, $000000E9, $000000CB,
+ $00000054, $0000007B, $00000094, $00000032, $000000A6, $000000C2, $00000023, $0000003D,
+ $000000EE, $0000004C, $00000095, $0000000B, $00000042, $000000FA, $000000C3, $0000004E,
+ $00000008, $0000002E, $000000A1, $00000066, $00000028, $000000D9, $00000024, $000000B2,
+ $00000076, $0000005B, $000000A2, $00000049, $0000006D, $0000008B, $000000D1, $00000025,
+ $00000072, $000000F8, $000000F6, $00000064, $00000086, $00000068, $00000098, $00000016,
+ $000000D4, $000000A4, $0000005C, $000000CC, $0000005D, $00000065, $000000B6, $00000092,
+ $0000006C, $00000070, $00000048, $00000050, $000000FD, $000000ED, $000000B9, $000000DA,
+ $0000005E, $00000015, $00000046, $00000057, $000000A7, $0000008D, $0000009D, $00000084,
+ $00000090, $000000D8, $000000AB, $00000000, $0000008C, $000000BC, $000000D3, $0000000A,
+ $000000F7, $000000E4, $00000058, $00000005, $000000B8, $000000B3, $00000045, $00000006,
+ $000000D0, $0000002C, $0000001E, $0000008F, $000000CA, $0000003F, $0000000F, $00000002,
+ $000000C1, $000000AF, $000000BD, $00000003, $00000001, $00000013, $0000008A, $0000006B,
+ $0000003A, $00000091, $00000011, $00000041, $0000004F, $00000067, $000000DC, $000000EA,
+ $00000097, $000000F2, $000000CF, $000000CE, $000000F0, $000000B4, $000000E6, $00000073,
+ $00000096, $000000AC, $00000074, $00000022, $000000E7, $000000AD, $00000035, $00000085,
+ $000000E2, $000000F9, $00000037, $000000E8, $0000001C, $00000075, $000000DF, $0000006E,
+ $00000047, $000000F1, $0000001A, $00000071, $0000001D, $00000029, $000000C5, $00000089,
+ $0000006F, $000000B7, $00000062, $0000000E, $000000AA, $00000018, $000000BE, $0000001B,
+ $000000FC, $00000056, $0000003E, $0000004B, $000000C6, $000000D2, $00000079, $00000020,
+ $0000009A, $000000DB, $000000C0, $000000FE, $00000078, $000000CD, $0000005A, $000000F4,
+ $0000001F, $000000DD, $000000A8, $00000033, $00000088, $00000007, $000000C7, $00000031,
+ $000000B1, $00000012, $00000010, $00000059, $00000027, $00000080, $000000EC, $0000005F,
+ $00000060, $00000051, $0000007F, $000000A9, $00000019, $000000B5, $0000004A, $0000000D,
+ $0000002D, $000000E5, $0000007A, $0000009F, $00000093, $000000C9, $0000009C, $000000EF,
+ $000000A0, $000000E0, $0000003B, $0000004D, $000000AE, $0000002A, $000000F5, $000000B0,
+ $000000C8, $000000EB, $000000BB, $0000003C, $00000083, $00000053, $00000099, $00000061,
+ $00000017, $0000002B, $00000004, $0000007E, $000000BA, $00000077, $000000D6, $00000026,
+ $000000E1, $00000069, $00000014, $00000063, $00000055, $00000021, $0000000C, $0000007D
+ );
+
+procedure ExpandAESKeyForEncryption(const Key: TAESKey128; var ExpandedKey: TAESExpandedKey128);
+var
+ I, J: integer;
+ T: longword;
+ W0, W1, W2, W3: longword;
+begin
+ ExpandedKey[0] := PLongWord(@Key[0])^;
+ ExpandedKey[1] := PLongWord(@Key[4])^;
+ ExpandedKey[2] := PLongWord(@Key[8])^;
+ ExpandedKey[3] := PLongWord(@Key[12])^;
+ I := 0; J := 1;
+ repeat
+ T := (ExpandedKey[I + 3] shl 24) or (ExpandedKey[I + 3] shr 8);
+ W0 := LastForwardTable[Byte(T)]; W1 := LastForwardTable[Byte(T shr 8)];
+ W2 := LastForwardTable[Byte(T shr 16)]; W3 := LastForwardTable[Byte(T shr 24)];
+ ExpandedKey[I + 4] := ExpandedKey[I] xor
+ (W0 xor ((W1 shl 8) or (W1 shr 24)) xor
+ ((W2 shl 16) or (W2 shr 16)) xor ((W3 shl 24) or (W3 shr 8))) xor Rcon[J];
+ Inc(J);
+ ExpandedKey[I + 5] := ExpandedKey[I + 1] xor ExpandedKey[I + 4];
+ ExpandedKey[I + 6] := ExpandedKey[I + 2] xor ExpandedKey[I + 5];
+ ExpandedKey[I + 7] := ExpandedKey[I + 3] xor ExpandedKey[I + 6];
+ Inc(I, 4);
+ until I >= 40;
+end;
+
+procedure ExpandAESKeyForEncryption(const Key: TAESKey192; var ExpandedKey: TAESExpandedKey192); overload;
+var
+ I, J: integer;
+ T: longword;
+ W0, W1, W2, W3: longword;
+begin
+ ExpandedKey[0] := PLongWord(@Key[0])^;
+ ExpandedKey[1] := PLongWord(@Key[4])^;
+ ExpandedKey[2] := PLongWord(@Key[8])^;
+ ExpandedKey[3] := PLongWord(@Key[12])^;
+ ExpandedKey[4] := PLongWord(@Key[16])^;
+ ExpandedKey[5] := PLongWord(@Key[20])^;
+ I := 0; J := 1;
+ repeat
+ T := (ExpandedKey[I + 5] shl 24) or (ExpandedKey[I + 5] shr 8);
+ W0 := LastForwardTable[Byte(T)]; W1 := LastForwardTable[Byte(T shr 8)];
+ W2 := LastForwardTable[Byte(T shr 16)]; W3 := LastForwardTable[Byte(T shr 24)];
+ ExpandedKey[I + 6] := ExpandedKey[I] xor
+ (W0 xor ((W1 shl 8) or (W1 shr 24)) xor
+ ((W2 shl 16) or (W2 shr 16)) xor ((W3 shl 24) or (W3 shr 8))) xor Rcon[J];
+ Inc(J);
+ ExpandedKey[I + 7] := ExpandedKey[I + 1] xor ExpandedKey[I + 6];
+ ExpandedKey[I + 8] := ExpandedKey[I + 2] xor ExpandedKey[I + 7];
+ ExpandedKey[I + 9] := ExpandedKey[I + 3] xor ExpandedKey[I + 8];
+ ExpandedKey[I + 10] := ExpandedKey[I + 4] xor ExpandedKey[I + 9];
+ ExpandedKey[I + 11] := ExpandedKey[I + 5] xor ExpandedKey[I + 10];
+ Inc(I, 6);
+ until I >= 46;
+end;
+
+procedure ExpandAESKeyForEncryption(const Key: TAESKey256; var ExpandedKey: TAESExpandedKey256); overload;
+var
+ I, J: integer;
+ T: longword;
+ W0, W1, W2, W3: longword;
+begin
+ ExpandedKey[0] := PLongWord(@Key[0])^;
+ ExpandedKey[1] := PLongWord(@Key[4])^;
+ ExpandedKey[2] := PLongWord(@Key[8])^;
+ ExpandedKey[3] := PLongWord(@Key[12])^;
+ ExpandedKey[4] := PLongWord(@Key[16])^;
+ ExpandedKey[5] := PLongWord(@Key[20])^;
+ ExpandedKey[6] := PLongWord(@Key[24])^;
+ ExpandedKey[7] := PLongWord(@Key[28])^;
+ I := 0; J := 1;
+ repeat
+ T := (ExpandedKey[I + 7] shl 24) or (ExpandedKey[I + 7] shr 8);
+ W0 := LastForwardTable[Byte(T)]; W1 := LastForwardTable[Byte(T shr 8)];
+ W2 := LastForwardTable[Byte(T shr 16)]; W3 := LastForwardTable[Byte(T shr 24)];
+ ExpandedKey[I + 8] := ExpandedKey[I] xor
+ (W0 xor ((W1 shl 8) or (W1 shr 24)) xor
+ ((W2 shl 16) or (W2 shr 16)) xor ((W3 shl 24) or (W3 shr 8))) xor Rcon[J];
+ Inc(J);
+ ExpandedKey[I + 9] := ExpandedKey[I + 1] xor ExpandedKey[I + 8];
+ ExpandedKey[I + 10] := ExpandedKey[I + 2] xor ExpandedKey[I + 9];
+ ExpandedKey[I + 11] := ExpandedKey[I + 3] xor ExpandedKey[I + 10];
+ W0 := LastForwardTable[Byte(ExpandedKey[I + 11])];
+ W1 := LastForwardTable[Byte(ExpandedKey[I + 11] shr 8)];
+ W2 := LastForwardTable[Byte(ExpandedKey[I + 11] shr 16)];
+ W3 := LastForwardTable[Byte(ExpandedKey[I + 11] shr 24)];
+ ExpandedKey[I + 12] := ExpandedKey[I + 4] xor
+ (W0 xor ((W1 shl 8) or (W1 shr 24)) xor
+ ((W2 shl 16) or (W2 shr 16)) xor ((W3 shl 24) or (W3 shr 8)));
+ ExpandedKey[I + 13] := ExpandedKey[I + 5] xor ExpandedKey[I + 12];
+ ExpandedKey[I + 14] := ExpandedKey[I + 6] xor ExpandedKey[I + 13];
+ ExpandedKey[I + 15] := ExpandedKey[I + 7] xor ExpandedKey[I + 14];
+ Inc(I, 8);
+ until I >= 52;
+end;
+
+procedure EncryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey128;
+ var OutBuf: TAESBuffer);
+var
+ T0, T1: array [0..3] of longword;
+ W0, W1, W2, W3: longword;
+begin
+ // initializing
+ T0[0] := PLongWord(@InBuf[0])^ xor Key[0];
+ T0[1] := PLongWord(@InBuf[4])^ xor Key[1];
+ T0[2] := PLongWord(@InBuf[8])^ xor Key[2];
+ T0[3] := PLongWord(@InBuf[12])^ xor Key[3];
+ // performing transformation 9 times
+ // round 1
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[4];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[5];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[6];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[7];
+ // round 2
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[8];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[9];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[10];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[11];
+ // round 3
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[12];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[13];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[14];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[15];
+ // round 4
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[16];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[17];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[18];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[19];
+ // round 5
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[20];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[21];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[22];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[23];
+ // round 6
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[24];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[25];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[26];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[27];
+ // round 7
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[28];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[29];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[30];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[31];
+ // round 8
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[32];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[33];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[34];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[35];
+ // round 9
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[36];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[37];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[38];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[39];
+ // last round of transformations
+ W0 := LastForwardTable[Byte(T1[0])]; W1 := LastForwardTable[Byte(T1[1] shr 8)];
+ W2 := LastForwardTable[Byte(T1[2] shr 16)]; W3 := LastForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[40];
+ W0 := LastForwardTable[Byte(T1[1])]; W1 := LastForwardTable[Byte(T1[2] shr 8)];
+ W2 := LastForwardTable[Byte(T1[3] shr 16)]; W3 := LastForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[41];
+ W0 := LastForwardTable[Byte(T1[2])]; W1 := LastForwardTable[Byte(T1[3] shr 8)];
+ W2 := LastForwardTable[Byte(T1[0] shr 16)]; W3 := LastForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[42];
+ W0 := LastForwardTable[Byte(T1[3])]; W1 := LastForwardTable[Byte(T1[0] shr 8)];
+ W2 := LastForwardTable[Byte(T1[1] shr 16)]; W3 := LastForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[43];
+ // finalizing
+ PLongWord(@OutBuf[0])^ := T0[0]; PLongWord(@OutBuf[4])^ := T0[1];
+ PLongWord(@OutBuf[8])^ := T0[2]; PLongWord(@OutBuf[12])^ := T0[3];
+end;
+
+procedure EncryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey192;
+ var OutBuf: TAESBuffer);
+var
+ T0, T1: array [0..3] of longword;
+ W0, W1, W2, W3: longword;
+begin
+ // initializing
+ T0[0] := PLongWord(@InBuf[0])^ xor Key[0];
+ T0[1] := PLongWord(@InBuf[4])^ xor Key[1];
+ T0[2] := PLongWord(@InBuf[8])^ xor Key[2];
+ T0[3] := PLongWord(@InBuf[12])^ xor Key[3];
+ // performing transformation 11 times
+ // round 1
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[4];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[5];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[6];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[7];
+ // round 2
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[8];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[9];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[10];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[11];
+ // round 3
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[12];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[13];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[14];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[15];
+ // round 4
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[16];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[17];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[18];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[19];
+ // round 5
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[20];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[21];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[22];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[23];
+ // round 6
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[24];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[25];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[26];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[27];
+ // round 7
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[28];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[29];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[30];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[31];
+ // round 8
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[32];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[33];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[34];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[35];
+ // round 9
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[36];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[37];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[38];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[39];
+ // round 10
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[40];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[41];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[42];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[43];
+ // round 11
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[44];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[45];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[46];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[47];
+ // last round of transformations
+ W0 := LastForwardTable[Byte(T1[0])]; W1 := LastForwardTable[Byte(T1[1] shr 8)];
+ W2 := LastForwardTable[Byte(T1[2] shr 16)]; W3 := LastForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[48];
+ W0 := LastForwardTable[Byte(T1[1])]; W1 := LastForwardTable[Byte(T1[2] shr 8)];
+ W2 := LastForwardTable[Byte(T1[3] shr 16)]; W3 := LastForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[49];
+ W0 := LastForwardTable[Byte(T1[2])]; W1 := LastForwardTable[Byte(T1[3] shr 8)];
+ W2 := LastForwardTable[Byte(T1[0] shr 16)]; W3 := LastForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[50];
+ W0 := LastForwardTable[Byte(T1[3])]; W1 := LastForwardTable[Byte(T1[0] shr 8)];
+ W2 := LastForwardTable[Byte(T1[1] shr 16)]; W3 := LastForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[51];
+ // finalizing
+ PLongWord(@OutBuf[0])^ := T0[0]; PLongWord(@OutBuf[4])^ := T0[1];
+ PLongWord(@OutBuf[8])^ := T0[2]; PLongWord(@OutBuf[12])^ := T0[3];
+end;
+
+procedure EncryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey256;
+ var OutBuf: TAESBuffer);
+var
+ T0, T1: array [0..3] of longword;
+ W0, W1, W2, W3: longword;
+begin
+ // initializing
+ T0[0] := PLongWord(@InBuf[0])^ xor Key[0];
+ T0[1] := PLongWord(@InBuf[4])^ xor Key[1];
+ T0[2] := PLongWord(@InBuf[8])^ xor Key[2];
+ T0[3] := PLongWord(@InBuf[12])^ xor Key[3];
+ // performing transformation 13 times
+ // round 1
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[4];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[5];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[6];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[7];
+ // round 2
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[8];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[9];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[10];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[11];
+ // round 3
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[12];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[13];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[14];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[15];
+ // round 4
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[16];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[17];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[18];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[19];
+ // round 5
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[20];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[21];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[22];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[23];
+ // round 6
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[24];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[25];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[26];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[27];
+ // round 7
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[28];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[29];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[30];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[31];
+ // round 8
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[32];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[33];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[34];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[35];
+ // round 9
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[36];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[37];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[38];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[39];
+ // round 10
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[40];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[41];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[42];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[43];
+ // round 11
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[44];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[45];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[46];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[47];
+ // round 12
+ W0 := ForwardTable[Byte(T1[0])]; W1 := ForwardTable[Byte(T1[1] shr 8)];
+ W2 := ForwardTable[Byte(T1[2] shr 16)]; W3 := ForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[48];
+ W0 := ForwardTable[Byte(T1[1])]; W1 := ForwardTable[Byte(T1[2] shr 8)];
+ W2 := ForwardTable[Byte(T1[3] shr 16)]; W3 := ForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[49];
+ W0 := ForwardTable[Byte(T1[2])]; W1 := ForwardTable[Byte(T1[3] shr 8)];
+ W2 := ForwardTable[Byte(T1[0] shr 16)]; W3 := ForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[50];
+ W0 := ForwardTable[Byte(T1[3])]; W1 := ForwardTable[Byte(T1[0] shr 8)];
+ W2 := ForwardTable[Byte(T1[1] shr 16)]; W3 := ForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[51];
+ // round 13
+ W0 := ForwardTable[Byte(T0[0])]; W1 := ForwardTable[Byte(T0[1] shr 8)];
+ W2 := ForwardTable[Byte(T0[2] shr 16)]; W3 := ForwardTable[Byte(T0[3] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[52];
+ W0 := ForwardTable[Byte(T0[1])]; W1 := ForwardTable[Byte(T0[2] shr 8)];
+ W2 := ForwardTable[Byte(T0[3] shr 16)]; W3 := ForwardTable[Byte(T0[0] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[53];
+ W0 := ForwardTable[Byte(T0[2])]; W1 := ForwardTable[Byte(T0[3] shr 8)];
+ W2 := ForwardTable[Byte(T0[0] shr 16)]; W3 := ForwardTable[Byte(T0[1] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[54];
+ W0 := ForwardTable[Byte(T0[3])]; W1 := ForwardTable[Byte(T0[0] shr 8)];
+ W2 := ForwardTable[Byte(T0[1] shr 16)]; W3 := ForwardTable[Byte(T0[2] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[55];
+ // last round of transformations
+ W0 := LastForwardTable[Byte(T1[0])]; W1 := LastForwardTable[Byte(T1[1] shr 8)];
+ W2 := LastForwardTable[Byte(T1[2] shr 16)]; W3 := LastForwardTable[Byte(T1[3] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[56];
+ W0 := LastForwardTable[Byte(T1[1])]; W1 := LastForwardTable[Byte(T1[2] shr 8)];
+ W2 := LastForwardTable[Byte(T1[3] shr 16)]; W3 := LastForwardTable[Byte(T1[0] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[57];
+ W0 := LastForwardTable[Byte(T1[2])]; W1 := LastForwardTable[Byte(T1[3] shr 8)];
+ W2 := LastForwardTable[Byte(T1[0] shr 16)]; W3 := LastForwardTable[Byte(T1[1] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[58];
+ W0 := LastForwardTable[Byte(T1[3])]; W1 := LastForwardTable[Byte(T1[0] shr 8)];
+ W2 := LastForwardTable[Byte(T1[1] shr 16)]; W3 := LastForwardTable[Byte(T1[2] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[59];
+ // finalizing
+ PLongWord(@OutBuf[0])^ := T0[0]; PLongWord(@OutBuf[4])^ := T0[1];
+ PLongWord(@OutBuf[8])^ := T0[2]; PLongWord(@OutBuf[12])^ := T0[3];
+end;
+
+procedure ExpandAESKeyForDecryption(var ExpandedKey: TAESExpandedKey128);
+var
+ I: integer;
+ U, F2, F4, F8, F9: longword;
+begin
+ for I := 1 to 9 do
+ begin
+ F9 := ExpandedKey[I * 4];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 1];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 1] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 2];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 2] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 3];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 3] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ end;
+end;
+
+procedure ExpandAESKeyForDecryption(const Key: TAESKey128; var ExpandedKey: TAESExpandedKey128);
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ ExpandAESKeyForDecryption(ExpandedKey);
+end;
+
+procedure ExpandAESKeyForDecryption(var ExpandedKey: TAESExpandedKey192);
+var
+ I: integer;
+ U, F2, F4, F8, F9: longword;
+begin
+ for I := 1 to 11 do
+ begin
+ F9 := ExpandedKey[I * 4];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 1];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 1] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 2];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 2] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 3];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 3] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ end;
+end;
+
+procedure ExpandAESKeyForDecryption(const Key: TAESKey192; var ExpandedKey: TAESExpandedKey192);
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ ExpandAESKeyForDecryption(ExpandedKey);
+end;
+
+procedure ExpandAESKeyForDecryption(var ExpandedKey: TAESExpandedKey256);
+var
+ I: integer;
+ U, F2, F4, F8, F9: longword;
+begin
+ for I := 1 to 13 do
+ begin
+ F9 := ExpandedKey[I * 4];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 1];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 1] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 2];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 2] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ F9 := ExpandedKey[I * 4 + 3];
+ U := F9 and $80808080;
+ F2 := ((F9 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F2 and $80808080;
+ F4 := ((F2 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ U := F4 and $80808080;
+ F8 := ((F4 and $7F7F7F7F) shl 1) xor ((U - (U shr 7)) and $1B1B1B1B);
+ F9 := F9 xor F8;
+ ExpandedKey[I * 4 + 3] := F2 xor F4 xor F8 xor
+ (((F2 xor F9) shl 24) or ((F2 xor F9) shr 8)) xor
+ (((F4 xor F9) shl 16) or ((F4 xor F9) shr 16)) xor ((F9 shl 8) or (F9 shr 24));
+ end;
+end;
+
+procedure ExpandAESKeyForDecryption(const Key: TAESKey256; var ExpandedKey: TAESExpandedKey256);
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ ExpandAESKeyForDecryption(ExpandedKey);
+end;
+
+procedure DecryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey128;
+ var OutBuf: TAESBuffer);
+var
+ T0, T1: array [0..3] of longword;
+ W0, W1, W2, W3: longword;
+begin
+ // initializing
+ T0[0] := PLongWord(@InBuf[0])^ xor Key[40];
+ T0[1] := PLongWord(@InBuf[4])^ xor Key[41];
+ T0[2] := PLongWord(@InBuf[8])^ xor Key[42];
+ T0[3] := PLongWord(@InBuf[12])^ xor Key[43];
+ // performing transformations 9 times
+ // round 1
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[36];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[37];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[38];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[39];
+ // round 2
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[32];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[33];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[34];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[35];
+ // round 3
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[28];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[29];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[30];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[31];
+ // round 4
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[24];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[25];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[26];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[27];
+ // round 5
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[20];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[21];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[22];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[23];
+ // round 6
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[16];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[17];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[18];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[19];
+ // round 7
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[12];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[13];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[14];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[15];
+ // round 8
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[8];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[9];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[10];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[11];
+ // round 9
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[4];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[5];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[6];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[7];
+ // last round of transformations
+ W0 := LastInverseTable[Byte(T1[0])]; W1 := LastInverseTable[Byte(T1[3] shr 8)];
+ W2 := LastInverseTable[Byte(T1[2] shr 16)]; W3 := LastInverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[0];
+ W0 := LastInverseTable[Byte(T1[1])]; W1 := LastInverseTable[Byte(T1[0] shr 8)];
+ W2 := LastInverseTable[Byte(T1[3] shr 16)]; W3 := LastInverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[1];
+ W0 := LastInverseTable[Byte(T1[2])]; W1 := LastInverseTable[Byte(T1[1] shr 8)];
+ W2 := LastInverseTable[Byte(T1[0] shr 16)]; W3 := LastInverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[2];
+ W0 := LastInverseTable[Byte(T1[3])]; W1 := LastInverseTable[Byte(T1[2] shr 8)];
+ W2 := LastInverseTable[Byte(T1[1] shr 16)]; W3 := LastInverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[3];
+ // finalizing
+ PLongWord(@OutBuf[0])^ := T0[0]; PLongWord(@OutBuf[4])^ := T0[1];
+ PLongWord(@OutBuf[8])^ := T0[2]; PLongWord(@OutBuf[12])^ := T0[3];
+end;
+
+procedure DecryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey192;
+ var OutBuf: TAESBuffer);
+var
+ T0, T1: array [0..3] of longword;
+ W0, W1, W2, W3: longword;
+begin
+ // initializing
+ T0[0] := PLongWord(@InBuf[0])^ xor Key[48];
+ T0[1] := PLongWord(@InBuf[4])^ xor Key[49];
+ T0[2] := PLongWord(@InBuf[8])^ xor Key[50];
+ T0[3] := PLongWord(@InBuf[12])^ xor Key[51];
+ // performing transformations 11 times
+ // round 1
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[44];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[45];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[46];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[47];
+ // round 2
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[40];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[41];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[42];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[43];
+ // round 3
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[36];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[37];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[38];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[39];
+ // round 4
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[32];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[33];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[34];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[35];
+ // round 5
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[28];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[29];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[30];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[31];
+ // round 6
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[24];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[25];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[26];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[27];
+ // round 7
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[20];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[21];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[22];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[23];
+ // round 8
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[16];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[17];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[18];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[19];
+ // round 9
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[12];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[13];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[14];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[15];
+ // round 10
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[8];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[9];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[10];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[11];
+ // round 11
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[4];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[5];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[6];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[7];
+ // last round of transformations
+ W0 := LastInverseTable[Byte(T1[0])]; W1 := LastInverseTable[Byte(T1[3] shr 8)];
+ W2 := LastInverseTable[Byte(T1[2] shr 16)]; W3 := LastInverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[0];
+ W0 := LastInverseTable[Byte(T1[1])]; W1 := LastInverseTable[Byte(T1[0] shr 8)];
+ W2 := LastInverseTable[Byte(T1[3] shr 16)]; W3 := LastInverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[1];
+ W0 := LastInverseTable[Byte(T1[2])]; W1 := LastInverseTable[Byte(T1[1] shr 8)];
+ W2 := LastInverseTable[Byte(T1[0] shr 16)]; W3 := LastInverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[2];
+ W0 := LastInverseTable[Byte(T1[3])]; W1 := LastInverseTable[Byte(T1[2] shr 8)];
+ W2 := LastInverseTable[Byte(T1[1] shr 16)]; W3 := LastInverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[3];
+ // finalizing
+ PLongWord(@OutBuf[0])^ := T0[0]; PLongWord(@OutBuf[4])^ := T0[1];
+ PLongWord(@OutBuf[8])^ := T0[2]; PLongWord(@OutBuf[12])^ := T0[3];
+end;
+
+procedure DecryptAES(const InBuf: TAESBuffer; const Key: TAESExpandedKey256;
+ var OutBuf: TAESBuffer);
+var
+ T0, T1: array [0..3] of longword;
+ W0, W1, W2, W3: longword;
+begin
+ // initializing
+ T0[0] := PLongWord(@InBuf[0])^ xor Key[56];
+ T0[1] := PLongWord(@InBuf[4])^ xor Key[57];
+ T0[2] := PLongWord(@InBuf[8])^ xor Key[58];
+ T0[3] := PLongWord(@InBuf[12])^ xor Key[59];
+ // performing transformations 13 times
+ // round 1
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[52];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[53];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[54];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[55];
+ // round 2
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[48];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[49];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[50];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[51];
+ // round 3
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[44];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[45];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[46];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[47];
+ // round 4
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[40];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[41];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[42];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[43];
+ // round 5
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[36];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[37];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[38];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[39];
+ // round 6
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[32];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[33];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[34];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[35];
+ // round 7
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[28];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[29];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[30];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[31];
+ // round 8
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[24];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[25];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[26];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[27];
+ // round 9
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[20];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[21];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[22];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[23];
+ // round 10
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[16];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[17];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[18];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[19];
+ // round 11
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[12];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[13];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[14];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[15];
+ // round 12
+ W0 := InverseTable[Byte(T1[0])]; W1 := InverseTable[Byte(T1[3] shr 8)];
+ W2 := InverseTable[Byte(T1[2] shr 16)]; W3 := InverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[8];
+ W0 := InverseTable[Byte(T1[1])]; W1 := InverseTable[Byte(T1[0] shr 8)];
+ W2 := InverseTable[Byte(T1[3] shr 16)]; W3 := InverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[9];
+ W0 := InverseTable[Byte(T1[2])]; W1 := InverseTable[Byte(T1[1] shr 8)];
+ W2 := InverseTable[Byte(T1[0] shr 16)]; W3 := InverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[10];
+ W0 := InverseTable[Byte(T1[3])]; W1 := InverseTable[Byte(T1[2] shr 8)];
+ W2 := InverseTable[Byte(T1[1] shr 16)]; W3 := InverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[11];
+ // round 13
+ W0 := InverseTable[Byte(T0[0])]; W1 := InverseTable[Byte(T0[3] shr 8)];
+ W2 := InverseTable[Byte(T0[2] shr 16)]; W3 := InverseTable[Byte(T0[1] shr 24)];
+ T1[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[4];
+ W0 := InverseTable[Byte(T0[1])]; W1 := InverseTable[Byte(T0[0] shr 8)];
+ W2 := InverseTable[Byte(T0[3] shr 16)]; W3 := InverseTable[Byte(T0[2] shr 24)];
+ T1[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[5];
+ W0 := InverseTable[Byte(T0[2])]; W1 := InverseTable[Byte(T0[1] shr 8)];
+ W2 := InverseTable[Byte(T0[0] shr 16)]; W3 := InverseTable[Byte(T0[3] shr 24)];
+ T1[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[6];
+ W0 := InverseTable[Byte(T0[3])]; W1 := InverseTable[Byte(T0[2] shr 8)];
+ W2 := InverseTable[Byte(T0[1] shr 16)]; W3 := InverseTable[Byte(T0[0] shr 24)];
+ T1[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[7];
+ // last round of transformations
+ W0 := LastInverseTable[Byte(T1[0])]; W1 := LastInverseTable[Byte(T1[3] shr 8)];
+ W2 := LastInverseTable[Byte(T1[2] shr 16)]; W3 := LastInverseTable[Byte(T1[1] shr 24)];
+ T0[0] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[0];
+ W0 := LastInverseTable[Byte(T1[1])]; W1 := LastInverseTable[Byte(T1[0] shr 8)];
+ W2 := LastInverseTable[Byte(T1[3] shr 16)]; W3 := LastInverseTable[Byte(T1[2] shr 24)];
+ T0[1] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[1];
+ W0 := LastInverseTable[Byte(T1[2])]; W1 := LastInverseTable[Byte(T1[1] shr 8)];
+ W2 := LastInverseTable[Byte(T1[0] shr 16)]; W3 := LastInverseTable[Byte(T1[3] shr 24)];
+ T0[2] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[2];
+ W0 := LastInverseTable[Byte(T1[3])]; W1 := LastInverseTable[Byte(T1[2] shr 8)];
+ W2 := LastInverseTable[Byte(T1[1] shr 16)]; W3 := LastInverseTable[Byte(T1[0] shr 24)];
+ T0[3] := (W0 xor ((W1 shl 8) or (W1 shr 24)) xor ((W2 shl 16) or (W2 shr 16))
+ xor ((W3 shl 24) or (W3 shr 8))) xor Key[3];
+ // finalizing
+ PLongWord(@OutBuf[0])^ := T0[0]; PLongWord(@OutBuf[4])^ := T0[1];
+ PLongWord(@OutBuf[8])^ := T0[2]; PLongWord(@OutBuf[12])^ := T0[3];
+end;
+
+// Stream encryption routines (ECB mode)
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey128;
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ EncryptAESStreamECB(Source, Count, ExpandedKey, Dest);
+end;
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey192;
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ EncryptAESStreamECB(Source, Count, ExpandedKey, Dest);
+end;
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey256;
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ EncryptAESStreamECB(Source, Count, ExpandedKey, Dest);
+end;
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+ if Count > 0 then
+ begin
+ Done := Source.Read(TempIn, Count);
+ if Done < Count then
+ raise EStreamError.Create(SReadError);
+ FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ end;
+end;
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+ if Count > 0 then
+ begin
+ Done := Source.Read(TempIn, Count);
+ if Done < Count then
+ raise EStreamError.Create(SReadError);
+ FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ end;
+end;
+
+procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+ if Count > 0 then
+ begin
+ Done := Source.Read(TempIn, Count);
+ if Done < Count then
+ raise EStreamError.Create(SReadError);
+ FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ end;
+end;
+
+// Stream decryption routines (ECB mode)
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey128;
+begin
+ ExpandAESKeyForDecryption(Key, ExpandedKey);
+ DecryptAESStreamECB(Source, Count, ExpandedKey, Dest);
+end;
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ if (Count mod SizeOf(TAESBuffer)) > 0 then
+ raise EAESError.Create(SInvalidInBufSize);
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ DecryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+end;
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey192;
+begin
+ ExpandAESKeyForDecryption(Key, ExpandedKey);
+ DecryptAESStreamECB(Source, Count, ExpandedKey, Dest);
+end;
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ if (Count mod SizeOf(TAESBuffer)) > 0 then
+ raise EAESError.Create(SInvalidInBufSize);
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ DecryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+end;
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey256;
+begin
+ ExpandAESKeyForDecryption(Key, ExpandedKey);
+ DecryptAESStreamECB(Source, Count, ExpandedKey, Dest);
+end;
+
+procedure DecryptAESStreamECB(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ if (Count mod SizeOf(TAESBuffer)) > 0 then
+ raise EAESError.Create(SInvalidInBufSize);
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ DecryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+end;
+
+// Stream encryption routines (CBC mode)
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; const InitVector: TAESBuffer; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey128;
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ EncryptAESStreamCBC(Source, Count, ExpandedKey, InitVector, Dest);
+end;
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; const InitVector: TAESBuffer;
+ Dest: TStream);
+var
+ TempIn, TempOut, Vector: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ Vector := InitVector;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ PLongWord(@TempIn[0])^ := PLongWord(@TempIn[0])^ xor PLongWord(@Vector[0])^;
+ PLongWord(@TempIn[4])^ := PLongWord(@TempIn[4])^ xor PLongWord(@Vector[4])^;
+ PLongWord(@TempIn[8])^ := PLongWord(@TempIn[8])^ xor PLongWord(@Vector[8])^;
+ PLongWord(@TempIn[12])^ := PLongWord(@TempIn[12])^ xor PLongWord(@Vector[12])^;
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Vector := TempOut;
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+ if Count > 0 then
+ begin
+ Done := Source.Read(TempIn, Count);
+ if Done < Count then
+ raise EStreamError.Create(SReadError);
+ FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
+ PLongWord(@TempIn[0])^ := PLongWord(@TempIn[0])^ xor PLongWord(@Vector[0])^;
+ PLongWord(@TempIn[4])^ := PLongWord(@TempIn[4])^ xor PLongWord(@Vector[4])^;
+ PLongWord(@TempIn[8])^ := PLongWord(@TempIn[8])^ xor PLongWord(@Vector[8])^;
+ PLongWord(@TempIn[12])^ := PLongWord(@TempIn[12])^ xor PLongWord(@Vector[12])^;
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ end;
+end;
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; const InitVector: TAESBuffer; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey192;
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ EncryptAESStreamCBC(Source, Count, ExpandedKey, InitVector, Dest);
+end;
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; const InitVector: TAESBuffer;
+ Dest: TStream);
+var
+ TempIn, TempOut, Vector: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ Vector := InitVector;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ PLongWord(@TempIn[0])^ := PLongWord(@TempIn[0])^ xor PLongWord(@Vector[0])^;
+ PLongWord(@TempIn[4])^ := PLongWord(@TempIn[4])^ xor PLongWord(@Vector[4])^;
+ PLongWord(@TempIn[8])^ := PLongWord(@TempIn[8])^ xor PLongWord(@Vector[8])^;
+ PLongWord(@TempIn[12])^ := PLongWord(@TempIn[12])^ xor PLongWord(@Vector[12])^;
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Vector := TempOut;
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+ if Count > 0 then
+ begin
+ Done := Source.Read(TempIn, Count);
+ if Done < Count then
+ raise EStreamError.Create(SReadError);
+ FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
+ PLongWord(@TempIn[0])^ := PLongWord(@TempIn[0])^ xor PLongWord(@Vector[0])^;
+ PLongWord(@TempIn[4])^ := PLongWord(@TempIn[4])^ xor PLongWord(@Vector[4])^;
+ PLongWord(@TempIn[8])^ := PLongWord(@TempIn[8])^ xor PLongWord(@Vector[8])^;
+ PLongWord(@TempIn[12])^ := PLongWord(@TempIn[12])^ xor PLongWord(@Vector[12])^;
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ end;
+end;
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; const InitVector: TAESBuffer; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey256;
+begin
+ ExpandAESKeyForEncryption(Key, ExpandedKey);
+ EncryptAESStreamCBC(Source, Count, ExpandedKey, InitVector, Dest);
+end;
+
+procedure EncryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; const InitVector: TAESBuffer;
+ Dest: TStream);
+var
+ TempIn, TempOut, Vector: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ Vector := InitVector;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError.Create(SReadError);
+ PLongWord(@TempIn[0])^ := PLongWord(@TempIn[0])^ xor PLongWord(@Vector[0])^;
+ PLongWord(@TempIn[4])^ := PLongWord(@TempIn[4])^ xor PLongWord(@Vector[4])^;
+ PLongWord(@TempIn[8])^ := PLongWord(@TempIn[8])^ xor PLongWord(@Vector[8])^;
+ PLongWord(@TempIn[12])^ := PLongWord(@TempIn[12])^ xor PLongWord(@Vector[12])^;
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ Vector := TempOut;
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+ if Count > 0 then
+ begin
+ Done := Source.Read(TempIn, Count);
+ if Done < Count then
+ raise EStreamError.Create(SReadError);
+ FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
+ PLongWord(@TempIn[0])^ := PLongWord(@TempIn[0])^ xor PLongWord(@Vector[0])^;
+ PLongWord(@TempIn[4])^ := PLongWord(@TempIn[4])^ xor PLongWord(@Vector[4])^;
+ PLongWord(@TempIn[8])^ := PLongWord(@TempIn[8])^ xor PLongWord(@Vector[8])^;
+ PLongWord(@TempIn[12])^ := PLongWord(@TempIn[12])^ xor PLongWord(@Vector[12])^;
+ EncryptAES(TempIn, ExpandedKey, TempOut);
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError.Create(SWriteError);
+ end;
+end;
+
+// Stream decryption routines (CBC mode)
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey128; const InitVector: TAESBuffer; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey128;
+begin
+ ExpandAESKeyForDecryption(Key, ExpandedKey);
+ DecryptAESStreamCBC(Source, Count, ExpandedKey, InitVector, Dest);
+end;
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey128; const InitVector: TAESBuffer;
+ Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Vector1, Vector2: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ if (Count mod SizeOf(TAESBuffer)) > 0 then
+ raise EAESError.Create(SInvalidInBufSize);
+ Vector1 := InitVector;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError(SReadError);
+ Vector2 := TempIn;
+ DecryptAES(TempIn, ExpandedKey, TempOut);
+ PLongWord(@TempOut[0])^ := PLongWord(@TempOut[0])^ xor PLongWord(@Vector1[0])^;
+ PLongWord(@TempOut[4])^ := PLongWord(@TempOut[4])^ xor PLongWord(@Vector1[4])^;
+ PLongWord(@TempOut[8])^ := PLongWord(@TempOut[8])^ xor PLongWord(@Vector1[8])^;
+ PLongWord(@TempOut[12])^ := PLongWord(@TempOut[12])^ xor PLongWord(@Vector1[12])^;
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError(SWriteError);
+ Vector1 := Vector2;
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+end;
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey192; const InitVector: TAESBuffer; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey192;
+begin
+ ExpandAESKeyForDecryption(Key, ExpandedKey);
+ DecryptAESStreamCBC(Source, Count, ExpandedKey, InitVector, Dest);
+end;
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey192; const InitVector: TAESBuffer;
+ Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Vector1, Vector2: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ if (Count mod SizeOf(TAESBuffer)) > 0 then
+ raise EAESError.Create(SInvalidInBufSize);
+ Vector1 := InitVector;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError(SReadError);
+ Vector2 := TempIn;
+ DecryptAES(TempIn, ExpandedKey, TempOut);
+ PLongWord(@TempOut[0])^ := PLongWord(@TempOut[0])^ xor PLongWord(@Vector1[0])^;
+ PLongWord(@TempOut[4])^ := PLongWord(@TempOut[4])^ xor PLongWord(@Vector1[4])^;
+ PLongWord(@TempOut[8])^ := PLongWord(@TempOut[8])^ xor PLongWord(@Vector1[8])^;
+ PLongWord(@TempOut[12])^ := PLongWord(@TempOut[12])^ xor PLongWord(@Vector1[12])^;
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError(SWriteError);
+ Vector1 := Vector2;
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+end;
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const Key: TAESKey256; const InitVector: TAESBuffer; Dest: TStream);
+var
+ ExpandedKey: TAESExpandedKey256;
+begin
+ ExpandAESKeyForDecryption(Key, ExpandedKey);
+ DecryptAESStreamCBC(Source, Count, ExpandedKey, InitVector, Dest);
+end;
+
+procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
+ const ExpandedKey: TAESExpandedKey256; const InitVector: TAESBuffer;
+ Dest: TStream);
+var
+ TempIn, TempOut: TAESBuffer;
+ Vector1, Vector2: TAESBuffer;
+ Done: cardinal;
+begin
+ if Count = 0 then
+ begin
+ Source.Position := 0;
+ Count := Source.Size;
+ end
+ else Count := Min(Count, Source.Size - Source.Position);
+ if Count = 0 then exit;
+ if (Count mod SizeOf(TAESBuffer)) > 0 then
+ raise EAESError.Create(SInvalidInBufSize);
+ Vector1 := InitVector;
+ while Count >= SizeOf(TAESBuffer) do
+ begin
+ Done := Source.Read(TempIn, SizeOf(TempIn));
+ if Done < SizeOf(TempIn) then
+ raise EStreamError(SReadError);
+ Vector2 := TempIn;
+ DecryptAES(TempIn, ExpandedKey, TempOut);
+ PLongWord(@TempOut[0])^ := PLongWord(@TempOut[0])^ xor PLongWord(@Vector1[0])^;
+ PLongWord(@TempOut[4])^ := PLongWord(@TempOut[4])^ xor PLongWord(@Vector1[4])^;
+ PLongWord(@TempOut[8])^ := PLongWord(@TempOut[8])^ xor PLongWord(@Vector1[8])^;
+ PLongWord(@TempOut[12])^ := PLongWord(@TempOut[12])^ xor PLongWord(@Vector1[12])^;
+ Done := Dest.Write(TempOut, SizeOf(TempOut));
+ if Done < SizeOf(TempOut) then
+ raise EStreamError(SWriteError);
+ Vector1 := Vector2;
+ Dec(Count, SizeOf(TAESBuffer));
+ end;
+end;
+
+end.
diff --git a/T03贸易布匹检验/File.INI b/T03贸易布匹检验/File.INI
new file mode 100644
index 0000000..9e94d39
--- /dev/null
+++ b/T03贸易布匹检验/File.INI
@@ -0,0 +1,5 @@
+[]
+̨־=1
+ƷDLLļ=TradeManagePB.dll
+ƷDLLú=3
+Ա=select distinct UserID from SY_Purview where ModuleId='15' and ModuleSubId='04'
\ No newline at end of file
diff --git a/T03贸易布匹检验/FileCar.INI b/T03贸易布匹检验/FileCar.INI
new file mode 100644
index 0000000..c4f8326
--- /dev/null
+++ b/T03贸易布匹检验/FileCar.INI
@@ -0,0 +1,15 @@
+[]
+DLLļ1=TradeManage.dll
+
+̨־=1
+DLLú1=5
+ģ1=̨ˢ
+ģʾ1=1
+DLLļ2=TradeManage.dll
+ģʾ2=1
+DLLú2=51
+ģ2=Աϰ
+Dllļ=JCYData.dll
+ӳӵDllļ=APORT232D.dll
+
+Ա=select distinct bzname as userid,bzid from OA_YG_BZ order by bzid
\ No newline at end of file
diff --git a/T03贸易布匹检验/FileHelp.ini b/T03贸易布匹检验/FileHelp.ini
new file mode 100644
index 0000000..495119d
--- /dev/null
+++ b/T03贸易布匹检验/FileHelp.ini
@@ -0,0 +1,7 @@
+[FILEPATH]
+FileClass=YP,AA,BB,HT
+YP=D:\YP
+AA=D:\AA
+BB=D:\BB
+HT=D:\HT
+OTHER=D:\OTHER
diff --git a/T03贸易布匹检验/FileKPZ.INI b/T03贸易布匹检验/FileKPZ.INI
new file mode 100644
index 0000000..59a1c75
--- /dev/null
+++ b/T03贸易布匹检验/FileKPZ.INI
@@ -0,0 +1,12 @@
+[]
+DLLļ1=TradeInsp.dll
+DLLú1=112
+DLLļ2=TradeInsp.dll
+DLLú2=112
+ģ1=
+ģʾ1=1
+ģ2=ɨ
+ģʾ2=1
+ӳӵDllļ=JZCRS232D.dll
+Dllļ=
+Ա=select * from SY_PurView where ModuleId='19' and ModuleSubId in('04','21')
\ No newline at end of file
diff --git a/T03贸易布匹检验/FileUpdate.INI b/T03贸易布匹检验/FileUpdate.INI
new file mode 100644
index 0000000..ddeb214
--- /dev/null
+++ b/T03贸易布匹检验/FileUpdate.INI
@@ -0,0 +1,2 @@
+[ϵͳ]
+Զļ=
diff --git a/T03贸易布匹检验/InformationBase_Icon.ico b/T03贸易布匹检验/InformationBase_Icon.ico
new file mode 100644
index 0000000..1998c2d
Binary files /dev/null and b/T03贸易布匹检验/InformationBase_Icon.ico differ
diff --git a/T03贸易布匹检验/JCYData10.INI b/T03贸易布匹检验/JCYData10.INI
new file mode 100644
index 0000000..d457fde
--- /dev/null
+++ b/T03贸易布匹检验/JCYData10.INI
@@ -0,0 +1,7 @@
+[ϵͳ]
+ں=com1
+=19200
+Уλ=0
+λ=8
+ֹͣλ=1
+Ƶ=100
diff --git a/T03贸易布匹检验/JCYData_Ts.INI b/T03贸易布匹检验/JCYData_Ts.INI
new file mode 100644
index 0000000..da50851
--- /dev/null
+++ b/T03贸易布匹检验/JCYData_Ts.INI
@@ -0,0 +1,7 @@
+[ϵͳ]
+ں=com3
+=9600
+Уλ=0
+λ=8
+ֹͣλ=0
+Ƶ=100
diff --git a/T03贸易布匹检验/JDAESExtend.pas b/T03贸易布匹检验/JDAESExtend.pas
new file mode 100644
index 0000000..9014157
--- /dev/null
+++ b/T03贸易布匹检验/JDAESExtend.pas
@@ -0,0 +1,295 @@
+(**************************************************)
+(* *)
+(* Advanced Encryption Standard (AES) Extend *)
+(* *)
+(* Copyright (c) 2005-2016 *)
+(* aisino, qiaobu@139.com qiaohaidong@aisino.com *)
+(* *)
+(**************************************************)
+
+unit JDAESExtend;
+
+interface
+
+{$WARN IMPLICIT_STRING_CAST OFF} // رվ
+{$WARN IMPLICIT_STRING_CAST_LOSS OFF}
+
+uses
+ SysUtils, Classes, Math, ElAES, System.Generics.Collections, Soap.EncdDecd;
+
+type
+ TPaddingType = (PKCS5Padding { , PKCS7Padding } );
+ TKeyBit = (kb128, kb192, kb256);
+ TalgoMode = (amECB, amCBC { , amCFB, amOFB, amCTR } );
+ TCipherType = (ctBase64, ctHex);
+
+ TArrayPadding = array of Byte;
+ TArrayByte = array of Byte;
+
+var
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+
+ InitVector: TAESBuffer;
+
+function EncryptString(Value: AnsiString; Key: AnsiString; KeyBit: TKeyBit = kb128; algoMode: TalgoMode = amECB; padding: TPaddingType = PKCS5Padding; sInitVector: AnsiString = '0000000000000000';
+ CipherType: TCipherType = ctHex): AnsiString;
+function DecryptString(Value: AnsiString; Key: AnsiString; KeyBit: TKeyBit = kb128; algoMode: TalgoMode = amECB; padding: TPaddingType = PKCS5Padding; sInitVector: AnsiString = '0000000000000000';
+ CipherType: TCipherType = ctHex): AnsiString;
+
+implementation
+
+//ַת16ƣַ
+function StrToHex(Value: AnsiString): string;
+var
+ i: Integer;
+begin
+ Result := '';
+ for i := 1 to Length(Value) do
+ Result := Result + IntToHex(Ord(Value[i]), 2);
+end;
+//16ƣַתַ
+function HexToStr(Value: AnsiString): AnsiString;
+var
+ i: Integer;
+begin
+ Result := '';
+ for i := 1 to Length(Value) do
+ begin
+ if ((i mod 2) = 1) then
+ Result := Result + ansichar(StrToInt('0x' + Copy(Value, i, 2)));
+ end;
+end;
+
+//PKCS5
+function PKCS5_Padding(Value: AnsiString; out arrayValue: TArrayByte): Int64;
+var
+ Valueutf8: UTF8String;
+ BytesValue: array of Byte;
+ intMod: Byte;
+ valueLen: Integer;
+ i: Integer;
+begin
+ Valueutf8 := Value;
+ SetLength(BytesValue, Length(Valueutf8));
+ Move(Valueutf8[1], BytesValue[0], Length(Valueutf8));
+ intMod := 16 - Length(BytesValue) mod 16;
+
+ valueLen := Length(BytesValue);
+ SetLength(BytesValue, valueLen + intMod);
+ for i := 0 to intMod - 1 do
+ begin
+ BytesValue[valueLen + i] := intMod;
+ end;
+ SetLength(arrayValue, Length(BytesValue));
+ Move(BytesValue[0], arrayValue[0], Length(BytesValue));
+ Result := Length(BytesValue);
+end;
+
+//PKCS5ȥ
+function PKCS5_DePadding(bytes: TBytes): string;
+var
+ Encoding: TEncoding;
+ size: Integer;
+ paddingByte: Byte;
+ tmpBytes: TBytes;
+begin
+ paddingByte := bytes[Length(bytes) - 1];
+
+ SetLength(tmpBytes, Length(bytes) - paddingByte);
+ Move(bytes[0], tmpBytes[0], Length(tmpBytes));
+ Encoding := TEncoding.UTF8;
+ size := TEncoding.GetBufferEncoding(tmpBytes, Encoding);
+ Result := Encoding.GetString(tmpBytes, size, Length(tmpBytes) - size)
+end;
+
+//Կλ0
+procedure ZeroPadding(KeyBit: TKeyBit);
+begin
+ case KeyBit of
+ kb128:
+ FillChar(AESKey128, SizeOf(AESKey128), 0);
+ kb192:
+ FillChar(AESKey192, SizeOf(AESKey192), 0);
+ kb256:
+ FillChar(AESKey256, SizeOf(AESKey256), 0);
+ end;
+end;
+
+function EncryptString(Value: AnsiString; Key: AnsiString; KeyBit: TKeyBit = kb128; algoMode: TalgoMode = amECB; padding: TPaddingType = PKCS5Padding; sInitVector: AnsiString = '0000000000000000';
+ CipherType: TCipherType = ctHex): AnsiString;
+var
+ SS, DS: TMemoryStream;
+ str: AnsiString;
+ byteContent: TArrayByte;
+begin
+ Result := '';
+ PKCS5_Padding(Value, byteContent);
+
+ SS := TMemoryStream.Create;
+ SS.WriteBuffer(byteContent[0], Length(byteContent));
+
+ SS.Position := SS.size;
+ DS := TMemoryStream.Create;
+
+ try
+ case KeyBit of
+ kb128:
+ begin
+ ZeroPadding(kb128);
+ Move(PAnsiChar(Key)^, AESKey128, Length(Key));
+ case algoMode of
+ amECB:
+ begin
+ EncryptAESStreamECB(SS, 0, AESKey128, DS);
+ end;
+ amCBC:
+ begin
+ // 16λ0
+ FillChar(InitVector, SizeOf(InitVector), 0);
+ Move(PAnsiChar(sInitVector)^, InitVector, Length(sInitVector));
+ EncryptAESStreamCBC(SS, 0, AESKey128, InitVector, DS);
+ end;
+ end;
+ end;
+ kb192:
+ begin
+ ZeroPadding(kb192);
+ Move(PAnsiChar(Key)^, AESKey192, Length(Key));
+ case algoMode of
+ amECB:
+ begin
+ EncryptAESStreamECB(SS, 0, AESKey192, DS);
+ end;
+ amCBC:
+ begin
+ FillChar(InitVector, SizeOf(InitVector), 0);
+ Move(PAnsiChar(sInitVector)^, InitVector, Length(sInitVector));
+ EncryptAESStreamCBC(SS, 0, AESKey192, InitVector, DS);
+ end;
+ end;
+ end;
+ kb256:
+ begin
+ ZeroPadding(kb256);
+ Move(PAnsiChar(Key)^, AESKey256, Length(Key));
+ case algoMode of
+ amECB:
+ begin
+ EncryptAESStreamECB(SS, 0, AESKey256, DS);
+ end;
+ amCBC:
+ begin
+ FillChar(InitVector, SizeOf(InitVector), 0);
+ Move(PAnsiChar(sInitVector)^, InitVector, Length(sInitVector));
+ EncryptAESStreamCBC(SS, 0, AESKey256, InitVector, DS);
+ end;
+ end;
+ end;
+ end;
+
+ SetLength(str, DS.size);
+ DS.Position := 0;
+ DS.ReadBuffer(PAnsiChar(str)^, DS.size);
+ if CipherType = ctHex then
+ Result := StrToHex(str)
+ else
+ Result := EncodeBase64(PChar(str),Length(str));
+ finally
+ SS.Free;
+ DS.Free;
+ end;
+end;
+
+function DecryptString(Value: AnsiString; Key: AnsiString; KeyBit: TKeyBit = kb128; algoMode: TalgoMode = amECB; padding: TPaddingType = PKCS5Padding; sInitVector: AnsiString = '0000000000000000';
+ CipherType: TCipherType = ctHex): AnsiString;
+var
+ SS,DS: TMemoryStream;
+ str: AnsiString;
+ byteContent: TBytes;
+ BytesValue: TBytes;
+begin
+ Result := '';
+
+ // pcharValue := pchar(Value);
+ if CipherType = ctHex then
+ begin
+ str := HexToStr(Value);
+ SetLength(byteContent, Length(str));
+ Move(str[1], byteContent[0], Length(str));
+ end
+ else
+ byteContent:= DecodeBase64(Value);
+
+ SS := TMemoryStream.Create;
+ SS.WriteBuffer(byteContent[0], Length(byteContent));
+
+ DS := TMemoryStream.Create;
+
+ try
+ case KeyBit of
+ kb128:
+ begin
+ ZeroPadding(kb128);
+ Move(PAnsiChar(Key)^, AESKey128, Length(Key));
+ case algoMode of
+ amECB:
+ begin
+ DecryptAESStreamECB(SS, 0, AESKey128, DS);
+ end;
+ amCBC:
+ begin
+ // 16λ0
+ FillChar(InitVector, SizeOf(InitVector), 0);
+ Move(PAnsiChar(sInitVector)^, InitVector, Length(sInitVector));
+ DecryptAESStreamCBC(SS, 0, AESKey128, InitVector, DS);
+ end;
+ end;
+ end;
+ kb192:
+ begin
+ ZeroPadding(kb192);
+ Move(PAnsiChar(Key)^, AESKey192, Length(Key));
+ case algoMode of
+ amECB:
+ begin
+ DecryptAESStreamECB(SS, 0, AESKey192, DS);
+ end;
+ amCBC:
+ begin
+ FillChar(InitVector, SizeOf(InitVector), 0);
+ Move(PAnsiChar(sInitVector)^, InitVector, Length(sInitVector));
+ DecryptAESStreamCBC(SS, 0, AESKey192, InitVector, DS);
+ end;
+ end;
+ end;
+ kb256:
+ begin
+ ZeroPadding(kb256);
+ Move(PAnsiChar(Key)^, AESKey256, Length(Key));
+ case algoMode of
+ amECB:
+ begin
+ DecryptAESStreamECB(SS, 0, AESKey256, DS);
+ end;
+ amCBC:
+ begin
+ FillChar(InitVector, SizeOf(InitVector), 0);
+ Move(PAnsiChar(sInitVector)^, InitVector, Length(sInitVector));
+ DecryptAESStreamCBC(SS, 0, AESKey256, InitVector, DS);
+ end;
+ end;
+ end;
+ end;
+ DS.Position := 0;
+ SetLength(BytesValue, DS.size);
+ DS.ReadBuffer(BytesValue[0], DS.size);
+ Result := PKCS5_DePadding(BytesValue);
+ finally
+ SS.Free;
+ DS.Free;
+ end;
+end;
+
+END.
diff --git a/T03贸易布匹检验/NapInspFile.INI b/T03贸易布匹检验/NapInspFile.INI
new file mode 100644
index 0000000..46430d9
--- /dev/null
+++ b/T03贸易布匹检验/NapInspFile.INI
@@ -0,0 +1,33 @@
+[]
+̨־=1
+̨=
+˿ں=
+ӳӵDllļ=
+õӳDllļ=0
+Dllļ=
+Dllļ=1
+λ=1
+
+DLLļ1=NappingInsp.dll
+DLLú1=111
+ģ1=̨
+ģʾ1=1
+
+
+DLLļ2=NapProcess.dll
+ģʾ2=1
+DLLú2=211
+ģ2=Աˢ
+
+
+̨־=1
+
+Ա=select userid='ADMIN'
+ǩ=2
+=0
+=100
+=0
+=50
+Сλ=1
+Сλ=1
+Сλ=1
diff --git a/T03贸易布匹检验/ProjectGroup1.bpg b/T03贸易布匹检验/ProjectGroup1.bpg
new file mode 100644
index 0000000..7c050f6
--- /dev/null
+++ b/T03贸易布匹检验/ProjectGroup1.bpg
@@ -0,0 +1,23 @@
+#------------------------------------------------------------------------------
+VERSION = BWS.01
+#------------------------------------------------------------------------------
+!ifndef ROOT
+ROOT = $(MAKEDIR)\..
+!endif
+#------------------------------------------------------------------------------
+MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
+DCC = $(ROOT)\bin\dcc32.exe $**
+BRCC = $(ROOT)\bin\brcc32.exe $**
+#------------------------------------------------------------------------------
+PROJECTS = testDll.exe ProductPrice.dll
+#------------------------------------------------------------------------------
+default: $(PROJECTS)
+#------------------------------------------------------------------------------
+
+testDll.exe: testDll.dpr
+ $(DCC)
+
+ProductPrice.dll: ProductPrice.dpr
+ $(DCC)
+
+
diff --git a/T03贸易布匹检验/ProjectGroup1.groupproj b/T03贸易布匹检验/ProjectGroup1.groupproj
new file mode 100644
index 0000000..f7de501
--- /dev/null
+++ b/T03贸易布匹检验/ProjectGroup1.groupproj
@@ -0,0 +1,48 @@
+
+
+ {4ACFE47E-6D57-4F14-B3CC-D7658A0D65E3}
+
+
+
+
+
+
+
+
+
+
+ Default.Personality.12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/T03贸易布匹检验/ProjectGroup1_prjgroup.tvsconfig b/T03贸易布匹检验/ProjectGroup1_prjgroup.tvsconfig
new file mode 100644
index 0000000..d430780
--- /dev/null
+++ b/T03贸易布匹检验/ProjectGroup1_prjgroup.tvsconfig
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/T03贸易布匹检验/SYSTEMSET.ini b/T03贸易布匹检验/SYSTEMSET.ini
new file mode 100644
index 0000000..10884fc
--- /dev/null
+++ b/T03贸易布匹检验/SYSTEMSET.ini
@@ -0,0 +1,10 @@
+[SERVER]
+ַ=101.132.143.144
+ַ=2002
+ǷԶ=1
+=ذ汾
+½=sss
+[]
+С=9
+design=1
+skin=1
\ No newline at end of file
diff --git a/T03贸易布匹检验/TiShi.INI b/T03贸易布匹检验/TiShi.INI
new file mode 100644
index 0000000..3b019ec
--- /dev/null
+++ b/T03贸易布匹检验/TiShi.INI
@@ -0,0 +1,11 @@
+[ϵͳ]
+dllName=MessageAlert.dll
+dllId=111
+[Image1]
+߾=1360
+߶Ⱦ=365
+[ò]
+½û=admin
+ʾ˵=1
+ģʽ=ģʽ
+½=
diff --git a/T03贸易布匹检验/TradeInsp.res b/T03贸易布匹检验/TradeInsp.res
new file mode 100644
index 0000000..c43d7b2
Binary files /dev/null and b/T03贸易布匹检验/TradeInsp.res differ
diff --git a/T03贸易布匹检验/TradeInsp.skincfg b/T03贸易布匹检验/TradeInsp.skincfg
new file mode 100644
index 0000000..bf678b8
--- /dev/null
+++ b/T03贸易布匹检验/TradeInsp.skincfg
@@ -0,0 +1,62 @@
+[ExpressSkins]
+Default=0
+ShowNotifications=0
+Enabled=1
+dxSkinBasic=0
+dxSkinBlack=0
+dxSkinBlue=0
+dxSkinBlueprint=0
+dxSkinCaramel=0
+dxSkinCoffee=0
+dxSkinDarkroom=0
+dxSkinDarkSide=0
+dxSkinDevExpressDarkStyle=0
+dxSkinDevExpressStyle=0
+dxSkinFoggy=0
+dxSkinGlassOceans=0
+dxSkinHighContrast=0
+dxSkiniMaginary=0
+dxSkinLilian=0
+dxSkinLiquidSky=0
+dxSkinLondonLiquidSky=0
+dxSkinMcSkin=0
+dxSkinMetropolis=0
+dxSkinMetropolisDark=0
+dxSkinMoneyTwins=0
+dxSkinOffice2007Black=0
+dxSkinOffice2007Blue=0
+dxSkinOffice2007Green=0
+dxSkinOffice2007Pink=0
+dxSkinOffice2007Silver=0
+dxSkinOffice2010Black=0
+dxSkinOffice2010Blue=0
+dxSkinOffice2010Silver=0
+dxSkinOffice2013DarkGray=0
+dxSkinOffice2013LightGray=0
+dxSkinOffice2013White=0
+dxSkinOffice2016Colorful=0
+dxSkinOffice2016Dark=0
+dxSkinOffice2019Black=0
+dxSkinOffice2019Colorful=0
+dxSkinOffice2019DarkGray=0
+dxSkinOffice2019White=0
+dxSkinPumpkin=0
+dxSkinSeven=0
+dxSkinSevenClassic=0
+dxSkinSharp=0
+dxSkinSharpPlus=0
+dxSkinSilver=0
+dxSkinSpringtime=0
+dxSkinStardust=0
+dxSkinSummer2008=0
+dxSkinTheAsphaltWorld=0
+dxSkinTheBezier=0
+dxSkinsDefaultPainters=0
+dxSkinValentine=0
+dxSkinVisualStudio2013Blue=0
+dxSkinVisualStudio2013Dark=0
+dxSkinVisualStudio2013Light=0
+dxSkinVS2010=0
+dxSkinWhiteprint=0
+dxSkinWXI=1
+dxSkinXmas2008Blue=0
diff --git a/T03贸易布匹检验/TradeInspFile.INI b/T03贸易布匹检验/TradeInspFile.INI
new file mode 100644
index 0000000..94bd0cc
--- /dev/null
+++ b/T03贸易布匹检验/TradeInspFile.INI
@@ -0,0 +1,21 @@
+[]
+̨־=
+̨=
+˿ں=
+ӳӵDllļ=
+õӳDllļ=1
+Dllļ=
+Dllļ=1
+λ=1
+ǩ=2
+=0
+=100
+=0
+=222
+Сλ=1
+Сλ=1
+Сλ=1
+Զĸ1=A
+Զĸ2=B
+
+=1
diff --git a/T03贸易布匹检验/TradeInspLogin.res b/T03贸易布匹检验/TradeInspLogin.res
new file mode 100644
index 0000000..de96cb3
Binary files /dev/null and b/T03贸易布匹检验/TradeInspLogin.res differ
diff --git a/T03贸易布匹检验/TradeMachineInsp.res b/T03贸易布匹检验/TradeMachineInsp.res
new file mode 100644
index 0000000..ce0eacd
Binary files /dev/null and b/T03贸易布匹检验/TradeMachineInsp.res differ
diff --git a/T03贸易布匹检验/TradeMachineInsp.skincfg b/T03贸易布匹检验/TradeMachineInsp.skincfg
new file mode 100644
index 0000000..bf678b8
--- /dev/null
+++ b/T03贸易布匹检验/TradeMachineInsp.skincfg
@@ -0,0 +1,62 @@
+[ExpressSkins]
+Default=0
+ShowNotifications=0
+Enabled=1
+dxSkinBasic=0
+dxSkinBlack=0
+dxSkinBlue=0
+dxSkinBlueprint=0
+dxSkinCaramel=0
+dxSkinCoffee=0
+dxSkinDarkroom=0
+dxSkinDarkSide=0
+dxSkinDevExpressDarkStyle=0
+dxSkinDevExpressStyle=0
+dxSkinFoggy=0
+dxSkinGlassOceans=0
+dxSkinHighContrast=0
+dxSkiniMaginary=0
+dxSkinLilian=0
+dxSkinLiquidSky=0
+dxSkinLondonLiquidSky=0
+dxSkinMcSkin=0
+dxSkinMetropolis=0
+dxSkinMetropolisDark=0
+dxSkinMoneyTwins=0
+dxSkinOffice2007Black=0
+dxSkinOffice2007Blue=0
+dxSkinOffice2007Green=0
+dxSkinOffice2007Pink=0
+dxSkinOffice2007Silver=0
+dxSkinOffice2010Black=0
+dxSkinOffice2010Blue=0
+dxSkinOffice2010Silver=0
+dxSkinOffice2013DarkGray=0
+dxSkinOffice2013LightGray=0
+dxSkinOffice2013White=0
+dxSkinOffice2016Colorful=0
+dxSkinOffice2016Dark=0
+dxSkinOffice2019Black=0
+dxSkinOffice2019Colorful=0
+dxSkinOffice2019DarkGray=0
+dxSkinOffice2019White=0
+dxSkinPumpkin=0
+dxSkinSeven=0
+dxSkinSevenClassic=0
+dxSkinSharp=0
+dxSkinSharpPlus=0
+dxSkinSilver=0
+dxSkinSpringtime=0
+dxSkinStardust=0
+dxSkinSummer2008=0
+dxSkinTheAsphaltWorld=0
+dxSkinTheBezier=0
+dxSkinsDefaultPainters=0
+dxSkinValentine=0
+dxSkinVisualStudio2013Blue=0
+dxSkinVisualStudio2013Dark=0
+dxSkinVisualStudio2013Light=0
+dxSkinVS2010=0
+dxSkinWhiteprint=0
+dxSkinWXI=1
+dxSkinXmas2008Blue=0
diff --git a/T03贸易布匹检验/U_BatchMdyData.dfm b/T03贸易布匹检验/U_BatchMdyData.dfm
new file mode 100644
index 0000000..61015ac
--- /dev/null
+++ b/T03贸易布匹检验/U_BatchMdyData.dfm
@@ -0,0 +1,193 @@
+object frmBatchMdyData: TfrmBatchMdyData
+ Left = 0
+ Top = 0
+ BorderIcons = [biSystemMenu]
+ BorderStyle = bsSingle
+ Caption = #25209#37327#20462#25913#25968#25454
+ ClientHeight = 274
+ ClientWidth = 424
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -13
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ OldCreateOrder = False
+ Position = poDesktopCenter
+ OnCreate = FormCreate
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 19
+ object cxPageControl1: TcxPageControl
+ Left = 8
+ Top = 8
+ Width = 393
+ Height = 248
+ TabOrder = 0
+ Properties.ActivePage = cxTabSheet2
+ Properties.CustomButtons.Buttons = <>
+ ClientRectBottom = 247
+ ClientRectLeft = 1
+ ClientRectRight = 392
+ ClientRectTop = 27
+ object cxTabSheet1: TcxTabSheet
+ Caption = #35843#25972#31859#25968
+ ImageIndex = 0
+ object Label17: TLabel
+ Left = 24
+ Top = 20
+ Width = 52
+ Height = 19
+ Caption = #35843#25972#26041#24335
+ end
+ object Label18: TLabel
+ Left = 24
+ Top = 64
+ Width = 52
+ Height = 19
+ Caption = #35843#25972#25968#37327
+ end
+ object tzfs: TcxComboBox
+ Left = 96
+ Top = 15
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ ''
+ #22686#21152
+ #20943#23569)
+ TabOrder = 0
+ Width = 137
+ end
+ object tzsl: TcxTextEdit
+ Left = 96
+ Top = 59
+ TabOrder = 1
+ Width = 137
+ end
+ object cxOk1: TcxButton
+ Left = 80
+ Top = 160
+ Width = 75
+ Height = 32
+ Caption = #30830#23450
+ TabOrder = 2
+ OnClick = cxOk1Click
+ end
+ object cxclose: TcxButton
+ Left = 248
+ Top = 160
+ Width = 75
+ Height = 30
+ Caption = #20851#38381
+ TabOrder = 3
+ OnClick = cxcloseClick
+ end
+ end
+ object cxTabSheet2: TcxTabSheet
+ Caption = #20462#25913#38271#24230#21333#20301
+ ImageIndex = 1
+ ExplicitLeft = 0
+ object lenUnit: TcxComboBox
+ Left = 88
+ Top = 40
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ ''
+ 'M'
+ 'Y')
+ TabOrder = 0
+ Width = 161
+ end
+ object cxButton1: TcxButton
+ Left = 72
+ Top = 159
+ Width = 75
+ Height = 32
+ Caption = #30830#23450
+ TabOrder = 1
+ OnClick = cxButton1Click
+ end
+ object cxButton2: TcxButton
+ Left = 232
+ Top = 159
+ Width = 75
+ Height = 30
+ Caption = #20851#38381
+ TabOrder = 2
+ OnClick = cxcloseClick
+ end
+ end
+ object cxTabSheet3: TcxTabSheet
+ Caption = #29420#31435#35843#25972#37325#37327
+ ImageIndex = 2
+ object Label1: TLabel
+ Left = 32
+ Top = 112
+ Width = 52
+ Height = 19
+ Caption = #35843#25972#25968#37327
+ end
+ object Label2: TLabel
+ Left = 32
+ Top = 63
+ Width = 52
+ Height = 19
+ Caption = #35843#25972#26041#24335
+ end
+ object Label3: TLabel
+ Left = 32
+ Top = 20
+ Width = 52
+ Height = 19
+ Caption = #35843#25972#23383#27573
+ end
+ object tzsl1: TcxTextEdit
+ Left = 104
+ Top = 107
+ TabOrder = 0
+ Width = 196
+ end
+ object tzfs1: TcxComboBox
+ Left = 104
+ Top = 58
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ ''
+ #22686#21152
+ #20943#23569)
+ TabOrder = 1
+ Width = 196
+ end
+ object tzfield: TcxComboBox
+ Left = 104
+ Top = 15
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ ''
+ #27611#37325
+ #20928#37325
+ #30382#37325)
+ TabOrder = 2
+ Width = 196
+ end
+ object cxButton3: TcxButton
+ Left = 88
+ Top = 168
+ Width = 75
+ Height = 32
+ Caption = #30830#23450
+ TabOrder = 3
+ OnClick = cxButton3Click
+ end
+ object cxButton4: TcxButton
+ Left = 256
+ Top = 168
+ Width = 75
+ Height = 30
+ Caption = #20851#38381
+ TabOrder = 4
+ OnClick = cxcloseClick
+ end
+ end
+ end
+end
diff --git a/T03贸易布匹检验/U_BatchMdyData.pas b/T03贸易布匹检验/U_BatchMdyData.pas
new file mode 100644
index 0000000..cec34f1
--- /dev/null
+++ b/T03贸易布匹检验/U_BatchMdyData.pas
@@ -0,0 +1,128 @@
+unit U_BatchMdyData;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, dxBarBuiltInMenu, cxGraphics,
+ cxControls, cxLookAndFeels, cxLookAndFeelPainters,
+ cxPC, cxContainer, cxEdit, Vcl.Menus, Vcl.StdCtrls, cxButtons, cxTextEdit,
+ cxMaskEdit, cxDropDownEdit, dxSkinsCore;
+
+type
+ TfrmBatchMdyData = class(TForm)
+ cxPageControl1: TcxPageControl;
+ cxTabSheet1: TcxTabSheet;
+ Label17: TLabel;
+ Label18: TLabel;
+ tzfs: TcxComboBox;
+ tzsl: TcxTextEdit;
+ cxOk1: TcxButton;
+ cxclose: TcxButton;
+ cxTabSheet2: TcxTabSheet;
+ lenUnit: TcxComboBox;
+ cxButton1: TcxButton;
+ cxButton2: TcxButton;
+ cxTabSheet3: TcxTabSheet;
+ Label1: TLabel;
+ tzsl1: TcxTextEdit;
+ tzfs1: TcxComboBox;
+ Label2: TLabel;
+ Label3: TLabel;
+ tzfield: TcxComboBox;
+ cxButton3: TcxButton;
+ cxButton4: TcxButton;
+ procedure FormCreate(Sender: TObject);
+ procedure cxcloseClick(Sender: TObject);
+ procedure cxOk1Click(Sender: TObject);
+ procedure cxButton1Click(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure cxButton3Click(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ fTabCaption:String;
+ end;
+
+var
+ frmBatchMdyData: TfrmBatchMdyData;
+
+implementation
+
+{$R *.dfm}
+
+procedure TfrmBatchMdyData.cxButton1Click(Sender: TObject);
+begin
+ if trim(lenunit.Text) = '' then
+ begin
+ Application.MessageBox('ѡλ!', 'ʾ', 0);
+ Exit;
+ end;
+
+ ModalResult:=1;
+end;
+
+procedure TfrmBatchMdyData.cxButton3Click(Sender: TObject);
+begin
+ if trim(tzfield.Text) = '' then
+ begin
+ Application.MessageBox('ֶβΪ!', 'ʾ', 0);
+ Exit;
+ end;
+ if trim(TZFS1.Text) = '' then
+ begin
+ Application.MessageBox('ʽΪ!', 'ʾ', 0);
+ Exit;
+ end;
+ if trim(TZSL1.Text) = '' then
+ begin
+ Application.MessageBox('Ϊ!', 'ʾ', 0);
+ Exit;
+ end;
+ ModalResult:=1;
+end;
+
+procedure TfrmBatchMdyData.cxcloseClick(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TfrmBatchMdyData.cxOk1Click(Sender: TObject);
+begin
+ if trim(TZFS.Text) = '' then
+ begin
+ Application.MessageBox('ʽΪ!', 'ʾ', 0);
+ Exit;
+ end;
+ if trim(TZSL.Text) = '' then
+ begin
+ Application.MessageBox('Ϊ!', 'ʾ', 0);
+ Exit;
+ end;
+ ModalResult:=1;
+end;
+
+procedure TfrmBatchMdyData.FormCreate(Sender: TObject);
+begin
+ cxPageControl1.Align:=alClient;
+end;
+
+procedure TfrmBatchMdyData.FormShow(Sender: TObject);
+var
+ i:integer;
+begin
+ for i:=0 to cxPageControl1.PageCount -1 do
+ begin
+ if fTabCaption= cxPageControl1.Pages[i].Caption then
+ begin
+ cxPageControl1.Pages[i].TabVisible:=True;
+ end
+ else
+ begin
+ cxPageControl1.Pages[i].TabVisible:=false;
+ end;
+ end;
+
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_BillPrintList.dfm b/T03贸易布匹检验/U_BillPrintList.dfm
new file mode 100644
index 0000000..470e4d4
--- /dev/null
+++ b/T03贸易布匹检验/U_BillPrintList.dfm
@@ -0,0 +1,338 @@
+inherited frmBillPrintList: TfrmBillPrintList
+ Caption = #30721#21333#26684#24335#31649#29702
+ ClientHeight = 572
+ ClientWidth = 999
+ Color = clBtnFace
+ ExplicitWidth = 1015
+ ExplicitHeight = 611
+ PixelsPerInch = 96
+ TextHeight = 17
+ object ToolBar1: TToolBar [0]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 999
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 131
+ Caption = 'ToolBar1'
+ Color = clBtnFace
+ DisabledImages = DataLink_TradeInsp.cxImageList_bar
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ParentColor = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 4
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object TgroupAdd: TToolButton
+ Left = 71
+ Top = 0
+ AutoSize = True
+ Caption = #26032#22686
+ ImageIndex = 2
+ OnClick = TgroupAddClick
+ end
+ object TgroupMdy: TToolButton
+ Left = 142
+ Top = 0
+ AutoSize = True
+ Caption = #20462#25913
+ ImageIndex = 3
+ Visible = False
+ end
+ object TBDel: TToolButton
+ Left = 213
+ Top = 0
+ AutoSize = True
+ Caption = #21024#38500
+ ImageIndex = 5
+ Visible = False
+ OnClick = TBDelClick
+ end
+ object ToolButton1: TToolButton
+ Left = 284
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384
+ ImageIndex = 37
+ OnClick = ToolButton1Click
+ end
+ object Tgetresult: TToolButton
+ Left = 355
+ Top = 0
+ Caption = #33719#21462#26126#32454#32467#26524
+ ImageIndex = 9
+ OnClick = TgetresultClick
+ end
+ object ToolButton3: TToolButton
+ Left = 486
+ Top = 0
+ Caption = #33719#21462#27719#24635#32467#26524
+ ImageIndex = 13
+ OnClick = ToolButton3Click
+ end
+ object Tmdgs: TToolButton
+ Left = 617
+ Top = 0
+ AutoSize = True
+ Caption = #30721#21333#26684#24335
+ ImageIndex = 8
+ OnClick = TmdgsClick
+ end
+ object ToolButton2: TToolButton
+ Left = 720
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton2Click
+ end
+ object TBClose: TToolButton
+ Left = 823
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object cxGrid1: TcxGrid [1]
+ Left = 8
+ Top = 75
+ Width = 826
+ Height = 173
+ BorderStyle = cxcbsNone
+ TabOrder = 1
+ LookAndFeel.Kind = lfFlat
+ object Tv1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ Navigator.Buttons.Delete.Enabled = False
+ Navigator.Buttons.Delete.Visible = False
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsBehavior.GoToNextCellOnEnter = True
+ OptionsCustomize.ColumnFiltering = False
+ OptionsData.Deleting = False
+ OptionsData.DeletingConfirmation = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object Tv1billName: TcxGridDBColumn
+ Caption = #30721#21333#21517#31216
+ DataBinding.FieldName = 'billName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 101
+ end
+ object tv1direction: TcxGridDBColumn
+ Caption = #26041#21521
+ DataBinding.FieldName = 'direction'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.ImmediatePost = True
+ Properties.Items.Strings = (
+ #27178
+ #31446)
+ HeaderAlignmentHorz = taCenter
+ Width = 49
+ end
+ object tv1billType: TcxGridDBColumn
+ Caption = #31867#22411
+ DataBinding.FieldName = 'billType'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #20837#24211#30721#21333
+ #20986#24211#30721#21333)
+ HeaderAlignmentHorz = taCenter
+ Width = 59
+ end
+ object tv1pageRow: TcxGridDBColumn
+ Caption = #30721#21333#34892#25968
+ DataBinding.FieldName = 'pageRow'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ Properties.CharCase = ecUpperCase
+ HeaderAlignmentHorz = taCenter
+ Width = 68
+ end
+ object Tv1PageCol: TcxGridDBColumn
+ Caption = #30721#21333#21015#25968
+ DataBinding.FieldName = 'PageCol'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ Properties.CharCase = ecUpperCase
+ HeaderAlignmentHorz = taCenter
+ Width = 65
+ end
+ object tv1billLayoutPageField: TcxGridDBColumn
+ Caption = #30721#21333#20998#39029#23383#27573
+ DataBinding.FieldName = 'billLayoutPageField'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #21697#21517','#38376#24133','#20811#37325
+ #21697#21517','#38376#24133','#20811#37325','#33457#22411','#27454#21495
+ #21697#21517','#38376#24133','#20811#37325','#33457#22411','#27454#21495','#39068#33394','#33394#21495
+ #21697#21517','#38376#24133','#20811#37325','#33457#22411','#27454#21495','#39068#33394','#33394#21495','#32568#21495)
+ HeaderAlignmentHorz = taCenter
+ Width = 121
+ end
+ object tv1procedureName: TcxGridDBColumn
+ Caption = #26126#32454#23384#20648#36807#31243
+ DataBinding.FieldName = 'procedureName'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.Items.Strings = (
+ 'P_Trade_Cloth_in_djd_Prt1')
+ HeaderAlignmentHorz = taCenter
+ Width = 111
+ end
+ object Tv1procedureName2: TcxGridDBColumn
+ Caption = #27719#24635#23384#20648#36807#31243
+ DataBinding.FieldName = 'procedureName2'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 105
+ end
+ object tv1isValid: TcxGridDBColumn
+ Caption = #21551#29992
+ DataBinding.FieldName = 'valid'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ HeaderAlignmentHorz = taCenter
+ Width = 61
+ end
+ object Tv1note: TcxGridDBColumn
+ Caption = #35828#26126
+ DataBinding.FieldName = 'note'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ end
+ end
+ object cxGridLevel2: TcxGridLevel
+ GridView = Tv1
+ end
+ end
+ object cxGrid2: TcxGrid [2]
+ Left = 0
+ Top = 372
+ Width = 999
+ Height = 200
+ Align = alBottom
+ TabOrder = 2
+ object tv2: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource2
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <>
+ DataController.Summary.SummaryGroups = <>
+ OptionsBehavior.BestFitMaxRecordCount = 1
+ OptionsData.Deleting = False
+ OptionsData.Editing = False
+ OptionsData.Inserting = False
+ OptionsView.GroupByBox = False
+ end
+ object cxGrid2Level1: TcxGridLevel
+ GridView = tv2
+ end
+ end
+ object RzGroupBox1: TcxGroupBox [3]
+ Left = 0
+ Top = 30
+ Align = alTop
+ Alignment = alCenterCenter
+ ParentFont = True
+ TabOrder = 3
+ Height = 43
+ Width = 999
+ object cxRadioGroup1: TcxRadioGroup
+ Left = 4
+ Top = 4
+ Align = alLeft
+ Alignment = alLeftCenter
+ ParentFont = True
+ Properties.Columns = 3
+ Properties.Items = <
+ item
+ Caption = #24050#21551#29992
+ end
+ item
+ Caption = #26410#21551#29992
+ end
+ item
+ Caption = #20840#37096
+ end>
+ ItemIndex = 0
+ Style.LookAndFeel.SkinName = 'WXI'
+ StyleDisabled.LookAndFeel.SkinName = 'WXI'
+ TabOrder = 0
+ OnClick = cxRadioGroup1Click
+ Height = 35
+ Width = 290
+ end
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltBatchOptimistic
+ Parameters = <>
+ Left = 157
+ Top = 241
+ end
+ object DataSource1: TDataSource
+ DataSet = ADOQueryMain
+ Left = 288
+ Top = 248
+ end
+ object DataSource2: TDataSource
+ DataSet = ADOQueryResult
+ Left = 472
+ Top = 224
+ end
+ object ADOQueryResult: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 405
+ Top = 225
+ end
+end
diff --git a/T03贸易布匹检验/U_BillPrintList.pas b/T03贸易布匹检验/U_BillPrintList.pas
new file mode 100644
index 0000000..ac26b8f
--- /dev/null
+++ b/T03贸易布匹检验/U_BillPrintList.pas
@@ -0,0 +1,330 @@
+unit U_BillPrintList;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
+ System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
+ Vcl.ComCtrls, Vcl.ToolWin, cxGraphics, cxControls, cxLookAndFeels,
+ cxLookAndFeelPainters,
+ cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
+ dxDateRanges, dxScrollbarAnnotations, Data.DB, cxDBData, cxTextEdit,
+ cxCheckBox, cxGridLevel, cxGridCustomTableView, cxGridTableView,
+ cxGridDBTableView, cxClasses, cxGridCustomView, U_BaseList, cxGrid,
+ Data.Win.ADODB, cxDropDownEdit, Vcl.StdCtrls, Vcl.ExtCtrls, cxContainer,
+ cxGroupBox, cxRadioGroup, cxProgressBar;
+
+type
+ TfrmBillPrintList = class(TfrmBaseList)
+ ToolBar1: TToolBar;
+ TBRafresh: TToolButton;
+ TgroupAdd: TToolButton;
+ TgroupMdy: TToolButton;
+ TBDel: TToolButton;
+ TBClose: TToolButton;
+ cxGrid1: TcxGrid;
+ Tv1: TcxGridDBTableView;
+ tv1direction: TcxGridDBColumn;
+ tv1billType: TcxGridDBColumn;
+ tv1procedureName: TcxGridDBColumn;
+ tv1pageRow: TcxGridDBColumn;
+ Tv1PageCol: TcxGridDBColumn;
+ tv1billLayoutPageField: TcxGridDBColumn;
+ Tv1note: TcxGridDBColumn;
+ tv1isValid: TcxGridDBColumn;
+ cxGridLevel2: TcxGridLevel;
+ ToolButton1: TToolButton;
+ ADOQueryMain: TADOQuery;
+ DataSource1: TDataSource;
+ ToolButton2: TToolButton;
+ Tv1billName: TcxGridDBColumn;
+ Tgetresult: TToolButton;
+ tv2: TcxGridDBTableView;
+ cxGrid2Level1: TcxGridLevel;
+ cxGrid2: TcxGrid;
+ DataSource2: TDataSource;
+ ADOQueryResult: TADOQuery;
+ Tv1procedureName2: TcxGridDBColumn;
+ ToolButton3: TToolButton;
+ Tmdgs: TToolButton;
+ RzGroupBox1: TcxGroupBox;
+ cxRadioGroup1: TcxRadioGroup;
+ procedure TBCloseClick(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormDestroy(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure ToolButton2Click(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure TgroupAddClick(Sender: TObject);
+ procedure TBDelClick(Sender: TObject);
+ procedure TgetresultClick(Sender: TObject);
+ procedure ToolButton3Click(Sender: TObject);
+ procedure TmdgsClick(Sender: TObject);
+ procedure RadioGroup1Click(Sender: TObject);
+ procedure cxRadioGroup1Click(Sender: TObject);
+ private
+ procedure DoQuery();
+ public
+ fuseSystem: string;
+ FLMType: string;
+ FFiltration1, FFiltration2, FFiltration3: string;
+ end;
+
+var
+ frmBillPrintList: TfrmBillPrintList;
+
+implementation
+
+uses
+ U_DataLink, U_RTfun, U_globalVar, U_LabelPrint;
+{$R *.dfm}
+
+procedure TfrmBillPrintList.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ Action := caFree;
+end;
+
+procedure TfrmBillPrintList.FormCreate(Sender: TObject);
+begin
+ inherited;
+ cxGrid1.Align := alClient;
+ fuseSystem := fParameters1;
+end;
+
+procedure TfrmBillPrintList.FormDestroy(Sender: TObject);
+begin
+ inherited;
+ frmBillPrintList := nil;
+end;
+
+procedure TfrmBillPrintList.FormShow(Sender: TObject);
+begin
+ inherited;
+ DoQuery();
+ readCxGrid('码单格式管理列表T1', Tv1, gDllFileName);
+end;
+
+procedure TfrmBillPrintList.RadioGroup1Click(Sender: TObject);
+begin
+ TBRafresh.Click;
+
+end;
+
+procedure TfrmBillPrintList.TBCloseClick(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TfrmBillPrintList.TBDelClick(Sender: TObject);
+begin
+ inherited;
+ ADOQueryMain.Delete;
+end;
+
+procedure TfrmBillPrintList.TBRafreshClick(Sender: TObject);
+begin
+ inherited;
+ DoQuery();
+end;
+
+procedure TfrmBillPrintList.TgetresultClick(Sender: TObject);
+begin
+ if trim(ADOQueryMain.FieldByName('procedureName').AsString) = '' then
+ begin
+ Application.MessageBox('明细存储过程名称不能为空!', '提示信息', 0);
+ exit;
+ end;
+ try
+ with ADOQueryBaseTemp do
+ begin
+ close;
+ Filtered := False;
+ Sql.Clear;
+ sql.Add('select max(ciid) as ciid from Trade_Cloth_Inspect');
+ // if Pos('���',trim(ADOQueryMain.FieldByName('billType').AsString),1)>=0 then
+ // sql.Add('where ioflag='+QuotedStr('���') )
+ // else
+ // sql.Add('where ioflag='+QuotedStr(' ����'));
+ open;
+ end;
+ TV2.BeginUpdate();
+ ADOQueryResult.DisableControls;
+ with ADOQueryResult do
+ begin
+ Close;
+ Filtered := False;
+ SQL.Clear;
+ sql.Add('exec ' + trim(ADOQueryMain.FieldByName('procedureName').AsString));
+ if not ADOQueryBaseTemp.IsEmpty then
+ sql.Add('@Filtration=' + quotedstr(Trim(ADOQueryBaseTemp.FieldByName('ciid').AsString)))
+ else
+ sql.Add('@Filtration=' + quotedstr('92405270001'));
+ Open;
+ end;
+ TV2.ClearItems; //�������
+ (TV2.DataController as IcxCustomGridDataController).DeleteAllItems; //ɾ��������
+ (TV2.DataController as IcxCustomGridDataController).CreateAllItems(false); //��������Դ�е�������
+
+ finally
+ ADOQueryResult.EnableControls;
+ TV2.EndUpdate;
+ TV2.BeginBestFitUpdate;
+ TV2.ApplyBestFit; //���п�����Ӧ .BestFitMaxWidth;
+ TV2.EndBestFitUpdate;
+ end;
+end;
+
+procedure TfrmBillPrintList.TgroupAddClick(Sender: TObject);
+begin
+ inherited;
+ ADOQueryMain.Append;
+ ADOQueryMain.FieldByName('billType').Value := '����뵥';
+ ADOQueryMain.FieldByName('billName').Value := '';
+ ADOQueryMain.FieldByName('direction').Value := '��';
+ ADOQueryMain.FieldByName('procedureName').Value := '';
+ ADOQueryMain.FieldByName('pageRow').Value := 10;
+ ADOQueryMain.FieldByName('PageCol').Value := 10;
+ ADOQueryMain.FieldByName('useSystem').Value := fuseSystem;
+
+ ADOQueryMain.FieldByName('valid').Value := 1;
+end;
+
+procedure TfrmBillPrintList.TmdgsClick(Sender: TObject);
+begin
+ inherited;
+ with ADOQueryBaseTemp do
+ begin
+ close;
+ Filtered := False;
+ Sql.Clear;
+ sql.Add('select max(ciid) as ciid from Trade_Cloth_Inspect');
+ open;
+ end;
+
+ try
+ frmLabelPrint := TfrmLabelPrint.Create(Application);
+ with frmLabelPrint do
+ begin
+ FLMType := '入库码单';
+ FFiltration1 := Trim(self.ADOQueryBaseTemp.FieldByName('ciid').AsString);
+ FFiltration2 := Trim(self.ADOQueryBaseTemp.FieldByName('ciid').AsString);
+ if ShowModal = 1 then
+ begin
+// Self.InitGrid();
+ end;
+ end;
+ finally
+ frmLabelPrint.Free;
+ end;
+end;
+
+procedure TfrmBillPrintList.ToolButton1Click(Sender: TObject);
+begin
+ inherited;
+ try
+ if ADOQueryMain.Locate('billName', '', []) then
+ begin
+ Application.MessageBox('码单名称不能为空!', '提示信息', 0);
+ exit;
+ end;
+ if ADOQueryMain.Locate('procedureName', '', []) then
+ begin
+ Application.MessageBox('存储过程名称不能为空!', '提示信息', 0);
+ exit;
+ end;
+
+ ADOQueryMain.UpdateBatch();
+ Application.MessageBox('保存成功!', '提示信息', 0);
+ except
+ Application.MessageBox('保存失败!', '警告信息', 0);
+ end;
+end;
+
+procedure TfrmBillPrintList.ToolButton2Click(Sender: TObject);
+begin
+ inherited;
+ WriteCxGrid('码单格式管理列表T1', Tv1, gDllFileName);
+end;
+
+procedure TfrmBillPrintList.ToolButton3Click(Sender: TObject);
+begin
+ if trim(ADOQueryMain.FieldByName('procedureName2').AsString) = '' then
+ begin
+ Application.MessageBox('汇总存储过程名称不能为空!', '提示信息', 0);
+ exit;
+ end;
+ try
+ with ADOQueryBaseTemp do
+ begin
+ close;
+ Filtered := False;
+ Sql.Clear;
+ sql.Add('select max(ciid) as ciid from Trade_Cloth_Inspect');
+ //if Pos('���',trim(ADOQueryMain.FieldByName('billType').AsString),1)>=0 then
+ // sql.Add('where ioflag='+QuotedStr('���') )
+ //else
+ //sql.Add('where ioflag='+QuotedStr(' ����'));
+ open;
+ end;
+ TV2.BeginUpdate();
+ ADOQueryResult.DisableControls;
+ with ADOQueryResult do
+ begin
+ Close;
+ Filtered := False;
+ SQL.Clear;
+ sql.Add('exec ' + trim(ADOQueryMain.FieldByName('procedureName2').AsString));
+ if not ADOQueryBaseTemp.IsEmpty then
+ sql.Add('@Filtration=' + quotedstr(Trim(ADOQueryBaseTemp.FieldByName('ciid').AsString)))
+ else
+ sql.Add('@Filtration=' + quotedstr('92405270001'));
+ Open;
+ end;
+ TV2.ClearItems; //�������
+ (TV2.DataController as IcxCustomGridDataController).DeleteAllItems; //ɾ��������
+ (TV2.DataController as IcxCustomGridDataController).CreateAllItems(false); //��������Դ�е�������
+
+ finally
+ ADOQueryResult.EnableControls;
+ TV2.EndUpdate;
+ TV2.BeginBestFitUpdate;
+ TV2.ApplyBestFit; //���п�����Ӧ .BestFitMaxWidth;
+ TV2.EndBestFitUpdate;
+ end;
+end;
+
+procedure TfrmBillPrintList.cxRadioGroup1Click(Sender: TObject);
+begin
+ TBRafresh.click;
+
+end;
+
+procedure TfrmBillPrintList.DoQuery();
+begin
+ try
+ ADOQueryMain.DisableControls;
+ with ADOQueryMain do
+ begin
+ Filtered := False;
+ Close;
+ SQL.Clear;
+ sql.Add('select * from SD_BillPrint ');
+ if cxRadioGroup1.ItemIndex = 0 then
+ sql.Add('where valid=1 ')
+ else if cxRadioGroup1.ItemIndex = 1 then
+ sql.Add('where valid=0');
+ // if FLMType<>'' then
+ sql.Add('and billtype=' + QuotedStr(TRIM(FLMType)));
+ sql.Add('order by recid');
+ Open;
+ end;
+ finally
+ ADOQueryMain.EnableControls;
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_DataLink.dfm b/T03贸易布匹检验/U_DataLink.dfm
new file mode 100644
index 0000000..ec5f4c1
--- /dev/null
+++ b/T03贸易布匹检验/U_DataLink.dfm
@@ -0,0 +1,10453 @@
+inherited DataLink_TradeInsp: TDataLink_TradeInsp
+ OldCreateOrder = True
+ OnDestroy = DataModuleDestroy
+ Height = 349
+ Width = 482
+ inherited dxSkinController1: TdxSkinController
+ Left = 328
+ end
+ inherited cxEditStyleController1: TcxEditStyleController
+ Style.LookAndFeel.SkinName = ''
+ StyleDisabled.LookAndFeel.SkinName = ''
+ StyleFocused.LookAndFeel.SkinName = ''
+ StyleHot.LookAndFeel.SkinName = ''
+ PixelsPerInch = 96
+ end
+ inherited cxImageList_bar: TcxImageList
+ FormatVersion = 1
+ end
+ inherited ThreeColorBase: TcxStyleRepository
+ Top = 123
+ PixelsPerInch = 96
+ end
+ inherited dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList
+ inherited dxLayoutSkinLookAndFeel1: TdxLayoutSkinLookAndFeel
+ PixelsPerInch = 96
+ end
+ end
+ object AdoDataLink: TADOQuery
+ Connection = ADOLink
+ Parameters = <>
+ Left = 136
+ Top = 8
+ end
+ object ADOLink: TADOConnection
+ LoginPrompt = False
+ Left = 48
+ Top = 8
+ end
+ object ThreeImgList: TImageList
+ Height = 24
+ Width = 24
+ Left = 80
+ Top = 136
+ Bitmap = {
+ 494C01018900F000040018001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 00000000000036000000280000006000000048030000010020000000000000EC
+ 0400000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DCDC
+ DC00DADADA00C9C9C900C7C7C700C7C7C700C0C0C000C0C0C000A4B1DD00333F
+ 6900303A62004656900000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D5DCF600384C8A00445698002D49
+ A7004D67C1006780D300627ACA00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000394D8C0043569800435CB0004E69
+ C1006982D500768FE2004962B200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D5DCF60044579900425BAF00324DAA008196
+ DB0097AAE900889FED004961B200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D5DCF6003E508F0046589A00314CA9005670C4008297DB00AFBF
+ F3008DA5F400607ACD00D8E0F800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003F519100475A9C00435CAF005771C5008297DB00A6B6EB00849E
+ F2005C76CE004C63AF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D5DCF700475A9C00425BAF00324DAA008297DB00A8B8EC00A8B9F2005E79
+ CF004F65B000D8E0F80000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D3D3
+ D300485584004B63B4004A65C000758CD800ABBBF2008FA6F400607BD100D8E0
+ F800000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A2A2A2007A7978006B6969006A6867006B6969007A797800C5C5C5007371
+ 710072737D005366A8007088D7007F96E30089A2F400667FD300526AB5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000A3A2
+ A200AAA9A900DAD9D900EDEDEC00E7E7E700EBEBEB00D8D7D60078767500706E
+ 6D007D7B7A005567A300637AC4007B95EB00647ED400546CB700D8E0F8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000008C8B8B00A7A5A500ECEB
+ EB00BFBDBC00AAA8A700A09E9D009A9897009F9D9C00A8A6A500CFCECD00E6E5
+ E500A4A3A200BABABA009C9EAD006C80C200D8E0F80000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A2A1A000EDECEC00D1CF
+ CF00A09E9D00B1B1B000BEBDBC00C3C2C200C2C2C200B6B5B400AFADAC00CAC8
+ C800E6E5E50087858400A19F9D00D5D5D3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000EDEDED00D7D6D500B4B2
+ B100B9B8B700B9B8B700B7B6B500B7B7B600BCBABA00C1C0C000A19F9E00AEAC
+ AB00CFCECD0088868500C8C8C800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000088878700D9D7D700ADABAA00B2B1
+ B100C1C0BF00C3C3C200C3C2C200C0C0BF00BFBFBF00BBBABA00BCBCBB00B4B3
+ B200A8A6A5004F69BE004F69BE004F69BE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000085848300D0CECD00A3A1A000C4C3
+ C300CECDCD00D0D0D000D1D0CF00CAC9C900C7C6C600C2C2C000B6B4B400BCBC
+ BC009F9D9C00506CCA00173CB900506CCA000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008C8A8800CBCAC9009E9D9C00CBCA
+ CA00D8D7D700DBDBDB00DDDDDD00D7D7D600CFCFCE00C7C6C600B9B7B600B8B8
+ B8009A9897004F6ED5001740C9004F6ED5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008F8D8D00D1D0CF00A4A2A100D2D2
+ D100E7E7E700EDEDED00F0F0F000ECEBEB00E4E4E400DADADA006885E7006885
+ E7006885E7001C4BE8001948E8001C4BE8006885E7006885E7006885E7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000093929100DCDADA00AFADAD00C5C5
+ C400EBEBEB00F0F0F000F6F6F600F2F2F200E8E8E800DFDEDE006A8AF3004A70
+ F0004A70F0002957EE002957EE002957EE004A70F0004A70F0006A8AF3000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000ACACAC00EAE9E900C6C4C400A7A5
+ A400EBEBEB00F0F0F000F6F6F600F3F3F300E9E9E900DFDFDF007F99ED007F99
+ ED007F99ED003B64EF003B64EF003E67F0007F99ED007F99ED007F99ED000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BFBEBD00F2F2F200D7D6
+ D600A8A7A600CDCCCC00E6E6E600E9E9E900DDDDDD00C3C2C100B3B1B000D1CF
+ CF00ECEBEB008EA6F6006989F3008EA6F6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009F9E9D00C7C6C500F2F2
+ F200C6C4C400AFADAD00A4A2A1009E9C9C00A3A1A000ADABAA00D7D6D500EDEC
+ EC00C6C5C4009AAFF700829CF5009AAFF7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000A09F9F00C5C3
+ C200EAE9E900DCDADA00D1D0CF00CBCAC900D0CECD00D9D7D700F0F0F000C4C3
+ C100A09F9F00ADBDF400ADBDF400ADBDF4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B0AFAF00A19F9F00A9A7A500B0AEAC00A9A7A500A19F9F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008195DB0028397300283973002839
+ 7300283973002839730028397300283973002839730028397300283973002839
+ 7300283973002839730028397300283973002839730028397300283973002839
+ 73002839730028397300283973007287D2000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A4B3E50031437F002B38
+ 680026335B002B396C008E9FD400C0C0C000C1C1C100C7C7C700C8C8C800D5D5
+ D500DADADA000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CACACA00596FB9003E5194003E51
+ 94003E5194003E5194003E5194003D5092003B4D8B00384A860034447C003241
+ 77002F3E71002A3867002936620040529200C3C3C300DBDBDB00000000000000
+ 0000000000000000000000000000000000002D3E7C00092EAA000429A7000429
+ A7000429A7000429A7000429A7000429A7000429A7000429A7000429A7000429
+ A7000429A7000429A7000429A7000429A7000429A7000429A7000429A7000429
+ A7000429A7000429A7003B57B400354682000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000536AB6007089DA005570
+ CD003E5ABA00566EBC0047589200B7C5F1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005E72B6008DA1E40090A5
+ EB008DA3ED008BA2ED00879EEB008199E9007E96E4007B92E000758CD7007187
+ D1006E84CC00687CC0006F7FB7004D5B8A000000000000000000000000000000
+ 0000000000000000000000000000000000004057A7002345B600042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042AAA000328
+ A300042AAA00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC004157A200334A9300374E9A002C3E7D002C3E7D002C3E
+ 7D002C3E7D002C3E7D00374E9A0000000000374E9A002C3E7D002C3E7D002C3E
+ 7D002C3E7D002C3E7D00374E9A0000000000374E9A002C3E7D002C3E7D002C3E
+ 7D002C3E7D002C3E7D00374E9A0000000000000000006782DF006983DC00617C
+ D6004461C2003A57B800576EBC00283A7700B7C5F10000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000008AA0EB00829CF5007995
+ F4007290F4006989F3006082F2004C71ED004469E6003A5FDE00274DCD001D43
+ C300143AB9000328A3003652AF006E7EB7000000000000000000000000000000
+ 000000000000000000000000000000000000A7B7ED00435EBA00153AB7000930
+ B3000930B3000930B3000930B3000930B3000930B3000930B3008191C600FFFF
+ FF00FFFFFF000930B3000930B3000930B3000930B3000930B3000930B3000930
+ B3000930B3000F35B5003D4F8D008499DF0033478A004F6CCC004F6CCC004F6C
+ CC004F6CCC00657FD30033478A000000000033478A00657FD3004F6CCC004F6C
+ CC004F6CCC00657FD30033478A000000000033478A00657FD3004F6CCC004F6C
+ CC004F6CCC004F6CCC0033478A0000000000000000006F8AE5007891E300758E
+ DF005873CF004663C3003A57B80047589300283B7800B7C5F100000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000096AAEE0093AAF60096AC
+ F700829DF5007894F4006D8CF3005679EE004B6FE7004166DF002C51CE002146
+ C400163BBA000328A30003269B00687CBE000000000000000000000000000000
+ 000000000000000000000000000000000000000000003A4E93004E69C0002449
+ C500163DC100163DC100163DC100163DC100163DC100153AB800FFFFFF00FFFF
+ FF00FFFFFF00153AB800163DC100163DC100163DC100163DC100163DC100163D
+ C1001F45C4004E69C600A8B7EE00000000004158A7001B47D800204BD900224C
+ D9001B47D800829AE9004158A700000000004158A700829AE900204BD900224C
+ D900204BD900829AE9004158A700000000004158A700829AE9001B47D800224C
+ D900204BD9001B47D8004158A7000000000000000000778ACD009EB0EF00829A
+ E800778FE00096A8E3008292C800344EA200576EBC0048599300B7C5F1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000097ABEE0097ADF70097AD
+ F700829DF5007894F4006D8CF3005679EE00000000007A94E8002C51CE002146
+ C400163BBA000328A30003269B00687CBE000000000000000000000000000000
+ 00000000000000000000000000000000000000000000617ACE004E61A5004666
+ D0001D44C9001D44C9001D44C9001D44C9001D44C9001C43C500A8B4DC00FFFF
+ FF00FFFFFF001D44C9001D44C9001D44C9001D44C9001D44C9001D44C9001D44
+ C9003E60D0005066AD0000000000000000004961B6002D58E7003861E9003A62
+ E9002C57E7009BAFF3004961B600000000004961B6009BAFF3003861E9003A62
+ E900365FE8009BAFF3004961B600000000004961B6009BAFF3002D58E7003A62
+ E900365FE8002C57E7004961B60000000000000000003F59B0007E90D000A1B3
+ EF00839AE5008A96BD00B3C0EB00384F9C00344EA200576EBC002A3D7900B7C5
+ F100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000099ADEE0098AEF70097AD
+ F700829DF5007894F4006D8CF3005679EE00000000007A94E8002C51CE002146
+ C400163BBA000328A30003269B00687CBE000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000003A53A1005A73
+ C600234ACF00234ACF00234ACF00234ACF00234ACF00234ACF001C3CA6004660
+ B6004660B600234ACF00234ACF00234ACF00234ACF00234ACF00234ACF002F54
+ D2005974CB003E549E0000000000000000004F69C0003C65EF00496FF0004C72
+ F1003A64EF00A9BBF8004F69C000000000004F69C000A9BBF800496FF0004C72
+ F100476EF000A9BBF8004F69C000000000004F69C000A9BBF8003C65EF004C72
+ F100476EF0003A64EF004F69C0000000000000000000BECCF5004059B0007F92
+ D100849BE8004E5C8A008A96BD008292C800384F9C00344EA200495A93002B3D
+ 7A00B7C5F1000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009AAEEF0098AEF70097AD
+ F700829DF5007894F4006D8CF30011172D0000000000161B2B002C51CE002146
+ C400163BBA000328A30003269B00687CBE000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000455E
+ B200476ADF003158DB003158DB003158DB003158DB003158DB0092A2D700FFFF
+ FF00FFFFFF003158DB003158DB003158DB003158DB003158DB003158DB00657E
+ D0004159AB000000000000000000000000005770C700BBC9F600BECBF700BFCC
+ F600BAC8F600B5C4F5005770C700000000005770C700B5C4F500BECBF700BFCC
+ F600BECBF700B5C4F5005770C700000000005770C700B5C4F500BBC9F600BFCC
+ F600BECBF700BAC8F6005770C70000000000000000000000000000000000BECC
+ F5008093D100A2B4EF006576AF008A96BD00B3C0EB008292C800344EA200566E
+ BC00495A9500B7C5F10000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000099ADF00097ADF70097AD
+ F700829DF5007894F4006D8CF3001F1F1F000C0C0C001F1F1F002C51CE002146
+ C400163BBA000328A30003269B00687CBE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009AAD
+ EC006984E0003C62E200375EE000375EE000375EE000375EE00095A5D900FFFF
+ FF00FFFFFF00375EE000375EE000375EE000375EE000375EE000395FE000566C
+ B600748ADC000000000000000000000000005B76D2005872C9005872C9007A7E
+ 8E005872C9005872C9005B76D200000000005B76D2005872C9005872C9006F74
+ 83005872C9005872C9005B76D200000000005B76D2005872C9005872C9005872
+ C9005872C9005872C9005B76D200000000000000000000000000000000000000
+ 0000435CB2007C8FD1009AADEF004E5C8A008A96BD00B3C0EB00384F9C00344E
+ A200576EBC002C3F7C00B7C5F100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000098ACF00094ABF60096AC
+ F700829DF5007894F4006D8CF3003A405600333333003F4454002C51CE002146
+ C400163BBA000328A30003269B00687CBE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000687ECB00587AE9003E64E5003E64E5003E64E5003E64E50097A7DB00FFFF
+ FF00FFFFFF003E64E5003E64E5003E64E5003E64E5003E64E5005073E8004A63
+ BB00000000000000000000000000000000000000000000000000000000007878
+ 7800000000000000000000000000000000000000000000000000000000006666
+ 6600000000000000000000000000000000000000000000000000000000005656
+ 5600000000000000000000000000000000000000000000000000000000000000
+ 0000BECCF500445DB3007C90D1006576AF004E5C8A008A96BD008292C800384F
+ 9C00344EA2004A5B95002D3F7C00B7C5F1000000000000000000000000000000
+ 000000000000000000000000000000000000000000008EA4EE00859FF50089A2
+ F600859FF5007E99F5007592F4006283F000597AE9005072E1003E60D2003457
+ C9002C4EC0001C3DAC003652AF007181BA000000000000000000000000000000
+ 0000000000008282820080808000828282000000000000000000000000000000
+ 0000657FD9006C83CD006686F2004C71F0004C71F0004C71F000CDD4EE00FFFF
+ FF00FFFFFF004C71F0004C71F0004C71F0004C71F0006182F1007087D4000000
+ 0000000000000000000000000000000000000000000000000000000000009090
+ 9000000000000000000000000000000000000000000000000000000000008080
+ 8000000000000000000000000000000000000000000000000000000000007070
+ 7000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BECCF5008294D300A2B4EF006576AF008A96BD00B3C0
+ EB008292C800344EA200576EBC004B5C9500B7C5F10000000000000000000000
+ 000000000000000000000000000000000000000000006E84D0008AA1EE0090A6
+ F00091A7F0008FA5F0008CA3EF00879FED00849BE8008097E3007B91DA00788D
+ D400758ACF007083C5007283BE00576798000000000000000000000000000000
+ 0000000000008080800040404000808080000000000000000000000000000000
+ 0000D2DBF800536CC1008098E7005176F1005176F1005176F100CFD6EF00FFFF
+ FF00FFFFFF005176F1005176F1005176F100597CF2007E97ED005870C3000000
+ 0000000000000000000000000000000000000000000000000000000000009D9D
+ 9D009A9A9A0099999900989898009494940094949400919191008E8E8E008C8C
+ 8C008C8C8C008888880088888800858585008282820080808000808080007C7C
+ 7C00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000465FB5008395D300A2B4EF004E5C8A008A96
+ BD00B3C0EB00384F9C003B58B800576EBC002F3E750032437D00354787003B50
+ 98004C64BB0000000000000000000000000000000000718BE2005771C8005771
+ C8005771C8005771C8005771C800556EC400516ABD004E66B600485EA7006D71
+ 7D00717170005E616D003A4A83005068B8000000000000000000000000000000
+ 0000000000008080800045454500808080000000000000000000000000000000
+ 0000000000007991E3006B81CC00587CF200587CF200587CF200D1D8EF00FFFF
+ FF00FFFFFF00587CF200587CF200587CF200718FF4007388D200607AD5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009999
+ 9900000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000BECCF5004760B6008396D4006576AF004F5D
+ 8A008A96BD008292C8004663C3003C59B900596DAF00586CAF005D72B800647B
+ C8005C70B1004760B40000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008080
+ 8000CCCCCC008080800000000000000000000000000000000000000000000000
+ 0000000000008080800050505000808080000000000000000000000000000000
+ 00000000000000000000839AE800869FF3006686F3006586F300F3F5FA00FFFF
+ FF00FFFFFF006586F3006586F3006586F300758AD1007189DF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000364C99002B3D7B002B3D7B002B3D7B006367
+ 73002B3D7B002B3D7B002B3D7B00364C99000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BFCCF5007F92D400A2B4
+ EF00869DE800778FE0006781D7005873CF003351B600203FA6000C2C96001B3B
+ A8003D5ABD00667FD0004861B400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008080
+ 8000D1D1D1008080800000000000000000000000000000000000000000000000
+ 0000000000008080800055555500808080000000000000000000000000000000
+ 00000000000000000000000000008B9FE0007E99F5006B8AF300FFFFFF00FFFF
+ FF00FFFFFF006B8AF3006B8AF3007A96F400526CC50000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000031448600657ED100506CCA00506CCA00506C
+ CA00506CCA00506CCA00657ED100314486000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004963B9008597
+ D500A4B5EF00849BE600778FE0006781D7004461C200415DBA00445EB4001433
+ 9B001839A7003A58BC005F73B4004A62B5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008080
+ 8000D5D5D5008080800000000000000000000000000000000000000000000000
+ 0000000000008A8A8A0059595900808080000000000000000000000000000000
+ 00000000000000000000000000005F77C90097ACF2007592F4005B73C3005B73
+ C3005B73C3007290F4007491F40090A7F300849BE80000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000374C94006580D8000732C1000833C1000833
+ C1000833C1000631C1006681D900374C94000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCCF5004A63
+ BA008799D60093A7EB00859BE600778FE0008196DA0099A8D9008F9DCD008191
+ C7003853AB001536A5005E78CD003F549B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008080
+ 8000D8D8D80084848400C6C6C600000000000000000000000000000000000000
+ 0000C6C6C6009898980067676700868686000000000000000000000000000000
+ 0000000000000000000000000000C1CDF6005C75C8009FB1EF007F9AF5007F9A
+ F5007F9AF500829CF500A1B4F300687FCD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000445BAC00869EEC002C55DE003D62DF003E63
+ DF003C61DF002A53DD00869EEC00445BAC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004D66BB00A3B5F1009EB0EF008FA4EA00596CAD00AAB9EF0000000000536B
+ BC005A6999007F8FC400546DBE003A4C8B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009090
+ 9000C3C3C3008E8E8E008A8A8A00000000000000000000000000000000000000
+ 00008A8A8A00B5B5B5006E6E6E00969696000000000000000000000000000000
+ 0000000000000000000000000000000000006B84DE008699DB00859FF500859F
+ F500859FF50096ACF7008FA2E0005E79D6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004A63B900A1B4F600446BEC005F80EE006383
+ EF005E7FEE004269EC00A1B4F6004A63B9000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004E67BD00A7B8F300A7B8F10095A9ED004C65BB0000000000000000000000
+ 0000465CAA006B79A8004F66B400374883000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B0B0
+ B000A6A6A600B0B0B0008B8B8B00868686000000000000000000000000008686
+ 860092929200ACACAC0078787800BBBBBB000000000000000000000000000000
+ 000000000000000000000000000000000000D3DBF9005C75CC0094ABF6008CA5
+ F6008CA5F600A6B7F100647CCD00AFBFF3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004F68BF00A6B9F800567AF2007B97F4007F9A
+ F5007995F4005378F100A5B8F8004F68BF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000506AC000A3B5F400ADBDF4009DB0F1004D62AF00D1DAF800000000000000
+ 0000000000003F56A1007284C00034437B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D3D3D300D7D7D700DFDFDF00CECECE00AEAEAE009D9D9D0099999900C0C0
+ C000C5C5C500B7B7B700D3D3D300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000A7B6EB00A4B7
+ F800A2B6F8005E77CA00D3DBF900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000556EC500B8C7F900597CF2007E99F500829C
+ F5007C97F400577BF200B7C7F900556EC5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005C77D400AABBF5009BB0F50097ACF300829BEB006D81C9005169C1000000
+ 000000000000000000003D5299003D539D000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000080808000B3B3B300E1E1E100F3F3F300EFEFEF00E9E9E900CDCD
+ CD00A7A7A7008080800000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006D83CF00B2C0
+ F100B1BFF1007C93E60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005771C800B7C6F600BFCCF500C6D1F700C7D2
+ F700C6D1F700BECBF500B7C6F6005771C8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008C9EDC00A9BAF50090A7F3007B95EE007993EA006C81C9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000B0B0B0008A8A8A008080800080808000808080008A8A
+ 8A00B0B0B0000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000007C93E6005771
+ C9005771C8000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005B76D2005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005B76D2000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005974CF008C9EDD00A5B7F5007490EE00718DED006E8AE800526B
+ C200000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D600556FC500556EC400546DC1005169
+ BB00546EC5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000D3D3D300C2C2
+ C2003D4E860029355F0027335E0027335E0027335E0027335E0027335E002733
+ 5E0027335E0027335E0027335E0027335E0029355F003D4E860098A7D800C2C2
+ C200D4D4D4000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B9C6F1002C3C
+ 75003D55A4003D55A4003D55A4003D55A4003D55A4003D55A4003D55A4003D55
+ A4003D55A4003D55A4003D55A4003D55A4003D55A4003D55A40040518F00AFBD
+ EC00000000000000000000000000000000000000000000000000000000004053
+ 93003F64DE002A54DF004368E5007D97ED0099ADF0009EB1F000849BE700768F
+ E2006984DB00506CCB004360C2003553B700213EA0003E57A900415187000000
+ 000000000000000000000000000000000000000000002F3E710045569500475C
+ A400435AA700435AA700435AA600435AA500445BA600435AA500445AA5004359
+ A4004359A3004359A2004359A2004359A1004358A0004358A00043589F004358
+ 9F00495A990044528B0043569E0000000000D6D6D600384A880023315C002331
+ 5C0023315C0023315C0023315C0023315C0023315C0023315C0023315C002331
+ 5C0023315C0023315C0023315C0023315C0023315C0023315C0023315C002331
+ 5C0023315C0023315C00C0C0C000CECECE000000000000000000465DAD004055
+ 99001336AC001034AB001034AB001034AB001034AB001034AB001034AB001034
+ AB001034AB001034AB001034AB001034AB001034AB001336AC002C4BB4003D54
+ A300000000000000000000000000000000000000000000000000000000002B3D
+ 79001945D7001F42B5005466A300A7B7ED00A3B5F100AABAF2007781A4009AA3
+ C30096A7E0004D6ACB0038509E004B5A8C00576CB3001B3898004A5EA1000000
+ 0000000000000000000000000000000000006279C9004660B4002747B000072B
+ A3000328A0000328A00003279F0003279F0003279E0003279D0003269C000326
+ 9B0003269A000326990003269800032597000325960003259500032594000324
+ 9300072895002743A2002E3D6F008EA1E1000000000026356E005A6CAB00566A
+ B000566AB000566AB000566AB000566AB000566AB000566AB000566AB000566A
+ B000566AB000566AB000566AB000566AB000566AB000566AB000566AB000566A
+ B000566AB000566AB00000000000000000000000000000000000324791003E59
+ B400042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC001338B1002D40
+ 8100000000000000000000000000000000000000000000000000000000002D3E
+ 7D000938D4001E378A004864C100CED6F000A3B5F100AABAF2007E8EC40090A0
+ D700C7CFEB004D6ACB002F407900384F9D00A9B3D50013319500495EA4000000
+ 000000000000000000000000000000000000283C80002748B5000429A8000429
+ A7000429A6000429A5000429A5000328A3000328A2000328A2000328A0000328
+ A00003279F0003279E0003279E0003279D0003269B0003269B0003269A000326
+ 99000326980003259700495A99002D428A00000000002D4289005771CA00173F
+ C500042FC000042FC000042FC000042FC000042FC000042FC000042FC000042F
+ C000042FC000042FC000042FC000042FC000042FC000042FC000042FC000042F
+ C000042FC0004F6DD30000000000000000000000000000000000364B95003F5C
+ BD00042DB800042DB800042DB8001037BB001037BB001037BB001037BB001037
+ BB001037BB001037BB001037BB000D35BB00042DB800042DB8001037BB003246
+ 8B00000000000000000000000000000000000000000000000000000000003143
+ 84000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D50013319500495EA4000000
+ 0000000000000000000000000000000000002B3E8100042CB300042CB200042C
+ B20003238D00506BC800042BAF00042BAD00042BAD00042BAC00042AAA000322
+ 8800506AC3000429A8000429A8000429A7000429A6000429A500032184000328
+ A3000328A2000328A100435EB8002638730000000000324793005873D0001842
+ CF000533CC000533CC000533CC000533CC000533CC000533CC000533CC000533
+ CC000533CC000533CC000533CC000533CC000533CC000533CC000533CC000533
+ CC000533CC005171DB0000000000000000000000000000000000384E9900405D
+ C200042FBF00042FBF00042FBF00405EC200405EC200405EC200405EC200405E
+ C200405EC200405EC200405EC2003859C800042FBF00042FBF00113AC2003549
+ 9000000000000000000000000000000000000000000000000000000000003346
+ 87000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D50013319500495EA4000000
+ 0000000000000000000000000000000000002D418600042DB800042DB700042D
+ B600032492004F6BCA00042CB400042CB300042CB200042CB100042BB0000323
+ 8C004F6AC700042BAD00042BAC00042BAC00042AAA00042AAA00032187000429
+ A8000429A8000429A700435FBC002839770000000000364C9D00607CDA002851
+ DC001643D9001643D9001643D9001643D9001643D9001643D9001643D9001643
+ D9001643D9001643D9001643D9001643D9001643D9001643D9001643D9001643
+ D9001643D9005C7BE400000000000000000000000000000000003A509D00405F
+ C7000430C4000430C4000430C400374C9700374C9700374C9700374C9700374C
+ 9700374C9700374C9700374C9700405FC7000430C4000430C400103AC700374C
+ 9700000000000000000000000000000000000000000000000000000000003447
+ 8B000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D50013319500495EA4000000
+ 0000000000000000000000000000000000002F438B000530BE00042EBC00042E
+ BC00032595004F6CCE00042EB900042DB700042DB7000328A200031F7E000219
+ 6400374B8D00031F7C0003269A00042CB100042BB000042BAF0003238C00042B
+ AD00042BAC00042AAB00425FBF002A3C7C00000000003E57AF00748FEA004F74
+ F000426AEF00426AEF00426AEF00426AEF00426AEF00426AEF00426AEF00426A
+ EF00426AEF00426AEF00426AEF00426AEF00426AEF00426AEF00426AEF00426A
+ EF00426AEF007B97F400000000000000000000000000000000003F57A7004162
+ D1000434D1000434D1000434D1003C54A1000000000000000000000000000000
+ 000000000000000000003C54A1004162D1000434D1000434D100113ED3003C54
+ A10000000000000000000000000000000000000000000000000000000000384D
+ 94000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D50013319500495EA4000000
+ 000000000000000000000000000000000000344A9400143ECA001740CA00153E
+ C900072A9E005875D7000E38C5000B36C4000934C2000D2A8A00CDCCCA00CBCA
+ C800C9C7C600CECCCB0003208300042EBB00042EBA00042EB90003249300042D
+ B700042DB600042DB6004361C7002F42850000000000405AB1007D97EB006384
+ F300587CF200587CF200587CF200587CF200587CF200587CF200587CF200587C
+ F200587CF200587CF200587CF200587CF200587CF200587CF200587CF200587C
+ F200587CF20089A2F600000000000000000000000000000000004058AC004567
+ D6000E3DD8000E3DD8000C3BD8003F57A8000000000000000000000000000000
+ 000000000000000000003F57A8004567D6000E3DD8000E3DD8001946DA003F57
+ A800000000000000000000000000000000000000000000000000000000003A4F
+ 98000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D50013319500495EA4000000
+ 000000000000000000000000000000000000364B99001D46D100224AD2002149
+ D1000A2DA3005F7CDC001A43CD001640CB00153FCA0016359B00EDEDEC00ECEC
+ EB00EBEBEA00DBDCE20005258E000530C100042FBF00042FBF0003269800042F
+ BD00042EBC00042EBB004362CB0031458A0000000000425BB300869DED007894
+ F4006E8DF3006E8DF3006E8DF3006E8DF3006E8DF3006E8DF300637EDB00637E
+ DB00637EDB00637EDB006C8AF0006E8DF3006E8DF3006E8DF3006E8DF3006E8D
+ F3006E8DF30097ADF70000000000000000000000000000000000435CAF004B6C
+ DB001E4BE1001D4AE0001947E000425AAD000000000000000000000000000000
+ 00000000000000000000425AAD004A6CDB001E4BE1001E4BE1002853E200425A
+ AD00000000000000000000000000000000000000000000000000000000003C51
+ 9C000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D50013319500495EA4000000
+ 000000000000000000000000000000000000394F9E00264FD8002C53D8002C53
+ D7000D31A8006884E100254DD400214AD2002049D2001D45CC001639AF000826
+ 8B004E67BA001034AC00113AC5000F3AC8000C37C7000A35C50004279C000632
+ C3000531C200042FC0004262CF0033478F00000000003B519A00465898003A4D
+ 9000364A8E00364A8E00364A8E00364A8E00364A8E00364A8E00C7CCDD009BA0
+ AF00999EAD005967980035488A00364A8E00364A8E00364A8E00364A8E00364A
+ 8E00364A8E00465898003D55A5000000000000000000000000004862B9005576
+ E5003D66EE003D66EE00325DED004761B9000000000000000000000000000000
+ 000000000000000000004761B9005475E5003D66EE003D66EE00436AEE004761
+ B900000000000000000000000000000000000000000000000000000000004157
+ A3000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D500133195004A5FA4000000
+ 0000000000000000000000000000000000003D55A800375EE2004166E3004267
+ E3001338B0007691E9003B61E000375DDE00355CDD00345BDD003057DB000F33
+ AB006C87E4002951D800274FD700264ED6001834940017349400072074001330
+ 9200122F91001338B3004869D800384E9800000000006179CC005A75D1005A75
+ D1005A75D1005A75D1005A75D1005A75D1005A75D1005A75D100D0D7ED00D0D6
+ E700CED4E5006A7FC7005873CD005A75D1005A75D1005A75D1005A75D1005A75
+ D1005A75D1005A75D1004B5FA5000000000000000000000000004A64BB005A7B
+ E8004D72F1004D72F1004068F0004A64BB000000000000000000000000000000
+ 000000000000000000004A64BB00597AE8004D72F1004E73F1005176F1004A64
+ BB0000000000000000000000000000000000000000000000000000000000435A
+ A7000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D500133195004A5FA5000000
+ 0000000000000000000000000000000000004059AD003F66E7004B70E8004D71
+ E900163BB3007E98ED00456AE5004368E4004166E3003F64E2003C62E1001237
+ AF00748FE900345BDD003259DC003158DC00B6B6BA00BFBDBB00BDBBB900BAB8
+ B600AEAEB200173494004C6DDC003A509D0000000000738CE000466AE2003B61
+ E0003B61E0003B61E0003B61E0003B61E0003B61E0003B61E0004665CE005773
+ D3005773D3003557C9003A5FDC003B61E0003B61E0003B61E0003B61E0003B61
+ E0003B61E0003B61E000566AB3000000000000000000000000004B65BC005F7F
+ E8005C7FF2005C7FF2004D72F1004B65BC000000000000000000000000000000
+ 000000000000000000004B65BC005D7DE8005C7FF2005D80F2005F81F2004B65
+ BC0000000000000000000000000000000000000000000000000000000000455C
+ AB000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007A92
+ E300C7CFEB004D6ACB002F4079002D4CB400A9B3D500133195004A5FA5000000
+ 000000000000000000000000000000000000425CB200486DEC004D6CD2003D55
+ A600122C80005E6FA8003851A4004362CA004B70E800496EE700456AE600153A
+ B3007A95EC003F64E3003E64E3003C62E200D7D5D400CDCCCA00CBCAC800C7C5
+ C300CECCCB001F3B99005071E0003D54A20000000000B8C6F6009BB0F70093AA
+ F60093AAF60093AAF60093AAF60093AAF60093AAF60093AAF60093AAF60093AA
+ F60093AAF60093AAF60093AAF60093AAF60093AAF60093AAF60093AAF60093AA
+ F60093AAF60093AAF6006C80C9000000000000000000000000004D67BE006A87
+ E9007C97F4007C97F4006686F3004D67BE0000000000000000005A74CB004D67
+ BE004D67BE004D67BE004D67BE00728DEA007D98F5007D98F5007F9AF5004D67
+ BE004D67BE004D67BE004D67BE005A74CB000000000000000000000000004961
+ B3000535D4001E378A004066E500CED6F000A3B5F100AABAF2008BA1E9007E95
+ E200C7CFEB004D6ACB002F4079002D4CB400A9B3D500133195004A5FA5000000
+ 0000000000000000000000000000000000004760B700587CF2005166AD00D7D5
+ D400CBCAC800C9C7C600C7C5C300465DA9006283F2006082F1005C7EEF001B40
+ BB008AA2F3005477ED005377ED005175EC004361C7004261C70014339B003D5C
+ C5003C5CC5004166E2005678E8004259AC0000000000D7DFF900D5DEFC00D5DE
+ FC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DE
+ FC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DEFC00D5DE
+ FC00D5DEFC00D5DEFC007387CC000000000000000000000000004E68BF006E8A
+ EA008BA4F6008AA3F6007391F4004E68BF0000000000000000004E68C100607A
+ D0004E71E7006382E900738EEA0089A2F4008CA5F6008CA5F6008CA5F600738D
+ EA006483E9005A7BE800607AD0004E68C1000000000000000000000000004C65
+ B8000535D4001E378A004864C100CED6F000A3B5F100AABAF2007E8EC40090A0
+ D700C7CFEB004D6ACB002F407900384F9D00A9B3D500133195004A5FA5000000
+ 0000000000000000000000000000000000004861B8006082F2005E73BB00E4E5
+ EA00ECECEB00EBEBEA00EAEAE9005269B4006D8CF3006B8AF3006888F3001E43
+ BE0092A9F5006082F1005F81F1005C7EF000597CEF00577AEF001A3FBB005175
+ ED005074EC004A6FEB00597BEB00455DB100000000007185CC007589CE007589
+ CE007589CE007589CE007589CE007589CE007589CE007589CE007589CE007589
+ CE007589CE007589CE007589CE007589CE007589CE007589CE007589CE007589
+ CE007589CE007589CE005870C6000000000000000000000000004F69C000738E
+ EB009BB0F7009AAFF700809BF5004F69C0000000000000000000BFCDF600516A
+ C3005A78E0006384F300819BF50098AEF7009CB1F7009CB1F7009CB1F700829D
+ F5006686F3006183F200516AC300BFCDF6000000000000000000000000004E66
+ BC000535D4001F42B5005466A300A7B7ED00A3B5F100AABAF2007882A5009AA3
+ C30096A7E0004D6ACB0038509E004B5A8C00576CB300133195004A5FA5000000
+ 0000000000000000000000000000000000004962B9006888F3007D97F0007086
+ D000213FA3008D9DD2006A81CF007893F0007894F4007794F4007391F4002146
+ BE009BB0F7006C8BF3006A8AF3006888F3006586F3006384F3001D42BE005D7F
+ F1005C7FF1005478F0005C7EEF004761B7000000000000000000000000000000
+ 0000000000000000000000000000C7C5C500AFADAC00898685007D7A78007D7A
+ 78007D7A78007D7A78007D7A7800AFADAC008F8D8B0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000516BC2007B95
+ EC00BAC9FA00B9C8F90097ADF700516BC2000000000000000000000000000000
+ 000092A5EC00738EEB0098AEF700B4C4F900BBCAFA00BBCAFA00BAC9FA0097AD
+ F7007892EC005A73C6000000000000000000000000000000000000000000536D
+ C4000425940015349B002C469F005B6CA500727FA9007682A9006070A2005666
+ 9F004B5D990035498D002A3F86001F357E00091F6A000D226800344374000000
+ 0000000000000000000000000000000000004B65BC00708EF40089A2F60097AD
+ F70097ADF70095ACF70093AAF60090A8F6008EA6F6008CA5F60088A2F60087A1
+ F500859FF500829CF500809BF5007F9AF5007B97F4007995F4007894F4007491
+ F4006F8DF3006283F2006987ED004B65BC000000000000000000000000000000
+ 0000000000000000000000000000E0DEDE00D7D5D500D3D1D000D3D1D000D3D1
+ D000D3D1D000D3D1D000D3D1D000D5D3D2009C9A990000000000000000000000
+ 0000000000000000000000000000000000000000000000000000526CC3007A95
+ EC00C4D1FA00C3D0FA009CB1F700526CC3000000000000000000000000000000
+ 0000000000006179CB00809AEE00ABBDF800C9D5FB00C9D5FB00C1CEFA007B96
+ EE006179CB007991E20000000000000000000000000033437C0027376D002737
+ 6D0027376D0027376D0027376D0027376D0027376D0027376D0027376D002737
+ 6D0027376D0027376D0027376D0027376D0027376D0027376D0027376D002737
+ 6D00374780000000000000000000000000004D66BF007995F400829CF50091A8
+ F6009AAFF70099AFF70097ADF70096ACF70094ABF60092A9F6008FA7F6008DA5
+ F6008BA4F60088A2F60086A0F500849EF500819BF5007F9AF5007C97F4007592
+ F4006D8CF3005E80F2006C86E0004F6AC5000000000000000000000000000000
+ 0000000000000000000000000000DEDDDC00E4E3E200E4E3E200E4E3E200E4E3
+ E200E4E3E200E4E3E200E4E3E200E4E3E2009A97960000000000000000000000
+ 0000000000000000000000000000000000000000000000000000536DC600738E
+ E900AFC0F900B0C0F9008FA7F600536DC4000000000000000000000000000000
+ 0000000000006883DC00637BCD00869FF200BAC9FA00BAC9FA00A7B9F8006179
+ CC006883DC00000000000000000000000000000000002E3F7B004662BF004F6C
+ CD005F7DE3006685ED006988F1006382EB005F7FE8005B7BE4005474DD005070
+ D9004C6CD5004564CC004463CA004766CC004D6BD100506ED400516FD500536F
+ CC00364A91000000000000000000000000007990E200839CF0007E99F5007C97
+ F400839EF500839EF500839EF500829CF500819BF5007F9AF5007C97F4007B97
+ F4007A96F4007794F4007592F4007491F400718FF4006F8DF3006C8BF3006485
+ F3005F81F2006485F3005C73C70091A5EB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000CED8F7005770
+ C8006D8AEB006D8AEB006A83DA00C1CDF6000000000000000000000000000000
+ 00000000000000000000000000005973CF007390F2007592F2006E86D6000000
+ 000000000000000000000000000000000000000000003E539B00566EBF004463
+ CA005B7AE2007490EE007E99F3006987EC005D7DE7005273E2003B60D8002F54
+ D200244ACB000C35BE000831BA001239BE00254AC6002B50C9003256CD005D77
+ CE004458A000000000000000000000000000000000007991E300506AC3005069
+ C0005069C0005069C0005069C0005069C0005069C0005069C0005069C0005069
+ C0005069C0005069C0005069C0005069C0005069C0005069C0005069C0005069
+ C0005069C000506AC30000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C1CD
+ F6005670C7005670C700647ED900000000000000000000000000000000000000
+ 0000000000000000000000000000000000006580DC006681DD005D77CF000000
+ 000000000000000000000000000000000000000000006079C700566CB6005D77
+ CB006D87DD00748EE5007892E800708BE3006E88E1006A84DE00637DD8005E79
+ D5005B76D200536DCA00516CC9005570CC005B75CE005E78D1005E78D100556B
+ B2006880D2000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005972CA005972CA00C1CDF6000000
+ 0000000000000000000000000000000000000000000000000000677FD1005068
+ BC005068BC005068BC005068BC005068BC005068BC00485EA900485EA900485E
+ A900485EA9005068BC005068BC005068BC005068BC005068BC005068BC006E85
+ D300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000879BE00044589E004458
+ 9E00475A9E000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DADADA00C7C7C700C0C0
+ C000C0C0C000253566002A396E00AFBCE400C8C8C800D5D5D500DEDEDE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000032458D00DDE2
+ F600DFE4F700DFE4F700E0E5F700E0E6F700E0E6F700E1E7F800E3E8F800E3E8
+ F800E4E9F800E4E9F800E5EAF800E5EAF800E6EBF800E7EBF900E7EBF900E8EC
+ F900E9EDF900E9EDF90032458D00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B9C6
+ F1002C3F7D003E58AE003F58AA00425287000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000293973008C99C6008897C9004963B7001F3E
+ A60003269C001F3EA6004963B7006A7EC2008C99C60029397300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000035499400D8DF
+ F600C9D2F200C9D2F200CAD3F200CCD5F400CDD6F400CED7F400CFD7F400D0D8
+ F400D0D8F400D2DAF500D3DBF500D4DBF500D6DDF500D6DDF500D7DEF500D9E0
+ F600DAE0F600DBE1F70035499400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B9C6F1002E42
+ 81004A5D9D000F309D000F2F9A003F58AA003044890000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005871C0003D54A2002C4082005165A9004A65
+ BD000328A3004661BC005165A9004A598E002C3C7A005871C000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000384E9A00D5DC
+ F600C3CEF300C4CFF300C4CFF300C5D0F300C5D0F300C6D0F300C8D2F400C9D3
+ F400C9D3F400CBD4F400CCD5F400CCD5F400CED7F500CFD8F600D0D9F600D2DA
+ F600D2DAF600D3DBF600384E9A00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000304285004B5F
+ A1003F5AB70003269B00032698000F2F9A004453880031458A00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000042528C00516B
+ C200042AAA00506AC40042528C008397DE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000003F56AA00D7DF
+ F9000537DD00C6D1F700C6D1F700C6D1F700C5D1F7000537DD00C5D1F700C4D0
+ F700C4D0F700C4D0F700C4D0F700C3CFF7000537DD00C3CFF700C3CFF700C4D0
+ F7000537DD00C4D0F7003F56AA00000000000000000000000000000000000000
+ 000000000000000000000000000000000000BAC7F20035498F003E5BBE000F33
+ AB000429A50003279F0003279D0003269B000F2F9A003F58AA00445489000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000034488D005771
+ C600042EB9005771C60034488D00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000425AB000D8E0
+ FA000538E500C7D3F900C7D3F900C7D3F900C6D2F9000538E500C6D2F900C6D2
+ F900C6D2F900C6D2F900C6D2F900C5D1F9000538E500C5D1F900C4D0F800C4D0
+ F8000538E500C4D0F800425AB000000000000000000000000000000000000000
+ 0000000000000000000000000000BAC7F200374B93005165AD001035B100042A
+ AA00A0AEDE000328A20003279F0003279D00032698000F2F9A003F58AA003247
+ 8B00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000374C93005873
+ CB00042FC0005873CB00374C9300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000455EB600DAE2
+ FC00053AEB00CAD5FB00CAD5FB00C9D5FB00C9D5FB00053AEB00C8D4FB00C8D4
+ FB00C8D4FB00C7D3FB00C7D3FB00C7D3FB00053AEB00C7D3FB00C6D2FA00C6D2
+ FA00053AEB00C6D2FA00455EB600000000000000000000000000000000000000
+ 0000000000000000000000000000394E9700546AB2004A67CA000C32B200052C
+ AD0099A6D000A0AEDD000328A20003279F0003269B00032698000F2F9A004555
+ 890033478C000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000003A509A005974
+ D0000431C7005974D0003A509A00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004861B900DEE5
+ FC000F42EC00D0DAFB00D0DAFB00CFD9FB00CFD9FB000F42EC00CED8FB00CED8
+ FB00CED8FB00CDD8FB00CDD8FB00CDD8FB000F42EC00CCD7FB00CCD7FB00CCD7
+ FB000F42EC00CBD6FB004861B900000000000000000000000000000000000000
+ 000000000000BDC9F4003D54A0005C78D500395BCB002B4FC600A7B5E5001439
+ B8000C32B200939FC600FFFFFF00A0AEDD0003279F0003279D0003269B000F2F
+ 9A003F58AA0046568A0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004057A7005B77
+ DA000636D6005B77DA004057A700000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000364C97002B3C76002B3C
+ 76002B3C76002B3C76002B3C76002B3C76002B3C76002B3C76002B3C76002B3C
+ 76002B3C76002B3C76002B3C76002B3C76002B3C76002B3C76002B3C76002B3C
+ 76002B3C76002B3C7600000000000000000000000000000000004963BA00DFE6
+ FC001949ED00D3DCFB00D3DCFB00D3DCFB00D3DCFB001A4AED00D2DBFB00D2DB
+ FB00D2DBFB00D2DBFB00D2DBFB00D1DBFB001A4AED00D1DBFB00D1DBFB00D0DA
+ FB001A4AED00CFD9FB004963BA00000000000000000000000000000000000000
+ 0000BDC9F4003F57A3005F76C0004767D2003A5CCD003255C900FFFFFF00A7B5
+ E5001439B80004269800939FC600FFFFFF000328A20003279F0003279D000326
+ 98000F2F9A003F58AA0033488D00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000435BAE005F7D
+ E0000E3EDF005F7DE000435BAE00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003F559E004E6CD000274D
+ CD002B50CD002B50CD002B50CD002C51CD002C51CD002C51CD002C51CD002C51
+ CD002C51CD002C51CD002C51CD002C51CD002C51CD002B50CD002B50CD002A4F
+ CD00274DCD004E6CD000000000000000000000000000000000004A64BB00E2E8
+ FD002251ED00D7DFFC00D6DFFC00D6DFFC00D6DFFC002453EE00D6DFFC00D6DF
+ FC00D5DEFC00D5DEFC00D5DEFC00D5DEFC002453EE00D4DDFC00D4DDFC00D4DD
+ FC002352ED00D2DBFB004A64BB00000000000000000000000000000000000000
+ 00004259AA006379C4006883DF004A6AD5004364D2003B5DCD00A5B0D300FFFF
+ FF00A7B5E5000C32B20004269800939FC600A0AEDD000328A20003279F000326
+ 9B00032698000F2F9A0046568B003A4F99000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000465FB4006381
+ E5001747E7006381E500465FB400000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A75D1005771C8006472
+ A8006A80CA005771C8005771C8005771C8005771C8005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8005771C8005771C8005771C8007684
+ B4006472A8005771C800000000000000000000000000000000004D66BE00E5EA
+ FD003761EF003862EF003862EF003862EF003862EF003862EF003862EF003862
+ EF003862EF003862EF003862EF003862EF003862EF003862EF003862EF003862
+ EF003761EF00D8E0FC004D66BE00000000000000000000000000BECCF500465E
+ B2007590E7006D88E5006985E200BDC7E700FFFFFF00B9C5EE003B5DCD003250
+ B600A5B0D300A7B5E5001439B8000C32B200939FC600FFFFFF00A0AEDD000327
+ 9F000F31A100405AB000364B9300000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004B65BC006B88
+ EB002755EE006B88EB004B65BC00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005A74
+ C7002247C100042FBF00042FBF00042FBF00042FBF00042FBF00042FBF00042F
+ BF00042FBF00042FBF00042FBF00042FBF00042FBF00042FBF00042FBF004A60
+ AA005A74C70000000000000000000000000000000000000000004E68BF00E6EC
+ FD004169F000E1E7FD00E1E7FD00E1E7FD00E1E7FD00436BF000E0E6FC00E0E6
+ FC00E0E6FC00DFE6FC00DFE6FC00DFE6FC00436BF000DEE5FC00DEE5FC00DEE5
+ FC004169F000DBE2FC004E68BF000000000000000000BECCF5004961B7006D84
+ D0007892E9007892E800728CE600617BCF00BAC3E100FFFFFF004364D2003B5D
+ CD003250B600FFFFFF00A7B5E5001439B80004269800939FC60099A5CE000F32
+ A700415BB5004B5B950000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004C66BD006E8B
+ EB00305CEE006E8BEB004C66BD00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007D93
+ E0003457CD000432CA000432CA000432CA000432CA000432CA000432CA000432
+ CA000432CA000432CA000432CA000432CA000432CA000432CA000432CA004B61
+ AF007D93E00000000000000000000000000000000000000000004F69C000E7EC
+ FD004B71F100E4E9FD00E4E9FD00E4E9FD00E4E9FD004D72F100E3E9FD00E3E9
+ FD00E3E9FD00E3E9FD00E3E9FD00E3E9FD004D72F100E2E8FD00E2E8FD00E1E7
+ FD004B71F100DEE5FC004F69C00000000000000000004B67C0006A83D30089A1
+ F000889FED00819AEB007993E8006A85E200617BCF00BAC3E100B9C5EE004364
+ D2003B5DCD00A5B0D300FFFFFF00A7B5E5000C32B2000426980003259500415C
+ B9004C5E9A003B519B0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004D67BE00728E
+ EC003862EF00728EEC004D67BE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005E7BDD00234FE100234FE100234FE100234FE100234FE100234FE100234F
+ E100234FE100234FE100234FE100234FE100234FE100234FE100224EE0004E64
+ B500000000000000000000000000000000000000000000000000526CC300EBF0
+ FD005D80F2006183F2006183F2006183F2006183F2006183F2006183F2006183
+ F2006183F2006183F2006183F2006183F2006183F2006183F2006183F2006183
+ F2005E80F200E4E9FD00526CC30000000000000000004C66BD00728FF20095AB
+ F30099AEF20091A7F0008AA1EE007993E800728CE6006A85E200BAC3E100FFFF
+ FF00B9C5EE003B5DCD003250B600A5B0D3001B40BC001B40B9004562C1003E56
+ A200000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005069C0007B95
+ ED004A70F0007B95ED005069C000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006984E1003E66EE003862ED003B64ED003B64ED003B64ED003B64ED003B64
+ ED003B64ED003B64ED003B64ED003B64ED003B64ED003862ED003E66EE004F68
+ C300000000000000000000000000000000000000000000000000536DC400ECF0
+ FE00EBF0FD00EBF0FD00EBF0FD00EBF0FD00EBF0FD00EBF0FD00EAEFFD00EAEF
+ FD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00E9EEFD00E9EEFD00E9EEFD00E8ED
+ FD00E8EDFD00E6EBFD00536DC40000000000000000004D67BF007693F300A1B4
+ F600A1B4F40099AEF20091A7F000819AEB007993E800728CE600617BCF00BAC3
+ E100FFFFFF004364D2003B5DCD003250B600274BC2004A67C7005366A8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000516AC1007D97
+ EE005176F1007D97ED00516AC100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006781DA005378F100496FF0005176F1005176F1005176F1005176F1005176
+ F1005176F1005176F1005176F1005176F1005075F100496FF0005378F1005975
+ D100000000000000000000000000000000000000000000000000546EC500EDF1
+ FE00EDF1FE00EEF2FE00EEF2FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1
+ FE00EDF1FE00ECF0FE00ECF0FE00ECF0FE00ECF0FE00ECF0FE00ECF0FE00ECF0
+ FE00EAEFFD00E7ECFD00546EC50000000000000000004E68C0007A96F400A9BB
+ F700A3B4F1006078C7004B63B600506BC6007C95E7007993E8006A85E200617B
+ CF00BAC3E100B9C5EE004364D2003A5CCD00516DCD00566AAB00445AAA000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000526BC200809A
+ EE005A7DF200809AEE00526BC200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000647AC900728FF100577BF2005C7FF2005E80F2005F81F2006082F2006082
+ F2006082F2006082F2005F81F2005E80F200567AF200587CF200728FF1009FB1
+ F0000000000000000000000000000000000000000000000000005770C700F0F3
+ FE007B97F40087A1F5008AA3F6008AA3F6008AA3F6008AA3F6008AA3F6008AA3
+ F6008AA3F6008AA3F6008AA3F6008AA3F6008AA3F6008AA3F6008AA3F60087A1
+ F5007A96F400EBF0FD005770C7000000000000000000506AC1007A96F400B1C1
+ F900506AC100D2DBF80000000000A9BAF0004B63B6008AA1EE007993E800728C
+ E6006A85E2005771CB004B6BD7005D79D7004960B30000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009FAFE9005671CC0000000000000000000000000000000000546EC50088A0
+ EF006B8AF30088A0EF00546EC500000000000000000000000000000000005A72
+ C600A1B1E900546EC50000000000000000000000000000000000000000000000
+ 00005A75D1006E84D2007690EA007D97EB007F98EB007F98EB008099EB008099
+ EB008099EB008099EB007F98EB007F98EB007A94EA007790EA006E84D2000000
+ 00000000000000000000000000000000000000000000000000005871C800F0F3
+ FE00F1F4FE00F2F5FE00F3F6FE00F3F6FE00F3F6FE00F3F6FE00F2F5FE00F2F5
+ FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00F1F4FE00F1F4FE00F0F3
+ FE00EEF2FE00EBF0FD005871C8000000000000000000516BC2006F8DF300A9BB
+ F800516BC200D3DBF90000000000BFCDF5004D66BA007F99ED00819AEB007993
+ E800728CE6005776DD00637FDC005F73BA000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008AA1EC006B81CD00AFBEF300000000000000000000000000556FC6008BA2
+ F0007290F4008BA2F000556FC600000000000000000000000000000000007589
+ D200879FEF00556FC60000000000000000000000000000000000000000000000
+ 000000000000647EDB005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C900647EDB000000
+ 00000000000000000000000000000000000000000000000000005872C900F1F4
+ FD00F4F6FD00F5F7FD00F6F8FD00F6F8FD00F6F8FD00F6F8FD00F6F8FD00F5F7
+ FD00F5F7FD00F5F7FD00F5F7FD00F5F7FD00F5F7FD00F5F7FD00F4F6FD00F4F6
+ FD00F3F6FD00F1F4FD005872C9000000000000000000546FCB006680D90099AF
+ F7006E84D1005E78D100D3DBF900556FCB00647BCA0099AEF2008AA1EE00819A
+ EB00748FE7006984E0006277BF004D65BA000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007993EE00748EE5005870C8000000000000000000000000005670C7008FA6
+ F1007A96F4008FA6F1005670C70000000000000000000000000093A7ED007791
+ E7007C96EE005E79D50000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCDF600536E
+ C7009EB3F700B6C6F900C3D0FA00B7C6F800B1C1F800A8BAF50092A8F100809A
+ EE00758FE900526BC20000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000819AEB006183F2005579F100486DE8004469E8004469E8005174E9006585
+ F1007894F4006484F1005074E900466BE8004469E8004A6EE8004E73EF006586
+ F3007992E500607AD70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C1CD
+ F600748DDD0099AFF700ACBDF800B5C5F900AFBFF800A6B8F600869FF100809A
+ EE006B81CC000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000095A8E600A8B9F300AABBF300A5B7F300A4B6F300A4B6F300A9B9F300AFBF
+ F500B1C1F500AEBEF500A8B9F300A5B7F300A4B6F300A6B8F300AABAF300A8B9
+ F30095A8E600607AD70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005670C8006982DC007C96ED0089A0EE00869EEE00839BED00738EE9006C83
+ D0005671CA000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C900879CE90000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CBCBCB00C7C7C70095A4D9002B3A6A002B3A6A002B3A6A002B3A6A002B3A
+ 6A002B3A6A002B3A6A002B3A6A002B3A6A003040790095A4D900C5C5C500D3D3
+ D300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000DBDBDB00D1D1D100C9C9C900C7C7
+ C700C7C7C700C5C5C500C5C5C500C5C5C50029386D0030417800C5C5C500D3D3
+ D300000000000000000000000000000000000000000000000000000000000000
+ 00007789C8002C375F0033458000C3C3C300C5C5C500D1D1D100DCDCDC000000
+ 00000000000000000000DADADA00D5D5D500C3C3C300B1BCE500394B89007587
+ C600DADADA000000000000000000000000000000000000000000000000000000
+ 000000000000B2BFEE002D407D003758C6003758C6003758C6003758C6003758
+ C6003758C6003758C6003758C6003758C6003C53A1002E407C00B1BFED000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000028387100032698000326
+ 98004E66B6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000007F92D80029396C008494C80025346900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CED7F60031417A00536BBC002D3D7800647BC90000000000000000000000
+ 0000000000000000000000000000000000002D3D780041569B004B66BE00B7C5
+ F100000000000000000000000000000000000000000000000000000000000000
+ 000031458E003E58AF003358D600042CB300042CB300042CB300042CB300042C
+ B300042CB300042CB300042CB300042CB3000D34B9003358D6003E58AF00BAC6
+ F200000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002C3D79000328A2000328
+ A2004F69BE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008093D900324273005466A5008393C80027366B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000354C98003C529C00425DB400384984003D54A200000000000000
+ 00000000000000000000000000003D54A200425CB0002245B8003E55A1000000
+ 000000000000000000000000000000000000000000000000000000000000BAC7
+ F2004059B200345AD9000D36BE00042DB700042DB700042DB700042DB700042D
+ B700042DB700042DB700042DB700042DB700042DB7000D36BE00345AD9003348
+ 9100BAC7F2000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002F418200042BAD00042B
+ AD00506BC6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000036457A005568AA00324DAA008494CC00293A7300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007389D500495991001338B2003A59C0004054960094A6E5000000
+ 000000000000A5B6EC002F42860040549600163BB400092EA9004B5B95000000
+ 0000000000000000000000000000000000000000000000000000BCC8F300354A
+ 95003359DA000D37C200042EBC00042EBC00042EBC00042EBC00042EBC00042E
+ BC00042EBC00042EBC00042EBC00042EBC00042EBC00042EBC000D37C200415B
+ B500354A9500BCC8F30000000000000000000000000000000000000000000000
+ 000000000000364B94005C76CD00183DB800183DB800183DB8000D37C3000D37
+ C3000D37C300183DB800183DB800183DB800364B940000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000003850
+ 9D00455690002042B300042AA900042AA9008496D4002F428100000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000003B54A200042CB100042CB100042CB100435EBE003E51
+ 9500344890004660BD002146C200072EB300042CB1004961AE00384D98000000
+ 00000000000000000000000000000000000000000000384F9E00435DBA00335A
+ DE000431C5000431C5000431C5000431C5000431C5000431C5000431C5000431
+ C5000431C5000431C5000431C5000431C5000431C5000431C5000431C5000D39
+ CB00335ADE00435DBA00BDC9F400000000000000000000000000000000000000
+ 0000000000003A509B005B79DD001540CF001540CF001540CF001540CF001540
+ CF001540CF001540CF001540CF001540CF003A509B0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000003C54A3005365
+ A400516CC700042CB200042CB200042CB2008497D90033468700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000788ED900163CBB00062FB700062FB700133ABE003C5C
+ C900465EAF00163DBF00062FB700062FB7001138BA005062A2005E76C9000000
+ 000000000000000000000000000000000000BDC9F400435FBD00335BE0000D3A
+ CE000432CB000432CB000432CB000432CB000432CB000432CB000432CB000432
+ CB000432CB000432CB000432CB000432CB000432CB000432CB000432CB000432
+ CB000D3ACE00335BE0003A52A100BDC9F4000000000000000000000000000000
+ 0000000000003E54A5006782DD006A84DD006A84DD006A84DD001D49DA001D49
+ DA00617FE5006A84DD006A84DD006A84DD003E54A50000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CED7F6006179C7004258A50033488F005568AA004D6A
+ CC001239BE00042EBB00042EBB00042EBB008499DD00364A9000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D0D8F7004762C1001139BE001139BE001139BE00143B
+ C0002E53CD001139BE001139BE001139BE003959C30040539600BCC8F3000000
+ 0000000000000000000000000000000000004159AD00345CE3000D3BD3000433
+ CF000433CF000433CF000433CF000433CF000433CF000433CF000433CF000433
+ CF000433CF000433CF000433CF000433CF000433CF000433CF000433CF000433
+ CF000433CF000D3BD3004561C0004159AD000000000000000000000000000000
+ 0000000000000000000000000000000000008197E500455FB6002D59ED002D59
+ ED00587BF1008197E50000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004C5F9F005971BF004A66C5002447BA001237B4007288D2004F6FDB000432
+ CD000432CD000432CD000432CD000432CD00849BE6003D53A0007087D9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005669AA003458D0002B50CE002B50CE002B50
+ CE002B50CE002B50CE002B50CE002B50CE00596DAF00647CD000000000000000
+ 0000000000000000000000000000000000004159A9000535D9000535D9000535
+ D9000535D9000535D9000535D9000535D9000535D9000535D9000535D9000535
+ D9000535D9000535D9000535D9000535D9000535D9000535D9000535D9000535
+ D9000535D9000535D9003760E8004159A9000000000000000000000000000000
+ 00000000000000000000000000004A62BC00526AC4004D6DD5003560EF003560
+ EF003560EF00526AC4004A62BC008198E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005A74C9001C43C500042FC000042FC000042FC000728ADB005273E2000D3C
+ D7000E3DD8000E3DD8000E3DD8000E3DD800869DEB004058A800576EB8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000465BA500395BCB00385CD400385CD400385C
+ D400385CD400385CD400385CD400385CD4004B60A7004D66BC00D1DAF7000000
+ 000000000000000000000000000000000000435BAF000537DD000537DD000434
+ D200042CB100042CB100042EB9000537DD000537DD00042CB1000537DD000537
+ DD000430C400042CB100042CB1000430C4000537DD00042CB1000537DD000537
+ DD000537DD000537DD00365FE900435BAF000000000000000000000000000000
+ 000000000000000000005C76D2005171DE003D66EF003D66EF003D66EF003D66
+ EF003D66EF003D66EF005171DE00526BC1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005071DE000433CF000433CF000433CF000433CF00728DE4005779E9001A48
+ E1001C4AE1001C4AE1001C4AE1001C4AE10089A1EF00445DB0004E71E500738C
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 000000000000ABBBF0004159AB006580DD004B6DDD004669DC004669DC004669
+ DC004669DC004669DC004669DC004669DC006480DE00576EB8004159AB000000
+ 000000000000000000000000000000000000455EB300093BE300093BE2003B5A
+ C000FFFFFF00FBFBFB00BCC3DD00093BE200093BE200F2F2F200093BE2000835
+ CC007F90CB00FFFFFF00F5F5F5007F90CB00093BE200F2F2F200093BE200093B
+ E200093BE200093BE2003861EB00455EB3000000000000000000000000000000
+ 0000839AE6006279C7006A88EE004D72F1005879E5005D76CA004E68C3004E68
+ C3004F68BD005879E5004D72F1004D72F1006279C700839AE600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006384F300456CF0004C72F1004C72F100466DF00088A1F5005E80F200335E
+ EF003862EF003862EF003862EF003862EF008EA6F6004A64BC00093DEB00516A
+ BE0000000000000000000000000000000000000000000000000000000000BFCC
+ F5005A70BB00728BDF006D8AEA006180E7006180E7006180E7006180E7006180
+ E7006180E7006180E7006180E7006180E7006180E700607FE7006B88EA005E73
+ BD004A63BA00ABBBF10000000000000000004A64BB001949ED001B4BED001B4B
+ ED001B4BED003761EF00C4D0F9001B4BED001B4BED00FFFFFF001B4BED00C2C9
+ E2007F9AF5001B4BED001B4BED00708EF4001B4BED00F5F5F5004F6CCE003A5A
+ C3001741CF001B4BED004068F0004A64BB000000000000000000000000000000
+ 00005169C2008A9FE9005378F100617FE500536CBF007990E200000000000000
+ 0000D2DBF800536CBF00617FE5005378F1008A9FE9005169C200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006F8DF3006787F3006F8DF3006F8DF3006888F30095ACF7006283F2004068
+ F000466DF000466DF000466DF000466DF00091A8F6004B65BD00093DEB004B65
+ BD00000000000000000000000000000000000000000000000000768EDF004C64
+ B7007D97EB007590ED006D8AEB006D8AEB006D8AEB006D8AEB006D8AEB006D8A
+ EB006D8AEB006D8AEB006D8AEB006D8AEB006D8AEB006D8AEB006D8AEB007C96
+ ED006F85D0004C64B70000000000000000004B65BD002050ED002352ED00315D
+ EF00E3E9FD00FFFFFF00C8D4FB002352ED002352ED00FFFFFF002352ED00FBFB
+ FB005A7DF2002352ED002352ED005A7DF2002352ED00FFFFFF00C9D5FB00EDF0
+ FA0092A0D0002352ED00446BF0004B65BD000000000000000000000000000000
+ 00007288D000718FF4005B7EF200566EC10091A4EB0000000000000000000000
+ 00000000000091A4EB00566EC1006684E700718FF4007288D000839AE7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007995F400839EF50090A8F60090A8F600859FF500A0B4F7006586F3004D72
+ F1005378F1005378F1005378F1005378F10094ABF6004C66BE002553EE004F6A
+ C50000000000000000000000000000000000000000005672CE00586FBE00738C
+ DE007D97F1007C97F1007C97F1007C97F1007C97F1007C97F1007C97F1007C97
+ F1007C97F1007C97F1007C97F1007C97F1007C97F1007C97F1007C97F1007D97
+ F1007E99F1007790E200526DC700BFCCF5004C66BD002957EE002C59EE00BCCA
+ FA007D98F500486FF0002C59EE002C59EE002C59EE00FFFFFF002C59EE00D8E0
+ FC0088A2F6002C59EE002C59EE007B97F4002C59EE00FFFFFF002C59EE00476E
+ F000F8F8F8002C59EE00486FF0004C66BD000000000000000000000000000000
+ 00009EB1F2006B8AF300738FEE00D3DBF8000000000000000000000000000000
+ 00000000000000000000D3DBF800566EC2006B8AF3009EB1F2004F69C2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000089A0EC009FB3F700AFC0F900B8C7F900A6B9F800ACBDF8006C8BF3006485
+ F3006F8DF3006F8DF3006F8DF3006F8DF30099AFF7004E68C000667DCB000000
+ 00000000000000000000000000000000000000000000516BC200516BC200516B
+ C200516BC200516BC200516BC200516BC200516BC200516BC20094ABF60095AC
+ F70095ACF70093AAF600879DE600516BC200516BC200516BC200516BC200516B
+ C200516BC200516BC200516BC2005671CD004E68BF003963EF003E67F0006384
+ F300FFFFFF00FFFFFF00CFD9FB00FFFFFF00FFFFFF00FFFFFF00FFFFFF003E67
+ F000ACBDF800FFFFFF00FFFFFF00ACBDF8003E67F000FFFFFF00FFFFFF00F2F5
+ FE009FB3F7003E67F0004F74F1004E68BF000000000000000000000000000000
+ 0000A4B6F3007391F4007C97ED00000000000000000000000000000000000000
+ 0000000000000000000000000000526DC8007391F400A4B6F3005069C1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000768CD400B1C0F200B5C5F900B4C4F9009EB3F700A7B9F800718FF4006D8C
+ F3007C97F4007D98F5007D98F5007D98F5009CB1F7004F69C1007991E3000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000007189E000A3B6F800A2B6
+ F800A2B6F800A0B4F7007A8FD6006882DC000000000000000000000000000000
+ 0000000000000000000000000000000000004F69C0003F68F000476EF000486F
+ F000486FF000486FF000486FF000486FF000486FF000486FF000486FF000486F
+ F000486FF000486FF000486FF000486FF000486FF000486FF000486FF000486F
+ F000486FF000476EF0005075F1004F69C0000000000000000000000000000000
+ 0000A9BAF300809BF500839CEF00000000000000000000000000000000000000
+ 0000000000000000000000000000536EC900809BF500A9BAF300516BC2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006881DB00506AC200657BC9008196DB008FA2E5008EA5F0008FA7F6007794
+ F400859FF5008AA3F6008AA3F6008AA3F6009FB3F700506AC200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BFCDF600AFBFF500B0C0
+ F900B0C0F900ACBDF6006078C9009FB1F0000000000000000000000000000000
+ 000000000000000000000000000000000000506AC100466DF0004E73F1005075
+ F1005075F1005075F1005075F1005075F1005075F1005075F1005075F1005075
+ F1005075F1005075F1005075F1005075F1005075F1005075F1005075F1005075
+ F1005075F1004E73F1004F74F100566FC3000000000000000000000000000000
+ 0000A5B5EA00A2B6F8008AA3F6007A92E4000000000000000000000000000000
+ 000000000000000000007A92E4007D90D600A2B6F800A5B5EA005C77D4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005871CF008A9C
+ DC00A8B9F6009BB0F700A4B7F800A5B8F800A3B6F800536DC400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000007F94D800C4D1
+ FA00C9D5FB008DA0DF006983DD00000000000000000000000000000000000000
+ 000000000000000000000000000000000000BFCDF6008499E0006686F3005A7D
+ F2006283F2006283F2006283F2006283F2006283F2006283F2006283F2006283
+ F2006283F2006283F2006283F2006283F2006283F2006283F2006283F2006082
+ F2005A7DF2006686F300526CC500BFCDF6000000000000000000000000000000
+ 00008597D800B3C3F90097ADF700637ACA0092A7EC0000000000000000000000
+ 00000000000092A7EC00637ACA0096AAEE00B3C3F9008597D800849BE8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005872
+ CF00758BD20097ADF70097ADF700A0B4F700A1B5F700546EC500000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000667DCD00BCCA
+ F700CDD8FB006D84CF009FB1F000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000536DC60090A2E200718F
+ F4006787F3006B8AF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8B
+ F3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3005D80
+ F200718FF40090A2E200BFCDF600000000000000000000000000000000000000
+ 00005B74C900B9C6F200B2C2F9009FB1EF00657BCB007C92E500000000000000
+ 0000D3DBF900657BCB009FB1EF009AAFF700B9C6F2005B74C900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006883DC00A7B9F40098AEF700849EF5009EB3F700556FC600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005771C900A9B8
+ EC00CAD5FB005771C80000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BFCDF600536EC70091A4
+ E2006384F300708EF4007592F4007592F4007592F4007592F4007592F4007592
+ F4007592F4007592F4007592F4007592F4007592F4007592F4007290F4007491
+ F40091A4E200536EC70000000000000000000000000000000000000000000000
+ 0000000000006B84DE008093D600BCCAFA00ACBDF800A7B9F800AFBFF500AFBF
+ F500ADBDF600ACBDF800BCCAFA00C5D1F9006B84DE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000093A7ED00677ECD009DAFEE0094ABF6005771C800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009FB1F000667D
+ CD009AAFF40093A8ED0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C1CD
+ F60099A9E3008CA5F6007894F40086A0F50086A0F50086A0F50086A0F50086A0
+ F50086A0F50086A0F50086A0F50086A0F500839EF5007894F40093AAF6005670
+ C800C1CDF6000000000000000000000000000000000000000000000000000000
+ 000000000000000000006B85DE00C2CEF400C2CFFA00B7C7F900A9BBF800A9BB
+ F800B0C0F900C2CFFA00C2CEF400798ED5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000093A8ED005D76CA008DA5F6005771C800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005771
+ C9008297E1000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005771C9009AAAE300ABBDF8008AA3F6008EA6F6008FA7F6008FA7F6008FA7
+ F6008FA7F6008FA7F6008FA7F6008EA6F6007E99F500ABBDF8009DACE500C1CD
+ F600000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E76CC008D9EDB00B5C2ED00C6D2F800C6D2
+ F800C6D2F8008D9EDB005E76CC00879CE9000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C1CDF6008FA2E5005771C800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000647E
+ DA00667DCD000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C1CDF6005771C9009DACE50090A8F60099AFF7009DB2F7009FB3F7009FB3
+ F7009FB3F7009EB3F7009DB2F70098AEF700ABBDF8009DACE5005771C9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C1CDF6005771C8005771C8005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8005874CF00C1CDF600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D6D6D600CDCDCD00C7C7C7007487C6002938
+ 6D0025346A00C5C5C500C7C7C700CBCBCB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005E72B6002632
+ 5B0026325B0026325B0026325B0026325B0026325B0026325B0026325B002632
+ 5B0026325B0026325B0026325B0026325B0026325B0026325B00687BBC00CFCF
+ CF0000000000000000000000000000000000000000000000000000000000D3D3
+ D300C0C0C00025346D0027315900273159002731590027315900273159002731
+ 590027315900273159002731590027315900273159002E3D7300C0C0C000CBCB
+ CB00DEDEDE000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DFE5F90032406C005261
+ 970046568B00455AA500DFE5F900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004C64B4003F59AE002C52
+ D2000D35BA000E36BB000E36BB000E36BB000E36BB000E36BB000E36BB000E36
+ BB000E36BB000D35BA000C34BA00284ECE00142A74002240A6003C54A5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000293973004E67B80003269B0003269B0003269B0003269B000326
+ 9B0003269B0003269B0003269B0003269B004E67B80029397300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000B7C5F100293C7A0045548D0017369D001C3A
+ 9E00032083003F57A70043528600283873000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000006E85CF00273773002534690025346900364D96006E85
+ CF00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000354C97004A68CE003358
+ D600355AD200365AD200365AD200365AD200365AD200365AD200365AD200365A
+ D200365AD2003358D2002C52D1004166DF000A2479001335A500425FC0000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000002B3C77004E68BC0003279F0003279F0003279F0003218700021C
+ 700003228A0003279F0003279F0003279F004E68BC002B3C7700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000334685006F7EB1003F5AB20003269B002946
+ A900032288000F2F99003F58A90048599300B6C5F10000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007287D100293B7900233576000C2A8F000C2A8F000C2A8F00172F82002335
+ 7600293B79000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002E407F005271DE004166
+ E2005374E3005677E4005777E4005777E4005777E4005777E4005777E4005777
+ E4005777E4005072E3004267E0005275EA0003218700092EA9004160CA000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000002D3E7C004E68BF000328A4000328A4000328A40003238C00FFFF
+ FF0003238F000328A4000328A4000328A4004E68BF002D3E7C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000007483B4003D59B800072CA4000328A1002947
+ AD000321870003269A00072999003751AA003244840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000293B7B00143090000328A1001638A8001638A8001638A8000328A1000328
+ A100143090004F67B60000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003C54A30033468A003346
+ 8A0033468A003A4C8B0030438400304384003043840030438400304384003043
+ 84003043840030438400304384003043840003249100042DB500365BD9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000031448500506BC700042BAE00042BAE00042BAE00042BAE00042B
+ AE00042BAE00042BAE00042BAE00042BAE00506BC70031448500000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000006880D0006170A400173CB7001036B5001237B5000F34B1003D5B
+ BF0006258B00062BA7000429A3000328A000465FB0003D4D81006179C7000000
+ 0000000000000000000000000000000000000000000000000000788DD9002F44
+ 8D002045BD004B68CA00566FBF003E509000374D9A00374D9A004D609F00566F
+ BF002045BD002648B70044569700788DD9000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000364A8F003358D30003279F0003279F0003279F0003279F0003279F000327
+ 9F0003279F0003279F0003279F0003279F00042AA900042EBB00375DDC000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000034468900506CCA00042CB300042CB300042CB300042CB300042C
+ B300042CB300042CB300042CB300042CB300506CCA0034468900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000BAC7F200455796008496D300153BBC00183EBD00193EBC001F44BC004361
+ C60008278E000D32AE000A2FAB00052AA6001F3FAA00485FAA00324279000000
+ 0000000000000000000000000000000000000000000000000000374D98001E3F
+ AD00506ED3005C75C60042559800D0D8F70000000000000000006B83D3004255
+ 98005C75C6000B35C000546EC1003A509A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000384D9500375DDE000430C2000430C2000430C2000430C2000430C2000430
+ C2000430C2000430C2000430C2000430C2000430C2000430C200375DDE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000036498E004F6CCD00042DB800042DB800042DB800042DB800042D
+ B800042DB800042DB800042DB800042DB8004F6CCD0036498E00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000465FB2008B98C8004968D0001E44C4002147C6002146C500284CC4004866
+ CC000B2B94001439B7001035B2000D32AE000429A500324FB2004D5E98000000
+ 000000000000000000000000000000000000000000007B92DD00354EA200113C
+ CC005F78CF004559A100889DE30000000000000000000000000000000000889D
+ E3004559A100133ECC003156D3005165AC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00003D54A000375EE3000433CE00829DF500829DF500829DF500829DF500829D
+ F500829DF500829DF500829DF500829DF5000433CE000433CE00375EE3000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003A4F9700506ED4000430C2000430C2000430C2000430C2000430
+ C2000430C2000430C2000430C2000430C200506ED4003A4F9700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000091A0D1004769D800234BD1003055D4003055D4002F54D3004062D4005371
+ D7001132A0002146C5001D42C100193EBC001035B3000A2FAD002C4BB4003F55
+ A2000000000000000000000000000000000000000000435AB000254DD4003059
+ E2004D63B000D1DAF80000000000000000000000000000000000000000000000
+ 0000D1DAF800355BDC001E4BE0006682E0000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004057A600375FE6000636D4000737D4000737D4000737D4000737D4000737
+ D4000737D4000737D4000737D4000737D4000737D5000636D400375FE6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003C529C004F6ED7000431C7000431C7000431C7000431C7000431
+ C7000431C7000431C7000431C7000431C7004F6ED7003C529C00000000000000
+ 000000000000000000000000000000000000000000000000000000000000D1DA
+ F8008EA2E6002A52D7002F56D800375CDB00375CDB00365BDA004668DA005876
+ DC001334A300274CCB002348C7001F44C300163BB9000F34B3001035AF003B4C
+ 8400CED7F70000000000000000000000000000000000465EB400355BE0003660
+ EB004A64BE000000000000000000000000000000000000000000000000000000
+ 000000000000355CE1002250E9006986E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000435BAD003961E8000D3DDB00103FDB00103FDB00103FDB00103FDB00103F
+ DB00103FDB00103FDB00103FDB00103FDB000F3EDB000D3DDB003A62E8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003F55A0004F6FDB000432CC000432CC000432CC000432CC000432
+ CC000432CC000432CC000432CC000432CC004F6FDB003F55A000000000000000
+ 000000000000000000000000000000000000000000000000000000000000677F
+ D4006683E6002E56DD00395FDF003F64E1003E63E0003D62DF005777E2005E7C
+ E2001638A9002D52D100294ECD00254AC9001B40BF00153AB9000E34B3004A5C
+ 9D005B74C300000000000000000000000000000000004962B9004167E700305C
+ EE004D68C2000000000000000000000000000000000000000000000000000000
+ 0000000000003059E2003661EF006D8AEB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004962B8003E66EE001B4BE80092A9F60092A9F60092A9F60092A9F60092A9
+ F60092A9F60092A9F60092A9F60092A9F6002250E9001C4BE8004169EE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000435AAA005576E3001441D8001542D8001542D8001542D8001542
+ D8001542D8001542D8001542D8001441D8005576E300435AAA00000000000000
+ 0000000000000000000000000000000000000000000000000000D2DBF8005C71
+ BB00365FE800446AEA004B70EC004C71EC004B70EB004B70EB006785EB006987
+ EA001B3EB200395EDC003459D8003055D400264BCA002045C400183EBE004A65
+ C0003F508C00CED7F7000000000000000000000000005772CE006C85DE003C65
+ EF006A80CD007990E20000000000000000000000000000000000000000000000
+ 00007990E2003F68F0006989F300748CDF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004B65BD004068F0002352ED002E5AED002E5AED002E5AED002E5AED002E5A
+ ED002E5AED002E5AED002E5AED002E5AED002C59ED002352ED00446BF0000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000465EAF005879E7001E4ADE001F4BDE001F4BDE001F4BDE001F4B
+ DE001F4BDE001F4BDE001F4BDE001E4ADE005879E700465EAF00000000000000
+ 00000000000000000000000000000000000000000000000000008EA3E9007E90
+ D1003D65ED004D72F0005277F0005378F0005277F0005176EF00708DF0006E8B
+ EE001E41B7003F64E1003A5FDD00355AD9002B50CF00254AC9001D43C3003858
+ C200495C9E008499DF00000000000000000000000000839AE600667DCC00577B
+ F2005B7BE800576EC10091A4EB000000000000000000000000000000000091A4
+ EB00516ABF00597CF2007E99F500677ECC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004D67BE00426AF0002A57EE003862EF003862EF003862EF003862EF003862
+ EF003862EF003862EF003862EF003862EF003560EF002B58EE00476EF0000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004861B4005B7CEA002853E4002954E4002954E4002954E4002954
+ E4002954E4002954E4002954E4002853E4005B7CEA004861B400000000000000
+ 00000000000000000000000000000000000000000000000000006D87DD0091A3
+ DF00476EF000567AF2005A7DF2005B7EF2005A7DF200587CF2007794F4007390
+ F2002044BB004469E5004065E2003A5FDD002F54D3002A4FCE002248C8002C4F
+ C1004D62AB005E76C70000000000000000000000000000000000526BC3008199
+ E8005075F1005475E200526BC000D3DBF80000000000000000007990E300526B
+ C0005878E3007290F4008AA0E900526BC30000000000000000004E67C1005C74
+ C4004E67C1000000000000000000000000000000000000000000000000000000
+ 00004F69C000466DF0003963EF00A6B9F800A6B9F800A6B9F800A6B9F800A6B9
+ F800A6B9F800A6B9F800A6B9F800A6B9F800496FF0003A64EF004E73F1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004D67BE006182F1003C65EE003E66EE003E66EE003E66EE003E66
+ EE003E66EE003E66EE003E66EE003B64ED006182F1004D67BE00000000000000
+ 0000000000000000000000000000000000000000000000000000516CC700AEBE
+ F300567AF2006586F3006989F3006989F3006888F3006686F3007D98F5007D98
+ F5002549BF004E73ED00486DE9004469E500385DDB003257D6002A50CF002348
+ C400506BC3003D539D0000000000000000000000000000000000000000006881
+ DA00869FF1006D8CF3005F81F2005679EB004C70E8004D71E7005C7FF2006D8C
+ F300708EF4006586F300577BF2004E6CD500BFCDF600000000005069C1006384
+ F3005069C1000000000000000000000000000000000000000000000000000000
+ 0000506AC100486FF0004068F0005579F1005579F1005579F1005579F1005579
+ F1005579F1005579F1005579F1005579F1005176F1004169F0005075F1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005069C0006485F300466DF000496FF000496FF000496FF000496F
+ F000496FF000496FF000496FF000466DF0006485F3005069C000000000000000
+ 00000000000000000000000000000000000000000000000000004F69C000AFBF
+ F4005A7DF2006989F300708EF400718FF4006F8DF3006D8CF3007E99F500829C
+ F500274ABF005378F0004D72ED00476CE8003B60DE00355AD9002D53D3001940
+ C300526CC5003C4F910000000000000000000000000000000000000000000000
+ 0000657CCC008FA3EA00839EF5006283F2005277F1005C7FF20086A0F50097AD
+ F700A1B3F1006D8CF3006C8BF3005479F100516BC400BFCDF600516BC2006586
+ F300516BC2000000000000000000000000000000000000000000000000000000
+ 0000516BC2004A70F000486FF0005F81F2005F81F2005F81F2005F81F2005F81
+ F2005F81F2005F81F2005F81F2005F81F2005A7DF200496FF0005378F1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000516AC1006888F3005075F1005277F1005277F1005277F1005277
+ F1005277F1005277F1005277F1005075F1006888F300516AC100000000000000
+ 0000000000000000000000000000000000000000000000000000506AC100AFBF
+ F400577BF2006787F300708EF4007794F4007693F4007491F4007C97F40086A0
+ F500294CBF00577BF2005176EF004B70EB003E63E100355BDB002C53D400163E
+ C500536DC7003D50940000000000000000000000000000000000000000000000
+ 0000849AE800576FC7007085D100859DEF00849CEF00849CEF00859AE4007389
+ D3005770C500839EF5007592F4006F8DF3005270D600526CC500526CC3006A8A
+ F300526CC3000000000000000000000000000000000000000000000000000000
+ 0000556FC5004D72F1005378F100B8C7F900B9C8F900B9C8F900B9C8F900B9C8
+ F900B9C8F900B9C8F900B9C8F900B9C8F9006C8BF3005579F1005C7EF000536D
+ C400536DC400536DC40000000000000000000000000000000000000000000000
+ 000000000000536CC3006E8DF30092A9F60094ABF60094ABF60094ABF60094AB
+ F60094ABF60094ABF60094ABF60091A8F6006E8DF300536CC300000000000000
+ 0000000000000000000000000000000000000000000000000000526CC300ADBD
+ F4008BA4F60099AFF7009EB3F7008BA4F6007491F4007290F4007D98F5008DA5
+ F6002C4EBF005A7DF2004F74F1004269EE005D7DE9007993E900869DE8007B92
+ E0008397D8004054980000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000556EC700768EDE0087A1F500829DF5007290F4006A83DB007C97
+ F400556EC5000000000000000000000000000000000000000000000000000000
+ 00005670C6005C7DEA005579F1007C97F4007D98F5007D98F5007D98F5007D98
+ F5007D98F5007D98F5007D98F5007D98F5007290F4005A7DF2005E80F0003761
+ ED003761ED00456AE50000000000000000000000000000000000000000000000
+ 000000000000546DC400708EF400042DB5000429A80003269C0003208300031E
+ 79000320810003269A000429A700042CB300708EF400546DC400000000000000
+ 0000000000000000000000000000000000000000000000000000536DC400ABBB
+ ED008295D7006F84CE008599DA00B3C2F300B4C4F90091A8F6006B8AF30089A2
+ F6002A4DBF004B71F100466DF0006787F30093A4DD008092CF00677ABC008797
+ CD00A7B3DC0041569A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C1CDF600566FC7007A91DF008DA5F6008DA5F60086A0F500839E
+ F500566FC6000000000000000000000000000000000000000000000000000000
+ 0000556FC7005B7CEA00587CF2007F9AF500849EF50086A0F50086A0F50086A0
+ F50086A0F50086A0F50086A0F500859FF5007592F4005B7EF2005B7EF2000834
+ C5000A36CA004568DA0000000000000000000000000000000000000000000000
+ 000000000000556EC5007391F4009EB3F700A3B6F800A3B6F800A3B6F800A3B6
+ F800A3B6F800A3B6F800A3B6F8009EB3F7007391F400556EC500000000000000
+ 00000000000000000000000000000000000000000000000000005873CF00536E
+ C7009FB1F000AEBEF3009FB1F0005A74C9008E9FDD00B4C3F5006888F3007995
+ F4002448BF004E73F1007C97F200889BDC006680D9009CAFEE00ACBCF1006780
+ D400445AA6004860B10000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005E79
+ D6005771C8005771C8005771C8005771C80095ACF70095ACF70095ACF70086A0
+ F5005771C8000000000000000000000000000000000000000000000000000000
+ 00006B85DE005B78DB005479F1006283F2006B8AF3006F8DF3007391F4007391
+ F4007391F4007391F400718FF4006D8CF3005C7FF2004A70F0004A70F000324B
+ 9C002648B700506BC20000000000000000000000000000000000000000000000
+ 0000000000005770C7007693F400A6B9F800AFC0F900B1C1F900B1C1F900B1C1
+ F900B1C1F900B1C1F900AFC0F900A5B8F8007592F4005770C700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000859BE900ACBCF1009CB1
+ F7002A4FC8005E77CA00859BE900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005872
+ C9006E8BED007C96EE007F99EF00859EF00098ADF2009AAEF20097ACF2007C96
+ EE005872C9000000000000000000000000000000000000000000000000000000
+ 0000AFBFF3005D76CA005879E5005277F1005579F100577BF200587CF200587C
+ F200587CF200587CF200587CF200567AF2005075F1004C72F100446BF0006379
+ C500526AB9005B72C40000000000000000000000000000000000000000000000
+ 0000000000005871C8007491F400042DB5000429A80003269C0003208300031E
+ 79000320810003269A000429A700042CB3007391F4005871C800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000008497D900AEBF
+ F8007189DA007C93E50000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005B76
+ D2005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005B76D2000000000000000000000000000000000000000000000000000000
+ 000000000000859CE9005771C8005771C8005771C8005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8005771C8005771C8005771C8005771
+ C8005771C90093A8ED0000000000000000000000000000000000000000000000
+ 0000000000005872C9006D8CF3006686F3007391F4007A96F4007E99F5007F9A
+ F5007E99F5007A96F4007290F4006485F3006D8CF3005872C900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005A76D200A1B0
+ E80094A4DA000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004E6ACE005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005B76D200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005A76
+ D2005A76D2000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000253671003E4D
+ 8200495991008699DD0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004A60AE003544
+ 7900485EA900435BAC00435BAC00435BAB00435BAB00435BAA00435BA900435A
+ A8004259A7004259A600435AA6004259A500435AA500435AA500435AA5004556
+ 910033406D00455BA50000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000008197DC0044579500405B
+ B8005B73C4005A679400293D8500B9C6F100000000000000000000000000293D
+ 8500293D8500B9C6F100000000000000000000000000647BCB00364784004761
+ B500072BA3000328A1000328A00003279F0003279F0003279F0003279D000326
+ 9C0003269C0003269A0003269A00032699000325970003259700032596002643
+ A3004A5FA6003342760000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008197DD002A3C7B003755BB003E5B
+ BD008798D100465BA000465BA0002A3E83000000000000000000BAC6F200465B
+ A000465BA0002A3E830000000000000000000000000033478A004B61AA002748
+ B5000429A7000429A7000429A6000429A5000328A4000328A3000328A2000328
+ A1000328A00003279F0003279F0003279E0003279D0003269C0003269B000326
+ 9A002745A8004B5E9E0000000000000000000000000037477F00CDD6F6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000354787004963B7002B4EC0007188D4006273
+ B0004B64B500123DCC00123DCC004A6BD80032499A0032499A004B64B500123D
+ CC00123DCC004A6BD800384FA2000000000000000000314588004361C700042C
+ B300042CB2003252BF00DEE3F400C0CAEA003353BD00042BAD00042BAC00425F
+ C000FFFFFF008194D400042AA900042AA900BFC8E800FFFFFF00FFFFFF000328
+ A4000328A300435EBB000000000000000000000000006D789F004B62B1000000
+ 000000000000000000000000000000000000000000000000000000000000293C
+ 7A00283871002838710028387100283871002838710028387100283871002838
+ 71002838710028387100293C7A00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000005169BE004A64BA002A4EC400042EB9007289D7006677
+ B8004F69C0001240DA000535D8001240DA004E69BF004E69BF004B6EE3000535
+ D8001240DA004B6EE3003D55AC00000000000000000034488C004362CA00042D
+ B800042DB600DEE4F500FFFFFF00FFFFFF00AFBBE200042BAF00042CB100617A
+ CE00FFFFFF008191CA000429A800042BAD00C0CAEA00FFFFFF00FFFFFF00042A
+ AA00042AA900425EBD000000000000000000000000007D89B10035447D00A3B4
+ EB00000000000000000000000000000000000000000000000000000000003447
+ 8400949DBE00435DB600435DB600435EB6004761B7004963B8004A64B8004E67
+ BB004E67BB004C66BA002B3C7600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000546CC000384C90002B50C800042FBE00042FBE002B4FC700869A
+ DC005E74BB004C71ED001344E7000539E600476DED00476DED001344E7001344
+ E7004C71ED00536DCA00BECCF5000000000000000000364A91004363CE000530
+ BE00042EBC00FFFFFF00FFFFFF00FFFFFF00FFFFFF000429A700042DB60091A3
+ DE00FFFFFF006177BF00042BAC00042CB300EEF1F900FFFFFF00DEE3F100042B
+ AE00042BAE00425FC100000000000000000000000000707DAA004B66C0004959
+ 9400000000000000000000000000000000000000000000000000000000000000
+ 0000BAC6F20094A0C8007A8ED1002647B6002C4CB8003150B9003755BB00415E
+ BF00435FBF003856BC0031438300000000000000000026356E0026356E002635
+ 6E0026356E0026356E0026356E0026356E0026356E0026356E0026356E002635
+ 6E0026356E0026356E0026356E0026356E0026356E0026356E0026356E002635
+ 6E0026356E0026356E0031458E00000000000000000000000000000000000000
+ 0000394E97004D68C5002C52D1000431C7000431C7000431C6000431C6000431
+ C5003358D0006478C2005C76D2005378F1001748EC001748EC001748EC005C76
+ D200435CB600BECCF5000000000000000000000000003A509A004768D700133D
+ CA00153EC9004062D300E0E5F600C3CCEA001A3CAD000A32B700647ED800FFFF
+ FF00FFFFFF000429A700042FBE00042FBD00FFFFFF00FFFFFF008F9FD400042D
+ B800042DB8004362C90000000000000000000000000054639C006980CC004964
+ BF00546CC0000000000000000000000000000000000000000000000000000000
+ 0000000000003C5094006E7FBC00516CC9003858C1003E5CC2004462C5004F6B
+ C800536ECA004764C600344789000000000000000000435FBC00435FBC00435F
+ BC00435FBC00435FBC00435FBC00435FBC00435FBC00435FBC00435FBC00435F
+ BC00435FBC00435FBC00435FBC00435FBC00435FBC00435FBC00435FBC00435F
+ BC00435FBC00435FBC002C3E7B0000000000000000000000000000000000BCC9
+ F400536BBD00385DD7000C39CE000E3ACE000E3ACD000E3ACD000E3ACC000E3A
+ CC003B5FD600667BC4006981D5006787F300315DEF00315DEF00315DEF006981
+ D500455FB800BFCCF5000000000000000000000000003C52A000496BDA001C46
+ D1002149D1001F48D0001D44C900173CB600173DBD001640CB00E1E6F800FFFF
+ FF00FFFFFF000B33B8000A35C4000833C300FFFFFF00FFFFFF00516BBF00042F
+ BE00042FBD004363CD000000000000000000000000003D5196008596D0003F5F
+ C80040539500556EC30000000000000000000000000000000000000000000000
+ 000000000000384D9600586FBA00516DCD004563C9004C69CC00516DCD005C76
+ D0005F7AD100536FCD00374C8F0000000000000000004361C700042CB400042C
+ B400042CB400042CB400042CB400042CB400042CB400042CB400042CB400042C
+ B400042CB400042CB400042CB400042CB400042CB400042CB400042CB400042C
+ B400042CB400042CB40032468800000000000000000000000000000000003E55
+ AB004266DD001A45D6001944D5001D47D5001C46D4001C46D4001D47D4004669
+ DB0092A4E6006F87D6007F9AF500567AF2004C72F1004C72F1004C72F1007F9A
+ F5006F87D6004761BA000000000000000000000000003F56A5004C6EDF00244D
+ D7002C53D7002A51D6002951D600254DD400234BD3002F55D500FFFFFF00FFFF
+ FF00EFF2F900163FCA00153FCB00133DCA00FFFFFF00FFFFFF00193CAE000833
+ C4000632C3004364D100000000000000000000000000B3C0EF006475B0007089
+ DA002D52CE004E6CCF004F64AF005E77CC009CAEED0000000000000000009CAE
+ ED004C65BC005E78D1005C78D8005371D700607CD9006681DB006A85DC00758E
+ DF007A92E0006883DB003E539D0000000000000000004568DE000D3BD5000E3C
+ D5000E3CD5000E3CD5000E3CD5000E3CD5000E3CD5000E3CD5000E3CD5000E3C
+ D5000E3CD5000E3CD5000E3CD5000E3CD5000E3CD5000E3CD5000E3CD5000E3C
+ D5000E3CD5000C3AD5003F57A5000000000000000000ABBCF100435AA9005B78
+ D9002E57E000345CE100385FE200385FE100385FE100385FE0008FA5EE00778B
+ CE007F93DA0088A2F600819BF50087A1F500899BDD00899BDD00A5B8F800819B
+ F50088A2F600A5B8F8004E68C3000000000000000000445CAF005073E700345C
+ E2004267E3006F8BE9006D89E800DAE1F900FFFFFF00FFFFFF00FFFFFF007A8F
+ D4002B4FC7002D54D900385DDA00F0F3FC00FFFFFF005771C8002147C8001C46
+ D1001540D0004668D900000000000000000000000000000000004960AE0095A5
+ D900113DCE002F55D4004B6CDA004D64B200455BA5004359A6004258A500485E
+ A6005269B9006480DE005A78DD00627EDE006E88E100728CE1007790E3008299
+ E400869CE600718BE1004158A30000000000000000004D72EA002652E6002A56
+ E7002A56E7002A56E7002A56E7002A56E7002A56E7002A56E7002A56E7002A56
+ E7002A56E7002A56E7002A56E7002A56E7002A56E7002A56E7002A56E7002A56
+ E7002955E700224FE500465FB40000000000000000004E68C3007B8DCC006383
+ EC003E65E6004469E700456AE700466BE700456AE600456AE60096ABF000798C
+ D0008699DD00A1B5F700A1B5F700B7C7F9006E82CB006E82CB00899CDE00A1B5
+ F700A1B5F700B7C7F9004F6AC5000000000000000000465FB4005275EA003D64
+ E7004D71E900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008296D800375A
+ CD003C62E100385EDF00BFCBF400FFFFFF00BBC6E900284BBE002D55DA002750
+ D9001D48D600486BDD0000000000000000000000000000000000889CE2008090
+ C5001F49D600244DD7003057D9005A79E0005A78DE005976D6005C78D600617F
+ E2006B86E300617FE2006B87E400708BE5007993E7007F97E800849BE80092A7
+ EB0090A5EA007690E500455CAA0000000000000000005579F1003F68F000456C
+ F000456CF000456CF000456CF000456CF000456CF000456CF000456CF000456C
+ F000456CF000456CF000456CF000456CF000456CF000456CF000456CF000456C
+ F000446BF0003761EF004C66BD000000000000000000475FB200B8C5EF005175
+ ED004E73EB005376EC005376EC005376EC005477EC005376EB006F8CEE00A9B9
+ F1006F84CD00C0CEFA00C0CEFA008FA0DF00A9B9F000A9B9F0006F84CD00C0CE
+ FA00C0CEFA008FA0DF00BFCDF60000000000000000004963B9005478EE00456B
+ EB00587BED00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B9C5EB004567D900486D
+ E700456AE60094A9F000FFFFFF00FFFFFF004D69C800365BD400395FE0003058
+ DE00244EDB004A6DE100000000000000000000000000000000000000000098AB
+ EA0098ABED004066E600466BE7005376E900587AE9005D7DEA006987EC006E8B
+ EC00738FEC007E98EE00839CEF0089A1EF0094A9F10099ADF10098ADF100CCD5
+ F400B2C2F5006886EB004C65B90000000000000000005D80F2006586F3007491
+ F4007B97F4007B97F4007B97F4007B97F4007B97F4007B97F4007B97F4007B97
+ F4007B97F4007B97F4007B97F4007B97F4007B97F4007B97F4007B97F4007995
+ F4006F8DF300597CF200516BC20000000000000000008095DE00A9BBF800577B
+ F2006F8DF3006F8DF3006F8DF3006F8DF3006F8DF3006F8DF3006F8DF300708E
+ F4008AA3F5007F91D3007F91D300B4C3F4006F8DF2006F8DF2008AA3F4007D91
+ D2007D8FD300AFBFF3006982D90000000000000000004D67BE00597CF2005579
+ F1006E8DF3006B8AF0006785EA006585EE006686F3006384F2006082F1006888
+ F100C0CDF800FFFFFF00FFFFFF00AEBBE7005074EA005074EC004D72EA00456A
+ E900345DE6004E72E90000000000000000000000000000000000000000000000
+ 0000A2B0E0007E99F0004E73EC005F80EE006686EF006B89EF007692F0007B96
+ F100809AF1008BA3F30091A8F30096ACF400A1B4F500A0B3F500A5B7F500677D
+ C800ABB9E8009BB0F4005069BF0000000000000000005E7DEA00718DEC007792
+ ED007A95EC007A95EC007A95EC007A95EC007A95EC007A95EC007A95EC007A95
+ EC007A95EC007A95EC007A95EC007A95EC007A95EC007A95EC007A95EC007993
+ ED007590EC006D8AEC00546EC500000000000000000099ACEE00B1C1F9007290
+ F400839EF5007F9AF5007D98F5007D98F5007D98F5007D98F5007D98F5007D98
+ F5007D98F500BBCAFA00BBCAFA0097ADF7007F9AF5007D98F5007D98F500B0C0
+ F800A5B8F7007995F400536ECA0000000000000000004E68BF005B7EF2005D80
+ F2007A96F4007894F4007693F4007391F400718FF4006F8DF300A1B5F700EBF0
+ FD00FFFFFF00FFFFFF00B4C0E9005370D0005C7EF0005B7EF000597CEF004E73
+ ED003B63EB005074EC0000000000000000000000000000000000000000000000
+ 00005A74C900B4C1EC00829DF4006C8BF3007391F4007995F400829DF40087A1
+ F5008DA5F50098AEF6009DB2F600A3B6F700A1B5F700A5B8F700BECBF600617C
+ D8005A74C900A4B4E800546EC50000000000000000005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8005771C8005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8005771C8005771C8005771C8005771
+ C8005771C8005771C8005A75D1000000000000000000A4B4EE00D3DCFB0087A1
+ F50097ADF70092A9F6008EA6F6008AA3F6008AA3F6008AA3F6008AA3F6008AA3
+ F6008AA3F60097ADF70096ACF70094ABF6008FA7F6008DA5F6008BA4F6007F9A
+ F5006C8BF3005B7EF2004760B90000000000000000004F69C0005D80F2006586
+ F300849EF500829DF500819BF5007E99F50093AAF600C3D0FA00FFFFFF00FFFF
+ FF00FFFFFF009BABE1005E78D1006987ED006888F3006686F3006586F300597C
+ F200436AEF005277F00000000000000000000000000000000000000000000000
+ 00000000000093A8ED006D82CE00B1C1F8008AA3F600829DF5009AAFF700A1B5
+ F700A6B9F800ACBDF800A8BAF800AFC0F900B5C4F4007E93D6005A76D2000000
+ 000000000000C1CDF6005771C900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000096AAEC00DFE6FC00D2DB
+ FB00B5C5F900B7C7F900B4C4F900ADBEF800AABCF800A6B9F800A0B4F700B3C3
+ F800DCE3F900DDE4FC00B6C6F900B3C3F900AFC0F900AEBFF800ACBDF80097AD
+ F7007F9AF5006787F3004861B8000000000000000000516BC2006082F200708E
+ F4009AAFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D5DBF10098A8
+ DC00758BD300859FF500839EF500829CF5007F9AF5007D98F5007B97F4006989
+ F3004F74F1005579F10000000000000000000000000000000000000000000000
+ 00000000000000000000BBC9F50095A6DE00C2CEF300B9C8F900A8BAF800A4B7
+ F800A7B9F800B6C6F900C2CFFA00C1CEF800647CCD00647EDA00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000798FD900DCE3FC00E6EB
+ FD00BECCFA00C1CEFA00C1CEFA00BBCAFA00B4C4F900ACBDF800A4B7F800A4B4
+ EA0093A3DB00E7ECFD00D9E1FC00BBCAFA00BCCAFA00BBCAFA00B6C6F9009DB2
+ F700839EF5006F8DF300516AC7000000000000000000526CC3005F81F200718F
+ F400A2B6F800FFFFFF00FFFFFF00E8EBF600D9DEF000B2BDE3008598D9008CA1
+ E60092A9F40090A8F6008EA6F6008CA5F60089A2F60087A1F500859FF5006E8D
+ F3005075F1005579F10000000000000000000000000000000000000000000000
+ 00000000000000000000000000007C93E400667FCC008799D900BDC9F100C0CD
+ F600C1CDF600A5B5EA008497DB00657DCD009DB1EF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000637AC700B8C7F800E6EB
+ FD00DDE4FC00C6D2FA00C3D0FA00BBCAFA00B3C3F900A5B8F800A7B8F3006177
+ C4005068BE00E6ECFD00E7ECFD00E0E6FC00BCCAFA00BBCAFA00B6C6F9009BB0
+ F700819BF5007B97F400657FD8000000000000000000536DC4006685EC006C8B
+ F300A3B6F800A4B5EE0092A1D30097A7DD0098A8E1009BACE700A2B6F800A1B5
+ F7009FB3F7009BB0F70099AFF70097ADF70094ABF60091A8F6008CA5F6006B8A
+ F3005075F1005E7EEC0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BFCDF600516AC3008699
+ DD00DBE2FC00E7ECFD00E6ECFD00E4E9FD00D0DAFB00A6B6EB00536ECA000000
+ 0000000000005C73C400A3B3EB00CBD6F900E2E8FD00E0E6FC00DEE5FC00C3D0
+ FA008AA0EE006177C8000000000000000000000000007A92E5006079CC00728E
+ EE007794F400829DF5008AA3F6008DA5F6008DA5F6008BA4F60089A2F60088A2
+ F60087A1F500839EF500829DF500819BF5007B97F4007693F4006C8BF3005E80
+ F2006786ED005F78CC0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCDF600516B
+ C7008499DE009CAEEF00A7B8F2008BA0E7007489D100526AC000000000000000
+ 000000000000839AE7004F69C2006D82CD0091A7EE009FB2F10094A9EF006C85
+ D9005870C3005E79D300000000000000000000000000000000005974CF00617A
+ CD005F81F2006586F3006888F3006A8AF3006A8AF3006A8AF3006A8AF3006989
+ F3006989F3006888F3006888F3006787F3006586F3006384F3006082F2005E7D
+ E5006079CD006984DD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005975D1005069C0004F69C000526CC7006680DA00D3DBF800000000000000
+ 0000000000000000000000000000839AE7004F68BF004F68BF004F68BF005E79
+ D5009FB0EF000000000000000000000000000000000000000000000000007C93
+ E5005771C8005771C8005771C8005771C8005771C8005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8005771C8005771C8005771C8005D76
+ CC007C93E5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D3D3D300C2C2C200C0C0
+ C000263159002631590026315900263159002631590026315900263159002631
+ 5900263159002631590026315900263159002631590026315900263159002631
+ 59002E3D7100C0C0C000D6D6D600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005065A9005065A9005065A9005065A9005065A9005065A9005065A9005065
+ A9005065A9005065A9005065A9005065A9005065A9005065A9005065A9005065
+ A9002736660000000000000000000000000000000000C4C4C4004E63A6003D51
+ 93003D5193003D5193003D5193003D5193003D5193003D5193003D5193003D51
+ 93003D5193003D5193003D5193003D5193003D5193003D5193003D5193003D51
+ 93003D5193004E63A600DBDBDB00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004F69BF000328A300FFFFFF00E5E9F600E5E9F600E5E9F600E5E9F600E5E9
+ F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F6004F69
+ BF002C3D7B0000000000000000000000000000000000000000003D57AE00435D
+ B30007299A0007299A0007299A0007299A0007299A0007299A0007299A000729
+ 9A0007299A0007299A0007299A0007299A0007299A0007299A0007299A000628
+ 9A00435DB3003D57AE0000000000000000000000000000000000000000000000
+ 00005972C900374D9E0034499400425AAE00768DD80000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000273465007287CC005971
+ C3005971C3005971C3005971C3005971C3005971C3005971C3005971C3005971
+ C3005971C3005971C3005971C3005971C3002734650000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000506AC400042AAA00FFFFFF00E6EAF700E6EAF700E6EAF700E6EAF700E6EA
+ F700E6EAF700E6EAF700E6EAF700E6EAF700E6EAF700E6EAF700E6EAF700506A
+ C4002F40800000000000000000000000000000000000000000003E58AF004660
+ B9000F32A4001032A4001032A4001032A4001032A4001032A4001032A4001032
+ A4001032A4001032A4001032A4001032A4001032A4001032A4001032A4000D30
+ A3004661B9003E58AF0000000000000000000000000000000000000000005C75
+ CF00536CC2005B77D4005874D200566EC1004C60A100354A9300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002A3A73006B86E1001639
+ AC001639AC001639AC001639AC001639AC001639AC001639AC001639AC001639
+ AC001639AC001639AC001639AC002446B7002A3A730000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000506BC800042CB100FFFFFF009397A5009397A5009397A5009397A5009397
+ A5009397A5009397A5009397A5009397A5009397A500E6EAF800E6EAF800506B
+ C8003245860000000000000000000000000000000000000000003F59B0004863
+ BF00173AAE0015359F0015349C0015349C0015349C0015349C0015349C001534
+ 9C0015349C0015349C0015349C0015349C0015349C0015349C0015359F001538
+ AE004A65C0003F59B000000000000000000000000000000000005E79D3005269
+ B900345CE4001744DB000434D200254CCF004666D300586DB6008499DF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002C3E7B006984E1000328
+ A4000328A4000328A4000328A4000328A4000328A4000328A4000328A4000328
+ A4000328A4000328A4000328A400163AB2002C3E7B0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000506ED200042FBF00FFFFFF00E6EBF800E6EBF800E6EBF800E6EBF800E6EB
+ F800E6EBF800E6EBF800E6EBF800E6EBF800E6EBF800E6EBF800E6EBF800506E
+ D200374B92000000000000000000000000000000000000000000415BB2004D6A
+ CA002649BF002343AC00E0DFDE00E0DFDE00E0DFDE00E0DFDE00E0DFDE00E0DF
+ DE00E0DFDE00E0DFDE00E0DFDE00E0DFDE00E0DFDE00E0DFDE002343AC002246
+ BE00506CCB00415BB200000000000000000000000000607AD1006881D5005176
+ F1001344E8000639E3000537DD000434D2000433CE000935C900586EB700374A
+ 8D00849BE0000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000033458900738DE7000A32
+ B8000A32B800375BD2006B86E0006480DE00163CBC000A32B8000A32B8000A32
+ B8000A32B8000A32B8000A32B8001C42C2003345890000000000000000003449
+ 9100334589005E76C90000000000000000000000000000000000000000000000
+ 00004F6ED6000431C500FFFFFF009398A6009398A6009398A6009398A6009398
+ A6009398A6009398A6009398A6009398A6009398A600E6EBF900E6EBF9004F6E
+ D6003A4F99000000000000000000000000000000000000000000425CB3004F6D
+ D0002E52C8002949B300DCDBDA00F3F4F800F3F4F800F3F4F800F3F4F800F3F4
+ F800F3F4F800F3F4F800F3F4F800F3F4F800DCDBDA00DCDBDA002949B300284D
+ C500526FD100425CB300000000000000000000000000455EB7007C96EA004D72
+ F1002856EE001445E8000639E3000535D8000434D2000433CE004162D100596E
+ B700384A8E000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000364A91007E95E3002349
+ C8002C51CF00607BD80044589B007A8CCE006884E200143CC300113AC200113A
+ C200113AC200113AC200113AC2001E45C800364A910000000000869BE100627C
+ D600607CDA004D62A40000000000000000000000000000000000000000000000
+ 00004F6FDB000432CD00FFFFFF00E5EAF900E5EAF900E5EAF900E5EAF900E5EA
+ F900E5EAF900E5EAF900E5EAF900E5EAF900E5EAF900E5EAF900E5EAF9004F6F
+ DB003D539F000000000000000000000000000000000000000000435DB400516F
+ D5003559CF003050BA00D8D7D600F3F4F800F3F4F800F3F4F800F3F4F800F3F4
+ F800F3F4F800F3F4F800F3F4F800F3F4F700D8D7D600D8D7D6003050BA002F54
+ CD005573D700435DB4000000000000000000000000004A62B600859DEE005176
+ F1003C65EF002856EE001445E8000537DD000535D8000434D2000935C9004162
+ D1005A6FB800859BE00000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005068BE00788DD3005B7A
+ E0005375E400586DB4006D85D6004559A0007F96E1004063D8001841CA001841
+ CA001841CA001841CA001841CA001841CA0042579E00000000003D55A8003B60
+ DB002F55D600607EE200BDC9F400000000000000000000000000000000000000
+ 00005073E5000536D900FFFFFF009398A8009398A8009398A8009398A8009398
+ A8009398A8009398A8009398A8009398A8009398A800E6EBFB00E6EBFB005073
+ E500425AAC000000000000000000000000000000000000000000455FB6005676
+ E0004367DD003D5DC700DDDDDC00BABED100F3F3F700F2F3F700F2F3F700F2F3
+ F700F2F3F700F2F3F700F2F3F700F2F3F700DDDDDC00DDDDDC003D5DC7003C61
+ DB005B7AE100455FB6000000000000000000000000005570CB00859BE6007C97
+ F4006384F3005075F1003C65EF001445E8000639E3000537DD000434D2000433
+ CE000935C9005A70B9003A4D910096A7E1000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005D76CF006073
+ BB00798ED200556FC70000000000BDCBF400576CB300859EF0002751DE002751
+ DE002751DE002751DE002751DE002751DE00667CCB004058A8006B82D0002751
+ DE002751DE003D63E3004E68C000000000000000000000000000000000000000
+ 00005174EA00093BE200FFFFFF00E6EBFC00E6EBFC00E6EBFC00E6EBFC00E6EB
+ FC00E6EBFC00E6EBFC00E6EBFC00E6EBFC00E6EBFC00E6EBFC00E6EBFC005174
+ EA00465FB20000000000000000000000000000000000000000004660B7005778
+ E5004B6EE3004463CC00E1E1E000858FAF00DBDEE800F2F3F700F2F3F700F2F3
+ F700F2F3F700F2F3F700F2F3F700DBDDE700E1E1E000E1E1E0004463CC004368
+ E2005D7DE6004660B7000000000000000000000000008197E5007386CE0091A8
+ F6007693F4006384F3005075F1002856EE001445E8000639E3000535D8000434
+ D2000433CE004162D100979DB700888786000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000738B
+ DD004760BA00BECCF5000000000000000000445CB0008AA1EC002F59E6002F59
+ E6002F59E6002F59E6002F59E6002F59E6006A88EE00748DE1006A88EE002F59
+ E6002F59E6003C63E800516CC700000000000000000000000000000000000000
+ 00005579EF001344E800FFFFFF00E7ECFC00E7ECFC00E7ECFC00E7ECFC00E7EC
+ FC00E7ECFC00E7ECFC00E7ECFC00E7ECFC00E7ECFC00E7ECFC00E7ECFC005579
+ EF004962B90000000000000000000000000000000000000000004761B8005A7B
+ EA005376E9004A69D000E5E4E4007C86A700838BAC00B7BBCF00F5F6F900FEFE
+ FE00FEFEFE00E2E5EC00B6BACD008089A900E5E4E400E5E4E4004A69D000496E
+ E7006080EB004761B800000000000000000000000000000000004D66BE0094A5
+ E300829DF5007794F4006384F3003C65EF002856EE001445E8000537DD000535
+ D8000434D2008794C700C5C5C500B3B3B300B0B0B00000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005570CC008EA4EF00355FED00355F
+ ED00355FED00355FED00355FED00355FED003E67EF00456CEF003962ED00355F
+ ED00355FED00436AEF004761BA00000000000000000000000000000000000000
+ 00005F81F2002856EE00FFFFFF00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EE
+ FD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD005F81
+ F2004D66BD0000000000000000000000000000000000000000004963BA005E80
+ F2006283F2005876DA00ECEBEB007780A2007780A1007780A100F1F2F600F1F2
+ F600F1F2F600C1C6D500747E9F00737D9F00ECEBEB00ECEBEB005876DA00577B
+ F2006686F3004963BA00000000000000000000000000000000000000000090A4
+ EA009AABE5009FB3F700849EF5006384F3005075F1003C65EF001445E8000639
+ E3009BABE100CECECE00C4C4C400BBBBBB00B5B4B3008A898800B1B0B0000000
+ 00000000000000000000000000000000000000000000000000006D87DD00637A
+ C7007087D8005D77D30000000000D2DBF8005B72C10089A2F300456CF000456C
+ F000456CF000456CF000456CF000456CF0007F98EA00647AC40090A3E400456C
+ F000456CF000587CF2005671CE00000000000000000000000000000000000000
+ 00006485F300325EEF00FFFFFF00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEF
+ FD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD006485
+ F3004E67BF0000000000000000000000000000000000000000004A64BB006082
+ F2006989F3005F7BDA00EFEFEE00747E9F00747E9F00737D9F00F1F2F600F1F2
+ F600F1F2F600E8EAEF00717A9D00717A9D00EFEFEE00EFEFEE005F7BDA005E80
+ F2006989F3004A64BB0000000000000000000000000000000000000000000000
+ 0000556DC0009BABE5009FB3F7007794F4006384F3005075F1002856EE00A7B7
+ ED00E7E7E700D7D7D700CECECE00C4C4C400C5C5C500B5B4B4008B8A89000000
+ 00000000000000000000000000000000000000000000AEBEF2005B72C200869F
+ F0007B95EF00536CBF00D2DBF8007990E2007C8FD4007995F4004C72F1004C72
+ F1004C72F1004C72F1004C72F1004C72F1006C83CD005771CE00687DC7005277
+ F1004C72F1006C8BF3007990E200000000000000000000000000000000000000
+ 00006989F3003D66EF00FFFFFF00989DAA00989DAA00989DAA00989DAA00989D
+ AA00989DAA00989DAA00989DAA00989DAA00989DAA00EBF0FD00EBF0FD006989
+ F3004F68C00000000000000000000000000000000000000000004B65BC006384
+ F300718FF4006580DB00F2F1F100717A9D00717A9D00717A9C00F1F2F600F1F2
+ F600F1F2F600F1F2F5006F7899006F789900F2F1F100F2F1F1006580DB006485
+ F3006C8BF3004B65BC0000000000000000000000000000000000000000000000
+ 000091A4EB00566FC1009CADE600849EF5007794F4006384F300B7C6F400F5F5
+ F500EFEFEF00E0E0E000D7D7D700CECECE00BBBBBB00C5C5C500B5B5B500B1B1
+ B1000000000000000000000000000000000000000000657FD9008195DD006F8D
+ F3007794F400738AD5005D78D300556DC10089A0EC006686F3005277F1005277
+ F1005277F1005277F1005277F1005277F1005E75C300D2DBF8004F69C5007B97
+ F4005E80F200879FEF00D2DBF800000000000000000000000000000000000000
+ 00007391F4005277F100FFFFFF00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1
+ FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE007391
+ F400516BC20000000000000000000000000000000000000000004D67BE006787
+ F300809BF500728BDC00F7F7F6006C7697006B7597006B759600F0F1F500F0F1
+ F500F0F1F500CDD1DC006972950069729400F7F7F600F7F7F600728BDC007290
+ F400718FF4004D67BE0000000000000000000000000000000000000000000000
+ 0000000000000000000091A5EB009DAEE6009FB3F700CCD5F300F8F8F800FAFA
+ FA00F9F9F900EFEFEF00E7E7E700E0E0E000CECECE00C4C4C400BBBBBB00B6B5
+ B5008B8A8900000000000000000000000000000000004E68BF008FA6F3005B7E
+ F2006183F2007693F40094A9F300829CF5006485F3006183F2006183F2006183
+ F2006183F2006183F2006183F2006A8AF3004E68BF0000000000000000004F68
+ C1004E68BF006F89DF0000000000000000000000000000000000000000000000
+ 00007794F4005C7FF200FFFFFF009DA1AC009DA1AC009DA1AC009DA1AC009DA1
+ AC009DA1AC009DA1AC009DA1AC009DA1AC009DA1AC00EFF3FE00EFF3FE007794
+ F400526CC30000000000000000000000000000000000000000004D67BF006989
+ F30086A0F5007990DC00F9F9F900697295006972940068729400CDD0DC00F0F1
+ F500F0F1F5006F77980067709100666F9100F9F9F900F9F9F9007990DC007894
+ F4007491F4004D67BF0000000000000000000000000000000000000000000000
+ 00000000000000000000000000005972C500D0D5E900F7F7F700F7F7F700F8F8
+ F800FAFAFA00F5F5F500EFEFEF00E7E7E700D7D7D700CECECE00C4C4C400C7C7
+ C700A6A6A500A9A9A9000000000000000000000000004F69C0008CA5F6006082
+ F2006989F3006989F3006989F3006989F3006989F3006989F3006989F3006989
+ F3006989F3006989F3006989F3006C8BF3004F69C00000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007C97F4006787F300FFFFFF00F0F3FE00F0F3FE00F0F3FE00F0F3FE00F0F3
+ FE00F0F3FE00F0F3FE00F0F3FE00F0F3FE00F0F3FE00F0F3FE00F0F3FE007C97
+ F400536DC40000000000000000000000000000000000000000004E68C0006B8A
+ F3008DA5F6007F95DD00FBFAFA0067709100666F9100666F9100656E9100656E
+ 9100646E9000646E8F00636D8F00636D8F00FBFAFA00FBFAFA007F95DD007F9A
+ F5007794F4004E68C00000000000000000000000000000000000000000000000
+ 0000000000000000000000000000A2B2EC00BAB9B800ECECEC00F6F6F600F7F7
+ F700F8F8F800F9F9F900F5F5F500EFEFEF00E0E0E000D7D7D700CECECE00C3C3
+ C300BFBFBE00908F8F00000000000000000000000000506AC1008AA3F6006A8A
+ F3007D98F5007E99F5007B97F400708EF400708EF400708EF400708EF400708E
+ F400708EF4007A96F4007995F4007491F400506AC10000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000849EF5007C97F400FFFFFF00F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5
+ FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00849E
+ F500556FC6000000000000000000000000000000000000000000506AC100708E
+ F4009CB1F7008D9FDE00FDFDFD00616A8D00606A8C00606A8C005F698B005F69
+ 8B005F698A005F688A005E6789005E678900FDFDFD00FDFDFD008D9FDE008BA4
+ F6007C97F400506AC10000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B7B7B700ECECEC00F7F7
+ F700F6F6F600F8F8F800FAFAFA00F9F9F900EFEFEF00E7E7E700E0E0E000CECE
+ CE00D3D3D3009B9A99000000000000000000000000005B76D300526CC300526C
+ C300526CC300526CC300526CC3007388CF00A2B2E700B3C3F900A0B4F6008FA1
+ E0006D82CC00526CC300526CC300526CC300607BD70000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000088A2F600829DF500FFFFFF0058595C0074757A00F3F6FE0058595C007475
+ 7A00F3F6FE0058595C0074757A00F3F6FE0058595C0074757A00F3F6FE0088A2
+ F6005670C7000000000000000000000000000000000000000000516BC2007290
+ F400A4B7F80093A4DE00FEFEFE00FEFEFE00FEFEFE00FEFEFE00FEFEFE00FEFE
+ FE00FEFEFE00FEFEFE00FEFEFE00FEFEFE00FEFEFE00FEFEFE0093A4DE0091A8
+ F6007F9AF500516BC20000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BEBCBB00EDEC
+ EC00F7F7F700F7F7F700F8F8F800FAFAFA00F5F5F500EFEFEF00E7E7E700DADA
+ DA00DADAD9009C9A990000000000000000000000000000000000000000000000
+ 0000000000000000000000000000718AE0006178C900B5C4F500A0B3F300546D
+ C40092A7EC000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000089A2F60086A0F500FFFFFF00A5A4A2006C6D7100F4F7FE00A5A4A2006C6D
+ 7100F4F7FE00A5A4A2006C6D7100F4F7FE00A5A4A2006C6D7100F4F7FE0089A2
+ F6005871C8000000000000000000000000000000000000000000526CC3007491
+ F400ABBDF80099A9DE00E5E5E500E5E5E500E5E5E500E5E5E500E5E5E500E5E5
+ E500E5E5E500E5E5E500E5E5E500E5E5E500E5E5E500E5E5E50099A9DE0097AD
+ F700819BF500526CC30000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B8B8B700BEBD
+ BC00EDECEC00F6F6F600F7F7F700F8F8F800F9F9F900F5F5F500EFEFEF00E6E6
+ E600CFCFCE009F9E9E0000000000000000000000000000000000000000000000
+ 000000000000000000009FB1F0006F84CF00A2B2E900A9BBF800AABCF7008C9F
+ DF00647ACA009FB1F00000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007D97EE0091A7F1009AAEF200191918007F8FC200A1B4F300191918007F8F
+ C200A1B4F300191918007F8FC200A1B4F300191918007D8DC2009AAEF2007D97
+ EE005872C9000000000000000000000000000000000000000000546EC5007491
+ F400B7C7F900B9C8F900B9C8F900B9C8F900B9C8F900B9C8F900B9C8F900B9C8
+ F900B9C8F900B9C8F900B9C8F900B9C8F900B9C8F900B9C8F900B9C8F90099AF
+ F700819BF500546EC50000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B8B8B800EBEAEA00F6F6F600F5F5F500F7F7F700F9F9F900F9F9F900CDCC
+ CB00A4A4A3000000000000000000000000000000000000000000000000000000
+ 0000000000005770C800A1B3EF009BB0F7009BB0F7009BB0F7009BB0F7009BB0
+ F7009BB0F7008DA2EB005770C800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005872C9005872C9005872C9005F5F5F004F5E92005872C9005F5F5F004F5E
+ 92005872C9005F5F5F004F5E92005872C9005F5F5F004F5E92005872C9005872
+ C9005B76D2000000000000000000000000000000000000000000556FC6006D8C
+ F300A6B9F800AFC0F900B1C1F900B2C2F900B2C2F900B2C2F900B2C2F900B2C2
+ F900B2C2F900B2C2F900B2C2F900B2C2F900B2C2F900B1C1F900ADBEF800849E
+ F5007894F400556FC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B6B4B300D7D5D500ECECEB00F6F6F600F8F8F700E6E5E500A7A6
+ A600000000000000000000000000000000000000000000000000000000000000
+ 0000000000005871C800A5B7F300A3B6F800A3B6F800A3B6F800A3B6F800A3B6
+ F800A3B6F80095AAF1005871C800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D2D1D0008080800000000000D2D1D0008080
+ 800000000000D2D1D0008080800000000000D2D1D00080808000000000000000
+ 00000000000000000000000000000000000000000000000000005670C7006382
+ EA00849DEE00889FEE008AA0EE008AA0EE008AA0EE008AA0EE008AA0EE008AA0
+ EE008AA0EE008AA0EE008AA0EE008AA0EE008AA0EE008AA0EE00879FEE007B94
+ ED006886EB005670C70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000B2B1B100A8A6A600BCBAB900B3B1B000A7A6A6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000647EDB008D9FDF00B4C4F900ADBEF800A8BAF800A6B9F800AABC
+ F800ACBDF800879ADC006B85DE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000808080009090900000000000808080009090
+ 9000000000008080800090909000000000008080800090909000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000006B85DE005A74CF005872C9005872C9005B76
+ D2006B85DE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D1D1D100CFCFCF00C9C9C900C7C7C700C5C5
+ C500C5C5C500C5C5C50091A1D70029386D00C5C5C500C8C8C800D3D3D3000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BAC6F200364A91004F63
+ A5008793BC00A7B0CF00D9DFF300D9DFF400D9DFF400D9DFF400D9DFF400D9DF
+ F400D9DFF400D9DFF400D9DFF400D9DFF400D9DFF400D9DFF400D9DFF400DADF
+ F200A5AECE003A4D930000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000029396C00526297008494C8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002F448B002E3F7B002A3B78002A3B78002A3B
+ 78002A3B78002A3B78002A3B78002A3B78002A3B78002A3B78002A3B78002A3B
+ 78002A3B7800354B970000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000435BAE007182BB005C77
+ D3007B90D7006979B200A3ADCF00C0CBEE00C0CBEE00C0CBEE00C0CBEE00C0CB
+ EE00C0CBEE00C0CBEE00C0CBEE00C0CBEE00C0CBEE00C0CBEE00C0CBEE00C4CE
+ EF00CFD7F200A3ADD00000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008093D9005466A5004059AA008393C8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BAC6F2004F609F002C3D7B004E66B700506AC400506A
+ C400506AC400506AC400506AC400506AC400506AC400506AC400506AC400506A
+ C400506AC4002D3F7F0000000000000000000000000000000000000000000000
+ 000000000000000000002E4696001F3376001F3376001F3376001F3376001F33
+ 76001F3376001F3376001F3376001F3376001F3376002E469600000000000000
+ 00000000000000000000000000000000000000000000354992008699DA004868
+ D200607BD8008699DA005C6CA700B7C4ED00B7C4ED00B7C4ED00B7C4ED00B7C4
+ ED00B7C4ED00B7C4ED00B7C4ED00B7C4ED00B7C4ED00B7C4ED00B7C4ED00B7C4
+ ED00BCC8EE00CFD6EF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004B62
+ B20036457A00324DAA00032597008494CC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000BAC6F20031458D00526ECE002F4183000328A000042CB200042C
+ B200042CB200042CB200042CB200042CB200042CB200042CB200042CB200042C
+ B200506CC9003043850000000000000000008E8C8A00BBB9B700BBB9B700BBB9
+ B700BBB9B700BBB9B70029429500042DB700042DB700042DB700042DB700042D
+ B700042DB700042DB700042DB700042DB7004F6ED70029429500BBB9B700BBB9
+ B700BBB9B700BBB9B700BBB9B7008E8C8A00000000003B509D008EA3E9005D7B
+ E0005D7BE0008EA3E9003B509D00A7B7EE00A7B7EE00A7B7EE00A7B7EE00A7B7
+ EE00A7B7EE00A7B7EE00A7B7EE00A7B7EE00A7B7EE00A7B7EE00A7B7EE00A7B7
+ EE00A7B7EE00C4CEF00000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000045569000546C
+ BD004762BF007186CE002B4BB6008496D4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000374D9A002C459A000732C1006582E30035498F00042BAE000430C2000430
+ C2000430C2000430C2000430C2000430C2000430C2000430C2000430C2000430
+ C2004F6DD300364B9300000000000000000093918F00D8D8D700D8D8D700D8D8
+ D700D8D8D700D8D8D7002F4AA4001942CD001D46CE001E46CE001E46CE001E46
+ CE001E46CE001E46CE001E46CE001C45CE005474E1002F4AA400D8D8D700D8D8
+ D700D8D8D700D8D8D700D8D8D70093918F00000000003D54A40095A9ED006885
+ E6006885E60095A9ED003D54A400A5B6F000A5B6F0001442D9001442D9001442
+ D9001442D9001442D9001442D9001442D9001442D9001442D9001442D900A5B6
+ F000A5B6F000C3CEF10000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003C54A300516CC7004F6B
+ C8007184C600344581007184C6009BABE0000000000000000000B9C6F1002E42
+ 8800B9C6F100000000000000000000000000000000000000000000000000BDC9
+ F4002E489F000833C5000D3AD0007791EB00374C9700042DB6000432CA000432
+ CA000432CA000432CA000432CA000432CA000432CA000432CA000432CA000432
+ CA004F6FD9003A4F9900000000000000000098969400F5F5F400F5F5F400F5F5
+ F400F5F5F400F5F5F4003652B4003D63E300476BE300486CE400486CE400486C
+ E400486CE400486CE400486CE400466BE3005D7DEA003652B400F5F5F400F5F5
+ F400F5F5F400F5F5F400F5F5F40098969400000000004058AB009EB1F200738E
+ EB00738EEB009EB1F2004058AB00A9BAF300A9BAF3001443DE001443DE001443
+ DE001443DE001443DE001443DE001443DE001443DE001443DE001443DE00A9BA
+ F300A9BAF300C7D0F30000000000000000000000000000000000000000000000
+ 0000CED7F60092A4E3006179C70033488F002D3C71005568AA004161CB007287
+ CC00334687004A5EA40033468700A6B2DA0000000000BAC6F2002F4489004A5E
+ A4002F448900BAC6F2000000000000000000000000000000000000000000425A
+ AE005271D9005676E1006583E800859EEF003B509D00042EBC000434D1000434
+ D1000434D1000434D1000434D1000434D1000434D1000434D1000434D1000434
+ D1004F70DF003C53A100000000000000000099989600A3A19F00A3A19F00A3A1
+ 9F00A3A19F00A3A19F003D5DC6007994ED0088A0EF00A6B7F200B5C4F500B5C4
+ F500B5C4F500B3C2F400A2B4F200859EEF006382EB003D5DC600A3A19F00A3A1
+ 9F00A3A19F00A3A19F00A3A19F0099989600000000004660B700B2C2F80094AB
+ F60094ABF600B2C2F8004660B700B0C0F800B0C0F80088A1F50088A1F50088A1
+ F50088A1F500B0C0F80088A1F50088A1F50088A1F50088A1F50088A1F500B0C0
+ F800B0C0F800CBD5F70000000000000000000000000000000000536BBE004C5F
+ 9F004A66C5003857C0002447BA007288D200344889004F6FDB004258A4004F67
+ B9004A6BD800123DCC004A6BD8004F67B9003950A1004F67B9004A6BD800123D
+ CC004A6BD8004F67B9000000000000000000000000000000000000000000445C
+ AF000432CA000432CA000432CA000432CA000432CA000535D9000537E1000537
+ E1000537E1000537E1000537E1000537E1000537E1000537E1000537E1000537
+ E1004F73EA00445CAF0000000000000000000000000000000000000000000000
+ 000000000000000000004C6BD2003F5EC8003F5EC8003F5EC8003F5EC8003F5E
+ C8003F5EC8003F5EC8003F5EC8003F5EC8003F5EC8004C6BD200000000000000
+ 000000000000000000000000000000000000000000004962B900BFCDFA00ACBD
+ F800ACBDF800BFCDFA004962B900B4C4F900B4C4F9001647EC001647EC001647
+ EC001647EC00B4C4F9001647EC001647EC001647EC001647EC001647EC00B4C4
+ F900B4C4F900CED8F800000000000000000000000000000000003A4F96005A74
+ C900042FC000042FC000042FC000728ADB003A4F96005273E200485FAF00536E
+ C4004B6EE3000535D8001240DA004B6EE300536DC4004B6EE3001240DA001240
+ DA004B6EE300536EC40000000000000000000000000000000000000000004760
+ B700063AE800073BE900073BE900073BE900073BE900073BE900073BE900073B
+ E900073BE900073BE900073BE900073BE900073BE900073BE900073BE900063A
+ E8005075EF004760B70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003C59BC00708CEB006683E6005374
+ E1004F70DE005070DA004F6ED700314A9A000000000000000000000000000000
+ 000000000000000000000000000000000000000000004A63BB00CAD5FB00BFCD
+ FA00BECCFA00CAD5FB004A63BB00B7C7F900B7C7F9001849EC001849EC001849
+ EC001849EC00B7C7F9001849EC001849EC001849EC001849EC001849EC00B7C7
+ F900B7C7F900D0D9F800000000000000000000000000000000004056A3005071
+ DE000433CF000433CF000433CF00728DE4004056A3005779E9007F96E3004962
+ B7005772CF001344E7000539E6001344E700476DED001344E7000539E6004C71
+ ED005772CF00455EB70000000000000000000000000000000000000000004963
+ BA000E41EC001042EC001143EC001143EC001143EC001143EC001143EC001143
+ EC001143EC001143EC001143EC001143EC001143EC001143EC001143EC000E41
+ EC005378F1004963BA0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000425FC3007893EE004C6EDE00355A
+ D6001C45CE00042FC0004F6FD900354DA0000000000000000000000000000000
+ 000000000000000000000000000000000000000000004C66BD00D6DEF900DCE3
+ F900DBE2F900D6DEF9004C66BD00C3D0FA00C5D1FA00305CEE00305CEE00305C
+ EE00305CEE00C5D1FA00305CEE00305CEE00305CEE00305CEE00305CEE00C5D1
+ FA00C3D0FA00D6DEF900000000000000000000000000000000004A64BB006384
+ F3004C72F1004C72F1004C72F10088A1F5004A64BB005E80F2003862EF005D80
+ F2008CA2EC005E78D5005378F1001748EC001748EC001748EC005378F1004A64
+ BE00BFCCF5000000000000000000000000000000000000000000000000004C65
+ BC001F4FED002553EE002654EE002654EE002654EE002654EE002654EE002654
+ EE002654EE002654EE002654EE002654EE002654EE002654EE002654EE001E4E
+ ED005A7DF2004C65BC0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000004360C5006C88E700738DE4006E88
+ E2006781DE005A77D9005976D6003750A3000000000000000000000000000000
+ 00000000000000000000000000000000000000000000536ECA004D67BE004D67
+ BE004D67BE004D67BE004D67BE00C9D5FB00CBD6FB003E67F0003E67F0003E67
+ F0003E67F000CBD6FB003E67F0003E67F0003E67F0003E67F0003E67F000CBD6
+ FB00C9D5FB00D9E0F900000000000000000000000000000000004B65BD006F8D
+ F3006F8DF3006F8DF3006F8DF30095ACF7004B65BD006283F200466DF0006888
+ F30092A7EC006780D7006787F300315DEF00315DEF00315DEF006686F3004C66
+ C000BFCDF6000000000000000000000000000000000000000000000000004D66
+ BE002755EE00305CEE00325EEF00325EEF00325EEF00325EEF00325EEF00325E
+ EF00325EEF00325EEF00325EEF00325EEF00325EEF00325EEF00325EEF002755
+ EE005E80F2004D66BE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000004F6DD3004360C500405DBC003F5A
+ B8003E58B4003B54AC003952A900435EB7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000004F68BF00CFD9FB00D2DBFB004B71F1004B71F1004B71
+ F1004B71F100D2DBFB00B1C1F900B1C1F900B1C1F900B1C1F900B1C1F900D2DB
+ FB00CFD9FB00DCE3F900000000000000000000000000000000004C66BE007995
+ F40090A8F60090A8F60090A8F600A0B4F7004C66BE006586F3007391F40097AB
+ ED00536CC3007C97F400567AF2004C72F1004C72F1004C72F100567AF2006D85
+ D9004E68C100BFCDF60000000000000000000000000000000000000000004E68
+ BF00305CEE003B64EF003D66EF003D66EF003D66EF003D66EF003D66EF003D66
+ EF003D66EF003D66EF003D66EF003D66EF003D66EF003D66EF003D66EF002F5B
+ EE006183F2004E68BF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DFDEDE00EFEE
+ EE00C9C8C7008C8A880000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000516BC200D9E1FC00DDE4FC006586F3006586F3006586
+ F3006586F300DDE4FC006586F3006586F3006586F3006586F3006586F300DDE4
+ FC00D9E1FC00E3E8FB00000000000000000000000000000000004E68C00089A0
+ EC00AFC0F900B9C8F900B8C7F900ACBDF8004E68C0006C8BF3005E77CA006D86
+ DA009CB1F700819BF50087A1F5009EB3F7007D93DE009DB2F70087A1F50088A2
+ F60099AFF7006C85DA000000000000000000000000000000000000000000516A
+ C1004169F0005075F1005378F1005378F1005378F1005378F1005378F1005378
+ F1005378F1005378F1005378F1005378F1005378F1005378F1005378F1004068
+ F0006888F300516AC10000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DFDEDE00EFEE
+ EE00C9C8C7008C8A880000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000526CC300DEE5FC00E1E7FD00E2E8FD00E2E8FD00E2E8
+ FD00E2E8FD00E2E8FD00E2E8FD00E2E8FD00E2E8FD00E2E8FD00E2E8FD00E1E7
+ FD00DDE4FC00E4EAFB00000000000000000000000000000000006681DA00768C
+ D400B5C5F900B9C8F900B4C4F900A7B9F8004F69C100718FF4006179CC007189
+ DC00ACBDF800A1B5F700AFC0F9008397DF00536EC7008297DF00AEBFF800A1B5
+ F700AABCF8006F89DC000000000000000000000000000000000000000000526C
+ C3004A70F0005A7DF2005E80F2005E80F2005E80F2005E80F2005E80F2005E80
+ F2005E80F2005E80F2005E80F2005E80F2005E80F2005E80F2005E80F200496F
+ F0006B8AF300526CC30000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DFDEDE00EFEE
+ EE00C9C8C7008C8A880000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000546DC400E2E8FD00E6EBFD00CDD8FB00CDD8FB00CDD8
+ FB00CDD8FB00CDD8FB00CDD8FB00CDD8FB00CDD8FB00CDD8FB00CDD8FB00E6EB
+ FD00E2E8FD00E6EBFB0000000000000000000000000000000000000000006881
+ DB00657BC9007388D2008196DB008EA5F000506AC2008FA7F600ADBCF0005D76
+ CA00879CE000B4C4F900879CE0005D76CA00C1CDF600556FC800869ADF00B3C3
+ F900879BE000556FC8000000000000000000000000000000000000000000536D
+ C4005075F1006485F3006989F3006989F3006989F3006989F3006989F3006989
+ F3006989F3006989F3006989F3006989F3006989F3006989F3006989F3005075
+ F1006E8DF300536DC40000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DFDEDE00EFEE
+ EE00C9C8C7008C8A880000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000566FC600E7ECFD00EBF0FD0096ACF70098AEF70098AE
+ F70098AEF70098AEF70098AEF70098AEF70098AEF70098AEF70098AEF700EBF0
+ FD00E7ECFD00EBEFFD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005871CF00A8B9F600AABC
+ F800B6C3F100677FCE00AEBEF000B3C3F9000000000000000000C1CDF6005874
+ CF00C1CDF600000000000000000000000000000000000000000000000000566F
+ C600597CF2007290F4007D98F500809BF500809BF500809BF500809BF500809B
+ F500809BF500809BF500809BF500809BF500809BF500809BF5007D98F500587C
+ F200718FF400566FC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DFDEDE00EFEE
+ EE00C9C8C7008C8A880000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000005771C800E9EEFD00EDF1FE0095ACF7009EB3F7009FB3
+ F7009FB3F700A0B4F700A0B4F7009FB3F7009FB3F7009EB3F7009BB0F700EDF1
+ FE00E9EEFD00EDF1FD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000758BD200ACBC
+ F500A9BBF800C9D5FB0096ACF700A1B5F7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005770
+ C700567AF2006D8CF3007B97F400839EF500839EF500849EF500859FF500859F
+ F500859FF500859FF500849EF500849EF500839EF500819BF5007A96F4005479
+ F1006F8DF3005770C70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DFDEDE00EFEE
+ EE00C9C8C7008C8A880000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000005872C900EAEFFD00ECF0FE00EEF2FE00EFF3FE00EFF3
+ FE00F0F3FE00F0F3FE00F0F3FE00F0F3FE00EFF3FE00EFF3FE00EFF3FE00ECF0
+ FE00EAEFFD00EFF2FD0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006883DC00768B
+ D300A7B9F400849EF5007592F4009EB3F7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005871
+ C8004A70F0005D80F2006989F3007290F4007491F4007491F4007491F4007491
+ F4007491F4007491F4007491F4007491F4007290F4006F8DF3006888F300486F
+ F0006A8AF3005871C80000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009E9C9A009997
+ 9500959391008B89870000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000005B76D2005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C90000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000093A7ED009DAFEE0086A0F50094ABF6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005B76
+ D2005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005B76D20000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005D76CA0096A8E7008DA5F6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C1CDF6005B74CB008FA2E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000DDDDDD00C9C9C900C7C7C700C2C2C2008FA0D5003A4A
+ 7A003A4A7A00C0C0C000C1C1C100C7C7C700D5D5D500DCDCDC00000000000000
+ 0000000000000000000000000000000000000000000000000000DEDEDE006B80
+ C20027335F0026335D002A386D00C3C3C300C3C3C300C4C4C400D1D1D100D5D5
+ D500000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C7C7C700C0C0C0006679B80027325B0027325B0027325B0027325B002732
+ 5B0027325B0027325B0027325B0027325B0027325B00273462007385C800C7C7
+ C700D6D6D6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000003A4B82004B5B
+ 94004B5A9300B2BFEE0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004C64B5004656
+ 8A0098A5CE0098A4CD00828FB90031458A00DEE3F80000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000002A3A750003279E0003279E0003279E0003279E000327
+ 9E0003279E0003279E0003279E0003279E0003279E00435DB6003F58B0000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B8C6F2003D4E8E003F59B2000F30
+ 9F000F309F004B5E9F003D4E8E00B8C6F2000000000000000000000000000000
+ 00000000000000000000000000000000000000000000314792009BA8D200526D
+ C5002647B5002041B0001B3DAE00909ECB00293D7F0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000002D3D7A00092DA5006077C400768ACC00092DA5006077
+ C40096A6D800092DA5006077C4008A9BD4000328A300435EBA004059B1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000B9C8F2003D5091004C5FA1000F31A3000327
+ 9F0003279F003F5AB6004C5FA1003D5091000000000000000000000000000000
+ 000000000000000000000000000000000000000000002E4285008FA0DB004A66
+ C6003C5AC0003655BD003151BA00697FC9002B3E7C0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000002E407F00092EAA008C9DD700B5C0E600092EAA008C9D
+ D700C5CEEB00092EAA008C9DD700BDC7E800042AA900425EBD00415AB2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000DEDEDE00DEDEDE00CECECE00CECECE00C7C7C700C0C0C000C0C0
+ C000C0C0C000C0C0C000C0C0C00092A2D700394B8A0093A2D800C0C0C000DEDE
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000003F5193004C61A500435EBB000328A3000328
+ A3000328A3000F32A800435EBB004C61A500BBC8F20000000000000000000000
+ 0000000000000000000000000000000000000000000030448A008296D9005D77
+ D000516DCA004C68C8004764C6006079CC002D3F810000000000000000000000
+ 00000000000000000000000000008196DC00293A7500293A740033478C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000334688000A31B5006E85D30091A2DD000A31B500607A
+ CF0098A8E0000A31B500607ACF0091A2DD00042CB4004361C700435CB4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000007F92D8003E4C7E0093A5E4000000
+ 000000000000BDC9F300374E9D004F68BC004A6FE800657ECF00455FBB000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004153940041539400415394001338B100042A
+ AB00042AAB004360C1004153940041539400465CA90000000000000000000000
+ 000000000000000000000000000000000000000000006D83D4005669A80092A4
+ E300788FDC00758DDB00768DDA004B69CD0032468B0000000000000000000000
+ 0000000000008398DE00505F9800A4B1DD003E5BBD003957BB005F77C7005160
+ 9400647CCB000000000000000000000000000000000000000000000000000000
+ 0000000000000000000035498E000A33BB0091A3E000B5C1EA000A33BB008C9F
+ DF00BDC8ED000A33BB008C9FDF00CDD5F100042EB9004362CA00445DB5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002E4185005467A7005068BB000000
+ 0000000000003950A000506ABE004A6EE5006C8BF1007389D4004661BC000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000425596001439B500042B
+ B000042BB0004361C40042559600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000425AAE005468
+ A90097A9E50092A5E5008399E1003C5ECD003448900000000000000000000000
+ 0000000000003B53A2009EABD5005B75CC003252BE002D4EBB002748B70094A2
+ D000364A8D000000000000000000000000000000000000000000000000000000
+ 00000000000000000000384B9300042FBF00042FBF00042FBF00042FBF00042F
+ BF00042FBF00042FBF00042FBF00042FBF00042FBF004363CF00455EB6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000008296DB0043528900516BBE00384C95000000
+ 0000BDC9F400516BC1004A6EE600204EE800738AD500435DB600BECCF5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004D64B7004F65B20000000000000000000000000043569900143ABA00042D
+ B500042DB5004361C700435699000000000000000000000000004960AF00BAC9
+ F300000000000000000000000000000000000000000000000000000000006E86
+ D700384E9A00384E99004264D4004062D200374B950000000000000000000000
+ 00000000000034488D0094A5DF005470CD004765C8004260C6003C5BC200788C
+ D000314384000000000000000000000000000000000000000000000000000000
+ 000000000000000000003C529D000A36CA008CA1E600B5C3EF000A36CA008CA1
+ E600B8C5EF000A36CA008CA1E600C1CCF2000432CA004365D7004760B8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000475994004D69C7000932BD00556DBD003E54
+ A400556EC700204FEB006C8BF300758BD700BFCCF50000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004B62
+ B5004665CC004559A0000000000000000000000000004559A0001C42C3000D36
+ BF000D36BF004766CF004559A0000000000000000000000000004559A0005067
+ B700445AA300BCCAF40000000000000000000000000000000000000000000000
+ 0000000000003D54A400486BDF004669DC003C529F0000000000000000000000
+ 0000000000003D55A5008294D3007F95E0006D86DA006882D700647FD6006982
+ D60035498E000000000000000000000000000000000000000000000000000000
+ 000000000000000000003F55A2000735D0000735D0000735D0000735D0000735
+ D0000735D0000735D0000735D0000735D0000735D0004467DB004862B9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000566AB2003356CB000431C6005D78D7005570
+ C9004C71ED006C8BF300758CD7004761BA000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004C63B6005B70
+ B6004969D300465AA300465AA300465AA300465AA300465AA300284DCA001A42
+ C7001A42C7004D6CD300465AA300465AA300465AA300465AA300465AA3004666
+ D200536ABB00445CA70000000000000000000000000000000000000000000000
+ 0000000000004058A9004B6EE3004A6DE1003E55A50000000000000000000000
+ 0000000000006F85D7005A6DB00094A7E6008197E2007E95E0007E95E0005673
+ D400384C93000000000000000000000000000000000000000000000000000000
+ 000000000000000000004259A800103ED700A0B2EF00A0B2EF00103ED700A0B2
+ EF00A0B2EF00103ED700A0B2EF00A0B2EF00103ED700486BE0004963BA000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A8B7ED005470CF000E3ACC000434D1004268E800476D
+ ED002050ED00778CD8004862BC00BFCCF5000000000000000000000000000000
+ 000000000000000000000000000000000000000000004D65B8005E72BA00516F
+ D5005472D8005C77D1005974D1005974D1005A74D1005C77D1002A50CF00274D
+ CD00274DCD005876D9005D78D1005A74D1005974D1005974D1005B75D100284E
+ CE004D6DD700556DBE00BDC9F400000000000000000000000000000000000000
+ 000000000000435CAF004F72E8004D70E5004159AA0000000000000000000000
+ 00000000000000000000465FB500586CB2009BADE80097A9E8008BA0E5004969
+ D5003A5099000000000000000000000000000000000000000000000000000000
+ 000000000000000000004760B3005B668B008895BE008996BF008B98C1008C99
+ C2008D9AC3008F9CC500909DC600919EC7008B9ACB005073E9004B65BC000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000AAB9EF004D61A5000D3CD7000537DE000539E600053AEB000C3F
+ EC005579F1006B85D8005F76C6004B65BE009DB0EE0000000000000000000000
+ 0000000000000000000000000000000000004B63B7005574DC003A5FD9003C61
+ D9004064DB003F63DB003F63DB003F63DB003F63DB003F63DB004064DB004064
+ DB004064DB004064DB004064DB003F63DB003F63DB003F63DB003F63DB003F63
+ DB003B60D900395ED900556FC3004B63B7000000000000000000000000000000
+ 0000000000004862B9005579F0005578EE00465FB50000000000000000000000
+ 000000000000000000000000000000000000BFCDF8004159A7005474E1005272
+ DF004056A3000000000000000000000000000000000000000000000000000000
+ 000000000000000000004A62B70039456E0054659F005566A0005869A300596A
+ A4005B6CA6005D6EA8005F70AA006071AB00919DC6005477ED004C66BD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005E77CC005971C5000537E1000539E800053AEB001244EC002654
+ EE003B64EF007B97F40086A0F500839BEB006A80CB00526DCA00000000000000
+ 0000000000000000000000000000000000004D65BA005777E2004266DE00486B
+ DF004C6EDF004C6EDF004C6EDF004C6EDF004C6EDF004C6EDF004C6EDF004C6E
+ DF004C6EDF004C6EDF004C6EDF004C6EDF004C6EDF004C6EDF004C6EDF004C6E
+ DF00486BDF004266DE005770C7004D65BA000000000000000000000000000000
+ 0000000000004963BB00597CF200597CF2004963BA0000000000000000000000
+ 00000000000000000000000000000000000000000000445CAD005878E5005676
+ E3004259A9000000000000000000000000000000000000000000000000000000
+ 000000000000000000004C66BD0036426A0051629B0052639C0054659E005667
+ A0005768A1005A6BA4005B6CA5005C6DA6008E9AC200597CF1004D67BE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D1DAF8004D62AE005B79DF00053AEA00053AEB00093DEB002E5AEE00426A
+ F000567AF200809BF50093AAF600AEBFF8007287CE00546ECB00000000000000
+ 000000000000000000000000000000000000BFCBF5005C76CB006381E7005274
+ E3005778E5005475E4005274E3005274E3005374E3005677E5005979E5005979
+ E5005979E5005979E5005677E4005374E3005274E3005274E3005475E4005576
+ E4005374E3006381E7004A63B600BFCBF5000000000000000000000000000000
+ 0000000000004A64BC005D80F2005C7FF2004A64BC0000000000000000000000
+ 000000000000000000000000000000000000000000004760B3005D7DEA005B7B
+ E800455DAF000000000000000000000000000000000000000000000000000000
+ 000000000000000000004F69C000333E63004A5A8F004B5B90004E5E93005060
+ 9500516196005464990055659A0056669B008A95BB006283F2004F69C0000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000546BBC005C7CE8001849EC001446EC002856EE003D66EF006D8CF3009BB0
+ F700BDCBF9007487CE00536EC90091A5EB000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BFCCF5004D66BC005C77
+ D0005F7FEC004C65B8004C65B8004C65B8004C65B8004C65B8007792EE00738F
+ EE00738FEE007994EF004C65B8004C65B8004C65B8004C65B8004C65B8005E7F
+ EC005C77D0004D66BC0000000000000000000000000000000000000000000000
+ 0000000000004D67BE006485F3006485F3004D67BE0000000000000000000000
+ 000000000000000000000000000000000000000000004C66BD006787F2006484
+ F0004A63B9000000000000000000000000000000000000000000000000000000
+ 00000000000000000000506AC100313C5F004857890049588A004C5B8D004D5C
+ 8E004F5E90005160920053629400546395008994B7006686F300506AC1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000647DD4003D66EF000A3EEB002F5BEE00446BF0006888F300BAC8F800A2B1
+ E6006E83CD009FB1EF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCCF5004D66
+ BF004F74ED004D66BB000000000000000000000000004D66BB007F9AF1007E99
+ F1007E99F1007893F0004D66BB000000000000000000000000004D66BB005A76
+ D2004D66BF00BFCCF50000000000000000000000000000000000000000000000
+ 0000000000004E68BF006888F3006E8DF3005B73C4004E68C100839AE700BFCD
+ F60000000000000000000000000000000000000000004E68BF006B8AF3006989
+ F3004D67BE000000000000000000000000000000000000000000000000000000
+ 00000000000000000000516BC2002F395A004554840046558500485787004A59
+ 89004B5A8A004E5D8D004F5E8E00516090008690B2006A8AF300516BC2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006280E8002654EE002251ED005C7FF20094ABF600B7C6F6006E84CE005C77
+ D400AEBEF3000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000BFCD
+ F6005673D5004E68BF000000000000000000000000004E68BF0089A2F5008BA4
+ F5008BA4F5007C97F4004E68BF000000000000000000000000004E68BF004E68
+ C100BFCDF6000000000000000000000000000000000000000000000000000000
+ 0000000000004F69C0006B8AF300849EF500B9C7F700A8B8ED00768AD1005C74
+ C500536CC0007991E300AEBEF30000000000000000004F69C0006F8DF3006D8C
+ F3004F69C0000000000000000000000000000000000000000000000000000000
+ 00000000000000000000546DC4002B3452003F4C7700414E790043507B004451
+ 7C0046537E00485580004A5782004B588300838CAB007391F400546DC4000000
+ 0000000000000000000000000000000000000000000000000000000000005972
+ CA006183F2008FA7F600AABAF100637BCC006B84DD00D3DBF900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000506AC1009FB3F700A4B7
+ F800A4B7F80086A0F500506AC100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000516BC2007290F400829CF500819BF500809BF5007E99F50089A2
+ F6009BB0F700B4C4F900B7C7F900AEBEF200788ED600647BC8007C97F4007693
+ F400516BC2000000000000000000000000000000000000000000000000000000
+ 00000000000000000000556EC50029314E003C4870003E4A7200404C7400424E
+ 7600434F770046527A0047537B0049557D008189A6007794F400556EC5000000
+ 00000000000000000000000000000000000000000000000000007C93E6007A8F
+ D700A2B4EF008699DA005C75CC00D3DBF9000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000516BC200516BC200516BC200ADBEF800B1C1
+ F900B1C1F90091A8F600516BC200516BC2005973CE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000526CC3007391F40087A1F50086A0F500859FF500839EF500829D
+ F500829CF5007F9AF50086A0F50099AFF700B9C8F900C2CFFA008CA5F6007A96
+ F400526CC3000000000000000000000000000000000000000000000000000000
+ 00000000000000000000566FC600272F49003B466C003B466C003E496F003F4A
+ 7000414C7200434E740045507600465177007E86A1007B97F400566FC6000000
+ 00000000000000000000000000000000000000000000000000005872CA009BAC
+ E7005C75CC007C93E60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000627CD2005F7FEA00748FEC00B7C7F900BDCB
+ FA00BDCBFA00A7B9F8007E98ED006080EA00546FCA0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000536DC4006384F30093AAF6008FA7F6008BA4F60089A2F60088A2
+ F60087A1F500849EF500839EF500829DF500819BF50087A1F500839EF5007F9A
+ F500536DC4000000000000000000000000000000000000000000000000000000
+ 000000000000000000005871C800242B4400343D5C0038426200384262003943
+ 63003B4565003D4767003F496900404A6A00787F99007E99F5005871C8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000BFCDF600536DC6006781DA00AEBFF800C2CF
+ FA00C3D0FA0094ABF6006E87DB00536DC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000009FB1F0005D77CF005771C700637CCF007993E90086A0
+ F40095ACF70097ADF70092A9F6008FA7F6008DA5F6008BA4F6008AA3F60086A0
+ F500556FC6000000000000000000000000000000000000000000000000000000
+ 000000000000000000005872C90027304F00262D4400282E4400292F4500292F
+ 4500292F4500292F4500292F4500292F4500515870007794F4005872C9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000BFCDF600536EC70094ABF6009FB3
+ F700A0B4F700718ADD00536EC700BFCDF6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D3DBF90093A7ED005874CD005C75
+ C900647ED300879EEB008EA6F60099AFF70099AFF70094ABF60090A8F6008AA3
+ F6005670C7000000000000000000000000000000000000000000000000000000
+ 000000000000000000005872CA00879FF0008FA6F00093A9F20095AAF20095AA
+ F20095AAF20095AAF20094AAF20092A8F200849DF0007A93E7005872CA000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C1CDF6006F88DC00829C
+ F500829CF500556FC700C1CDF600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CED8
+ F800859CE9005771C9006179CC006680D60092A8F00097ADF7009EB3F70089A2
+ F6005771C8000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C1CDF6005874
+ CF005874CF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000AFBFF3007C93E4005771
+ C8005771C9000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002A3B7700DBE0F100DDE2
+ F200DEE3F300DFE4F300DFE4F300E0E5F300E0E5F300E2E7F400E3E7F500E3E7
+ F500E3E7F500E5E9F600E5E9F600E6EAF600E8ECF700E8ECF700E8ECF700E8EB
+ F600E9ECF700EAEDF700000000000000000000000000D3D3D3005F5D5E005E5C
+ 5C0037363800B9B9B90000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002D3F7F00D7DDF100C8D0
+ EC00C9D1ED00CAD2ED00CBD3ED00CCD3ED00CDD4ED00CED5EE00D0D7EF00D1D8
+ EF00D2D9EF00D3D9EF00D4DAF000D5DBF100D7DDF200D7DDF200D7DDF100D9DE
+ F200DADFF200E6EAF8000000000000000000000000007B7979008D8B8A007D7B
+ 7A006462620039383900CFCFCF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000030448600D6DCF200C3CC
+ EC003E5DC4003E5DC4003E5DC4003F5EC4003F5EC4003F5EC400C9D2EF00C9D2
+ EF00CAD2EF00CBD3EF00CDD5F000CDD5F000CFD6F000D0D7F000D1D8F100D2D9
+ F100D3DAF100E0E5F500000000000000000000000000858383009E9B9A00A19F
+ 9E00676564006462620039383900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000384C9700D7DEF500C6D0
+ F1003F61D2003F61D2003F61D2003F61D2003F61D2003F61D200C4CEF000C4CE
+ F100C4CEF100C4CEF100C3CEF100C3CEF100C3CEF100C3CEF100C3CEF100C4CE
+ F100C4CEF100D7DEF50000000000000000000000000000000000D3D3D3008583
+ 8200A19F9E007D7B7A006765640039383900CFCFCF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000687AB8007084C600566E
+ BC00566EBC00566EBC00566EBC00566EBC00566EBC00566EBC00566EBC00566E
+ BC00566EBC00566EBC00566EBC00566EBC00566EBC00566EBC00566EBC00566E
+ BC00566EBC007084C60023336700000000000000000032479000304589003045
+ 8900304589003045890030458900304589003045890030458900304589003045
+ 8900304589003045890030458900304589003045890030458900304589003045
+ 89003045890030458900859AE00000000000000000003B519F00D9E0F700C8D2
+ F4003F63DA003F63DA003F63DA003F63DA003F63DA003F63DA00C6D1F400C6D1
+ F400C6D1F400C5D0F300C5D0F300C5D0F300C4CFF300C4CFF300C4CFF300C3CE
+ F300C3CEF300D6DDF7000000000000000000000000000000000000000000D3D3
+ D3009E9B9A00A19F9E007D7B7A006462620039383900CFCFCF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004259A600344FA700405C
+ BB001D3FAF001D3FAF001D3FAF001D3FAF001D3FAF001D3FAF001D3FAF001D3F
+ AF001D3FAF001D3FAF001D3FAF001D3FAF001D3FAF001D3FAF001D3FAF001D3F
+ AF003956B900344FA70027366E0000000000000000005C74C5005873D0005873
+ D0005873D0005873D0005873D0005873D0005873D0005873D0005873D0005873
+ D0005873D0005873D0005873D0005873D0005873D0005873D0005873D0005873
+ D0005873D0005873D0003D529A0000000000000000003F57A700DBE2F900CAD4
+ F6004065E0004065E0004065E0004065E0004065E0004065E000C8D3F600C8D3
+ F600C8D3F600C7D2F600C7D2F600C7D2F600C6D1F500C6D1F500C6D1F500C5D0
+ F500C5D0F500D7DEF80000000000000000000000000000000000000000000000
+ 0000858382009E9B9A00A19F9E00676564006462620039383900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000425CB300032491003550
+ AB001C3FB2001C3FB2001C3FB2001C3FB2001C3FB2001C3FB2001C3FB2001C3F
+ B2001C3FB2001C3FB2001C3FB2001C3FB2001C3FB2001C3FB2001C3FB2003251
+ BA003550AB0003249100293972000000000000000000587BED001444E6000E2A
+ 8A001744DB000F2B8A001744DB000F2B8A000F2B8A000F2B8A000F2B8A001744
+ DB000F2B8A000F2B8A000F2B8A001744DB000F2B8A000F2B8A001744DB000F2B
+ 8A001644DB000D2A8A005268B70000000000000000004761B700DEE5FB00D1DA
+ FA005176EF005075EF005075EF005075EF005075EF005075EF00D0DAFA00D0DA
+ FA00D0DAFA00CFD9FA00CFD9FA00CFD9FA00CED8FA00CED8FA00CED8FA00CDD7
+ FA00CCD7FA00DAE1FB0000000000000000000000000000000000000000000000
+ 000000000000D3D3D30085838200A19F9E007D7B7A006765640039383900CFCF
+ CF00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000435EBB000429A5000429
+ A500324FB0002C4DBC00163BB500163BB500163BB500163BB500163BB5001235
+ A8001235A800163BB500163BB500163BB500163BB500163BB5002C4DBC000327
+ 9E000429A5000429A5002E3F7D0000000000000000006383EE002352ED006886
+ EB00335EEF006A88EE00335EEF006985E2006985E2006985E2006986E600335E
+ EF006A88EE006A88EB006986E600335EEF005F71B0006883DF00335EEF006A88
+ EE00325EEF006786EE00566EBE0000000000000000004963BA00E0E6FC00D4DD
+ FC00597CF200597CF200597CF200597CF200597CF200597CF200D4DDFC00D4DD
+ FC00D4DDFC00D3DCFB00D3DCFB00D3DCFB00D3DCFB00D3DCFB00D2DBFB00D2DB
+ FB00D0DAFB00DDE4FC0000000000000000000000000000000000000000000000
+ 00000000000000000000D3D3D3009E9B9A00A19F9E007D7B7A00646262003938
+ 3900CFCFCF000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000425FBF00042AAA00042A
+ AA000328A400304EB200294CBE001338B7001338B7001338B7001136AF000E2F
+ 9E000E2F9E001338B7001338B7001338B7001338B700294CBE00304EB200042A
+ AA00042AAA00042AAA003042820000000000000000006D8AEB00305CEE002B43
+ 9400243D90003D63E300243D9000354C9800486CE400354C9800304896003960
+ E300284192002C44940030489600385EDE007692EF005075F1003D66EF002841
+ 92003960E300253E92005A70C10000000000000000004A64BB00E2E8FD00D8E0
+ FC006283F2006283F2006183F2006183F2006183F2006183F200D8E0FC00D7DF
+ FC00D7DFFC00D7DFFC00D7DFFC00D7DFFC00D6DFFC00D6DFFC00D6DFFC00D5DE
+ FC00D4DDFC00DFE6FC0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000858382009E9B9A00A19F9E00676564006462
+ 6200393839000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004361C400052CB000062D
+ B100062DB100052BAC00304FB6001138B9001138B9001138B9000F31A3008598
+ D8008598D8000E33B1001138B9001138B900264AC0002F4EB600042AAB00042B
+ B000042BB000042BB0003346870000000000000000007691ED00496FF0003D51
+ 94006381E700394D91005D7DE6005D7DE600394D91005D7DE6005D7DE600394D
+ 91005D7DE6007483B3007483B3006583E6007483B3007483B3006280E4003C50
+ 93005A7AE600374C93005F76C50000000000000000004D66BE00E6EBFD00DEE5
+ FC007290F4007290F4007290F4007290F4007290F4007290F400DEE5FC00DEE5
+ FC00DEE5FC00DEE5FC00DDE4FC00DDE4FC00DDE4FC00DDE4FC00DDE4FC00DCE3
+ FC00DAE2FC00E2E8FD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D3D3D30085838200A19F9E007D7B
+ 7A005A585700373A4600354A9200425BB3000000000000000000A6B6EC002C3F
+ 820000000000000000000000000000000000000000004967CD001A40C0002045
+ C2002247C3002146C3002146C3003F5DC300284CC3001A3DB1007791E5004C6D
+ DC004B6CDB008C9EDD00183BAF003052C4001C41BF001D43C2001C42C2001C42
+ C200193FC000133ABF00384C920000000000000000007A94EE005378F10092A7
+ EE007693F40099AEF2007693F4007693F40099AEF2007693F4007693F40099AE
+ F2007693F40094A7E60095A8EA007995F40094A7E60095A8EA007995F40099AE
+ F2007391F4008DA4F1005871C40000000000000000004E68BF00E6ECFD00E1E7
+ FD007A96F4007A96F4007A96F4007A96F4007A96F4007A96F400E2E8FD00E1E7
+ FD00E1E7FD00E1E7FD00E1E7FD00E1E7FD00E0E6FC00E0E6FC00E0E6FC00DFE6
+ FC00DDE4FC00E4E9FD0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D3D3D3009E9B9A008D8C
+ 8A00646262009E9D9D0034343C0052629D00899DE3006B82D2003B4D8D003A49
+ 8000CED7F600000000000000000000000000000000004C6BD200254AC8002D52
+ CA002F53CB002F53CB002F53CB00294DC5003B57B70091A3E0005878E1005777
+ E0005777E0007993E70091A3E0003855B6002B50CA002B50CA002B50CA002A4F
+ CA00264BC9001C43C6003A50970000000000000000007B96EE00597CF2004B5C
+ 96004E5E93007D96E9004E5E93004E5E93007D96E9004E5E93004E5E93007D96
+ E9004E5E93005A699A00576698007A94E8005A699A00576698007A94E8005060
+ 9500718CE8003D519300536DC40000000000000000004F69C000E8EDFD00E3E9
+ FD00829CF500829CF500829CF500829CF500829CF500829CF500E5EAFD00E5EA
+ FD009DB2F7009DB2F7009DB2F7009DB2F7009DB2F7009DB2F7009DB2F7009BB0
+ F700E0E6FC00E6EBFD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000858382008885
+ 8500BBBAB900BBB9B7009E9D9D0032343D00485CA6004A5EA500556FC5004354
+ 8E00A5B6EB00000000000000000000000000000000004E6DD6002F54CF003B5E
+ D2003F61D3003F61D3003E61D300274ABC0096A7E200849CEA006482E5006381
+ E5006381E5006381E500839BEA0095A7E2003457CD003A5DD200395CD200395C
+ D2003257D000254CCD003D529D0000000000000000007B93E700819CF30092A9
+ F600A3B6F800A4B7F800A6B9F800A8BAF800A6B9F800A8BAF800A8BAF800A6B9
+ F800A8BAF800A9BBF800ABBDF800A6B9F800ADBEF800AABCF800A4B7F8009FB3
+ F70094ABF60087A1F5005771C9000000000000000000526CC300EBF0FD00E7EC
+ FD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00E9EEFD00E9EEFD00E9EE
+ FD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E7EC
+ FD00E5EAFD00E8EDFD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C3CE
+ F20083838700F0F0F000CCCBCA00BBB9B70032343D002347BF000534D400556C
+ B6003B4D8F004057A8000000000000000000000000005575E0004669DD005877
+ E0005D7BE1005373DE003759CA0098ACF0007B95EC007B95EC007B95EC007B95
+ EC007B95EC007A95EC007A95EC007A95EC009EAEE7003457C9004E6FDD005777
+ E0004B6DDD00375CDA00435AA70000000000000000005872CA00495891004A59
+ 9100697EC8006D82CF006D82CF006D82CF006D82CF006D82CF006D82CF006D82
+ CF006D82CF006D82CF006D82CF006D82CF006D82CF006D82CF006D82CF006C82
+ CF006B82CE006980CE0093A8ED000000000000000000536DC400ECF0FE00E9EE
+ FD007693F4007693F4007693F4007693F4007693F4007693F4007693F4007693
+ F4007693F4007693F4007693F4007693F4007693F4007693F4007693F400708E
+ F400E6ECFD00E9EEFD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004660
+ B9006A7CBD00CFCECE00F0F0F000CCCBCA009E9D9D002B3049000537DE004668
+ D7005772CC00576CB300475EAE0000000000000000005878E4005072E2006683
+ E6006885E5004162CF00A3B3E900879FEF00879FEF00879FEF00879FEF00869E
+ EF00869EEF00869EEF00859EEF00869FF0009EB1F200A1B1E8003E5FCE006683
+ E6005979E4003F64DF00465DAE00000000000000000000000000000000008380
+ 7E00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000546EC500EDF1FE00EBF0
+ FD00809BF500809BF500809BF500809BF500809BF500809BF500809BF500809B
+ F500809BF500809BF500809BF500809BF500809BF500809BF500809BF5007794
+ F400E8EDFD00EBF0FD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004E69
+ C6006A80CE0088888B00CFCECE00F0F0F00093919000383D55000539E8000534
+ D4002F54D3005470CE005D74C60000000000000000005A7BE800597AE700728D
+ EA004D6DD700A4B4EA00ACBDF60093A9F20093A9F20093A9F20092A8F20092A8
+ F20092A8F20091A7F20091A7F20091A7F20091A7F2009DB1F300A3B3EB00718D
+ EA006482E800476CE5004961B30000000000000000000000000000000000918F
+ 8F00908D8B00918E8C00928F8D0093908E0094918F0095929000979492009895
+ 9300999694009B9896009C9997009D9A98009E9B99009F9C9A009B999800A09F
+ 9E00B6B4B400D6D6D6000000000000000000000000005770C700F0F3FE00EDF1
+ FE00839EF5008AA3F6008CA5F6008EA6F6008FA7F6008FA7F6008FA7F6008FA7
+ F6008FA7F6008FA7F6008FA7F6008FA7F6008DA5F6008CA5F6008AA3F6007693
+ F400EAEFFD00ECF0FE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008FA1E00099AAE300848692004A6AD700305CEE001E4EED004B70
+ EE005E77CB004A63BB000000000000000000000000005C7EEE006383F0005273
+ E000B4C4F800ADBEF700ACBDF700ACBDF700ACBDF700ABBCF700ABBCF700ABBC
+ F700ABBCF700AABCF700AABCF700AABCF700A9BBF700A9BBF700A9BBF700A9B9
+ EE00486BDF004D72ED004F68BE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005871C800F0F3FE00EDF1
+ FE00F0F3FE00F1F4FE00F1F4FE00F1F4FE00F1F4FE00F1F4FE00F0F3FE00F0F3
+ FE00F0F3FE00F0F3FE00F0F3FE00F0F3FE00EFF3FE00EFF3FE00EEF2FE00ECF0
+ FE00EAEFFD00EDF1FE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000A1B1EB009AAFF7007995F4005479F100436BF000305CEE003B64
+ EF00617CD8004F69C4000000000000000000000000005C7FF200466BE500A6B6
+ EF00ADBEF800AFC0F900B0C0F900B0C0F900B0C0F900B0C0F900B0C0F900AFC0
+ F900AFC0F900AFC0F900AFC0F900AEBFF800ADBEF800ADBEF800ABBDF800AABC
+ F800A0B2ED003A61E400526CC300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005872C900F1F4FD00F1F4
+ FD00F2F5FD00F3F6FD00F3F6FD00F3F6FD00F3F6FD00F3F6FD00F3F6FD00F3F6
+ FD00F2F5FD00F2F5FD00F2F5FD00F2F5FD00F1F4FD00F1F4FD00F1F4FD00F0F3
+ FD00EFF2FD00EEF2FD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009FB0EF00B0C0F700ACBDF8009BB0F7006787F3005479F1005E80F200486F
+ F0005A7CED00566EC1000000000000000000000000005578EB0098ACEE0095AC
+ F7009AAFF7009DB2F7009EB3F7009EB3F7009FB3F7009EB3F7009EB3F7009EB3
+ F7009EB3F7009EB3F7009DB2F7009DB2F7009CB1F7009BB0F70099AFF7008EA6
+ F6008BA4F60092A7ED00546EC500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000839AE8005B76D3005B76D300536FCA009EB3F70093AAF6007086D1005B76
+ D3005B76D3005B76D300000000000000000000000000617ACC005670C7005670
+ C7005670C7005670C7005670C7005670C7005670C7005670C7005670C7005670
+ C7005670C7005670C7005670C7005670C7005670C7005670C7005670C7005670
+ C7005670C7005670C7005670C800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000AEBEF30095AAF200889EE600566FC8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000007289D700637BCE0092A7EC000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C9C9C900A1ADDA0058648C00545664005456640054566400545664005456
+ 6400545664005456640054566400545664005456640053556300525E8800C2C2
+ C200D4D4D4000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DCDCDC00C4C4C4003847
+ 7D0027345E0027345E0027345E0027345E0027345E0027345E0027345E002734
+ 5E0027345E0027345E0027345E0027345E0027345E0027345E0027345E002734
+ 5E0038477D00C4C4C40000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C3CEF1005E607000999CA600B0B1BA00B0B1BA00B0B1BA00B0B1BA00B0B1
+ BA00B0B1BA00B0B1BA00B0B1BA00B0B1BA00B0B1BA00B0B1BA00999BA600BEC9
+ EE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002B3C
+ 78000328A30003208200E8E8E700E5E4E300E0DFDE00DBDAD900032082000328
+ A3000328A3000328A3000328A3000328A3000328A3000328A3000328A300435E
+ BA002B3C78000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A3B3EA002F3E73003F4F840044579700495DA100495D
+ A100495DA100445797003F4F86002F3F7400A3B3EA0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000060647500A6A9B60025377600253776002537760025377600253776006870
+ 92007B819B002537760025377600253776002537760025377600253776006569
+ 7A00000000000000000000000000000000000000000000000000000000000000
+ 00000000000029386A005469AE005065AC005065AC005065AC005065AC005065
+ AC005065AC005065AC005065AC005065AC005065AC005469AE00344686000000
+ 0000000000000000000000000000000000000000000000000000000000002C3F
+ 7E00042AA90003218700E8E8E700EFEEED00EAE9E800E5E4E30003218700042A
+ A900042AA900042AA900042AA900042AA900042AA900042AA900042AA900425E
+ BD002C3F7E000000000000000000000000000000000000000000000000000000
+ 0000000000004159A70035447A00455EAF002F4BAB001E3DA400032699000326
+ 9900032699001E3DA4002F4BAB00455EAF0035447A004159A700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000063677800A2A4B400263877002638770026387700263877002C3D77005960
+ 7A0059607A002638770026387700263877002638770026387700263877006367
+ 7800000000000000000000000000000000000000000000000000000000000000
+ 0000000000002B3C7800536CBF000328A0000328A0000328A0000328A0000328
+ A0000328A0000328A0000328A0000328A0000328A000536CBF00354994000000
+ 0000000000000000000000000000000000000000000000000000000000002F42
+ 8300042BAF0003238C00DFDFDD00F3F3F100F3F3F200EFEFEE0003238C00042B
+ AF00042BAF00042BAF00042BAF00042BAF00042BAF00042BAF00042BAF004360
+ C3002F4283000000000000000000000000000000000000000000000000000000
+ 00002E42880042538E004760B1000B2EA10003279F0003279F0003279F000327
+ 9F0003279F0003279F0003279F000B2EA1004760B10042538E002E4288000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000676B7C009FA2B20028397800283978002839780028397800283978003A42
+ 63003B425C00283978002839780028397800283978002839780028397800676B
+ 7C00000000000000000000000000000000000000000000000000000000000000
+ 0000000000002E3F7E00536DC3000429A8000429A8000429A80003279E000326
+ 99000325970003269A0003279F000429A7000429A800536DC300374D97000000
+ 0000000000000000000000000000000000000000000000000000000000003448
+ 8E00042EBB0003259500CAC9C800E3E2E000E6E6E500EAEAE90003259500042E
+ BB0003279D00032595000325950003259500032595000325950003279D004262
+ CB0034488E000000000000000000000000000000000000000000000000003147
+ 8F003654B900082DA9000429A8000429A8000429A8000429A8000429A8000429
+ A8000429A8000429A8000429A8000429A8000429A800082DA9003654B9003147
+ 8F00000000000000000000000000000000000000000000000000000000000000
+ 00006F738300A7ABBB002B3C7B003963EF00446BF000486FF000496FF000496F
+ F000496FF000496FF000486FF000476EF000325EEF00466DF0002B3C7B006F73
+ 8300000000000000000000000000000000000000000000000000000000000000
+ 00000000000034478B005470CD00042DB600042BAC000320800003208000586B
+ AB00ADB6D50003208000031F7E0003269B00042DB6005470CD003B519F000000
+ 000000000000000000000000000000000000000000000000000000000000364B
+ 94000430C20003269B00C1C0BE00DAD9D800DEDDDC00E2E1E00003269B000430
+ C20003269B0002175D0002175D000110410002175D0002175D0003269B004364
+ D100364B94000000000000000000000000000000000000000000475FB1004658
+ 9A00082EAE00042BAC00042BAC00042BAC00042BAC00042BAC00FFFFFF00FFFF
+ FF00FFFFFF00042BAC00042BAC00042BAC00042BAC00042BAC00082EAE004658
+ 9A00475FB1000000000000000000000000000000000000000000000000000000
+ 000073778700AAAFBF002C3D7C004068F000486FF000496FF000496FF000496F
+ F000496FF000496FF000496FF000496FF0003761EF00486FF0002C3D7C007377
+ 8700000000000000000000000000000000000000000000000000000000000000
+ 000000000000364A91005773D300042DB60003228A0003218700032187000321
+ 870003238D00032187000321870003218500042CB4005773D3003C53A3000000
+ 000000000000000000000000000000000000000000000000000000000000394F
+ 9A000633C80004289F00B5B4B200D2D1CF00D6D5D300DAD9D70004289F000633
+ C70004289F00031860000318600002114300031860000318600004289F004365
+ D500394F9A0000000000000000000000000000000000A8B7ED003E508E004964
+ BF00042CB100042CB100042CB100042CB100042CB100042CB100FFFFFF00FFFF
+ FF00FFFFFF00042CB100042CB100042CB100042CB100042CB100042CB1004964
+ BF003E508E00A8B7ED0000000000000000000000000000000000000000000000
+ 000075798A00AFB3C3002E3E7E003E67F000456CF000456CF000456CF000456C
+ F000456CF000456CF000456CF000456CF0003761EF00486FF0002E3E7E007579
+ 8A00000000000000000000000000000000000000000000000000000000000000
+ 000000000000394D98005875D8000429A5000324920003249200042AA900042C
+ B200042CB200032493000324920003249200042DB5005875D8003E56A6000000
+ 0000000000000000000000000000000000000000000000000000000000003E55
+ A4001E49D800193BAC00AFADAC00B3B1B000BAB8B600C1BFBD00193BAC00204A
+ D800193BAC00091743000D1E58000A194900091743000D1E5800193BAD004B6D
+ DF003E55A400000000000000000000000000000000003F5194004966C8001139
+ BF000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE00FFFFFF00FFFF
+ FF00FFFFFF000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE001139
+ BF004966C8003F51940000000000000000000000000000000000000000000000
+ 00007C819200B7BACA00304180003661EF003B64EF003B64EF003B64EF003B64
+ EF003B64EF003B64EF003B64EF003B64EF00305CEE00466DF000304180007C81
+ 9200000000000000000000000000000000000000000000000000000000000000
+ 0000000000003F55A4005878E1000429A8000429A8000429A8000328A1000328
+ A1000328A10003279F000429A8000429A800042FBD005878E100425BAE000000
+ 0000000000000000000000000000000000000000000000000000000000004159
+ AA002A54DF002649BB002445B3002445B3002445B3002445B3002649BB002D56
+ DF002649BB002445B3002445B3002445B3002445B3002445B3002649BB004E71
+ E4004159AA00000000000000000000000000000000004D62A9003659CC00123B
+ C300173FC400173FC400173FC400173FC400173FC400173FC400FFFFFF00FFFF
+ FF00FFFFFF00173FC400173FC400173FC400173FC400173FC400173FC400123B
+ C4003558CC004D62A90000000000000000000000000000000000000000000000
+ 000080849500BBBFCF0032428100315CED00355FED00355FED00355FED00355F
+ ED00355FED00355FED00355FED00355FED002B58EC00456CEF00324281008084
+ 9500000000000000000000000000000000000000000000000000000000000000
+ 0000000000004259AB005879E6002044BC00ADBBE7003C5BC400032699000326
+ 99000326990003239000042DB800C9D2EF000431C6005879E600445DB1000000
+ 0000000000000000000000000000000000000000000078767600D3D3D300445D
+ B000365EE5003B62E6003B62E6003B62E6003B62E6003B62E6003B62E6003B62
+ E6003B62E6003B62E6003B62E6003B62E6003B62E6003B62E6003B62E6005376
+ E900445DB000D3D3D300807F7F0000000000000000005069BE002E53CE001D45
+ CA00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00FFFFFF00FFFF
+ FF00FFFFFF00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB001D45
+ CA002D52CE005069BE0000000000000000000000000000000000000000000000
+ 000084889800BDC2D200334482002D59EA00315CEA00315CEA00315CEA00315C
+ EA00315CEA00315CEA00315CEA00315CEA002855E900446BEC00334482008488
+ 9800000000000000000000000000000000000000000000000000000000000000
+ 000000000000455EB100597BEB000430C200042FBF00042FBF00032187000323
+ 8D0003238D0003249100042FBF00042FBF000434D300597BEB00465FB5000000
+ 00000000000000000000000000000000000000000000EBEBEB00AEADAC007979
+ 7D00728EEE005D80F200567AF200567AF200567AF200567AF200567AF200567A
+ F200567AF200567AF200567AF200567AF200567AF200567AF2005C7FF2004F67
+ BB0079797D00AEADAC007C7A790000000000000000005774D4002850D5003459
+ D700395ED800395ED800395ED800395ED800395ED800395ED800FFFFFF00FFFF
+ FF00FFFFFF00395ED800395ED800395ED800395ED800395ED800395ED8003459
+ D700224BD4005773D30000000000000000000000000000000000000000000000
+ 00008B8F9F00C5C9D90035468400234FE2002551E2002551E2002551E2002551
+ E2002551E2002551E2002551E2002551E2001F4CE2004066E600354684008B8F
+ 9F00000000000000000000000000000000000000000000000000000000000000
+ 0000000000004B64BB006082F2001445E9001240D700123FD600123FD600123F
+ D600123FD600123FD600123FD600113DD1001143EC006082F2004B64BB000000
+ 00000000000000000000000000000000000000000000CFCECE00EBEBEB00AFAE
+ AD005F71B000829CF0006A8AF3006384F3006384F3006384F3005673D4004F6A
+ C2004F6AC2006283F0006384F3006384F3006384F3006A8AF300829DF5007979
+ 7F00AFAEAD00EBEBEB007F7D7C0000000000000000005A77D8003057DA003E63
+ DD004569DF004569DF004569DF004569DF004569DF004569DF00FFFFFF00FFFF
+ FF00FFFFFF004569DF004569DF004569DF004569DF004569DF004569DF003E63
+ DD002B53DA005975D70000000000000000000000000000000000000000000000
+ 00008E92A300C7CCDD00374785001E4ADE00214DDF00214DDF00214DDF00214D
+ DF00214DDF00214DDF00214DDF00214DDF001B48DE003E64E400374785008E92
+ A300000000000000000000000000000000000000000000000000000000000000
+ 0000000000004C65BC006485F3001E4DED001D4CE9001C49DE007691EB00E8ED
+ FB00E8EDFB001C49DD001C49DE001D4CE9001949ED006586F3004C65BC000000
+ 00000000000000000000000000000000000000000000807E7E00D0CFCF00EBEB
+ EB007E7E81006878B1008DA4F100708EF400708EF400708EF400A4B0D800E4E4
+ E300D6D5D400627CD500708EF400708EF4007794F4008FA7F6006D80BF00B0AF
+ AF00EBEBEB00D0CFCF00D3D3D30000000000000000005C79DB00375EDF00486C
+ E3005173E3005173E3005173E3005173E3005173E3005173E300FFFFFF00FFFF
+ FF00FFFFFF005173E3005173E3005173E3005173E3005173E3005173E300486C
+ E3003058DE005B78DB0000000000000000000000000000000000000000000000
+ 00009195A600CBD0E000384987001A47DB001B47DA001B47DA001B47DA001B47
+ DA001B47DA001B47DA001B47DA001B47DA001744DB003D62E100384987009195
+ A600000000000000000000000000000000000000000000000000000000000000
+ 0000000000004D66BD006888F3002856EE002957EE002956EC002854E5002854
+ E5002854E5002854E7002956EC002957EE002150ED006888F3004D66BD000000
+ 0000000000000000000000000000000000000000000000000000D3D3D3008584
+ 8300EBEBEB00B2B1B10084848700A1B4F30090A8F6008AA3F600C9C8C600D4D3
+ D100E0DFDD006F83C5008AA3F60090A8F6007E8EC00084848700B2B1B100D2D2
+ D10085848300D3D3D3000000000000000000000000005C78D5005074EA005477
+ EA006886EC006886EC006886EC006886EC006886EC006886EC00536CBE00536C
+ BE00536CBE006886EC006886EC006886EC006886EC006886EC006886EC005477
+ EA004A6FE9005D78D50000000000000000000000000000000000000000000000
+ 0000989CAC00D0D5E6003A4B8900113ED300123FD300123FD300123FD300123F
+ D300123FD300123FD300123FD300123FD3000F3CD3003A5FDB003A4B8900989C
+ AC00000000000000000000000000000000000000000000000000000000000000
+ 0000000000004F68C0006E8DF3003E67F0004068F0004068F0004068F0004068
+ F0004068F0004068F0004068F0004068F000335EEF006E8DF3004F68C0000000
+ 000000000000000000000000000000000000000000000000000000000000D3D3
+ D300D4D3D200EBEBEB00B3B3B2007C89B400ABBBF4009DB2F7009FA6C200C3C1
+ BF00C9C7C5008598D8009DB2F700AEBFF80088878B00B3B3B200EBEBEB008B89
+ 8700D3D3D300000000000000000000000000000000005D76C900597CEE005578
+ EE007390F0007491F1007491F1007491F1007491F1007491F1007491F1007491
+ F1007491F1007491F1007491F1007491F1007491F1007491F1007390F0005679
+ EE005377EE005D77CA0000000000000000000000000000000000000000000000
+ 00009A9EAF00D3D8E9003B4C8A000D3AD0000E3BD0000E3BD0000E3BD0000E3B
+ D0000E3BD0000E3BD0000E3BD0000E3BD0000C39D000395ED9003B4C8A009A9E
+ AF00000000000000000000000000000000000000000000000000000000000000
+ 0000000000005069C100718FF400F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5
+ FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00F1F4FE007290F4005069C1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008B898800D5D4D400EBEBEB008B8A8E007E8BB400B4C3F40092A2D9008494
+ C6008494C600A8BAF500B5C5F9008896C300B4B4B300EBEBEB00D5D4D4008684
+ 83000000000000000000000000000000000000000000566FC2006685EE00567A
+ F1007C97F400809BF500819BF500819BF500819BF500819BF500EDF1FD00FFFF
+ FF00EDF1FD00819BF500819BF500819BF500819BF500819BF5007D98F500587B
+ F1006081ED00566FC20000000000000000000000000000000000000000000000
+ 00009DA1B200D6DBEC003C4D8B000835CC000936CC000936CC000936CC000936
+ CC000936CC000936CC000936CC000936CC000835CC00375CD5003C4D8B009DA1
+ B200000000000000000000000000000000000000000000000000000000000000
+ 000000000000516BC2007491F400F1E0CB00F1E0CB00F1E0CB00F1E0CB00F1E0
+ CB00F1E0CB00F1E0CB00F1E0CB00F1E0CB00F5EADA007592F400516BC2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D3D3D300908E8D00EBEBEB00B7B6B50091919300CBD6FB00C3D0
+ FA00C3D0FA00949FC50091909400B7B6B500D7D6D600908E8D0093918F009290
+ 8F000000000000000000000000000000000000000000AEBEF3005B73C5006886
+ EC007391F40088A2F60093AAF60096ACF70096ACF70096ACF700FFFFFF00FFFF
+ FF00FFFFFF0096ACF70096ACF70096ACF70095ACF7008AA3F6007693F4006B89
+ ED005B72C500AEBEF30000000000000000000000000000000000000000000000
+ 0000A3A7B800DBE0F1003F4F8D000431C5000431C5000431C5000431C5000431
+ C5000431C5000431C5000431C5000431C5000431C500365AD1003F4F8D00A3A7
+ B800000000000000000000000000000000000000000000000000000000000000
+ 000000000000536DC4007E99F500F3E2CB00F3E2CB00F3E2CB00F3E2CB00F3E2
+ CB00F3E2CB00F3E2CB00F3E2CB00F3E2CB00F5EADA007E99F500536DC4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D3D3D300D8D7D700EBEBEB00B8B7B6009DA6C500CDD8
+ FB00CDD8FB0094939600B8B7B600EBEBEB009391900099979500A5A4A200A5A4
+ A200939291000000000000000000000000000000000000000000607AD600647D
+ D0006384F3007F9AF50093AAF600A2B6F800A2B6F800A2B6F800FFFFFF00FFFF
+ FF00FFFFFF00A2B6F800A2B6F800A2B6F80095ACF700829CF5006686F300657E
+ D200607AD6000000000000000000000000000000000000000000000000000000
+ 0000A6AABA00DDE3F3003F518E000430C2000430C2000430C2000430C2000430
+ C2000430C2000430C2000430C2000430C2000430C2003558CD003F518E00A6AA
+ BA00000000000000000000000000000000000000000000000000000000000000
+ 000000000000546EC500819BF500F0F3FE00F1F4FE00F1F4FE00F1F4FE00F1F4
+ FE00F1F4FE00F1F4FE00F1F4FE00F1F4FE00F3F6FE00819BF500546EC5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000096949300D9D9D800EBEBEB0097979900919D
+ C500919DC500B9B8B800EBEBEB00D9D9D800D3D3D300A09E9C00CCCCCC00CCCC
+ CC00A09E9C00000000000000000000000000000000000000000000000000536F
+ CA006989F3006A8AF300849EF500A8BAF800ADBEF800AEBFF800E1E3E800F2F2
+ F200E1E3E800AEBFF800ADBEF800A9BBF80087A1F5006D8CF3006B8AF300536F
+ CA00000000000000000000000000000000000000000000000000000000000000
+ 0000A9ADBD00DFE5F60040518F003558CA003558CA003558CA003558CA003558
+ CA003558CA003558CA003558CA003558CA003558CA003558CA0040518F00A9AD
+ BD00000000000000000000000000000000000000000000000000000000000000
+ 000000000000556FC600829DF500F4E4CB00F5E4CB00F5E4CB00F5E4CB00F5E4
+ CB00F5E4CB00F5E4CB00F5E4CB00F5E4CB00F6EADA00829DF500556FC6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D3D3D3009B999800EBEBEB00BBBA
+ BA00BBBABA00DBDBDA009B999800D3D3D3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005570CB006780D400718EEE00819BF50090A8F6009FB3F700AFC0F900B1C1
+ F900AFC0F900A1B5F70093AAF600849EF5007490ED006981D4005570CB000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000AEB2C200E2E8F90042539000425390004253900042539000425390006776
+ A6006776A600425390004253900042539000425390004253900042539000AEB2
+ C200000000000000000000000000000000000000000000000000000000000000
+ 0000000000005871C800829CF500CACCD100CBCDD100CBCDD100CBCDD100CBCD
+ D100CBCDD100CBCDD100CBCDD100CBCDD100D9DBDF00829CF5005871C8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D5D5D300DDDCDB00EBEB
+ EB00EBEBEB009D9C9B00D5D5D300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000627DD8006179CA007A95F1007D98F500849EF5008BA4F6008EA6
+ F6008BA4F60086A0F5007F9AF5007D97F1006179CA00627DD800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B0B4C400E3E9FA0043549100435491004354910043549100435491003543
+ 740035437400435491004354910043549100435491004354910043549100B6BA
+ CB00000000000000000000000000000000000000000000000000000000000000
+ 0000000000005872C9007C97F400A5A7AC00A5A7AB00A5A7AB00A5A7AB00A5A7
+ AB00A5A7AB00A5A7AB00A5A7AB00A5A7AB00BEC0C4007D98F5005872C9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000A19F9D00DEDD
+ DC00DEDDDC00D5D5D50000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000AFBFF3005E77CA006881D4006B85E2007691ED007792
+ ED007691ED006C86E2006881D4005E77CA00AFBFF30000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000094A2D300D8DEEF0094A0C700445492004454920044549200445492004454
+ 920044549200445492004454920044549200445492004454920094A0C70094A2
+ D300000000000000000000000000000000000000000000000000000000000000
+ 0000000000005872C9007C96EE008FA5F00094AAF20095AAF20097ACF20097AC
+ F20097ACF20096ABF20095AAF20093A9F200889FF0007C96EE005872C9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C2CEF60096A3D400B5B9CA00B5B9CA00B5B9CA00B5B9CA00B5B9
+ CA00B5B9CA00B5B9CA00B5B9CA00B5B9CA00B5B9CA00B5B9CA0096A3D4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D1D1D100CBCBCB00C7C7C700C5C5C5007C8FCD005368AF00354785003546
+ 8100364783004358A100566CB5007F91D100C7C7C700C7C7C700C9C9C900DADA
+ DA00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000DDDDDD00C9C9C900C7C7C700C2C2C200B1BCE5003446
+ 820029376700C0C0C000C0C0C000C5C5C500CDCDCD00DADADA00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000ACACAC00A4A4A400A4A4A400A4A4A4008A8A
+ 8A008A8A8A00A4A4A400B3B3B300C7C7C7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008EA2E10031458B004B64B5004561C1002E4FBE00143AB9002347
+ BF00143BBC002449C7002E53CD004566D4004B61AF003D56AA0097A9E8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000008297DD00485A9900415C
+ B9003654B7002E3F7C008196DC00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A4A4A40000000000000000002A3B7400354476003F518C004D66B7004F67
+ B9004F68BA00485DA50040518D00374677007288CB0000000000C7C7C700A4A4
+ A400000000000000000000000000000000000000000000000000000000000000
+ 00005068BA00374885004B62AD002345B600082EAD00042AAB00617ACB008295
+ D7005974CB00042DB600042EB9000832BF003E61D500506AC4004258A5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008297DE00304381003755BB000F34
+ AE00082DAB004B60A4002F4180008297DE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009494
+ 940000000000B7C3EE0032427D004C61A5004E69C3004B69CE003F62D6004063
+ D9004064DA004365D4004B69CF004F6AC6003A497D002C3E7B00AAB9EB00D3D3
+ D30096969600D3D3D30000000000000000000000000000000000000000000000
+ 0000415393004B65BE002E50BF00042CB300042CB2001B3FB7008194D6008194
+ D5006179CA003353BE00042CB100042DB5000832C0002E53CE004C6ACF005B74
+ C900000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005169BD00394B89004D65B300082FB000042B
+ AF00042BAE003655BD004C61A700314483000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000096969600D3D3
+ D30095A5DF00959392007D8294004464CE00385DD7004368E3005175EB005275
+ EB005174EA004D72EA004469E5003B60DC004963B7007D81940091908F000000
+ 0000000000009F9F9F000000000000000000000000000000000093A5E4003E52
+ 96003256CD001D44C8002349C900274CCA008B9FE20091A4E4008B9FE100879B
+ DE008498DC006A82D2002245B800042AAB00042BAF00042CB400042EB9004D6A
+ CB004258A20095A9E7000000000000000000283870003551AE003552B000455F
+ B4004964B6004B65B800546EBB005E76BC005F78C000657DC200788DC500788D
+ C500788DC500788DC5007287C4005F78C0005E76BC005E76BC004B65B8004963
+ B5004963B5003A56B1003E59B0002D3E75000000000000000000000000000000
+ 00000000000000000000546CC1004C66BC002A4EC400042EB900042DB800042D
+ B800042DB700042DB7000830B8003657C50035488B00A8B7ED00000000000000
+ 000000000000000000000000000000000000000000009A9A9A0000000000B7C4
+ EF00C7C6C500E1E1E000F0F0F00094A0C8003D5DC9002D50C400183BAD001739
+ A8001738A7001D40B300284BBF003757C300D1D0D000EDECEC00DDDCDB00B1AF
+ AE00A4B5E80000000000B3B3B3000000000000000000000000003A519D00546D
+ C1002D52D100365BD3003D60D500496AD8009DAEE9009CADE80096A8E60093A6
+ E5008197DF002348C300052EB700042CB200042AAB00042BAD00042CB2002F53
+ C9005069BF003D54A30000000000000000002A3C760003279F00032699001032
+ A300032699001032A30003279F001032A30003279F000326990003279F000326
+ 9C001033A800032699001032A30003279F0003279F0003279F0003279F000327
+ 9F0003279F0003279F002947AD002A3C76000000000000000000000000000000
+ 000000000000566FC3003F5396002B50C800042FBE00042FBE00042FBD00042F
+ BD00042EBC00042EBC00042EBB000831BC004F66B100384D9600BCC8F3000000
+ 0000000000000000000000000000000000000000000000000000000000003344
+ 8000E7E6E600F3F3F300F7F7F700BAB9B8007580A700233F9C00425AAB00425A
+ AA00455CA700334EA500203B9800747FA500EBEAEA00F9F9F900EFEFEF009EA3
+ B7002F3E7300000000009A9A9A0000000000000000006D85D6004F64AD005272
+ DB004668DA005070DD005373DE007D95E600A8B8EE00A6B6ED00A1B2EB009EAF
+ E9006782DC002248C800173EC2000B34BC00042BB000042AAB00042BAC000830
+ B8003F60CD004C61A90000000000000000002D3E7C000328A400042695002545
+ B000042695002545B0000328A4002545B0000328A400042695000328A4000426
+ 95002545B000042695002545B0000328A4000328A4000F32A8003250B5003250
+ B5000F32A8000328A4002949B2002D3E7C000000000000000000000000000000
+ 00007A8FDC0041559B004E69C4000430C2000430C2000430C2000430C2000430
+ C2000430C1000430C100042FC000042FC0003E5FCE004E63A900364D98000000
+ 00000000000000000000000000000000000000000000000000007388CB003A49
+ 7C00ADB9E100FAFAFA00EBEBEA00CCCAC900A5A3A100797F9800384677003543
+ 7500324172003B4B8000797F9800A6A4A300DFDEDD00EEEEEE00FBFBFA004862
+ B7003F4E82005D73BE009F9F9F0000000000000000004D63AB005F7DE1004D6F
+ E100758FE9007691E9007792E900BBC8F400BAC8F400B8C6F300B3C2F200B0BF
+ F000ACBCEF00496BDA003E61D5003156CF00163DC1000831B900042CB300042A
+ AB00082FB1004563C70098AAE90000000000324687000D33B3000D2B8F005670
+ C9000D2B8F005670C9000E34B3005670C9000E34B3000D2B8F000E34B3000D2B
+ 8F005670C9000D2B8F005670C9000E34B3000E34B3001B399C00304AA400304A
+ A4001B399C001439B5002D4EBD0032468700000000000000000000000000BDCB
+ F400546DC000355AD6000A37CE000D3ACE000E3ACE000E3ACD000E3ACC000E3A
+ CC000E3ACC000E3ACC000E3ACC000D39CB000A36C9001841CC004C6ACF005871
+ C7000000000000000000000000000000000000000000A4B2E5003A4879004C66
+ BF005074EA004060CC0098A4CC00C5C3C100D3D2D000A1B3ED00000000000000
+ 00000000000000000000A1B3ED00D3D2D000D5D3D20097A2C8003656C2003A5F
+ DD00506BC8003D4D8200A4A4A4000000000000000000566FC2005E7DE6006180
+ E700859DED0088A0EE0088A0EE00C2CEF600C1CDF500C0CCF500BCC9F400B8C6
+ F300B5C3F3007892E6004F6FDC004466D800294ECC001940C3000932BA00042B
+ AC00042BAC006B82D000617ACD000000000035488C002145BD001D378D00788E
+ D7001D378D00788ED7002549BF00788ED7002549BF001D378D002549BF001D37
+ 8D00788ED7001D378D00788ED7002549BF002549BF001C368F006B7CB6006B7C
+ B6001C368F002549BF003858C50035488C000000000000000000000000004B61
+ B4003C61DC001440D4001541D4001B46D5001C46D4001C46D4001D47D4001C46
+ D3001C46D3001D47D3001D47D3001C46D2001641D100123ED000284FD300455A
+ A3008A9EE400000000000000000000000000000000005B71B70042538D004765
+ C8005073E8003154CA002541A000D5D4D200A1B3ED0000000000000000000000
+ 0000000000000000000000000000A1B3ED009CA3BB001F3A9600274ABE00466B
+ E7004565D000475A9C009F9F9F0000000000000000005D77CF006684E9007590
+ EC0094A9F100A3B5F300B9C7F600CBD5F800C9D4F800C7D2F700C2CEF600C0CC
+ F500BCC9F400AFBFF1006582E3005575DE00395DD3002A4FCC001A41C300042C
+ B2003252BB008598D700465FB10000000000384C92003658C8002E4696008398
+ DC002E4696008398DC003B5CCA008398DC003B5CCA002E4696003B5CCA002E46
+ 96008398DC002E4696008398DC003B5CCA003B5CCA0029408C00828FB900828F
+ B90029408C003B5CCA004262CB00384C920000000000000000006680D5005067
+ B300214CDB001D49DB00234DDB002A53DC002A53DC002A53DC002A53DB002A52
+ DA002A52DA002A52DA002A52D9002A52D900244DD7001F49D6001944D500556E
+ C5003E57A800D1DAF8000000000000000000000000003A4E9000495DA1003D5E
+ CC004A6DE1002548BE003751AA007382B8000000000000000000000000000000
+ 0000000000000000000000000000000000003D4C8100324CA3001B3EB0004D72
+ EA004063D5005066B100A4A4A40000000000000000006F89E3007893EF0094AA
+ F200D6DEFA00D7DFFA00D7DFFA00D7DFFA00D6DEFA00D5DDFA00D1DAF900CED8
+ F900C7D2F800BAC8F50097ABEE00728DE8005776DF005372DB009BADE800133B
+ C0003354C300425FC200364A8B00000000003E539E005A77D9005A71BD00879C
+ E3005A71BD00879CE3006983DD00879CE3006983DD005A71BD006983DD005A71
+ BD00879CE3005A71BD00879CE3006983DD006983DD006983DD006983DD006983
+ DD006983DD006782DC005371D7003E539E0000000000526DC9005B75C800466B
+ E800345DE6003D64E6004368E700466BE700456AE600456AE600456AE6004469
+ E500456AE5004469E4004469E4004469E4004469E4004065E300385FE1002F58
+ E0005876DC004B61AF00000000000000000000000000222F59004F67B500385B
+ D1004063D7001D3FB100425AAB00D4D4D4000000000000000000000000000000
+ 00000000000000000000000000000000000038477900425AAA001032A1005174
+ E9004266DC00546DBF008A8A8A000000000000000000718BE5007E99F0009EB2
+ F400DCE3FB00DDE4FB00DDE4FB00DDE4FB00DCE3FB00DAE1FA00D6DEFA00D4DD
+ FA00C4D0F800C8D3F800C2CEF60094A9EE006481E4007B94E600A1B2EB003D5F
+ CE004866CC003354C20036488A00000000004158A3005C7ADD00637CCD00849B
+ E6006A81CE00859BE600738DE100859BE500738DE1006A81CE00738DE1006A81
+ CE00859BE5006A81CE00859BE500738DE100738DE100738DE100738DE100728C
+ E100718BE1006C86E0005372DB004158A300000000004E67BA006380E500365F
+ EA00456BEB004D72EB005276EC005376EC005477EC005376EB005376EB005376
+ EB005376EA005376EA005376EA005376E9005376E9005073E900496EE7003059
+ E300456AE6005972CC00000000000000000000000000232F59004F67B500385B
+ D1004164D8001E40B200425AAB00D6D6D6000000000000000000000000000000
+ 00000000000000000000000000000000000039477900465DA8001133A2005174
+ E9004266DC00546DBF008A8A8A000000000000000000728DE400819BF100A5B7
+ F500D6DEFB00E2E8FC00E2E8FC00E2E8FC00E1E7FC00E0E6FC00DBE2FA00D8E0
+ FA00CBD6F900CED8F900C9D4F800C3CFF600758FE8009CAEED00A8B8EE004062
+ D2007C92DD007289D600364A900000000000455CA9003158D900375CDA00395E
+ DA003B60DA003B60DA003B60DA003B60DA003B60DA003B60DA003B60DA003B60
+ DA003B60DA003B60DA003B60DA003B60DA003B60DA003B60DA003B60DA003A5F
+ DA00395EDA00365BDA003C61DB00455CA900000000005C75CC005579F100355F
+ ED005478F0005E80F0006182F1006182F0006182F0006182F0006182F0006182
+ EF006182EF006182EF006081EE006181EE006181EE006080ED005A7CEC004268
+ E900345DE7005677E400BFCCF5000000000000000000374577004E65B200385B
+ CE004467DB001E41B600435CAD0093A5DE000000000000000000000000000000
+ 0000000000000000000000000000000000003C4B7C00425AAB001537A8005275
+ EA003F63D900526BBC00A4A4A4000000000000000000647ED100849EF200A4B7
+ F600D3DCFB00D5DEFB00E2E8FC00EAEFFD00E9EEFD00E8EDFD00E5EAFD00E1E7
+ FC00DFE5FB00D7DFFA00CDD7F900CDD7F800C0CCF500BAC8F400B2C1F2009FB0
+ EA008A9FE3006680D7006079CA0000000000BFCCF5004967CA00335BE3002651
+ E100335BE200375EE300385FE3003960E3003960E3003960E3003960E3003960
+ E3003960E3003960E3003960E3003960E300385FE300385FE300375EE3002C56
+ E1002550E100335BE3004B64B900BFCCF500000000006583E9005A7DF2005C7F
+ F2007B97F4007E99F5007D98F5007D98F5007D98F5007D98F5007D98F5007D98
+ F5007D98F500829DF50086A0F500859FF500809BF5007E99F5007B97F4006384
+ F3004C71F000466DEF005773CE0000000000000000005D71B90045558F004664
+ C7005275E9003356CB002642A2009C9A990096A8E20000000000000000000000
+ 000000000000000000000000000096A8E2007A809800203B98002B4EC000476C
+ E6004666CF00495C9E00A4A4A40000000000000000005D74C2007E99F10099AE
+ F600D8E0FB00DCE3FC00DEE5FC00E7ECFD00ECF0FE00EBF0FD00DAE1FB00CBD6
+ FA00CED8FA00DAE1FA00D6DEFA00D1DAF900C5D1F700BECBF500B6C4F300A0B1
+ EB0094A7E7006983D70097A9E80000000000000000004E68BF00506DD000456A
+ E9004F73EA005578EB005578EB005578EB005578EB005578EB005578EB005578
+ EB005578EB005578EB005578EB005578EB005578EB005578EB005578EB004268
+ E800446AE900506DD000BFCCF50000000000000000006D8AEA006C8BF3007491
+ F4008FA7F60092A9F6008EA6F6008AA3F6008AA3F6008AA3F60086A0F500849E
+ F500839EF50097ADF7009BB0F7009AAFF70093AAF6008FA7F6008AA3F600718F
+ F400587CF200436BF0004E68C10000000000000000009FAFE3003F4D7E004B66
+ BD005174E9004464CF007985AD00BEBCBA009E9C9B0096A8E200000000000000
+ 0000000000000000000096A8E2009E9C9B00ABA9A8007884AA003B5BC5003A5F
+ DB004F6BC80042518500ACACAC0000000000000000004D67C100728CE50091A8
+ F500D8E0FC00E2E8FD00E3E9FD00E2E8FD00E4E9FD00EEF2FE00E4E9FC00DBE2
+ FB00E3E8FC00DEE5FB00D9E0FA00D4DDFA00C9D4F800C1CDF500BAC8F400A0B1
+ EC00A0B1EA00788CCF00000000000000000000000000BFCDF600516BC4005774
+ D6005E80EF006A89F0006E8CF1006E8CF1006E8CF1006E8CF1006E8CF1006E8C
+ F1006E8CF1006E8CF1006E8CF1006E8CF1006E8CF1006E8CF1006B8AF0005679
+ EF005774D500516BC400000000000000000000000000718CEA008EA6F6008AA3
+ F6009FB3F700A3B6F800A2B6F8009AAFF70097ADF70093AAF600859FF500829D
+ F5008AA3F600A7B9F800AABCF800ABBDF800A5B8F800A2B6F8009CB1F7007C97
+ F4006183F2004A70F0004E68C00000000000000000000000000034467F004F63
+ A5004163D20099A5CC00BFBEBE00C8C6C400BCBBB900B7B5B50093A5DE00D4D4
+ D400D4D4D4006C7AB000B7B5B500BDBBB900D6D4D300C2C1C10098A4CB004061
+ D0005067B20034447700C7C7C700000000000000000000000000536CC500738D
+ E000C0CEFA00DDE4FC00E8EDFD00EBF0FD00E9EEFD00E6ECFD00E4E9FD00EDF1
+ FE00EAEFFD00E3E8FC00DFE5FB00D9E0FA00CED8F900C5D1F700B7C5F400A9B9
+ EF007F93D500455DAA000000000000000000000000000000000000000000C1CD
+ F6005876DA005F7FEA006A87EB006D8AEB006D8AEB006D8AEB006D8AEB006D8A
+ EB006D8AEB006D8AEB006D8AEB006D8AEB006B88EB006986EB006281EA005771
+ C900C1CDF600000000000000000000000000000000006882DA009DB2F700BDCB
+ FA00AEBFF800B4C4F900B5C5F900ACBDF800A0B4F7008CA5F600718FF400738C
+ E1006F87D600C8D4FB00BCCAFA00B3C3F900B8C7F900B4C4F900AEBFF8008AA3
+ F6006888F3004E73F1005671CD00000000000000000000000000000000003646
+ 8200B4B3B200E8E8E700F9F9F900ECEBEB009CA8D0002642A000425BAC00425A
+ AB00425AAB003550A800233E9B009CA8CE00F5F4F400F8F8F700E4E3E2007D83
+ 97003242780000000000000000000000000000000000000000009CAEEE005B73
+ C600AEBFF800CAD5FB00E2E8FD00EEF2FE00EDF1FE00EAEFFD00E3E9FD00E9EE
+ FD00EAEFFD00E6EBFD00E0E6FC00DBE2FA00CED8F900C1CDF600B0C0F300AFBD
+ ED00596DB20097A9E80000000000000000000000000000000000000000000000
+ 00005771C9005771C8005771C8005771C8005771C8005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8005771C8005771C8005771C800C1CD
+ F60000000000000000000000000000000000000000006179CC00809AF300B9C8
+ F900BAC9FA00B3C3F900B4C4F900A6B9F80096ACF7007D98F5006D8AED005F77
+ C800556EC400BAC9FA00CCD7FB00BECCFA00B4C4F900B2C2F900ABBDF800859F
+ F5006082F200567AF2006882DB0000000000000000000000000000000000ACBB
+ ED00C4C3C200D8D7D600EBEAEA00BAC6ED004262CD003255CA001D40B300183B
+ AD00173AAC002245B9002F52C5003E5EC900F8F8F800E7E6E600D4D3D200ACAB
+ A900A6B5E8000000000000000000000000000000000000000000000000006883
+ DC0096ABF100B3C3F900CCD7FB00EAEFFD00EEF2FE00EDF1FE00E6EBFD00E1E7
+ FD00E2E8FD00E6ECFD00E1E7FC00DBE2FA00C9D4F900B9C7F600B0C0F3007485
+ C400617AD0000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005570CC006F87DA008EA6
+ F600CBD6FB00C5D1FA00B5C5F9009EB3F700859FF5007894F400637CCD00617C
+ D8007993E200859CE800B1C1F900C7D3FB00BAC9FA00B0C0F900A7B9F8007995
+ F4006082F2005F7EE700AEBEF3000000000000000000B3B3B300000000000000
+ 0000C6C5C300C8C7C600DFDFDE004264D3005174EA005174E8004265D9003E61
+ D5003E61D4004669DD004F72E5005376EA00A6B2DB00DDDCDB00C3C2C1008EA0
+ D900000000000000000000000000000000000000000000000000000000000000
+ 00006883DC005E76C9007992E400A9BBF800B8C7F900C9D5FB00D2DBFB00D0DA
+ FB00C9D4FA00C6D2F900CED8F900C3CFF800B7C6F700A2B1E5005C72BE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C1CDF6005772
+ CC006E88DC007A94EA007D97ED006E89E5006A83D3005871C700000000000000
+ 0000000000008FA4EA00556FC7006980CF007C96EB007A95EC00738EEB00617D
+ DA005D76C9006B84DA00000000000000000000000000000000009A9A9A000000
+ 000000000000A6B6E90038487C005064AC004D68C0004361C7003A5DD1003E61
+ D5003E61D5003F60CF004463CA004D68C50049598E0034447900A6B6E9000000
+ 0000B3B3B300ACACAC0000000000000000000000000000000000000000000000
+ 0000000000009CAFEE005871C9007B95E80091A8F400A1B5F700ABBDF800ABBC
+ F700A6B8F700BDCBF900C0CDF800BCCAF7008092D300536CC1009BADEC000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005E79D6005771C8005670C7005874CD006B84DD00D3DBF900000000000000
+ 0000000000000000000000000000859BE9005670C7005670C7005670C700647E
+ D9009FB1F0000000000000000000000000000000000000000000D3D3D3009696
+ 96000000000000000000000000003A497A00445487004A5C9B005068B600526A
+ B8005169B9005066AF004B5E9D00455588005E74BB000000000000000000B3B3
+ B3009A9A9A000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005670C800677ECD007089DB0096AAEE009DB1
+ F200A8B9F30093A6E70091A2DF006F84CD007A91E30000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009F9F9F00BDBDBD0000000000000000008598D8005065AD00344478002A36
+ 60002A3661003E4F87005065AD008598D8000000000000000000BDBDBD00BDBD
+ BD00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009D9B9B0092908F0086858500BFBFBF00C0C0C000C0C0C000C5C5C500C7C7
+ C700C7C7C700DADADA00DBDBDB00DCDCDC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000030448A00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000DCDCDC00DADADA00CACACA00C5C5C500C0C0C000C0C0C000213166001521
+ 490015214900C0C0C000C1C1C100C7C7C700D2D2D200DADADA00DCDCDC000000
+ 00000000000000000000000000000000000000000000283B80004F6CCD00506C
+ CB00506ABE00506AC000516BC500475CA5002E46920000000000000000000000
+ 00000000000000000000000000002E469200516BC500506BC300506ABE00506C
+ CB004F6CCD004F6CCD0000000000000000000000000000000000000000000000
+ 0000A5A3A200C2C0BF00AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003349920035447C00B9C6
+ F100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000006C82CD001E306E002F3F740038509D004E66B60042548F003751
+ AB003751AB001E3377004E66B60038509D003F4F88001E306E006C82CD000000
+ 00000000000000000000000000000000000000000000293D8400042EBC00042E
+ BC00042EBC00042EBC00042EBC002A408B00BBC7F20000000000000000000000
+ 0000000000000000000000000000BBC7F2001B389800042EBC00042EBC00042E
+ BC00042EBC00042EBC0000000000000000000000000000000000000000000000
+ 0000A5A3A200BFBDBC00AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003D54A2006271A7003D54
+ A200000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000203372005264A0005268B30039497D003F518D005067B4001F3E
+ A6001F3EA6004C60A2003F518D0039497D004963B7005264A000203372000000
+ 000000000000000000000000000000000000000000002B3E8600042FBF00042F
+ BF00042FBF00042FBF001D399C00BBC7F2000000000000000000000000000000
+ 0000000000000000000000000000000000002C438E001D399C00042FBF00042F
+ BF00042FBF00042FBF0000000000000000000000000000000000000000000000
+ 0000A5A3A200D1D0CF00AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000657ECC00647AC5004051
+ 8D008397DE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000031479600465A9E002948AE004E68BC003C58B5001638A7000328
+ A0000328A0002443AC003C58B5004E68BC002948AE00465A9E00314796000000
+ 000000000000000000000000000000000000000000002E428D000431C5000431
+ C5000431C5000431C5002148CC003A4D9300869AE10000000000000000000000
+ 0000000000000000000000000000BBC8F300566CB7003358D0000431C5000431
+ C5000431C5000431C50000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A8B7ED005D78CF004664
+ C9004F63A4000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006F86D200253C
+ 85002B429000455793004C66C000042AAA00042AAA00042AAA00042AAA00092E
+ AC00092EAC00042AAA00042AAA00042AAA001B3EB2004C66C00045579300344C
+ 9C00253C85007F95DB000000000000000000000000002F4590000432C9000432
+ C9001F3EA5000432C9000432C9005671C8003B4F9600889CE200000000000000
+ 00000000000000000000BDC8F300354B99003358D3000432C9000432C9001F3E
+ A5000432C9000432C90000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D0D8F700728AD900173E
+ C1005871C800A8B7EE0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D0D8F700263A8000566A
+ AE004B5FA1004C67C4001237B400042BAF00042BAF001F42B800506BC800506B
+ C800516BC2003D5BC1001F42B800042BAF00042BAF001237B4004C67C400485E
+ A900566AAE00263A8000000000000000000000000000324893000835CC002341
+ A800334A9A002442A9000835CC00254DD2005A74CB003E539A00000000000000
+ 000000000000BDC9F300374E9C005B71BD000835CC000835CC002442A900334A
+ 9A002341A8000835CC0000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000007A8FD700123B
+ C500375ACE004359AD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004B64B800465A9C004B68
+ C9003D5CC5001B40BB00042CB4000D34B6004160C600546DC000364886003345
+ 84002E41810044599F00546DC0004160C600042CB400042CB4001B40BB00294C
+ BF004B68C900465A9C000000000000000000000000004159B0003B53A900BCC9
+ F40000000000BCC9F400384FA0001945D6001945D6003359D9004358A1008A9E
+ E400BDC9F400647AC5004468DE001945D600324FB400324B9F0091A6EB000000
+ 0000BCC9F4003B53A90000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006D83CD00355A
+ D8000433CF005B76D0004259A900D1DAF8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000435DB2004659
+ 99000F38C1001039C2000F38C1005168B3002B428C00A7B6EC00000000000000
+ 00000000000000000000A7B6EC002B428C004766CF000F38C1001039C2005673
+ D30045589800435DB20000000000000000000000000000000000000000000000
+ 00000000000000000000BDC9F4003956BA00224CDA00224CDA006B84D600465A
+ A5003D55A6004B6EE100224CDA00224CDA00354EA10091A6EC00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006E84CC003E63
+ DF000737D6004468E0005A72C000556FC8000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005A74C7004B61
+ AC001A42C8001A42C8003155CD0033488D00A7B7ED0000000000000000000000
+ 0000000000000000000000000000A7B7ED005B75CB003055CD001A42C8004E6D
+ D4004960AB005A74C70000000000000000000000000000000000000000000000
+ 00000000000000000000000000003C53A700415DBE002B54DE004368E2007189
+ D9006E84CD002B54DE002B54DE00415DBE0093A7EC0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000667DC700607F
+ E8001241DE002450E100607EE2005369B4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000096A9E80030499C005A72
+ C300244BCE00244BCE00506FD800506AC0000000000000000000000000000000
+ 0000000000000000000000000000000000004D64AF004F6FD800234ACE003D60
+ D4005871C30030499C0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000BECAF4004059AD003B62E5003B62
+ E5003B62E5004B67CA003B55AC0094A8EE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A7004C63B200455EB3005E77CE007189DA005973
+ CC004762B90044579B00475DA7004862B6005C77D2005E7CE2006583E7006681
+ D8005970C000425BB40000000000000000000000000000000000000000000000
+ 00000000000000000000000000004A63BA004A63BA004A63BA005D74C2007995
+ F3002855EC002855EC002C58EC006282EF007790E20000000000000000000000
+ 000000000000000000000000000000000000000000005D78D5005273E0004669
+ DD003A5FDB003A5FDB006481E200000000000000000000000000000000000000
+ 0000000000000000000000000000000000003E549D006481E300355BDA00395E
+ DB004367DD004B6DDE002D459400000000000000000000000000000000000000
+ 000000000000000000000000000000000000BECCF500455DB200446AE900446A
+ E900446AE9006C85DE005065B3008CA1E8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A7006886EB006D87E0005F7AD500546EC200546F
+ C8005A74CB004E6DD6003B5DCD002E52CA003E62D8004568DE005778E5007994
+ F1007C97F4006881DB0000000000000000000000000000000000000000000000
+ 00000000000000000000000000008BA1EA006F8BEB006E8BEB007993ED006C8B
+ F300325EEF00325EEF00325EEF00486FF000536CBF00D2DBF800000000000000
+ 000000000000000000000000000000000000000000005E7AD8005676E3004E70
+ E2004368E000466AE1006986E600000000000000000000000000000000000000
+ 0000000000000000000000000000000000004157A2006B86E1003E63DF004267
+ E0004A6DE1004F71E20030489900000000000000000000000000000000000000
+ 0000000000000000000000000000BECCF500475FB5008396D9004B70EC004B70
+ EC004B70EC006081EF00879CE5005369B6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A7006282EC00839DF3007C97F3006886EA005878
+ E4004E6FDE001D45CB000D36C1000F38C200395ED6005071E0006583E700869F
+ F20087A1F5007791EA0000000000000000000000000000000000000000000000
+ 00000000000000000000000000008DA3EE005378F100496FF0004C72F1004169
+ F0003D66EF003D66EF003D66EF003D66EF007087D6005873D000000000000000
+ 00000000000000000000000000000000000000000000455CA700556EBF00718B
+ E5004D70E5004A6EE500718DEA00AABAEF000000000000000000000000000000
+ 000000000000000000000000000000000000485EA8006F8BEA00496DE5005677
+ E6006D88E500546DBF003E58B300000000000000000000000000000000000000
+ 00000000000000000000BFCCF5008DA0DF007C97F4005D80F2006A83D700455F
+ BB004962BB005D80F2005D80F200708EF400586FBD008FA3E900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A700879FF000A5B8F70093AAF5006D8AEA005A7A
+ E400476ADD002047CB000D36C0000F38C2003A5ED6005071E0006684E70091A8
+ F3009FB3F600839BEC0000000000000000000000000000000000000000000000
+ 00000000000000000000000000008498DF007693F4005176F1005176F1005176
+ F1005176F10091A7F00099ADF10096ABF1008EA5EF008DA0E100526CC7000000
+ 0000000000000000000000000000000000000000000000000000667ED5005C75
+ C7006081EE006383EF006A88EE00425BAC00ADBCF10000000000000000000000
+ 0000000000000000000000000000ADBCF1007690E5006A89EF006383EF007994
+ F1005872C600667ED5000000000000000000000000004E69C5004A65C000BFCC
+ F50000000000BFCCF5004D66BD00829DF5006686F3006686F3004761BC0098AB
+ F000BFCCF5007089D9006686F3006686F30098AAEB005970BF0090A3EA000000
+ 0000BFCCF5004A65C00000000000000000000000000000000000000000000000
+ 0000A5A3A200D2D1D000AAA7A70089A1F000A5B8F70093AAF5006D8AEA005A7A
+ E400476ADD002047CB000D36C0000F38C2003A5ED6005071E0006684E70091A8
+ F300A0B4F600849CEC0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000798ED70090A8F6005D80F2005D80F2005D80
+ F2005D80F2006B81CF00506AC100506AC100506AC100506AC100566FCD000000
+ 00000000000000000000000000000000000000000000000000005370CB005D73
+ BE006989F2006E8CF2006A89F2006982D6003E59B100ADBCF100000000000000
+ 00000000000000000000ADBCF1003E59B2007C97F4006989F2006E8CF200849E
+ F4005970BC005370CB000000000000000000000000004761B8008296DA004862
+ BB00BFCCF5004E67BE0096A6E1006E8DF3006E8DF300778DDB0098ABF0000000
+ 0000000000004C65BD00778DDB006E8DF3007F9AF5009CAEEC005C73BF00BFCC
+ F5004862BB008296DA0000000000000000000000000000000000000000000000
+ 0000A7A5A300D2D1D000AEACAB0089A1F000A5B8F70093AAF5006D8AEA005A7A
+ E400476ADD002047CB000D36C0000F38C2003A5ED6005071E0006684E70091A8
+ F300A0B4F600849CEC0000000000000000000000000000000000000000000000
+ 00000000000000000000000000007489D1009BB0F7006787F3006787F3006787
+ F3006787F300859BE900516BC400000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000728BDD005069BA006F8B
+ EB006E8DF3007894F4007894F4007F9AF5006B84D700465FB300ADBCF1000000
+ 0000000000005D79D100465FB3006781D5007491F4007894F4007894F4007290
+ F4006A88EB004F68BA000000000000000000000000004963BA007F9AF50097AD
+ F700A0AFE40097ADF7007F9AF5008498DE004B64BF0098ABF000000000000000
+ 00000000000000000000BFCCF5004F67BF007F9AF5007F9AF5008DA5F60091A2
+ DE0097ADF7007F9AF50000000000000000000000000000000000000000000000
+ 0000A5A3A200BFBDBC00AAA7A70089A1F000A5B8F70093AAF5006D8AEA005A7A
+ E400476ADD002047CB000D36C0000F38C2003A5ED6005071E0006684E70091A8
+ F3009DB2F600839CED0000000000000000000000000000000000000000000000
+ 00000000000000000000000000005972C600B1C1F500839EF5007D98F5007D98
+ F5007D98F5008BA4F600879EE900536DC6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D2DBF800425CB6006983
+ D9006A82D100809BF2007E99F5008DA5F60088A2F6008BA4F6008DA5F60086A0
+ F50086A0F5008EA6F6008CA5F60088A2F6008BA4F600829CF500849EF200617C
+ D8006882D900425CB6000000000000000000000000004B64BB0087A1F50087A1
+ F5009EB3F70087A1F50087A1F5004D66C00098ABF00000000000000000000000
+ 0000000000000000000000000000BFCCF5008A9EE00087A1F50087A1F5009EB3
+ F70087A1F50087A1F50000000000000000000000000000000000000000000000
+ 0000A5A3A200BFBDBC00AAA7A700849DF000A4B7F70093AAF5006D8AEA005A7A
+ E400476ADD002047CB000D36C0000F38C200385DD6004D6FDF006280E60089A1
+ F20091A8F5007E98EC0000000000000000000000000000000000000000000000
+ 00000000000000000000000000005973CF00AEBEF30094ABF60086A0F50086A0
+ F50086A0F50089A2F60097ADF7006C83D2000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000008EA2E9004460
+ BC004964C100667DCA00849EF20097ADF70097ADF70097ADF70090A8F6008DA5
+ F6008EA6F60094ABF60097ADF70097ADF70093AAF60089A2F300687FCA004E6B
+ C8004460BC008EA2E9000000000000000000000000004C65BC008FA7F6008FA7
+ F6008FA7F6008FA7F60090A2E20098ABF0000000000000000000000000000000
+ 000000000000000000000000000000000000526AC20090A2E2008FA7F6008FA7
+ F6008FA7F6008FA7F60000000000000000000000000000000000000000000000
+ 0000A5A3A200BFBDBC00AAA7A7007691EE009CB1F50091A8F4006D8AEB005979
+ E4004669DD001F46CB00143CC3002147C7004567D8005D7BE1006885E7007994
+ F1007B96F3007691EC0000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D50099AAE800A5B8F80092A9F60092A9
+ F60092A9F60092A9F6009AAFF7008EA4EB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004965C2006E85D20094ABF6009BB0F7009EB3F700A2B6F800A2B6
+ F800A2B6F800A1B5F7009EB3F7009DB2F70095ACF700748AD5004965C2000000
+ 000000000000000000000000000000000000000000004E67BE00A1B5F700A1B5
+ F700A1B5F700A1B5F700B3C3F8004E68C100BFCDF60000000000000000000000
+ 0000000000000000000000000000BFCDF6009BABDE00B3C3F800A1B5F700A1B5
+ F700A1B5F700A1B5F70000000000000000000000000000000000000000000000
+ 0000817F7E00B9B8B600C1C0BE00787F9E007A93E7007994EF006A87EA006984
+ E100647ED800576DB9005468A800475DA7006981D600748DDD00778DDF00546E
+ C800637BCD006C85DC0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000859CE9008699DD00BAC9FA00A6B9F800A6B9
+ F800A6B9F800A6B9F800A6B9F800A2B6F8005771C90000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004763BF006D87DB007C96ED006A80C8006D84D20099AEF200A0B4
+ F7009EB3F7008399E3006D84D2006A7FC7007491F400718ADD00405DBC000000
+ 000000000000000000000000000000000000000000004F69C000A9BBF800A9BB
+ F800A9BBF800A9BBF800A9BBF800A0ADDF00526CC70000000000000000000000
+ 0000000000000000000000000000526CC700B9C8F900A9BBF800A9BBF800A9BB
+ F800A9BBF800A9BBF80000000000000000000000000000000000000000000000
+ 0000BFBEBC00D9D8D700E3E2E1007A7877005974CF005F77C9005E74C000556B
+ B800516BC200899EE500C9D4F600000000000000000000000000000000000000
+ 000092A7ED005874CD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000AFBFF3007D91D600B0C0F900A1B5F700A4B7
+ F800A5B8F800A2B6F8009BB0F7008AA3F6006D84D4007C93E600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008197E5004862BC005971C2005974D0006B85DB006B84D6008AA3
+ F60087A1F5004965C0006B85DB005974D000627BCF004862BC008197E5000000
+ 00000000000000000000000000000000000000000000556FCC005069C0005069
+ C0005069C0005069C0005069C0005069C000556FCC0000000000000000000000
+ 0000000000000000000000000000556FCC005069C0005069C0005069C0005069
+ C0005069C0005069C00000000000000000000000000000000000000000000000
+ 0000CFCDCC00EBEBEA00F8F8F8007A7877000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D3DBF9006F84D000A7B8F300B1C1F500B2C2
+ F500B2C2F500B1C1F500B0C0F500AABAF30093A6E8005872CA00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D2DBF8008197E50000000000000000005871C300728D
+ EA00708CEA009DAFEE0000000000000000006B85DC00D2DBF800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009C9A9A00959392008C8A8900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DADA
+ DA002F417A002834600028346000283460002834600028346000283460002834
+ 600028346000283460002834600028346000283460002834600028346000CACA
+ CA00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000092A1D7002635640026356300C3C3C300CACACA00D3D3D300000000000000
+ 0000000000000000000000000000D5D5D50090A1D5002532600025326000C8C8
+ C800DADADA0000000000000000000000000000000000C2C2C200C0C0C0003345
+ 7F0034437B0034437B0034437B0034437B0034437B0034437B0034437B003443
+ 7B0034437B0034437B0034437B0034437B0034437B0034437B0034437B003443
+ 7B0033457F00C0C0C000D6D6D600000000000000000000000000000000000000
+ 00002A3970000525910004208000031D7300031D7300031D7300031D7300031D
+ 7300031D7300031D7300031D7300031D7300031D7300031D7300031D73000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B9C6
+ F100405396003F5AB6003F5AB5002A3D7D00B9C6F10000000000000000000000
+ 0000000000000000000000000000B7C5F1003F5291003E58AF003E58AF00283A
+ 7800B7C5F100000000000000000000000000000000000000000000000000364B
+ 99007E93D7007D92D7007D92D7007C91D7007C91D7007C91D7007B90D7007B90
+ D7007B90D7007A8FD700798FD700798FD700788ED700788ED700778DD70099A9
+ E100364B99000000000000000000000000000000000000000000000000000000
+ 00002D407F00637BCA005771CB006684EA006684EA006684EA006684EA006684
+ EA006684EA006684EA006684EA006684EA006584EA008AA1EF00032288000000
+ 000000000000000000000000000000000000000000003855B5003A56B5003B57
+ B5003C57B4003D58B5003D58B5003D58B5003D58B5003D58B5003D58B5003D58
+ B5003D58B5003D58B5003D58B5003D58B5003D58B5003D58B5003D58B5003C58
+ B5003B57B5003A56B50026377400000000000000000000000000BAC6F2002C40
+ 83003E5AB9000F32A8000F32A800415599002B3F8000B9C6F100000000000000
+ 00000000000000000000B9C6F1002A3E7D003F5AB4000F31A0000F31A0004052
+ 94002A3C7B00B7C5F1000000000000000000000000000000000000000000384F
+ 9D008398DC008398DC008297DC008297DC008297DC008196DC008196DC008196
+ DC008196DD008095DC007F94DC007F94DC007E94DC007E94DC007E94DD009EAE
+ E500384F9D000000000000000000000000000000000000000000000000000000
+ 000030438400667ECF00536ECB005D7EEB005D7EEB005D7EEB005D7EEB005D7E
+ EB005D7EEB005D7EEB005D7EEB005D7EEB005D7EEB00879FF00003238D000000
+ 000000000000000000000000000000000000000000003753B2000F34AF001236
+ AE00163AB000173AB000173AB000173AB000173AB000173AB000173AB000173A
+ B000173AB000173AB000173AB000173AB000173AB000173AB000173AB0001539
+ B0001337AF000F34AF00283A7C000000000000000000BAC6F2002E4288004358
+ A0000F34AD00042AAA00042AA9003E5BBC0042569D002D418500000000000000
+ 000000000000B9C6F1002C41820041569A000F32A7000328A1000328A1003F5A
+ B700415598002B3F7F0000000000000000000000000000000000000000003A51
+ A2008A9EE100899DE100899DE100889DE100879CE100879CE100869BE100869B
+ E100869BE100859AE100859AE100859AE1008499E1008499E1008499E100A2B2
+ E8003A51A2000000000000000000000000000000000000000000000000000000
+ 000032478A006780D3004C68C8005477EA005477EA005477EA005477EA005477
+ EA005477EA005477EA005477EA005477EA005477EA00829CF000032493000000
+ 000000000000000000000000000000000000000000003C58B800173CB5001D40
+ B6002244B6002345B7002345B6002446B7002446B7002446B7002446B7002446
+ B7002446B7002446B7002446B7002446B7002345B6002345B6002345B7002144
+ B7001E41B700183DB6002A3D810000000000000000006678B5004261C800183D
+ BC001036B7001036B7000F35B6000A31B4001338B700405EC40032468E00BAC7
+ F200BAC7F2004459A4003F5DC2001035B200042BAD00042BAC00042BAC00042A
+ AB000F34AE003E5BBD002F428800000000000000000000000000000000003E56
+ AA0097AAEC0097AAEC000633C9000633C9000633C9000633C9000633C9000633
+ C9000633C90092A7EB0092A7EB0092A7EB0091A6EB0091A6EB0091A6EB00ABBB
+ F0003E56AA000000000000000000000000000000000000000000000000000000
+ 0000374C96006883DB003C5CC6004268E9000434D2004268E9004268E9004268
+ E9004268E9004268E9004268E9000434D2004268E9007893F00003279D000000
+ 000000000000000000000000000000000000000000004764C600284CC4003254
+ C4003556C5003556C5003556C5003556C5003556C5003556C5003556C5003556
+ C5003556C5002B4BB5000626910003269B00677FCF004160C8003556C5003556
+ C5003254C400284CC4002F448D0000000000000000007D8DC1007D93DC001C42
+ C200183EBF001A40C000193FBF00143BBC001037BB00183EBD00465CA900344A
+ 9200344991003F5EC6001036B700042CB400042CB300042CB200042CB200042B
+ B0001035B400798ED40032478C00000000000000000000000000000000004159
+ AE00A1B3F200A1B3F200A1B3F200A0B3F200A0B3F2009FB2F2009FB2F2009EB1
+ F2009EB1F2009DB0F2009DB0F2009CB0F2009BAFF1009BAFF1009BAFF100B1C1
+ F4004159AE000000000000000000000000000000000000000000000000000000
+ 00003A509A006984DF003455C4003962EA000434D3003962EA003962EA003962
+ EA003962EA003962EA003962EA000434D3003962EA00728FEF000328A1000000
+ 000000000000000000000000000000000000000000004C6ACD003054CB003C5D
+ CC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5F
+ CC003F5FCC000728960003279F0003279F002343AD006D85D5004A68CE003F5F
+ CC003C5DCC003155CB00314792000000000000000000384E9A007F8FC4007F95
+ DF001D44C5002147C7002248C7001E44C4001B42C300163DC1004564CD004860
+ AD00485FAD00153CBE000831BA000730B900042DB700042DB700042DB7001037
+ B9007A90D8007C8BBE00BAC7F20000000000000000000000000000000000425C
+ B300A9BBF600A9BBF6001541D3001541D3001541D3001541D3001541D3001541
+ D3001541D3001541D3001541D3001541D3001541D3001541D300A3B6F600B8C7
+ F800425CB3000000000000000000000000000000000000000000000000000000
+ 00003C53A1006985E2002B4EC300305BEA000534D400305BEA00305BEA00305B
+ EA00305BEA00305BEA00305BEA000534D400305BEA006C8AF0000429A6000000
+ 000000000000000000000000000000000000000000005471D4003C5FD2004969
+ D3004B6AD2004B6AD2004B6AD2004B6AD2004B6AD2004B6AD2004B6AD2004B6A
+ D2003D5BC100072CA400072CA400072CA400072CA4002646B100758CD9004B6A
+ D2004969D2003C5FD100344A9700000000000000000000000000BDC9F4003C53
+ A200839AE5002C52D2002A50D1003055D2002E53D1002C52D100264DCE002D52
+ CF002B50CF001E46CB001C44CA001A42C900143DC600103AC500173FC700808F
+ C500394F9B00BCC8F3000000000000000000000000000000000000000000455F
+ B600B6C6F900B6C6F900244DD600244DD600244DD600244DD600244DD600244D
+ D600244DD600244DD600244DD600244DD600244DD600244DD600B1C1F900C0CE
+ FA00455FB6000000000000000000000000000000000000000000000000000000
+ 00004259AD006987EA001B41C1001E4DEA000535D6001E4DEA001E4DEA001E4D
+ EA001E4DEA001E4DEA001E4DEA000535D6001E4DEA006081F000042BB0000000
+ 000000000000000000000000000000000000000000006581E1005273E000627F
+ E1006682E1006682E1006682E1006682E1006682E1006682E1005571CF001435
+ A2001035AF001035AF001035AF001035AF001035AF001035AF001035AF00859B
+ E3006C87E3005373E0003A51A30000000000000000000000000000000000BDCB
+ F4008393CD00859CE7003056D600375CD800365BD700355AD6003056D5002E54
+ D4002C52D300274ED100254CD000234BD0001942CC001E46CE007E95E2003A52
+ A000BDC9F4000000000000000000000000000000000000000000000000004660
+ B700BCCAFA00BCCAFA00BBCAFA00BBCAFA00BAC9FA00BAC9FA00B9C8F900B9C8
+ F900B9C8F900B9C8F900B8C7F900B8C7F900B7C7F900B7C7F900B7C7F900C4D1
+ FA004660B7000000000000000000000000000000000000000000000000000000
+ 0000455EB2006987ED00133ABE00153CBF000535D7001546EA001546EA001546
+ EA001546EA001546EA001546EA000535D7001546EA005A7DF100042DB6000000
+ 000000000000000000000000000000000000000000006D89E8005D7DE7006F8B
+ E800748FE900748FE900748FE900748FE900748FE900748FE900173496001336
+ A9001336A900153AB500153AB500153AB500153AB500153AB5001439B1003250
+ B4008B9FE3006885E8003C55A800000000000000000000000000000000000000
+ 00004059AB008495D000869DEA003A5FDC003F64DD003D62DC003A5FDB00385D
+ DB00355BDA003157D7002E55D6002C53D600254DD4008097E5008292CB00BDC9
+ F400000000000000000000000000000000000000000000000000000000004760
+ B800C1CEFA00C2CFFA003358D7003358D7003358D7003358D7003358D7003358
+ D7003358D7003358D7003358D7003358D7003358D7003358D700BCCAFA00C8D4
+ FB004760B8000000000000000000000000000000000000000000000000000000
+ 00004761B8006988F1000B34BD009DB2F6000535D7000C3FEA000C3FEA000C3F
+ EA000C3FEA000C3FEA000C3FEA000535D7000C3FEA005478F000042EBA000000
+ 000000000000000000000000000000000000000000007591EF006887EE007B96
+ F000819BF000819BF000819BF000819BF000819BF000819BF000142F8C00142F
+ 8C00142F8C001A3FBA001A3FBA001A3FBA001A3FBA001A3FBA002949B400142F
+ 8C00324B9D008DA3EB004058AE00000000000000000000000000000000000000
+ 000000000000BECCF500455EB5006483EA005275E8004F72E7004B6FE600496D
+ E500466BE4004267E3004166E3004267E2007C8FD100425BB000BDCBF4000000
+ 0000000000000000000000000000000000000000000000000000000000004962
+ BA00CBD6FB00CBD6FB004164D8004164D8004164D8004164D8004164D8004164
+ D8004164D8004164D8004164D8004164D8004164D8004164D800C7D3FB00CFD9
+ FB004962BA000000000000000000000000000000000000000000000000000000
+ 00004A64BC006989F300042DB6009AAFF3002242AE002245BA000538E4000538
+ E4000538E4000538E4000538E4000434D2000538E4004F73EB00042EBC000000
+ 000000000000000000000000000000000000000000007E99F500708EF400829D
+ F50094ABF60097ADF70099AFF70099AFF70099AFF70099AFF70099AFF70099AF
+ F70099AFF7002448BF002448BF002448BF002448BF002448BF00B7C7F90099AF
+ F70091A8F6007E99F500445DB400000000000000000000000000000000000000
+ 000000000000BFCCF5004861BA006887EE00597BEC00597BEC005578EB005275
+ EA005074EA004C70E800496EE8004B6FE7005670CB00465EB400BFCCF5000000
+ 0000000000000000000000000000000000000000000000000000000000004A63
+ BB00D0DAFB00D1DBFB00D0DAFB00CFD9FB00CFD9FB00CFD9FB00CED8FB00CED8
+ FB00CED8FB00CDD8FB00CDD8FB00CDD8FB00CCD7FB00CCD7FB00CCD7FB00D2DB
+ FB004A63BB000000000000000000000000000000000000000000000000000000
+ 00004B65BD006989F300042CB4009AAEF2009BADEC009AAEF2000537E1000537
+ E1000537E1000537E1000537E1000433D0000537E1004F73EA00042EBC000000
+ 000000000000000000000000000000000000000000007C97F4006989F3007995
+ F40088A2F6008FA7F60098AEF700A3B6F800A3B6F800A3B6F800A3B6F800A3B6
+ F800A3B6F8002646B3002646B3002646B3002646B3002646B300BECCFA00A1B5
+ F70095ACF700819BF500455EB600000000000000000000000000000000000000
+ 0000BFCCF5004B65BE005975D300577AF0005E80F0006384F1005E80EF005C7E
+ EF00597CEE005477ED005276ED004E73EC00597BEC005973CF004861B9000000
+ 0000000000000000000000000000000000000000000000000000000000004B64
+ BC00D5DEFC00D5DEFC005070D9005070D9005070D9005070D9005070D9005070
+ D9005070D9005070D9005070D9005070D9005070D9005070D900D0DAFB00D5DE
+ FC004B64BC000000000000000000000000000000000000000000000000000000
+ 00004C66BD006989F300042CB2009AAEF1000433CE000537DE000537DE000537
+ DE000537DE000537DE000537DE000433CE000537DE004F72E800042EBC000000
+ 00000000000000000000000000000000000000000000ADBEF8009AAFF700A0B4
+ F700A7B9F800ACBDF800ADBEF8009FB3F700A4B7F800A6B9F800A7B9F800A7B9
+ F800A8BAF800223C9000223C9000223C9000223C9000223C9000C0CEFA009FB3
+ F70093AAF600809BF5004660B70000000000000000000000000000000000BFCD
+ F6005B76D5006183F200577BF2007693F4007894F4007592F400718FF4006E8D
+ F3006B8AF3006888F3006586F3006384F3005277F1004A70F0005C7FF2004D67
+ C000BFCDF6000000000000000000000000000000000000000000000000004D66
+ BD00DDE4FC00DDE4FC005F7BDA005F7BDA005F7BDA005F7BDA005F7BDA005F7B
+ DA005F7BDA005F7BDA005F7BDA005F7BDA005F7BDA005F7BDA00D9E1FC00DBE2
+ FC004D66BD000000000000000000000000000000000000000000000000000000
+ 00004E68BF006989F300042BAD000535D9000432CA000535D9000535D9000535
+ D9000535D9000535D9000535D9000432CA000535D9004F71E300042EBC000000
+ 000000000000000000000000000000000000000000007391F400456CF000456C
+ F000456CF000456CF0003A60E000A8BAF800ABBDF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800ABBD
+ F800A7B9F800A2B6F8004962B900000000000000000000000000BFCDF6004E68
+ C1006384F3005C7FF2006C8BF300829DF500819BF5007F9AF5007290F400718F
+ F4006F8DF3006F8DF3006F8DF3006C8BF3006485F300577BF2004E73F1005D78
+ D6004E68C100BFCDF60000000000000000000000000000000000000000004E67
+ BE00E1E7FD00E1E7FD00E1E7FD00E0E6FC00E0E6FC00E0E6FC00E0E6FC00E0E6
+ FC00DFE6FC00DEE5FC00DEE5FC00DEE5FC00DEE5FC00DDE4FC00DDE4FC00DFE6
+ FC004E67BE000000000000000000000000000000000000000000000000000000
+ 00004F69C0006989F300042AAB000535D6000431C7000535D6000535D6000535
+ D6000535D6000535D6000535D6000431C7000535D6005072E200042EBC000000
+ 000000000000000000000000000000000000000000007894F4004B71F1004B71
+ F1004B71F1004B71F1004B71F100365BD700365BD700365BD700365BD700365B
+ D700365BD700365BD700365BD700365BD700365BD700365BD700365BD700365B
+ D700365BD700365BD7004A63BB000000000000000000BFCDF6004F69C2005C77
+ D6005F81F2007290F400849EF5008CA5F60089A2F600829DF5006B8AF300A3B6
+ F800A3B6F8006A8AF3007391F4007592F400718FF4006989F3005A7DF2005D80
+ F2005A76D6004F69C20000000000000000000000000000000000000000004F68
+ BF00E5EAFD00E5EAFD006D87DB006D87DB006D87DB006D87DB006D87DB006D87
+ DB006D87DB006D87DB006D87DB006D87DB006D87DB006D87DB00E1E7FD00E1E7
+ FD004F68BF000000000000000000000000000000000000000000000000000000
+ 0000506AC1006989F300042AA9000434D3000431C5000434D3000434D3000434
+ D3000434D3000434D3000434D3000431C5000434D3004F70DF00042EBC000000
+ 000000000000000000000000000000000000000000007C97F4005075F1005075
+ F1005075F1005075F1005075F1005075F1005075F1005075F1005075F1005075
+ F1005075F1005075F1005075F1005075F1005075F1005075F1005075F1005075
+ F1005075F1005075F1004B65BC000000000000000000778EDB005B7EF2005579
+ F10086A0F50098AEF700A0B4F70091A8F6007D98F5006888F3008FA1E000506A
+ C400506AC40095ACF7005B7EF2006B8AF300829CF500809BF5007995F4005378
+ F1003E67F0005075F100506AC40000000000000000000000000000000000516A
+ C100EAEFFD00EAEFFD00EAEFFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E8ED
+ FD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E7ECFD00E6EB
+ FD00516AC1000000000000000000000000000000000000000000000000000000
+ 0000526CC3006989F3000328A4000433CE000430C1000433CE000433CE00B2C0
+ F000B2C0F0000433CE000433CE000430C1000433CE004F6FDC00042EBC000000
+ 00000000000000000000000000000000000000000000849EF5005B7EF2005B7E
+ F2005B7EF2005B7EF2005B7EF2006384F300829CF5007E91D5004E67BE004E67
+ BE004E67BE004E67BE004E67BE004E67BE004E67BE004E67BE004E67BE004E67
+ BE004E67BE004E67BE004E68C10000000000000000008B9FE0008FA7F600577B
+ F20089A2F60099AFF7009EB3F700829CF5006C8BF3009AAFF700516BC400BFCD
+ F600BFCDF6008EA1E00095ACF7005D80F2007E99F500819BF5007A96F4005479
+ F1003E67F00086A0F500516BC40000000000000000000000000000000000526B
+ C200EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00ECF0FE00ECF0FE00ECF0
+ FE00ECF0FE00EBF0FD00EBF0FD00C8CCD800C8CBD600C8CBD600C8CCD700C6CA
+ D700526BC2000000000000000000000000000000000000000000000000000000
+ 0000536DC4006989F3000328A2000432CB00042FBF000432CB000432CB000432
+ CB000432CB000432CB000432CB00042FBF000432CB004F6FDA00042EBC000000
+ 0000000000000000000000000000000000000000000088A2F6006183F2006183
+ F2006183F2006183F2006183F200839EF5008195D600536CC000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000526CC50090A2E1009AAF
+ F7007F9AF5008EA6F60091A8F6006E8DF3009BB0F7008FA2E100BFCDF6000000
+ 000000000000526CC5008FA1E10095ACF7006F8DF3007693F400718FF4005378
+ F1008DA5F6008D9FE100BFCDF60000000000000000000000000000000000526C
+ C300F0F3FE00F0F3FE00F0F3FE00EFF3FE00EFF3FE00EFF3FE00EFF3FE00EFF3
+ FE00EFF3FE00EEF2FE00EEF2FE00CBCED800516BC100526CC300526CC300526C
+ C300526CC3000000000000000000000000000000000000000000000000000000
+ 0000546EC5006989F3000328A0000431C800042EBC000431C8000431C8000431
+ C8000431C8000431C8000431C800042EBC000431C800506FD800042EBC000000
+ 000000000000000000000000000000000000000000008DA5F6006787F3006787
+ F3006787F3006787F3006989F3008597D700546DC10091A5EB00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCDF600536E
+ C7009DB2F7006082F2006082F20090A3E100536EC700BFCDF600000000000000
+ 00000000000000000000BFCDF600536EC70095ACF7004F74F1004E73F10091A3
+ E100536EC700BFCDF6000000000000000000000000000000000000000000546E
+ C500F4F7FE00F5F7FE00F5F7FE00F4F7FE00F4F7FE00F4F7FE00F4F7FE00F4F7
+ FE00F4F7FE00F3F6FE00F3F6FE00CFD1D800FAFBFF00FAFBFF00F5F7FD00536E
+ C700BFCDF6000000000000000000000000000000000000000000000000000000
+ 00005670C7006888F30003269C000430C2000430C2000430C2000430C2000430
+ C2000430C2000430C2000430C2000430C2000430C200506ED400042EBC000000
+ 00000000000000000000000000000000000000000000506AC100506AC100506A
+ C100506AC100506AC100506AC10091A5EB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C1CD
+ F60092A4E20092A9F60092A9F600556FC700C1CDF60000000000000000000000
+ 0000000000000000000000000000C1CDF60090A3E2008DA5F6008CA5F600556F
+ C700C1CDF600000000000000000000000000000000000000000000000000556F
+ C600F5F7FE00F7F9FE00F7F9FE00F6F8FE00F6F8FE00F6F8FE00F6F8FE00F6F8
+ FE00F6F8FE00F5F7FE00F5F7FE00D0D2D800FAFBFF00F5F7FD00B7C2E800C1CD
+ F600000000000000000000000000000000000000000000000000000000000000
+ 00005771C8006586F30003269900042FC000042FC000042FC000042FC000042F
+ C000042FC000042FC000042FC000042FC000042FC0004F6DD2000430C2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005670C8008DA1E3008DA1E300C1CDF6000000000000000000000000000000
+ 0000000000000000000000000000000000005670C8008DA1E3008DA1E300C1CD
+ F600000000000000000000000000000000000000000000000000000000005670
+ C700F5F7FE00F7F9FE00F8FAFE00F8FAFE00F8FAFE00F8FAFE00F8FAFE00F8FA
+ FE00F8FAFE00F8FAFE00F7F9FE00D2D4D800F4F6FD00B7C3E8005670C8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005771C8005D80F20003259700032597000325970003259700032597000325
+ 970003259700032597000325970003259700032597003F57A6000536D9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005771
+ C9005871C8005871C8005871C8005871C8005871C8005871C8005871C8005871
+ C8005871C8005871C8005871C8005871C8005771C900C1CDF600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005A76D2005771C8005A73C9005A73C9005A73C9005A73C9005A73C9005A73
+ C9005A73C9005A73C9005A73C9005A73C9005A73C9005A73C9005771C8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C7C7C700C0C0C000AEBA
+ E40028345E0028345E0028345E0028345E0028345E0028345E0028345E002834
+ 5E0028345E0028345E0028345E0028345E0028345E0028345E0028345E004053
+ 9300AEBAE400C0C0C000D6D6D600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B9C6F1002A3B78002F448B00B9C6F1000000000000000000000000002F44
+ 8B002A3B78002F448B0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C5CEF3006A7FC8002A3A75002433
+ 6900243369002A3A7500364D95006A7FC8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002E42
+ 86002445B400042AAA00042AAA00042AAA00042AAA00042AAA00042AAA00042A
+ AA00042AAA00042AAA00042AAA00042AAA00042AAA00042AAA00042AAA00586F
+ BA002D3F7F000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000374887006D84CF005B73C7007286C800566EBE000E30A300334FB1008496
+ D5006D84CF005D74C10000000000000000000000000000000000000000000000
+ 000000000000000000004259A70046589700455EAF002F4BAB001333A0000326
+ 9900032699001333A0001E3DA4002F4BAB004658970035447A004259A7000000
+ 0000000000000000000000000000000000000000000000000000000000004256
+ 9B008E9ED10095A7E2009FB0E900A1B1E9009DADE40099A9DF008E9ED3008999
+ CD008595C7007C8BBB007785B5007381AF007180B2007A8ABF008191C3004256
+ 9B00000000000000000000000000000000000000000000000000000000003043
+ 8600042CB30003279D0003238F0003238F0003238F0003238F0003238F000323
+ 8F0003238F0003238F0003238F0003238F0003238F0003238F0003238F00506C
+ CA00304386000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000364C98009EADDD008492C30031448600506CCA00042CB400314486008391
+ C3009EADDD008291C30000000000000000000000000000000000000000000000
+ 0000B9C6F1002E42880042538E002B49AE000B2EA10003279F0003279F000327
+ 9F0003279F0003279F0003279F0003279F002B49AE004760B10042538E00B9C6
+ F100000000000000000000000000000000000000000000000000000000002736
+ 6E00708ADF007993E70091A7F10098ADF1008CA2EB007F96E200667FD0005A73
+ C6004F68BC003751A5002B44980020398C001D3892002D4AAC00516CC8002736
+ 6E00000000000000000000000000000000000000000000000000000000003448
+ 8F00042FBD00E0E6F700DFE4F600DFE4F600DEE3F600DEE3F600DDE2F600DDE2
+ F600DCE2F600DAE0F500DAE0F500DAE0F500D9DFF500D9DFF500D8DEF400506E
+ D10034488F000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000BAC7F20033478B00374D9C00BAC7F2004F6CCE00042EB90033478B00374D
+ 9C0033478B00374D9C0000000000000000000000000000000000000000000000
+ 0000334686006E7AA6004C65B8000328A3000328A3000328A3000328A3000328
+ A3000328A3000328A3000328A3000328A3000328A3001336A900415CB7002F42
+ 8400B9C6F1000000000000000000000000000000000000000000000000002A3A
+ 74006A84DE00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE00415FC4002A3A
+ 7400000000000000000000000000000000000000000000000000000000003B52
+ 9F000433D000C5D0F400C4CFF400C2CDF300C1CDF300C0CCF300BECAF200BECA
+ F200BDC9F200BBC8F200BBC8F200B9C6F100B7C5F100B6C4F100DAE1F7005071
+ DE003B529F000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000384D9600384D9600384D9600384D9600384D
+ 9600384D9600384D9600384D9600384D96001F46CB000C37C600384D96000000
+ 000000000000000000000000000000000000000000000000000000000000475F
+ B100BCBFC900A6ABBA00808DB6001438AE00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00415D
+ BD0046589A00475FB10000000000000000000000000000000000000000003042
+ 8200718BDF00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE004461C4003042
+ 8200000000000000000000000000000000000000000000000000000000003F57
+ A8000536D900C6D1F600C6D1F600C4D0F600C4D0F600C3CFF600C1CDF500C0CC
+ F500BFCCF500BECBF500BDCAF500BCC9F500BAC8F500B9C7F500DCE3F9005073
+ E5003F57A8000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000617BD4001F44C1002C50C6005F79D3005F79
+ D3005F79D3005F79D3005F79D3006079D3005A78DC00133ECD003754BA000000
+ 0000000000000000000000000000000000000000000000000000A8B7ED005665
+ 9800B2B6C300ADB1BF00A9AEBE004A63B7001439B200042CB100042CB100042C
+ B100042CB100042CB100042CB100042CB100042CB100042CB100042CB1001439
+ B6004964BF003E508E0000000000000000000000000000000000000000003346
+ 8800708ADF00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE00415FC4003346
+ 880000000000000000000000000000000000000000000000000000000000435B
+ B0000538E300CAD5F900C9D4F900A4A9BC00A3A8BC00A3A8BC00A2A8BC00C3CF
+ F800C2CFF800BFCCF700BECBF700BDCBF700BCCAF700BBC9F700DDE4FA004F73
+ EB00435BB0000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E7CE0002C53D7003D52A0003D52A0003D52
+ A0003D52A0003D52A0003D52A0003D52A0005670CA00163BB4003D52A0000000
+ 0000000000000000000000000000000000000000000000000000455BAE00A2A9
+ BF00B1B6C300B1B6C300B1B6C3008794C0004B65BB00153AB700042DB600042D
+ B600042DB600042DB600042DB600042DB600042DB600042DB600042DB600042D
+ B6002B4EC2004C62AD000000000000000000000000000000000000000000364A
+ 8F007790E1007C95E90092A8F10098ADF1008CA2EB007F96E200667FD0005A73
+ C6004F68BC003751A5002B44980020398C001D3892002D4AAC00516CC800364A
+ 8F00000000000000000000000000000000000000000000000000000000004861
+ B800053AEB00CFD9FB00CED8FB00A6ABBD00A6ABBE00A6ABBE00A4A9BD00A4A9
+ BD00A3A9BD00A2A8BD00A2A8BD00A1A7BD00C1CEFA00C0CEFA00DFE6FC005075
+ F1004861B8000000000000000000000000000000000000000000374E9B002C3F
+ 7E002C3F7E002C3F7E002C3F7E002C3F7E002C3F7E002C3F7E002C3F7E002C3F
+ 7E002C3F7E00374E9B00000000004259AB008099EB005879E7004960AF000000
+ 00000000000000000000000000000000000000000000788DD7008D98BA00CACE
+ D900C1C5D300C1C5D300C1C5D300C1C5D300BDC2D10097A4CE00274CC500173F
+ C400173FC400173FC400173FC400173FC400173FC400173FC400173FC400173F
+ C400153DC400395BCD00788DD70000000000000000000000000000000000D1DA
+ F7003D529D003D529D003D529D003D529D003D529D003D529D003D529D003D52
+ 9D003D529D003D529D003D529D003D529D003D529D003D529D003D529D00D1DA
+ F700000000000000000000000000000000000000000000000000000000004962
+ BA00053AEB00D1DBFB00D0DAFB00CFD9FB00CED8FB00CDD8FB00CBD6FB00CAD5
+ FB00C9D5FB00C7D3FB00C6D2FA00C6D2FA00C4D1FA00C3D0FA00E1E7FD005075
+ F1004962BA00000000000000000000000000000000000000000032468C00506D
+ CF00506DCF00506DCF00506DCF00506DCF00506DCF00506DCF00506DCF00506D
+ CF00506DCF0032468C00000000004C66C0008195D8004462C700445DB0000000
+ 000000000000000000000000000000000000000000004963B600B6BCD100CBCF
+ DB00C6CAD800C6CAD800C6CAD800C6CAD800C6CAD800C4C9D8006780D1003256
+ CD00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234A
+ CB002148CB003357CF004963B600000000000000000000000000000000005E77
+ CD0092A4E00094A8EC009EB1F300A1B4F3009CAEED0098AAE8008EA0DC00899A
+ D5008596CF007C8CC3007787BC007282B6007182BB007A8CC9008697D3005E77
+ CD00000000000000000000000000000000000000000000000000000000004A64
+ BB000E41EC00D5DEFC00D4DDFC00A8ADBD00A8ADBD00A8ADBD00A7ACBD00A6AC
+ BD00A6ACBD00A6ABBD00A5AABD00A5AABD00C8D4FB00C7D3FB00E3E9FD005479
+ F1004A64BB000000000000000000000000000000000000000000384E99004F6F
+ DA000432CB000432CB000432CB000432CB000432CB000432CB000432CB000432
+ CB000432CB00384E9900000000005069C4003D5DC9003156D300466AE2000000
+ 000000000000000000000000000000000000000000003D54A200D6D9E200CED2
+ DF00CED2DF00CED2DF00CED2DF00CED2DF00CED2DF00CED2DF00A7B3DB007088
+ D7003D60D3002E53D2002E53D2002E53D2002E53D2002E53D2002E53D2002E53
+ D2002C52D2003257D3003D54A20000000000000000000000000000000000435B
+ AC006F89DF007892E8008FA6F10096ABF1008AA0EA007E95E200657ED0005972
+ C6004E68BC003751A5002B4498001F388C001C3792002D4AAC00506BC800435B
+ AC00000000000000000000000000000000000000000000000000000000004C66
+ BD002553EE00DDE4FC00DDE4FC00ACB0BE00ACB0BE00ACB0BE00ABB0BD00ABB0
+ BE00ABB0BE00A9AEBD00A9AEBD00A9AEBD00D1DBFB00D0DAFB00E7ECFD005E80
+ F2004C66BD000000000000000000000000000000000000000000455EB5004F74
+ EF0098ABEA005474DD005474DD00445EB400445EB4005474DD005474DD00435D
+ B100053AE900455EB50000000000516CC9008B9EDE00536FCE004B65BC000000
+ 000000000000000000000000000000000000000000004158A600DFE2EB00D8DC
+ E900DADEEA00DADEEA00DADEEA00DADEEA00DADEEA00DADEEA00DADEEA00D8DD
+ EA00B6C1E7005373DF004569DF004569DF004569DF004569DF004569DF004569
+ DF004468DF003A5FDC004158A600000000000000000000000000000000004A63
+ BA00708AE000859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE004361C4004A63
+ BA00000000000000000000000000000000000000000000000000000000004D67
+ BE00305CEE00E1E7FD00E0E6FC00DFE6FC00DEE5FC00DDE4FC00DCE3FC00DBE2
+ FC00DAE2FC00D8E0FC00D8E0FC00D7DFFC00D6DFFC00D5DEFC00E9EEFD006485
+ F3004D67BE0000000000000000000000000000000000000000004761B8005176
+ F1009AADEC005575DE005575DE00455FB400455FB4005575DE005575DE00455F
+ B300073CEB004761B80000000000526DC9004D6BCE004366D9005577E8000000
+ 00000000000000000000000000000000000000000000435BAB00E3E6EF00DCE0
+ ED00E0E4EF00E0E4EF00E0E4EF00E0E4EF00E0E4EF00E0E4EF00E0E4EF00E0E4
+ EF00DDE1EF008CA1E8005F7EE4005173E3005173E3005173E3005173E3005173
+ E3004F71E3004267E000435BAB00000000000000000000000000000000004C66
+ BD00718BDF00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE004461C4004C66
+ BD00000000000000000000000000000000000000000000000000000000004E68
+ BF003C65EF00E4E9FD00E4E9FD00B0B3BE00B0B3BE00AFB3BE00AFB3BE00AFB3
+ BF00AEB2BE00ADB1BE00ADB1BE00ACB0BE00DAE2FC00D9E1FC00EBF0FD006989
+ F3004E68BF0000000000000000000000000000000000000000004A63BA00567A
+ F200A0B1EC00A0B1EC00A0B1EC00A0B1EC00A0B1EC00A0B1EC00A0B1EC0094A2
+ D2001546EC004A63BA00000000004D67BE0099AEF6007995F4005971C3000000
+ 00000000000000000000000000000000000000000000475EB400E6E9F200E2E6
+ F200E5E8F300E5E8F300E5E8F300E5E8F300E5E8F300E5E8F300E5E8F300E5E8
+ F300E5E8F300C3CDF00095A9EC006A87E9005C7CE8005C7CE8005C7CE8005C7C
+ E800597AE8005375E700475EB400000000000000000000000000000000004D67
+ BE00718BDF00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE004260C5004D67
+ BE0000000000000000000000000000000000000000000000000000000000516A
+ C1005378F100EAEFFD00EAEFFD00B4B7BE00B3B6BE00B3B6BE00B2B5BE00B2B5
+ BE00B2B5BE00B2B5BF00B2B5BF00B0B3BE00E2E8FD00E1E7FD00EFF3FE007491
+ F400516AC10000000000000000000000000000000000000000004E67BE006283
+ F2009FABD3006174B5006174B5006174B5006174B5006174B5006174B5005F73
+ B500325EEF004E67BE0000000000556FCC005B76CE005573D9006382EA000000
+ 000000000000000000000000000000000000000000007790E100A7B3DC00EBEE
+ F900EDF0FA00EDF0FA00EDF0FA00EDF0FA00EDF0FA00EDF0FA00EDF0FA00EDF0
+ FA00EDF0FA00EDF0FA00EBEFFA00D0D9F8007E99F1007390F0007390F0007390
+ F0006988EF006E8CF0007790E100000000000000000000000000000000006680
+ DA0096A7E4009EB0EB00A6B7F000A8B8F000A4B4EC00A0B0E80096A6DE0093A2
+ D9008E9ED4008595CA008191C4007D8DC0007C8CC3008294CE00899BD8006680
+ DA0000000000000000000000000000000000000000000000000000000000526B
+ C2005F81F200ECF0FE00ECF0FE00EBF0FD00EBF0FD00EAEFFD00E9EEFD00E8ED
+ FD00E7ECFD00E6ECFD00E6ECFD00E6EBFD00E5EAFD00E4E9FD00F1F4FE007995
+ F400526BC20000000000000000000000000000000000000000005069C1006787
+ F300B2C0ED008399E2008399E2006B7CB7006B7CB7008399E2008399E2006779
+ B4004068F0005069C10000000000506AC100A5B8F70088A2F6005F76C6000000
+ 00000000000000000000000000000000000000000000BFCDF6006C81CA00F1F4
+ FD00F1F4FD00F1F4FD00F1F4FD00F1F4FD00F1F4FD00F1F4FD00F1F4FD00F1F4
+ FD00F1F4FD00F1F4FD00F1F4FD00EFF2FD00AFBFF8008AA3F500819BF5007E99
+ F500718FF4007E98F100CED8F70000000000000000000000000000000000D3DB
+ F900516AC100516AC100516AC100516AC100516AC100516AC100516AC100516A
+ C100516AC100516AC100516AC100516AC100516AC100516AC100516AC100D3DB
+ F90000000000000000000000000000000000000000000000000000000000536C
+ C4006B8AF300EFF3FE00EFF3FE00EEF2FE00EDF1FE00EDF1FE00ECF0FE00EBF0
+ FD00EBF0FD00EAEFFD00E9EEFD00E8EDFD00E7ECFD00E7ECFD00F3F6FE007E99
+ F500536CC4000000000000000000000000000000000000000000526CC3006B8A
+ F300B8C5EE0090A3E40091A4E4007585B9007585B90091A4E40090A3E4006E7E
+ B5004A70F000526CC300000000005671CD009EADDF007086D000516BC2000000
+ 00000000000000000000000000000000000000000000000000005975D100CAD1
+ ED00F2F5FE00F3F6FE00F3F6FE00F3F6FE00F3F6FE00F3F6FE00F3F6FE00F3F6
+ FE00F3F6FE00F3F6FE00F3F6FE00F3F6FE00DAE2FC00B6C6F90095ACF700829C
+ F500809BF500768DDD0000000000000000000000000000000000000000006882
+ DB0094A6E40094A8EC009EB1F300A1B4F3009CAEED0098AAE8008EA0DC008A9B
+ D6008697D0007C8CC3007787BC007282B6007182BB007A8CCB008899D8006882
+ DB0000000000000000000000000000000000000000000000000000000000556F
+ C600819BF500F2F5FE00F2F5FE00DADDE500D9DCE400D9DCE400D8DBE400D8DB
+ E400D8DBE400D7DAE400D7DAE400D6D9E400E0E4F000EDF1FE00F6F8FE0087A1
+ F500556FC60000000000000000000000000000000000000000005670C7006A8A
+ F3005A7DF2006586F3006B8AF3006F8DF3006F8DF3006D8CF3006586F300597C
+ F200476EF0005670C70000000000546DC400B1C1F80098AEF700647BCA000000
+ 000000000000000000000000000000000000000000000000000000000000607A
+ D700F4F6FD00F4F7FE00F5F7FE00F5F7FE00F5F7FE00F5F7FE00F5F7FE00F5F7
+ FE00F5F7FE00F5F7FE00F5F7FE00F5F7FE00F5F7FE00F4F7FE00E0E6FC009FB2
+ F500758AD500607AD7000000000000000000000000000000000000000000546E
+ C5006A84DE00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE004260C500546E
+ C500000000000000000000000000000000000000000000000000000000005670
+ C70088A2F600F3F6FE00E9ECF3008E8C8D008986860089868600898686008986
+ 860089868600898686008986860089868600BABBC100E5E8F300F7F9FE008BA4
+ F6005670C70000000000000000000000000000000000000000005871C8006C8A
+ ED00809AEF00859EF000889FF00089A1F00089A1F00089A1F000849DF0007F99
+ EF007A95EE005871C800000000005973CF00A8B5E0007F92D200556EC5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D6DCF200F4F7FE00F5F7FE00F6F8FE00F6F8FE00F6F8FE00F6F8FE00F6F8
+ FE00F6F8FE00F6F8FE00F6F8FE00F6F8FE00F6F8FE00F6F8FE00F3F6FE00ACBA
+ E800546FCA00000000000000000000000000000000000000000000000000556F
+ C6006D88DF00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE004562C500556F
+ C600000000000000000000000000000000000000000000000000000000005771
+ C8008DA5F600F5F7FE00E1E3EA00EEEEEF00FDFDFD00FDFDFD00FDFDFD00FDFD
+ FD00FDFDFD00FDFDFD00FDFDFD00FDFDFD00A09FA100DFE2EA00F8FAFE008CA5
+ F6005771C80000000000000000000000000000000000000000005B76D2005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005B76D200000000005974CF007C8FD1007A91DC007D97EE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005C74C900D8DDF200F4F6FD00F6F8FE00F7F9FE00F8FAFE00F8FAFE00F8FA
+ FE00F8FAFE00F8FAFE00F8FAFE00F8FAFE00F6F8FE00F5F7FE00F4F6FD005B74
+ C900BFCDF6000000000000000000000000000000000000000000000000005670
+ C7006D88DF00859CEA0097ACF2009AAEF1008DA3EB008198E3006880D1005C75
+ C7005069BC003851A5002C45990020398C001E399300324EAE004663C5005670
+ C70000000000000000000000000000000000000000000000000000000000728C
+ E20093A8F0009BAFF20099ABE900B3B2B400B5B3B200ABA9A700ABA9A700ABA9
+ A700ABA9A700ABA9A700ABA9A700B5B3B200919BBB0099ABE9009AAEF200748A
+ D8006B85DE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000B0C0F9009BB0F7005871C8005871C8005871
+ C8005871C8005871C8005871C8005871C800B3C3F900A6B9F8005871C8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000627DD900CDD4EF00F4F6FD00F6F8FE00F5F7FE00F5F7
+ FE00F5F7FE00F5F7FE00F6F8FE00F5F7FE00CDD4EF007E91D300627DD9000000
+ 0000000000000000000000000000000000000000000000000000000000005872
+ C9006F89DF007993E70090A6F10098ADF1008CA2EB007F96E200667FD0005A73
+ C6004F68BC003751A5002B44980020398C001D3892002F4CAD00556FC9005872
+ C900000000000000000000000000000000000000000000000000000000000000
+ 00005872C9005872C9005872C900A1A1A700EDECED00F4F4F300E8E8E700E8E8
+ E700E8E8E700EBEBEA00F4F4F300EDECED006277BF005872C9005872C9006B85
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000ABBCF400B9C7F600ACBBF000A5B6EF00A5B6
+ EF00A5B6EE00A5B6EF00A5B6EF00A7B6EF00BAC9FA00A4B7F8007E97E8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D5007489D100AFBBE500F3F6FD00F3F6
+ FD00F3F6FD00F3F6FD00D5DCF200AFBBE5005E79D500AFBFF300000000000000
+ 0000000000000000000000000000000000000000000000000000000000006B85
+ DE0096A7E5009DAFEB00A6B7F000A9B9F100A5B5ED00A1B1E80098A8E00094A3
+ DA00909FD5008696CB008191C5007E8EC1007E8EC5008494CF008A9CDA006B85
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000B1B1B1009C999800ABABAA00EDECEC00E4E3
+ E300E4E3E300D8D7D600ABABAA00959391000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C900ABBCF400ABBCF4005872C9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CED8F8007C93E5005771C9005871
+ C8005871C8005771C9005E79D6007C93E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009F9E9D009F9C
+ 9B009F9C9B000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000DCDCDC00DADADA0098A8DC006075BD00455BA3003B4C8B003A4B
+ 8900394B88003849850042579C005C71B700C8C8C800D2D2D200DADADA000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000009BAFEC004B61AF007787C000A0ABD400BAC5EA00B5C1
+ E700B1BDE500ACB9E20092A0CF006E7EB600465EB000A3B4EC00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000859AE000344991003F51
+ 90003F5190003F5190003F5190003F5190003F5190003F5190003F5190003F51
+ 90003F5190003F5190003F5190003F5190003F5190003F5190003F5190003F51
+ 90003F51900030468E0000000000000000000000000000000000000000000000
+ 0000465FB40095A1CD00DCE1F100BBC8F100AABAEE00A7B7ED009CAEE90094A7
+ E8008CA1E500889DE4007991E0006882DC00C8D3F800CED7F500929EC90096A9
+ E800000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000AFBEED004C5D9500364E9D00364E9D00364E9D00364E
+ 9D00364E9D00A3B2E50000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004D64B6002A3B78002A3B
+ 7800344B960000000000344B96002A3B78002A3B78002A3B78002A3B78002A3B
+ 78002A3B78002A3B78002A3B78002A3B78002A3B7800344B9600000000002A3B
+ 78002A3B78002A3B7800000000000000000000000000344A96005C72BF00506E
+ D300506ED300506ED300506ED300506ED300506ED300506ED300506ED300506E
+ D300506ED300506ED300506ED300506ED300506ED300506ED300506ED300506E
+ D300506ED3005C72BF0000000000000000000000000000000000000000008EA2
+ E800C5CAE000E9EDFA00D7DEF500C4CEF100BBC7EF00ADBCEC0092A5E500889D
+ E2007D94DF008096E0008096E0009CAEE900AFBFF400BAC8F600E3E8FA003E51
+ 9400859AE1000000000000000000000000000000000000000000000000000000
+ 000000000000B9C8F20040529200324FB0000C2FA10003279F0003279F000327
+ 9F002947AD00788DD80000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006E7CAC00ACB6DC00A8B5
+ E0002D3F7F00000000002D3F7F00A5B3E100A4B2E000A4B2E000A4B2E000A3B1
+ E000A3B1E000A3B1E000A2B0DF00A2B0E000A2B0E0002D3F7F0000000000A1B0
+ E000A0AFDF00A5B1DA005067BA000000000000000000364C9700506FD8000431
+ C8000431C8000431C8000431C8000431C8000431C8000431C8000431C8000431
+ C8000431C8000431C8000431C8000431C8000431C8000431C8000431C8000431
+ C8000431C800506FD800000000000000000000000000000000009DAFED004860
+ B200F2F4F900E2E7F500DBE0F400C4CEEE00B5C1EA00ADBBE9009FAFE50095A7
+ E2008C9FE000879BDE007B91DC00ADBDF000BBC9F600D3DCF900D4DCF900B9C1
+ DE003D50940096A9E80000000000000000000000000000000000000000000000
+ 0000BAC7F300425496004C60A8000C31A9000429A6000429A6000429A6000429
+ A600193CAE004C61B00000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000ACBAE800899DDF00A7B6
+ E700546CC10000000000546CC100A5B4E600869ADE00869ADE008499DD008499
+ DD008499DD008398DD008398DD008297DD006C7BAF00546CC100000000006B7A
+ AF00A0B0E5007F94DC0033478D0000000000000000003F57A7005072E4000535
+ D9000535D9000535D9000535D9000535D9000430C3000430C2000430C2000430
+ C2000430C2000430C2000430C2000430C3000535D9000535D9000535D9000535
+ D9000535D9005072E400000000000000000000000000506BC80098A5CF00ECEF
+ FA00F0F1F600F0F1F400E5E8F100D2D8EC00C4CCE800B8C2E500A2B0DF0099A9
+ DD0090A1DA00899BD900B4C2EE00C1CDF500DCE3F900D7DFF900BFCAED00A6B5
+ E600C8D1F0008492C2000000000000000000000000000000000000000000BAC9
+ F3005066B3003153C3000D34B9000A32B9000A32B9000A32B9000A32B9000A32
+ B9000A32B9004E61A200889DE300000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000AFBDEC008DA1E300AEBC
+ EC00000000000000000000000000B0BEEA008A9FE3008A9FE300889DE200889D
+ E200879CE200879CE300869BE200869BE2005667A60000000000000000005869
+ A700AAB8E8008399E200374B95000000000000000000435CAF005074EA000638
+ E1000638E1000638E1000638E1000E3EE2003C60D6000533CA000533CA000533
+ CA000533CA000533CA000533CA003C60D6000638E1000638E1000638E1000638
+ E1000638E1005074EA000000000000000000000000005B71B900DEE3F200DAE0
+ F600E6E9F400EAECF000EBECF000D5DAE900CAD0E600C6CDE700C0C9E700B8C2
+ E400B2BDE300AAB7E300CED7F600C6D1F500DDE3F900C1CBEC00AAB8E400A9B8
+ E8007B91DA0097A7D90099ABEA00000000000000000000000000BCCAF400455A
+ A500395BCC00163EC400133BC300133BC300133BC300133BC300133BC300133B
+ C300133BC3004E66B700556DC200000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B2C0F00094A8EA00B0BF
+ EF005B74CA00000000005B74CA00AFBEEF0090A4E80090A4E8008FA4E8008FA4
+ E8008FA4E8008EA3E8008CA1E7008CA1E7007381BA005B74CA00000000007483
+ BB00AABAED00899FE7003A509C0000000000000000004760B700567AF0001445
+ E9001445E9001445E9001445E9001B4AEA008199E900889EE900889EE900889E
+ E900889EE900889EE900889EE9008199E9001445E9001445E9001445E9001445
+ E9001445E900567AF000000000000000000000000000AFBADD00D5DDF700CAD3
+ F200D7DCEF00E0E4EF00E6E8EC00DDE0E900D9DDEA00C1C9E600627CD0005B75
+ CC005771CA008FA1DC00D3DBF700E2E7F900C4CDED00B3BFE600B3BFE7007288
+ D300516DCC007E93D8004C64B500000000000000000000000000445CA9006E82
+ C7001E46CD001C45CD001C45CD001C45CD00274DCE006B86DE001E46CD001C45
+ CD001C45CD00516DCE004A5FA700000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BCCAF600A2B4F200A2B4
+ F200BBC9F600BCC9F500BAC8F6009FB2F2009FB2F2009FB2F2009EB1F2009DB0
+ F2009DB0F2009CB0F2009CB0F2009BAFF100AABBF400B7C6F600B8C6F600A7B8
+ F30099ADF10099ADF1004259AD0000000000000000004C65BC006586F300335E
+ EF00345FEF00345FEF00345FEF00345FEF00345FEF00345FEF00345FEF00345F
+ EF00345FEF00345FEF00345FEF00345FEF00345FEF00345FEF00345FEF00345F
+ EF00335EEF006586F3000000000000000000758BDE00C6D1F500AABAEE00BCC8
+ EF00C4CDEB00C8CFE800CFD4E700ADB9E1006880CF00657FD300758CD900738A
+ D8006F87D6005B76CE004A66C4004C66BF00BCC5E4007A8DCC00697FC9005C76
+ CC007189D7005673D5006D7EBA007288D9000000000000000000000000004E67
+ BF00708BE700335ADE002D56DE00879DE7006679BE00475FB2006F89E6003159
+ DE002D56DE003F64E1005C75CF004B62B9000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BFCCF800A8BAF500A8BA
+ F500A7B9F500A7B9F500A6B8F500A5B7F500A5B7F500A5B7F500A5B7F500A4B6
+ F500A4B6F500A3B6F500A2B5F500A2B5F500A1B4F500A1B4F500A0B3F500A0B3
+ F5009FB3F5009FB3F500455EB40000000000000000004D67BE006C8BF300446B
+ F000456CF000456CF000456CF000456CF000456CF000456CF000446BF000446B
+ F000446BF000446BF000456CF000456CF000456CF000456CF000456CF000456C
+ F000446BF0006C8BF3000000000000000000516CC700B1C0F100A7B7ED00ADBC
+ EC00B8C3E800BBC5E500C9D0E6006880D0006780D4007B91DB006879B2005C6C
+ A7005B6BA5006E81C500637CCF004965C3008E9DCF008192CC006E83CB006B84
+ D5007089DA006A85DD008E9DD4004E67C0000000000000000000000000000000
+ 0000788CCD00738EEB006B89EC00596EBA00627BD400000000008093D6005779
+ E900365EE6003860E600597AE800576CB8000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C3D0FA00B0C0F900AFC0
+ F900AFC0F900AEBFF800AEBFF800ADBEF800ADBEF800ADBEF800ACBDF800ABBD
+ F800ABBDF800ABBDF800AABCF800AABCF800AABCF800A9BBF800A9BBF800A8BA
+ F800A7B9F800A7B9F8004962BA0000000000000000004F69C0007391F4005378
+ F1005479F1005479F1005479F100829CF300819BEF007E98EE007E98EE007D97
+ EE007D97EE007E98EE007E98EE00819BEF00718FF4005479F1005479F1005479
+ F1005378F1007491F4000000000000000000435CB0009BADEC00A2B2EB00A0B0
+ E900ABB9E500AFBBE300C5CDE7005E78CE007088D9007E90CE007189D800E0E6
+ F900000000005668A2006D81C5005B76CE007085CC0098A7D9007B8FD3007990
+ DB00728BDD007B93E200A4B3E4004159A9000000000000000000000000000000
+ 00004D67C200798DD1008499DC0090A4EA0000000000000000005A71BF0089A0
+ EC004A6FEE003E66ED005276EE006079D3000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CBD6FB00BBCAFA00BBCA
+ FA004068F0004068F0004068F0004068F0004068F0004068F000B8C7F9004068
+ F0004068F0004068F0004068F0004068F0004068F000B5C5F900B5C5F900B4C4
+ F900B4C4F900B4C4F9004C65BC000000000000000000536DC400809BF500708E
+ F4007592F4007A96F40096ACF4002750D900053AEB00053AEB007B97F4007A96
+ F4007A96F4007995F4007894F4007894F400667DCB0097ACF4007D98F5007592
+ F400708EF400809BF5000000000000000000445CAF008098E60092A6E800849A
+ E20094A5DF0099A9DD00B9C3E4005873D000758BD6005E6EA900000000000000
+ 000000000000E0E6F9005C6CA7007088D6005873CB00B1BDE3008FA0DA008DA0
+ E1007F96E1008CA1E600B2C0EC00445CAF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004F6A
+ C5008A9EE1004F74F1004F74F1006586F3005873CE0000000000000000000000
+ 00000000000000000000000000000000000000000000CED8FB00C1CEFA00C1CE
+ FA00496FF000496FF000496FF000496FF000496FF000496FF000BECCFA00BECC
+ FA00BDCBFA00BCCAFA00BCCAFA00BCCAFA00BCCAFA00BBCAFA00BBCAFA00BAC9
+ FA00BAC9FA00B9C8F9004D67BE000000000000000000556EC500839EF5007A96
+ F400859FF50099AFF700889ADE000D40EC000D40EC000D40EC00A2B6F800A1B5
+ F7007D98F5007C97F4007B97F4007B97F400536FD000889BDE0098AEF700859F
+ F5007A96F400839EF5000000000000000000445CAE007690E400899EE5007C93
+ DF008A9DDD008FA0DA00B1BDE3005470CE007289D4005D6EA800000000000000
+ 000000000000000000005F6EA900738AD8005C76CD00B7C1E40099A9DE0096A8
+ E300879CE30095A8E900B7C4ED00455EB1000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AEBE
+ F2005E75C4006686F300577BF2005D80F2005A72C200AEBEF200000000000000
+ 00000000000000000000000000000000000000000000D1DBFB00C6D2FA00C6D2
+ FA005176F1005176F1005176F1005176F1005176F1005176F100C4D1FA005176
+ F1005176F1005176F1005176F1005176F1005176F1005176F1005176F1005176
+ F100C0CEFA00BFCDFA004E68BF0000000000000000005770C700819BF5007491
+ F4008FA7F6009DAFF0006078CB002553EE002553EE002553EE00B1C1F900B0C0
+ F9002553EE002553EE002553EE002553EE002C58E9006078CB009EB0F000839E
+ F5007592F400839DF3000000000000000000445CAD006E88E2008198E300718A
+ DD007F94DA008497D800A8B5E0004F6BCA006B83D4006677B000000000000000
+ 000000000000738ADA006B7BB400758CD900627CD000C0C9E700A4B2E1009FAF
+ E60092A5E6009EB0EB00BBC7EF00465FB3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006F89DF008DA5F4006686F3006082F2006C85D900546FCB00000000000000
+ 00000000000000000000000000000000000000000000D8E0FC00D1DBFB00D1DB
+ FB006384F3006384F3006384F3006384F3006384F3006384F300CED8FB006384
+ F3006384F3006384F3006384F3006384F3006384F3006384F3006384F3006384
+ F300CBD6FB00CAD5FB00516BC200000000000000000093A8ED005872CA005872
+ C9005872C9005A78DB00567AF200567AF200567AF200567AF200CBD6FB00CAD5
+ FB00567AF200567AF200567AF200567AF200567AF200567AF2005A78DB005872
+ C9005872C9005872CA000000000000000000516BC3007E95E3006580DB006B84
+ D8007086D1006B81C9007F91CC005872C6004A66C400637CCE006878B0005F70
+ AA006070AB008091CF007B91DB00647ED300C2CAE700C6CDE700B9C3E600AEBC
+ EA00AEBDED00A8B8EF00A7B4E0005471CC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000576FC600A0AFE7008BA4F6007D98F5007F95E300536DC6000000
+ 00000000000000000000000000000000000000000000DBE2FC00D6DFFC00D6DF
+ FC006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF300D3DCFB00D3DC
+ FB00D3DCFB00D2DBFB00D2DBFB00D2DBFB00D1DBFB00D1DBFB00D1DBFB00D0DA
+ FB00D0DAFB00CFD9FB00526CC30000000000000000000000000000000000556E
+ C500C0CEFA006F8DF3006F8DF3006F8DF3006F8DF3006F8DF300D6DFFC00D5DE
+ FC006F8DF3006F8DF3006F8DF3006F8DF3006F8DF3006F8DF3006F8DF300C3D0
+ FA00556EC500000000000000000000000000748CDB008FA3E500506ED4006C84
+ D5006980CB006B81CB0092A2D600B1BDE4004D68C0004A66C4006B83D4007088
+ D600748BD8007088D9006780D4006880CF00DADEEB00CBD1E700C5CDE900B7C3
+ EC00BDC9F100AABAEF008494CE007790E1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000009FB1EF00637AC800A4B4ED007A96F40086A0F500758AD5000000
+ 00000000000000000000000000000000000000000000DEE5FC00DAE2FC00DAE2
+ FC007592F4007592F4007592F4007592F4007592F4007592F400D8E0FC007592
+ F4007592F4007592F4007592F4007592F4007592F4007592F4007592F4007592
+ F400D5DEFC00D4DDFC00546DC400000000000000000000000000000000005770
+ C700DCE3FC00DFE6FC00E0E6FC00E1E7FD00E0E6FC00E0E6FC00DFE6FC00DFE6
+ FC00DFE6FC00DEE5FC00DEE5FC00DEE5FC00DCE3FC00DCE3FC00D9E1FC00D7DF
+ F9005770C700000000000000000000000000BDCBF40097A7DD005772CE00617B
+ CF006B82CF00A3B1E000B1BDE500E3E8F800C5CEEE005D76CA004F6BCA00536F
+ CD005873D0005E78CF00667FD000ADB9E100DEE1EA00D6DBEA00D2D8ED00C6D0
+ F000C4CFF200BDCAF3005D74C100BFCDF6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000092A7EC006A7FCB0092A9F60086A0F5008BA3F100849B
+ E8000000000000000000000000000000000000000000E6EBFD00E2E8FD00E2E8
+ FD00E2E8FD00E2E8FD00E2E8FD00E1E7FD00E1E7FD00E1E7FD00E1E7FD00E0E6
+ FC00E0E6FC00E0E6FC00E0E6FC00DFE6FC00DFE6FC00DFE6FC00DEE5FC00DEE5
+ FC00DEE5FC00DBE2FC005770C7000000000000000000000000000000000093A8
+ ED005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ CA0093A8ED0000000000000000000000000000000000566AAC009EADDE00A0B0
+ E500AEBCE800AAB8E600D2DAF500D5DDF800C3CFF500C4CFF200B1BDE400B1BD
+ E300BAC4E500C6CEE800C9D0E700D0D5E800E8EAEE00EDEEF200E6E9F200DDE2
+ F600D9E0F700DFE4F500AABBF100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000778BD200ABBBEF009DB2F7008298
+ E0005871C900C1CDF600000000000000000000000000E7ECFB00E5EAFD00E4E9
+ FD00E5EAFD00E6EBFD00E5EAFD00E5EAFD00E5EAFD00E5EAFD00E4E9FD00E4E9
+ FD00E4E9FD00E3E9FD00E3E9FD00E3E9FD00E3E9FD00E2E8FD00E2E8FD00E1E7
+ FD00DFE6FC00DEE5FC005871C800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004F69BE0093A0CC00C5CF
+ F000B0BEEA00D0D8F500D6DEF900C1CDF500C0CCF500A2B2E7008FA0DB008FA0
+ DA0099A9DD00B0BCE400BCC6E600C8CFE900E2E6F100ECEEF200F2F3F600E4E9
+ F700EAEEFB00A1AFDA0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000007C93E500687FCD00ADBCED008DA5
+ F600788EDA005874CD000000000000000000000000009FAFE100E7ECFB00E8ED
+ FB00E8EDFB00E8EDFB00E8EDFB00E7ECFB00E7ECFB00E7ECFB00E7ECFB00E7EC
+ FB00E7ECFB00E6EBFB00E6EBFB00E6EBFB00E6EBFB00E5EAFB00E5EAFB00E5EA
+ FB00E4EAFB00E3E8FB006B85DE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D1DAF8004C62AA00B4BE
+ DE00C5D0F400D7DFF900D8DFF900BAC8F500BDCAF4008599DC00899CDD00899C
+ DD0094A5DF00ADBBE700BAC5EA00C6CFED00D9DEF100E8EBF600F2F3F800F4F6
+ FB00CED3E9005972C70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000093A8ED005C75CC00A5B7
+ F5008EA6F400778DD70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000889D
+ E400CAD0E800DDE3F900B3C3F500BBC9F600879CE3007C93DF00778FDF007C93
+ E000869BE300A0B1EA00AEBDED00BECAF100CCD5F400DCE2F800ECF0FB005C74
+ C70092A7EC000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AFBF
+ F3006B85DE005A74CF005B76D200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004A61AA0094A2D100D0D9F7009CAEED00637FDC00748DE100849AE500899E
+ E60093A7E900A3B4ED00A8B8EF00AABAEF00D6DEF800E2E7F600A4B1DC009FB1
+ F000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D1DAF800526AC0006175B500AEBCEB009CAEEA008BA0E7006E89E3007690
+ E4008199E8009CAFEE00B3C2F300C7D2F600B7C2E6006E83CC005D78D5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000BFCCF500778DDF005771CA005068BA005169
+ BC00526BBE00546DC1005C77D2007A92E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C4C4C400B9B9B9004558
+ 9700253159002531590025315900253159002531590025315900253159002531
+ 5900253159002531590025315900253159002531590025315900253159004558
+ 9700BDBDBD00DADADA0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000DCDCDC00DADADA00C7C7C7007486C4004659970028345F002835
+ 5F0028355F0028345F002F3F770046599700C8C8C800D2D2D200DADADA000000
+ 00000000000000000000000000000000000000000000A6A4A400E2E2E200E2E2
+ E200E2E2E200E2E2E200E2E2E200E2E2E200E2E2E200E2E2E200E2E2E200E2E2
+ E200E2E2E200E2E2E200E2E2E200E2E2E200A6A4A400B6B5B500A09E9E000000
+ 00000000000000000000000000000000000000000000000000002C3B75004B62
+ AC0003279D0003279D0003279D0003279D0003279D0003279D0003279D000327
+ 9D0003279D0003279D0003279D0003279D0003279D0003279D0003279D004B62
+ AC002C3B75000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000CED7F7003C54A200475B9D00455FB6003754B6001739AA001336
+ A9001336A9001739AA002343AF003754B600475B9D00384881003C54A2000000
+ 00000000000000000000000000000000000000000000A7A6A500E2E2E200D6D6
+ D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6
+ D600D6D6D600D6D6D600D6D6D600D6D6D600A7A6A500D8D8D800B7B6B600D5D5
+ D5000000000000000000000000000000000000000000000000002B3D7900435E
+ BB00546393005A6792005A6792000328A300546393005A679200546393000328
+ A300546393005A679200546393000328A3005A6792005A67920054639300435E
+ BB002B3D790000000000000000000000000000000000B1BCE500465792003441
+ 6E00333F6800333F6800333F6800333F6800333F6800333F6800333F6800333F
+ 6800333F6800333F6800333F6800333F6800333F6800333F6800333F6800333F
+ 680034416E00485C9B0000000000000000000000000000000000000000000000
+ 0000BAC6F2002D418600445796003352B8001337AE000429A8000429A8000429
+ A8000B30AB000429A8000429A8000429A8003352B8004761B70044579600BAC6
+ F2000000000000000000000000000000000000000000A8A7A600E2E2E200D6D6
+ D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6
+ D600D6D6D600D6D6D600D6D6D600D6D6D600A8A7A600ECECEC00D8D8D800A1A1
+ A000D5D5D50000000000000000000000000000000000000000002D407F00435F
+ BF008190C2008194D4008194D400092EAC008190C2008194D4008392C300042A
+ AA007080B8008194D4007080B800092EAC008194D4008194D4008392C300435F
+ BF002D407F00000000000000000000000000000000002D3F7F0043548D004B60
+ A8004A60A9004A60A9004A60A9004A60A9004A60A9004A60A9004A60A900495F
+ A700465BA000425698004256980042569800465BA000495FA7004A60A9004A60
+ A9004B60A80044559000DBE2F800000000000000000000000000000000000000
+ 000032468C004C61A700405DBE00042BAD00042BAD002245B700617ACC00677F
+ CD006B81CB00617ACC004360C1002245B700042BAD001B3FB600405DBE003246
+ 8C00BAC6F20000000000000000000000000000000000AEACAB00E6E6E600DCDC
+ DC00DCDCDC00DCDCDC00DCDCDC00718BE400DCDCDC00DCDCDC00DCDCDC00718B
+ E400DCDCDC00DCDCDC00DCDCDC00718BE400AEACAB00EFEEEE00ECECEC00CDCD
+ CD00B6B5B400A3A1A1000000000000000000000000000000000032478A004261
+ C800042DB600042DB600042DB600042DB600042DB600042DB600042DB600042D
+ B6008196DA008196DA008196DA00042DB600042DB600042DB600042DB6004261
+ C80032478A00000000000000000000000000000000003E58B5001544DF000537
+ E0001229760026387700042AAB00042AAB00042AAB00042AAB00182F7F004142
+ 4A0079777700ADACAC00ADACAC00ADACAC007977770041424A00182F7F00042A
+ AB00042AAB001B3EB4003F51920000000000000000000000000000000000455C
+ AE004160C6001037BB00042DB7002F52C4005069BA003D509100859AE100A8B7
+ ED00C1CCF200859AE1004B61B1003D5091006981D0002E51C300042DB7004160
+ C600495DA200455CAE00000000000000000000000000B3B1B100ECECEC00E4E4
+ E400E4E4E400E4E4E400E4E4E400758FE800E4E4E400E4E4E400E4E4E400758F
+ E800E4E4E400E4E4E400E4E4E400758FE800BCBBBA00B3B1B100B3B1B100B3B1
+ B100B3B1B100B3B1B10000000000000000000000000000000000354890004262
+ CD0055659D005A699B005A699B00042FBD0055659D005A699B0055659D00042F
+ BD008196DE008196DE008196DE00042FBD005A699B005A699B0055659D004262
+ CD0035489000000000000000000000000000000000003555BE000839DD000537
+ E000032187002A3B7500042CB200042CB200042CB200042AAA004D4B4C009493
+ 92009492920043414200454344004341420094929200949392004D4B4C004C66
+ C0004B67C7001439B70041548F00000000000000000000000000869BE1004255
+ 96001C42C300042FBD00042FBD001038C0004161CA004D62A700BCC8F3000000
+ 0000000000000000000000000000B4C2F0005264A2006B83D100294EC6001C42
+ C3004966C70042559600000000000000000000000000B8B6B600F1F1F100EBEB
+ EB007892EB007892EB007892EB007892EB007892EB007892EB007892EB007892
+ EB007892EB007892EB007892EB007892EB007B95EE007B95EE007B95EE00F1F1
+ F100F1F1F100B8B6B60000000000000000000000000000000000384D96004364
+ D3008192CB008197E1008197E1000934C5008192CB008197E1008494CD000934
+ C50090A3E5008197E10092A5E5000934C5008197E1008197E1008494CD004364
+ D300384D9600000000000000000000000000000000003555BE000537DE000537
+ E000032187002C3C7600042DB700042DB700042DB600072AA0008F8E8D008483
+ 82004342450024283900202537001E23360041404400848382008F8E8D004760
+ B2004F6BCA00143BBC00455794000000000000000000000000003C54A3004F66
+ B5000934C300153EC6004162D1000934C300143DC6004363CF00384E9B00BCC8
+ F300000000000000000000000000000000005671C4005466A700647ED5000833
+ C3003558CE004E66B600000000000000000000000000C0BEBD00F9F9F900F6F6
+ F600F6F6F600F6F6F600F6F6F6007E98F100F6F6F600F6F6F600F6F6F6007E98
+ F100F6F6F600F6F6F600F6F6F6007E98F100F6F6F600F6F6F600F6F6F600F6F6
+ F600F9F9F900C0BEBD00000000000000000000000000000000003C54A1004266
+ DC000433D0000433D0000433D0000433D0000433D0000433D0000433D0000433
+ D0000433D0000433D0000433D0000433D0000433D0000433D0000433D0004266
+ DC003C54A100000000000000000000000000000000003555BE000537DE000537
+ E000032187002F3F79000E38C6000E38C6000D34B500434757006D6B6B004242
+ 4900333540002D2F3C00292C3B00262A3800313648002C303D006D6B6B004347
+ 57000D34B5001B43C9004B5FA00000000000000000005B74CA005067B2004467
+ D9002E54D4006882D700465BA300617DDC00214AD2001842D0004A6AD700556A
+ B5003D53A40000000000000000000000000000000000B7C5F100465BA3002B52
+ D3001742D0004063D8006C83CF000000000000000000C2C1C000FBFBFB00F9F9
+ F9007F99F2007F99F2007F99F2004E73EF004E73EF004E73EF004E73EF004E73
+ EF007F99F2007F99F2007F99F2007F99F2007F99F2007F99F2007F99F200F9F9
+ F900FBFBFB00C2C1C000000000000000000000000000000000003F58A8004368
+ E1005669A8005B6CA5005B6CA5000535D8005669A8005B6CA5005669A8000535
+ D8005669A8005B6CA5005669A8000535D8005B6CA5005B6CA5005669A8004368
+ E1003F58A800000000000000000000000000000000003555BE000537DE000537
+ E0000321870030417A001B44CE001B44CE00193EBA004E4C4C004D4B4C004243
+ 4A00393B42003537400032333F002E313E0025293800222839004D4B4C004E4C
+ 4C00193EBA00264DD0004E62A40000000000000000004760B700556EC8003A5F
+ DB004266DD00657AC4004760B6006B7FC0006480E0002750D8002750D8004E6F
+ DC00566DB800BDCBF40000000000000000000000000000000000556DC1003F63
+ DB001F49D600365CDB004E66BA000000000000000000C5C3C300FDFDFD00FCFC
+ FC00FCFCFC00FCFCFC00FCFCFC004F74F00099AEF50099AEF50099AEF5004F74
+ F000FCFCFC00FCFCFC00FCFCFC00819BF400FCFCFC00FCFCFC00FCFCFC00FCFC
+ FC00FDFDFD00C5C3C30000000000000000000000000000000000425AAD004469
+ E6008295D600819AEE00819AEE000A3ADE008295D600819AEE008598D7000A3A
+ DE008295D600819AEE008598D7000A3ADE00819AEE00819AEE008598D7004469
+ E600425AAD00000000000000000000000000000000003555BE000537DE000537
+ E0000321870032427C002951D6002951D6002448C0004F4D4E004F4D4E004545
+ 4A006060650072737A0053555D00353741002B2F3D00272B3A004F4D4E005856
+ 56002448C0003056D7005166AA0000000000000000004058A8005775D900375D
+ DD005576E3005D71B7008CA1E6004059AC006D81C4006883E300254FDB002D55
+ DD004F70DF004159AC00BECCF5000000000000000000000000008CA1E6005374
+ E300254FDB00335ADD00445BA8000000000000000000C8C7C600FFFFFF00FFFF
+ FF00829CF500829CF500829CF5005075F1005075F1005075F1005075F1005075
+ F100829CF500829CF500829CF500829CF500829CF500829CF500829CF500FFFF
+ FF00FFFFFF00C8C7C600000000000000000000000000000000004862B9004A70
+ F0001C4CEC001C4CEC001C4CEC001C4CEC001C4CEC001C4CEC001C4CEC001C4C
+ EC001C4CEC001C4CEC001C4CEC001C4CEC001C4CEC001C4CEC001C4CEC004C71
+ F0004862B900000000000000000000000000000000003555BE000537DE000537
+ E0000321870035457F004368E4004368E4003E60D1004F526000686666004E4C
+ 4D00959495008C8C8E008283880044444A00373944003A3C4400686666004F52
+ 60003D5FD1004469E400586DB6000000000000000000455EB2006482E6004167
+ E7006180E7005168B600C6D1F50000000000BECCF500465FB6006E8BEB003A62
+ E700335CE5005577E8005D75C600465FB6000000000000000000C6D1F5005477
+ EA003D64E7003B62E700455EB2000000000000000000CAC8C700FEFEFE00FEFE
+ FE00FEFEFE00FEFEFE00FEFEFE00829CF500FEFEFE00FEFEFE00FEFEFE00829C
+ F500FEFEFE00FEFEFE00FEFEFE00829CF500FEFEFE00FEFEFE00FEFEFE00FEFE
+ FE00FEFEFE00CAC8C700000000000000000000000000000000004A64BB004E73
+ F1006777AC006777AC006777AC006777AC006777AC006777AC006777AC006777
+ AC006777AC006777AC006777AC006777AC006777AC006777AC006777AC005075
+ F1004A64BB00000000000000000000000000000000003555BE000537DE000537
+ E00003218700324176005275EB005275EB004D6FDE004F5C8B008F8D8D005452
+ 530071707000969496006F6E710049494E003A3B4300514F51008F8D8D004F5C
+ 8B004D6FDE004E72EA005C72BB0000000000000000004861B7006885E8004B70
+ ED005E7FEE00556CBC00AEBDF2000000000000000000BFCCF5007187D0006E8B
+ EE004067EB003F66EB005D7EEC00627ACB00BFCCF50000000000AEBDF2005A7C
+ EE003C64EB00446AEB004861B7000000000000000000C9C7C600FCFCFC00FBFB
+ FB00FBFBFB00FBFBFB00FBFBFB00809AF300FBFBFB00FBFBFB00FBFBFB00809A
+ F300FBFBFB00FBFBFB00FBFBFB00809AF300FBFBFB00FBFBFB00FBFBFB00FBFB
+ FB00FCFCFC00C9C7C600000000000000000000000000000000004B65BC005075
+ F10090A4E80099AFF70090A4E80090A4E80099AFF70090A4E80090A4E80099AF
+ F70090A4E80090A4E80099AFF70090A4E80090A4E80099AFF70090A4E8005479
+ F1004B65BC0000000000000000000000000000000000465EB2001743D5001844
+ D60019307D0039497A00809AF300657AC2006D84D1005D77D100908E8E007F7D
+ 7D00575555004F4D4D004D4B4D0047474A00545254007F7D7D00908E8E003E52
+ 94004158A5004059AC005F75C10000000000000000004B65BC006F8BEB005075
+ F0006384F2005B73C50090A4EB000000000000000000000000004B65BE00748C
+ DB007290F300426AEF00466DEF006081F0004B65BE00BFCDF50090A4EB006384
+ F200466DEF004D72F0004F68BC000000000000000000BDBBBA00E8E8E800DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00E8E8E800BDBBBA00000000000000000000000000000000004D67BE00587C
+ F2004C72F1004C72F1004C72F1004C72F1004C72F1004C72F1004C72F1004C72
+ F1004C72F1004C72F1004C72F1004C72F1004C72F1004C72F1004C72F1005E80
+ F2004D67BE00000000000000000000000000000000005E79D0006B86E2006179
+ CA005669AB005669AB007B97F4006279C4006B84D6007B97F4006879B2005959
+ 5F00757373008F8E8D008F8E8D008F8E8D007573730059595F006879B2005669
+ AB004D62AA004B62AE00617AD30000000000000000006580D9007087D2006A8A
+ F3005B7EF2006A87EA00536CC00000000000000000000000000000000000BFCD
+ F6005069C3007995F4005479F1005479F1006685F000667FD000536CC0006384
+ F300587CF2006686F300778FDE000000000000000000AEADAC00D2D2D200D2D2
+ D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2
+ D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2D200D2D2
+ D200D2D2D200AEADAC00000000000000000000000000000000004D67BF005B7E
+ F2004D5B8B005563930055639300556393005563930055639300556393005563
+ 9300556393005563930055639300556393005563930055639300556599006283
+ F2004D67BF0000000000000000000000000000000000627ACE007592F4003E4E
+ 8000343D5D006071AB0089A2F60089A2F60089A2F60089A2F600829AEA007A8E
+ D5006A7191005A585800646262005A5858006A7191007A8ED500829AEA00829C
+ F5006D8CF3006F8CF1008EA3E90000000000000000009FB0EF005B74C5007B96
+ F100567AF2006A8AF3006881D400000000000000000000000000000000000000
+ 0000BFCDF6007D93DE007E99F5005F81F2006485F3007592F2008197E2006686
+ F3006888F3007793F000B7C4F20000000000000000005263A1005F6FA8005F6F
+ A8005F6FA8005F6FA8005F6FA8005F6FA8005F6FA8005F6FA8005F6FA8005F6F
+ A8005F6FA8005F6FA8005F6FA8005F6FA8005F6FA8005F6FA8005F6FA8005F6F
+ A8005F6FA8005263A100000000000000000000000000000000004E68C0005F81
+ F2002C3B6C003242790032427900324279003242790032427900324279003242
+ 7900324279003242790032427900324279003242790039497E005B6894006787
+ F3004E68C000000000000000000000000000000000005C75CC00728ADD00404F
+ 8100404C72006575AC0091A8F60092A9F60092A9F60093AAF60097ADF70099AE
+ F30095A9EB008C9EDD008C9EDD008C9EDD0095A9EB0098ADF30094ABF600819B
+ F5007390F2006983D80000000000000000000000000000000000516CC8008196
+ DF005D80F2006283F2006C8AEF006681DA000000000000000000000000000000
+ 000000000000526BC4007E94DF00849EF5007C97F400809BF5008FA7F6007592
+ F4007D98F5007E94DF00000000000000000000000000556CBD005A79DF000536
+ D900042EBB00042BAE00042EBB000536D9000536D9000536D9000536D9000536
+ D9000536D9000536D9000536D9000536D900042EBB00042BAE00042EBB000536
+ D9005A79DF00556CBD0000000000000000000000000000000000506AC1006686
+ F30038446D003E4C7A003E4C7A003E4C7A003E4C7A003E4C7A003E4C7A003E4C
+ 7A007982A2005C688F00737D9E004A5782003E4C7A003E4C7A00646F9400708E
+ F400506AC1000000000000000000000000000000000000000000000000008DA2
+ E800536DC400536DC4004E66B8004B62B0004E66B800536DC400546DC0005870
+ BF007D8DC6008D9BC7008E9BC7008D9BC7007789C5004F69BE00556EC100637A
+ CE008DA2E8000000000000000000000000000000000000000000000000005D78
+ CF00819CF3006787F3006888F300718EEF006C85D6005770C40092A5EC00AEBE
+ F300C8D2F60092A5EC005671CE005A73C600A7B9F8009AAFF70095ACF7008FA6
+ F400788ED6005D78CF00000000000000000000000000566FC6006A89F200053A
+ EA005574DB006886EB005574DB00053AEA00053AEA00053AEA00053AEA00053A
+ EA00053AEA00053AEA00053AEA00053AEA004D6CD3006482E7004D6CD300053A
+ EA006A89F200566FC60000000000000000000000000000000000516BC2006A8A
+ F3003D486E0044517A0044517A0044517A0044517A0044517A0044517A004451
+ 7A009097B0007881A000848CA8007881A00044517A0044517A00687294007491
+ F400516BC2000000000000000000000000000000000000000000000000000000
+ 000000000000DAE1F900637BCE00556FC600637BCE00DAE1F9006C84D800607B
+ D9007D98F500AABCF800ADBEF800AABCF8007491F4005775D9006C84D8000000
+ 000000000000000000000000000000000000000000000000000000000000D3DB
+ F900859AE100859FF5006D8CF3007491F4007A96F4007892EC00647CCC006078
+ C8006078C800647CCC006D85D9007F99EC00A3B6F8009DB2F7008EA6F600899E
+ E200526CC500000000000000000000000000000000005771C8007794F4001C4C
+ ED0090A7F4007995F40090A7F4001E4EED001E4EED001E4EED001E4EED001E4E
+ ED001E4EED001E4EED001E4EED001E4EED0090A7F4007995F40090A7F4001C4C
+ ED007794F4005771C80000000000000000000000000000000000526CC3006D8C
+ F300434D6E00485378004A557B004A557B004A557B004A557B004A557B004A55
+ 7B004A557B004A557B004A557B004A557B004A557B004A557B006F7896007995
+ F400526CC3000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000A8B8F0005570
+ CB00466BE300CFD8F800CFD8F800CFD8F8004165E300546ECA00A8B8F0000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005871C800869AE2008AA3F4007995F4007A96F400819BF500829DF5007F9A
+ F5007F9AF500859FF50088A2F6008FA7F60099AFF70095ACF70099AEF5005871
+ C800BFCDF600000000000000000000000000000000005872C900889FEB0091A6
+ EC0097ABED0098ABED0098ABED0099ACED0099ACED0099ACED0099ACED0099AC
+ ED0099ACED0099ACED0099ACED0099ACED0099ACED0098ABED0097ABED0091A6
+ EC00889FEB005872C900000000000000000000000000000000005670C6007794
+ F400AABCF800ADBEF800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800ADBEF800A9BBF800829C
+ F500546EC5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D3DBF9006179D1008A9EE2009AAFF40099AFF70097ADF70097AD
+ F7009AAFF7009AAFF7009DB2F700A0B4F7008B9FE200687FCC005D78D5000000
+ 000000000000000000000000000000000000000000005B76D2005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005B76D200000000000000000000000000000000005A74C7008CA3
+ ED009BB0F700A6B9F800A9BBF800AABCF800AABCF800AABCF800AABCF800AABC
+ F800AABCF800AABCF800AABCF800AABCF800A9BBF800A5B8F80098AEF70092A7
+ EF005972C6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005772CD00637BCC007A8FD90092A8F00098AD
+ F0009AAEF10092A8F000879DE6007A8FD9005772CD0092A7ED00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000728BDF007289
+ D7009BAFF1009FB2F200A0B3F200A0B3F200A0B3F200A0B3F200A0B3F200A0B3
+ F200A0B3F200A0B3F200A0B3F200A0B3F200A0B3F2009EB1F2009AAEF1007389
+ D700728BDF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000009FB1F000728BE0005771C8005771
+ C8005771C8005771C8005A75D100728BE0000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003044890030448900000000000000000000000000000000000000
+ 0000000000003044890000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DBDBDB002E3F79002632
+ 5B0026325B0026325B0026325B0026325B0026325B0026325B0026325B002632
+ 5B0026325B0026325B002E3E7700C5C5C500C5C5C500C5C5C500C7C7C7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000263569004F5E9400000000000000000000000000000000000000
+ 0000536BBA002635690000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000027366E004F65
+ AE004F64AC00485B9B004F64AC004F64AC00485B9B004F64AC004F64AC00485B
+ 9B004F64AC004F64AC002736680026335C0026335B0026335B0026335B002632
+ 5D002E3F7900CBCBCB0000000000000000000000000000000000000000000000
+ 00000000000029397200627DD900334992000000000000000000000000003349
+ 92005E71B3002939720000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003F58AD003D59B9003857BF003857
+ BF003857BF003857BF003857BF003857BF003857BF003857BF003857BF003857
+ BF003857BF003857BF003857BF003857BF003857BF003857BF003857BF003857
+ BF003857BF003857BF003A5097005169BF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000002C3D7A004F69
+ BE000328A200032082001D3EAC000328A200032082001D3EAC000328A2000320
+ 82001D3EAC004F69BE002C3D7A001D3EAC000328A200032082001D3EAC004F69
+ BE002C3D7A000000000000000000000000000000000000000000000000000000
+ 0000000000002C3C7700617DDA00445591007389D300000000007389D300495A
+ 9300526FD2002C3C770000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000283C82000730BA00042EB900042E
+ B900042EB900042EB900042EB900042EB900042EB900042EB900042EB900042E
+ B900042EB900042EB900042EB900042EB900042EB900042EB900042EB900042E
+ B900042EB900042EB9003453B900283C820000000000364C9A002C3E7D002C3E
+ 7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E
+ 7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E7D002C3E
+ 7D002C3E7D002C3E7D00000000000000000000000000000000002E407E004F69
+ C200042AA900032187001D3FB100052AA900042288001E40B100052AA9000321
+ 87001D3FB1004F69C2002E407E001D40B300062CAB00052389001F42B400506A
+ C4002F4180000000000000000000000000000000000000000000000000000000
+ 0000000000002E3F7C00617DDB005872C70032478800CED7F70033478800647B
+ CB002447BB002E3F7C0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000027387A00042BAD00042BAD00042B
+ AD00042BAD00042BAD00042BAD00042BAD00042BAD00042BAD00042BAD00042B
+ AD00042BAD00042BAD00042BAD00042BAD00042BAD00042BAD00042BAD00042B
+ AD00042BAD00042BAD001035B10027387A00000000002F4284005872CB004F6B
+ C8004F6BC8004F6BC8004F6BC8004F6BC8004F6BC8004F6BC8004F6BC8004F6B
+ C8004F6BC8004F6BC8004F6BC8004F6BC8004F6BC8004F6BC8004F6BC8004F6B
+ C8004F6BC8005872CB0000000000000000000000000000000000304385004760
+ B30005248C0006258D000E2C910009278D0009278D000F2D900009278D000827
+ 8D000D2B90004760B300304385002346BC000E34B5000B2A91002548BD00516C
+ C900314487000000000000000000000000000000000000000000000000000000
+ 00000000000032458600617EDF00173CBA005472D800435492005D7ADA001238
+ B700042BAF003245860000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002A3C7E00042BB000042BB000042B
+ B000042BB000042BB000042BB000042BB000042BB000042BB000042BB000042B
+ B000042BB000042BB000042BB000042BB000042BB000042BB000042BB000042B
+ B000042BB000042BB000042BB0002A3C7E0000000000354A92005875D600BBC2
+ DA00D0D8F400D0D8F400D0D8F400CED6F300CED6F300CED6F300CED6F300CCD5
+ F200CDD6F300CED6F300CED6F300D0D8F400D1D9F400D1D9F300D3DAF400D5DC
+ F400E9EDFA005875D6000000000000000000000000000000000035498F00516E
+ CF001239BE00102F98002D50C600183EBF00133299002F52C600183EBF001231
+ 99002B4FC600526FCF0035498F003256CE001F46C8001938A1003357CE005472
+ D500384D95000000000000000000000000000000000000000000000000000000
+ 00000000000034478B00627FE100042CB4002E53CB005B73C7002E53CB00042C
+ B400042CB40034478B0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002C408400042EB900042EB900042E
+ B900042EB900042EB900042EB900042EB900042EB900042EB900042EB900042E
+ B900042EB900042EB900042EB900042EB900042EB900042EB900042EB900042E
+ B900042EB900042EB900042EB9002C40840000000000384E99005876DB00BDC4
+ DC00D2DAF500D1D9F500D1D9F500D1D9F500D1D9F500D1D9F500CFD7F400CFD7
+ F400CED7F400CED7F400CED7F400CED7F500CED7F500CED7F500CED7F500CED7
+ F500E6EBF9005876DB0000000000000000000000000000000000374D94005371
+ D4001840C50015359E003256CC001E45C70018379F003558CC001E45C6001736
+ 9F003054CC005371D400374D94003A5ED600274ED100203FA8003A5ED6005574
+ DB003B519D000000000000000000000000000000000000000000000000000000
+ 000000000000374B8F006280E300042EB9000932BC004164D8000932BC00042E
+ B900042EB900374B8F0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002F448C000430C2000430C2000430
+ C2000430C2000430C2000430C2000430C2000430C2000430C2000430C2000430
+ C2000430C2000430C2000430C2000430C2000430C2000430C2000430C2000430
+ C2000430C2000430C2000430C2002F448C00000000003C53A0005A79E000C0C7
+ DE00D5DDF700D3DBF600D3DBF600D3DBF700D2DAF600D2DAF600D2DAF700D1D9
+ F600D2DAF700D1D9F600D0D9F600D0D9F600D0D9F600CFD8F600CFD8F600CFD8
+ F600E6EBFA005A79E0000000000000000000000000000000000039509A004B66
+ C2001838A4001B3BA5002241A7001D3CA4001D3CA4002341A7001D3CA4001C3B
+ A4001F3EA6004B66C20039509A004064DC002F56DA002645AE004064DC005777
+ E1003F56A4000000000000000000000000000000000000000000000000000000
+ 0000000000003B509A00617FE5000430C4000430C4000430C4000430C4000430
+ C4000430C4003B509A0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000354B9B000534D4000534D4000534
+ D4000534D4000534D4000534D4000534D4000534D4000534D400042AAA00042A
+ AA00042AAA00042EB9000534D4000534D4000534D4000534D4000534D4000534
+ D4000534D4000534D4000534D400354B9B0000000000435CAF006181EC00C2C9
+ E000D8E0FA00D8E0FA00D7DFFA00D7DFFA00D7DFFA00D7DFFA00D6DEFA00D6DE
+ FA00D6DEFA00D6DEFA00D6DEFA00D5DDFA00D5DDFA00D4DDFA00D4DDFA00D4DD
+ FA00E9EEFC006181EC00000000000000000000000000000000003F56A5005676
+ E1002951D9002545AF004468DE003259DA002847AF004669DE003259DA002645
+ AE003F64DC005676E1003F56A5004F73EB003F66E8003352BA004E72EA00597B
+ EB00455FB3000000000000000000000000000000000000000000000000000000
+ 0000000000003E539E006180E7000432C9000432C9000432C9000432C9000432
+ C9000432C9003E539E0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003850A3000537DD000537DD000537
+ DD000537DD000537DD000537DD000537DD000537DD000537DD00C5C3C200C3C1
+ BF00C0BEBC00042EBC000537DD000537DD000537DD000537DD000537DD000537
+ DD000537DD000537DD000537DD003850A300000000004660B6006182F100C5CB
+ E100DAE1FB00DAE1FB00DAE1FB00D9E1FB00D9E1FB00D9E1FB00D8E0FB00D8E0
+ FB00D8E0FB00D7DFFB00D7DFFB00D7DFFB00D6DEFB00D6DEFB00D6DEFB00D6DE
+ FB00EBF0FD006182F10000000000000000000000000000000000425AAA005778
+ E5003058DF002A4AB300496DE300385FE0002D4CB3004D70E300385EDF002B4A
+ B200456AE2005778E500425AAA005579F000476DEE003A59BF005478F0005A7D
+ F1004963BB000000000000000000000000000000000000000000000000000000
+ 0000000000004056A3006180E9000433CE000433CE000433CE000433CE000433
+ CE000433CE004056A30000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003B54AA000539E5000537E0000434
+ D1000433CE000433CE000433CE000433CE000433CE000433CE00D9D8D700D7D5
+ D400D4D2D100042BB0000433CE000433CE000433CE000433CE000433CE000433
+ CE000434D3000538E2000539E5003B54AA00000000004962BA006283F200C7CD
+ E300DEE5FC00DDE4FC00DDE4FC00DCE3FC00DCE3FC00DCE3FC00DBE2FC00DBE2
+ FC00DBE2FC00DAE2FC00DAE2FC00DAE2FC00D9E1FC00D9E1FC00D8E0FC00D8E0
+ FC00EBF0FD006283F20000000000000000000000000000000000445DB100506E
+ D2002A4AB7002F4FB8003553B9003251B8003251B7003856BA003251B8003150
+ B8003150B9004F6DD200445DB1005D80F2005075F100405EC1005B7EF2005C7F
+ F2004C66BD000000000000000000000000000000000000000000000000000000
+ 000000000000455DAE006887ED001543DC001543DC001543DC001543DC001543
+ DC001543DC00455DAE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003F59B000193BAD004565CF005D7D
+ EA006082F2006082F2006082F2006082F2006082F2006082F200D9D7D600D3D1
+ D000CDCBCA00516DCD006082F2006082F2006082F2006082F2006082F2006082
+ F2005B7BE5003959C2001646E9003F59B000000000004C65BC006B8AF300CCD1
+ E300E3E9FD00E2E8FD00E2E8FD00E2E8FD00E1E7FD00E1E7FD00E0E6FC00E0E6
+ FC00E0E6FC00DFE6FC00DFE6FC00DFE6FC00DEE5FC00DEE5FC00DEE5FC00DDE4
+ FC00EDF1FE006B8AF300000000000000000000000000000000004A64BB005A7D
+ F1004169EF003857BF005B7EF1004C71F0003D5BC0005E80F1004C71F0003B59
+ BF005478F000597CF1004A64BB006684E8005F81F2004D68C2006482E8005E80
+ F2004E68BF000000000000000000000000000000000000000000000000000000
+ 0000000000004760B3006D8BF0001F4CE1001F4CE1001F4CE1001F4CE1001F4C
+ E1001F4CE1004760B30000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000415AB1005E7CE2005579F100486F
+ F000466DF000466DF000466DF000466DF000466DF000466DF000F1F0F000EFED
+ ED00ECEBEA003B5DCC00466DF000466DF000466DF000466DF000466DF000466D
+ F000486FF000587CF2002247C400415AB100000000004D67BE006B8AF300CED3
+ E300E5EAFD00E5EAFD00E5EAFD00E4E9FD00E4E9FD00E4E9FD00E3E9FD00E3E9
+ FD00E2E8FD00E2E8FD00E2E8FD00E1E7FD00E1E7FD00E1E7FD00E0E6FC00E0E6
+ FC00EFF3FE006B8AF300000000000000000000000000000000004B65BD005C7F
+ F200466DF0003E5CC1006183F2005176F100425FC1006586F3005176F100405E
+ C100597CF2005B7EF2004B65BD006D89E9006787F300536DC2006986E8005F81
+ F2004F69C1000000000000000000000000000000000000000000000000000000
+ 0000000000004A63B8006F8DF1002854E7002854E7002854E7002854E7002854
+ E7002854E7004A63B8004A63B8004A63B8004A63B8004A63B800516BC7000000
+ 000000000000000000000000000000000000425BB200597CF2005277F1005277
+ F1005277F1005277F1005277F1005277F1005277F1005277F1004766CD004766
+ CD004766CD004B6CDA005277F1005277F1005277F1005277F1005277F1005277
+ F1005277F1005277F1004D68C400425BB200000000004E68BF006B8AF300CFD4
+ E300E7ECFD00E6ECFD00E6ECFD00E6ECFD00E6EBFD00E6EBFD00E5EAFD00E5EA
+ FD00E5EAFD00E4E9FD00E4E9FD00E4E9FD00E3E9FD00E3E9FD00E3E9FD00E2E8
+ FD00F0F3FE006B8AF300000000000000000000000000000000004C66BD005473
+ D9003D5BC100425FC1004965C2004763C1004864C1004C67C3004763C1004561
+ C100425FC2005372D9004C66BD00728DE9006F8DF3005871C3006E8AE8006082
+ F200516BC2000000000000000000000000000000000000000000000000000000
+ 0000000000004F69C0007894F4003D66EF003D66EF003D66EF003D66EF003D66
+ EF003C65EF004F69C0003656C2005579F1005378F1007592F4004F69C0000000
+ 000000000000000000000000000000000000445DB5006C8BF3006C8BF3006C8B
+ F3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8B
+ F3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8BF3006C8B
+ F3006C8BF3006C8BF3007491F400445DB50000000000516BC2006D8CF300D3D7
+ E400EBF0FD00EAEFFD00EAEFFD00EAEFFD00E9EEFD00E9EEFD00E9EEFD00E9EE
+ FD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E7ECFD00E7ECFD00E7ECFD00E6EC
+ FD00F2F5FE006D8CF300000000000000000000000000000000004E68BF005F81
+ F200567AF2004C67C200718FF4006586F300516BC2007693F4006586F3004F69
+ C2006888F3005D80F2004E68BF00829DF5007C97F4005D75C3007491F4005F81
+ F200536DC4000000000000000000000000000000000000000000000000000000
+ 000000000000506AC1007C97F400476EF000476EF000476EF000476EF000476E
+ F000466DF000506AC1003555C2005176F1005075F1007290F400506AC1000000
+ 000000000000000000000000000000000000455EB6007A96F4007A96F4007A96
+ F4007A96F4007A96F4007A96F4007A96F4007A96F4007A96F4007A96F4007A96
+ F4007A96F4007A96F4007A96F4007A96F4007A96F4007A96F4007A96F4007A96
+ F4007A96F4007A96F4007A96F400455EB60000000000526CC3007491F400D6D9
+ E400EDF1FE00EDF1FE00EDF1FE00ECF0FE00ECF0FE00EBF0FD00EBF0FD00EBF0
+ FD00EAEFFD00EAEFFD00EAEFFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E8ED
+ FD00F4F7FE007491F400000000000000000000000000000000004F69C0006082
+ F2005B7EF2004F6AC2007794F4006B8AF300566FC3007C97F4006B8AF300536D
+ C2006D8CF3005E80F2004F69C00086A0F5007995F400566FC3006989F3005C7F
+ F200556FC6000000000000000000000000000000000000000000000000000000
+ 000000000000516BC200819BF5005075F1005075F1005075F1005075F1005075
+ F1005075F100516BC2002A4DBF004169F0004068F0006B8AF300516BC2000000
+ 0000000000000000000000000000000000004660B70086A0F50086A0F50086A0
+ F50086A0F50086A0F50086A0F50086A0F50086A0F50086A0F50086A0F50086A0
+ F50086A0F50086A0F50086A0F50086A0F50086A0F50086A0F50086A0F50086A0
+ F50086A0F50086A0F50086A0F5004660B70000000000546DC4007491F400D8DB
+ E400F0F3FE00EFF3FE00EFF3FE00EFF3FE00EEF2FE00EEF2FE00EDF1FE00EDF1
+ FE00EDF1FE00ECF0FE00ECF0FE00ECF0FE00EBF0FD00EBF0FD00EBF0FD00EAEF
+ FD00F4F7FE007491F40000000000000000000000000000000000506AC1005775
+ DA004D68C200546EC2005B73C4005A72C3005B73C3006077C4005B73C3005871
+ C300526CC3005674DA00506AC1009CB1F70096ACF7007A91DC00819BEF006483
+ EB005670C7000000000000000000000000000000000000000000000000000000
+ 000000000000536DC40088A2F6006485F3006485F3006485F3006485F3006485
+ F3006384F300536DC4000F35B6001546EC001546EC00577BF200536DC4000000
+ 0000000000000000000000000000000000005570CD00A3B6F500A0B4F700A0B4
+ F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4
+ F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4F700A0B4
+ F700A0B4F700A0B4F7008798D6005570CD00000000005770C7007B97F4001B46
+ D500254ED600274FD600274FD6002850D6002850D6002850D6002850D6002850
+ D6002850D6002850D6002850D6002850D6002850D600274FD600274FD600214A
+ D5001B46D5007B97F40000000000000000000000000000000000526CC3006283
+ F2006989F3005D75C300859FF5007E99F500657BC3008DA5F6007F9AF5006279
+ C4007A96F4006082F200526CC300375EE5003159E4002551E3005771C8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000546DC4008BA4F6006F8DF3006F8DF3006F8DF3006F8DF3006F8D
+ F3006E8DF300546DC400042BB0000538E5000538E5005075EF00546DC4000000
+ 000000000000000000000000000000000000000000004963BA004963BA004963
+ BA004963BA004963BA004963BA003D5BC300042EBC003B57B9004963BA004963
+ BA004963BA004963BA003B57B900042EBC004963BA004963BA004963BA004963
+ BA004963BA004963BA005670CE0000000000000000005871C800829CF5003E67
+ F0005176F1005579F100577BF200597CF200597CF200597CF200597CF200597C
+ F200597CF200597CF200597CF200597CF200587CF200577BF2005579F1004A70
+ F0003E67F000829CF50000000000000000000000000000000000536DC4006283
+ F2006C8BF3006077C3008AA3F600839EF5006B80C40092A9F600849EF500657B
+ C3007C97F4006183F200536DC4005771C8005771C8005771C8005A76D2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000556EC6008FA7F6007995F4007995F4007995F4007995F4007995
+ F4007995F400556EC600042AA9000434D3000434D3005073E900556EC6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004A64BB000430C4004760B300000000000000
+ 000000000000000000004760B3000430C4000000000000000000000000000000
+ 000000000000000000000000000000000000000000005872C90089A1F00093A9
+ F2009DB0F2009FB2F400A0B3F400A1B4F400A1B4F400A1B4F400A1B4F400A1B4
+ F400A1B4F400A1B4F400A1B4F400A1B4F400A0B3F400A0B3F4009FB2F40098AD
+ F20093A9F20089A1F00000000000000000000000000000000000546EC5005876
+ DA00566FC3006379C4006C81C5006E82C4007083C5007587C6006E82C400687D
+ C4005B73C4005775DA00546EC500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005770C8009DB1F3008CA5F6008CA5F6008CA5F6008CA5F6008CA5
+ F6008CA5F600697ECB0003269B00042AAA000930B3005D78D6005770C7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000516ABE002049D4004862BD004D66BD004D66
+ BD004D66BD004D66BD004862BD002049D3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005670C7005D80
+ F200587CF2005972C3008EA6F60093AAF600798AC500A3B6F80087A1F5005B73
+ C3006989F3005B7EF2005670C700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000647EDA0095A8E80097ADF70096ACF70096ACF70096ACF70096AC
+ F70096ACF700758AD4001A36940003269B002042B3005E78CF005874CF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000536CC0006481E4000B39D4000434D3000434
+ D3000434D3000434D3000B39D4006D88E3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005771C8006583
+ EB00809AEE007B92DD009BB0F700AEBFF8009FAEDF00B2C2F9009EB3F7007C92
+ DD00809AEE006382EB005771C800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000093A8ED007086D2009DB2F70098AEF7009CB1F7009DB2F7009AAF
+ F70095ACF70096A9EB005E74BF0016349A004D6ACB00657BC5007C93E6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000006680D9007489D400879FF200829DF500829D
+ F500829DF500829DF500879FF2007489D4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005A76D2005771
+ C8005771C8002A4DBF00425FC100566FC3005B73C3005A72C3004360C100294C
+ BF005771C8005771C8005A76D200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C900647EDB0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005A76D2005771C8005771C8005771C8005771C8005771C8005771C8005771
+ C8005A76D2000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031458E000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000008196DC002F42
+ 820056659A002F4282008196DC00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000DADADA00CECECE00C0C0C000C0C0C0009EACDC00273360002631
+ 590026315900384987008D9DD300C0C0C000C0C0C000CECECE00D3D3D3000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000859AE000364C98004C5D99005F79CD003D5C
+ C4002447BD003D5CC4005F79CD00697CBD00364C9800859AE000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002B3F800030458B0000000000000000000000
+ 00000000000000000000000000004055A3007085D00000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CED7F6002A3D7D0056669F004B5989002A3A
+ 73002A3A73007381AE005264A4002A3A73000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004D66
+ BC007D94DF007B94E7007F97E7008098E7008199E7008199E7008199E7008199
+ E7008199E7008199E7008199E7008199E7008098E7007F97E7007C94E5006377
+ BB004D66BC000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A9B9EE005062A1006E81C300627CD300294EC600294E
+ C600294EC600294EC600294EC6004161CD006E81C3005062A10039509E000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008196DB002E4187005366A6003F4E84007287D200000000000000
+ 0000000000000000000090A3E30039487D003F4E84002E4187008196DB000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004F65B600213783007181B600A3B4EB000000
+ 000000000000354B97007281B300213783000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000D2DBF8004E66
+ B7006686F3006888F3006F8DF3007592F4007693F4007693F4007693F4007693
+ F4007693F4007693F4007693F4007693F4007391F4006F8DF3006888F3007F99
+ F0004E66B700D2DBF80000000000000000000000000000000000000000000000
+ 000000000000627ACE00465A9E006882DB004A6AD6003E61D3003E61D3002E53
+ CF002E53CF002E53CF002E53CF003257D0005674D900748CDD006E82C600627A
+ CE00000000000000000000000000000000000000000000000000000000000000
+ 0000364C980047578E005568AB003C58B800576CAF0030428500000000000000
+ 0000000000000000000030468D005568AB004B65BB005568AB0047578E000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002F428600324CA4004F5E9300000000000000
+ 000000000000A5B6EC004F5E9300324CA4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000AEBDF100556C
+ BB00617FE30040508500576AAB00819BF500819BF500435180005D70B000829C
+ F500829CF5005A6CAB005C6FAF00819BF500425080005669AA005469AF007B97
+ F400556CBB00AEBDF10000000000000000000000000000000000000000000000
+ 00005469B1008BA0E8005E7CE2005A6DB400445AA9004D67C0006F83C8007590
+ EA004469E3003A60E1004E67BE00445DB200445AA9005A6DB4007388CF009FB0
+ EA005469B100ABBBF00000000000000000000000000000000000000000000000
+ 0000A8B7ED00495A96006A81CF00042DB6001C41BD005771C500BAC7F2000000
+ 000000000000374B9400576FBE002045BE000E35B8006880CF004D5E9B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000334689002440A30033468900000000000000
+ 00000000000000000000334689001C399F000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000008FA3E900627A
+ CD004862BC0036488600445BA9006283F2006283F20031417700445BA9006283
+ F2006283F200445BA900445BA9006283F20031417700445BA900445BA9007290
+ F400627ACD008FA3E900000000000000000000000000000000004B66BF00435C
+ B4008F9FDA005878E0005B71BD009DAFED0000000000000000004860B5008299
+ E7005B7DEC004E6EDD00455EB40000000000000000009DAFED00516AC600859C
+ E60092A3DB004761BA004B66BF00000000000000000000000000000000000000
+ 000000000000455EB2006B7DB900042FBF00042FBF003C5DCC00465EB2000000
+ 0000000000005267AE004161CE00042FBF004363CE007081BD00455EB2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000465EB100364A8F002B49AB00364A8F00000000000000
+ 000000000000364A8F00364A8F001D3CA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000768EE1006079
+ CD003955B3002F458F003751A8005075F1005075F100273975003751A8005075
+ F1005075F1003751A8003751A8005075F100273975003751A8003751A8006183
+ F2006079CD00768EE10000000000000000000000000000000000455FB600A4B4
+ E900708CE9006076C4005169BB00000000000000000000000000627CD500798F
+ DC006A89F2005471D500627CD5000000000000000000000000004E67C5006076
+ C400708CE9006E82CB00455FB600000000000000000000000000000000000000
+ 000000000000D1DAF70044589E002048CD000431C7000E39CA00485CA000899D
+ E300A9B9EF005772D1001740CB000431C7007189D70044589E00BDC9F3000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000394D9500394D95003350B300394D9500000000000000
+ 0000000000003953AE00394D95001E3EAC000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000007790E100657E
+ D3002844A200243D8E002C48A7003E67F0003E67F0001E3274002C48A7003E67
+ F0003E67F0002C48A7002C48A7003E67F0001E3274002C48A7002C48A7005075
+ F100657ED3007790E100000000000000000000000000000000004861B8008CA3
+ EF004F74F100607EE0004A63BC00000000000000000000000000AEBDF200657A
+ C400839EF500586FBF00AEBDF200000000000000000000000000BFCCF5008DA1
+ E800839EF500587CF2004861B800000000000000000000000000000000000000
+ 0000000000000000000000000000778DD7002C55DE000536D9004D6FE100576D
+ BA005369B4000D3DDA000536D9002751DE00455DB00000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000003E53A1003E53A1004260C2003E53A100000000000000
+ 0000000000004260C2003E53A1002143B8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000516AC2005E7A
+ D8000D257600112D8A00123095001A45D6001A45D6000C216800123095001A45
+ D6001A45D60012309500123095001A45D6000C2168001230950012309500335B
+ E1005E7AD800516AC200000000000000000000000000000000004962B9008FA4
+ EF005E7DE500516ABD0090A4EA00000000000000000000000000D2DBF8006076
+ C20087A1F500576FBF00D2DBF800000000000000000000000000000000005970
+ C0008CA1EC00849EF5004962B900000000000000000000000000000000000000
+ 00000000000000000000000000005C71BD006886EA000E3FE200204EE5005A78
+ DE00607BDA000538E2000A3CE3005E7EEA00758CDE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000004157A7004157A7004A66C9004157A700000000000000
+ 0000000000004A66C9004157A7002246BD000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004D66BA005E7A
+ D80003185F0005207B00062489000833C3000832BD0004195F00062489000833
+ C3000832BD0005218000062489000833C30004195F0005218000062489001A43
+ CE005E7AD8004D66BA00000000000000000000000000000000004A63BA0092A8
+ F0005971C4007790E2000000000000000000000000000000000000000000546C
+ BF0091A7F2005068BD0000000000000000000000000000000000000000007790
+ E200697EC90091A7F2004A63BA00000000000000000000000000000000000000
+ 00000000000000000000000000005570CC00768DD9004068EF00073BEA003560
+ EE003A63EE00073BEA003963EE00778EDD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000445CAD00445CAD00516ED000445CAD00000000000000
+ 000000000000516ED000445CAD002449C4000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004960B2005D7D
+ EA0002175D000216580002165800042CB300042BAC0002175D0002175D00042C
+ B300042BAC000216580002175D00042CB30002175D000216580002165800173E
+ C2005D7DEA004960B200000000000000000000000000000000004C65BC007A8D
+ D000000000000000000000000000000000000000000000000000000000004C65
+ BC009AAEF1004C65BC0000000000000000000000000000000000000000000000
+ 000000000000526CC9004C65BC0000000000000000005F7FE9006381E9006382
+ E9006483E9006483E9006483E9006784EA006A87EA006484EE001A4AED001A4A
+ ED001A4AED002654EE006484EE006986EA006583E9006483E9006483E9006483
+ E9006382E9006381E9004A64BB00000000000000000000000000000000000000
+ 000000000000000000004963B9004963B900607CDC004963B900000000000000
+ 000000000000607CDC004963B9003458D2000000000000000000000000000000
+ 000000000000000000000000000000000000000000003C4E9300405190000D26
+ 7800031F7D00031F7D00031F7D00031F7D00031F7D00031F7D00031F7D00031F
+ 7D00031F7D00031F7D00031F7D00031F7D00031F7D00031F7D00031F7D00031F
+ 7D000D2678003C4E8C00879DE200000000000000000000000000536ECA004F6A
+ C50000000000000000000000000000000000000000000000000000000000536E
+ CA009DB0F200536ECA0000000000000000000000000000000000000000000000
+ 00000000000000000000536ECA000000000000000000587CF2001949ED001D4D
+ ED002050ED002150ED002150ED002352ED002352ED002352ED002352ED002352
+ ED002352ED002352ED002352ED002352ED002251ED002150ED002150ED001F4F
+ ED001D4DED001949ED004B65BC00000000000000000000000000000000000000
+ 000000000000000000004C66BD004C66BD006782E0004C66BD00000000000000
+ 0000000000006782E0004C66BD003C60D7000000000000000000000000000000
+ 000000000000000000000000000000000000000000007A93E4003F64E0004569
+ E0004A6DE0004C6EE0004D6FE1004D6FE1004D6FE1004D6FE1004D6FE1004D6F
+ E1004D6FE1004D6FE1004D6FE1004D6FE1004D6FE1004D6FE1004C6EE000486B
+ E0004569E0004266DD004C64B700000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000546ECB006177C5006177
+ C5007893ED006177C5006177C5005C73C4000000000000000000000000000000
+ 000000000000000000000000000000000000000000005B7EF2001F4FED002453
+ EE002957EE002A57EE002B58EE002D5AEE002D5AEE002D5AEE002D5AEE002D5A
+ EE002D5AEE002D5AEE002D5AEE002D5AEE002C59EE002B58EE002A57EE002755
+ EE002453EE001F4FED004C66BD00000000000000000000000000000000000000
+ 000000000000000000004D67BE004D67BE006E88E2004D67BE00000000000000
+ 0000000000006E88E2004D67BE004365DA000000000000000000000000000000
+ 000000000000000000000000000000000000000000007290F4006A8AF3006888
+ F300708EF4007290F4007290F4007391F4007391F4007391F4005771CE00354A
+ 940032458D007391F4007391F4007391F4007290F4007290F4007290F4006E8D
+ F3006888F3006A8AF3005771C800000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000556FCC005069C0005069
+ C000A9BAF3005069C0005069C0005069C0000000000000000000000000000000
+ 000000000000000000000000000000000000000000004E68BF004E68BF004E68
+ BF004E68BF004E68BF004E68BF004E68BF005870C300829AEB00426AF000426A
+ F000426AF0004D72F100849CEE005870C3004E68BF004E68BF004E68BF004E68
+ BF004E68BF004E68BF00546FCB00000000000000000000000000000000000000
+ 000000000000000000004F69C0004F69C000879EE9004F69C000000000000000
+ 000000000000879EE9004F69C0005171DE000000000000000000000000000000
+ 000000000000000000000000000000000000000000005872CA005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9003C53A3005072
+ E2000535D7005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C90093A8ED00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000516A
+ C100B0C0F600516AC10000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005975D1007B90DA007592F4004D72F1007794
+ F4007995F4004D72F1007592F4007D92DD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000506AC100506AC1009AAEF0005D75C600000000000000
+ 0000D3DBF9009AAEF000506AC1005977DF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000425AAF004F73
+ EB000538E3000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000092A7EC00526B
+ C200A0B3F400526BC20092A7EC00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000006278C800869EF2005F81F2006989F300A1B3
+ EE00A3B3ED00567AF2005C7FF200859EF20092A5EC0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000516BC200516BC200A3B2E7008396D900000000000000
+ 0000607BD700A3B2E700516BC200607DE1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004760B8005075
+ F100053AEB000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009FB1F000BDCAF6009FAE
+ E3007287CF00A6B4E400CAD5F800798DD2000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000007A92E4008CA4F4006D8CF3006A8AF30099ABEA00556F
+ CB00556FCB00859FF5006A8AF3006D8CF3007389D3007A92E400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000546DC400546DC400718AE0007388CF00C9D3F500C9D3
+ F500B2C0EC00718AE000546DC4006E89E4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004C65BD005075
+ F100053AEB000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000627DD8009AAAE1005973
+ CF00D3DBF9005973CF00A4B2E300C0CBF1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000005971C80086A0F5007592F4007C97F4006B81CC009FB1
+ F000AEBEF300A7B9F5007F9AF5007592F40092A7EE005D75C800D3DBF9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000556EC500556EC500000000009FB1F000556EC500556E
+ C5005D78D50000000000556EC5007892E6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004E68BF005075
+ F100053AEB000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000566FC7007085CF00D3DB
+ F90000000000D3DBF9007488D100C7D1F6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000006983DD007E92DA007F9AF5007F9AF5009AAFF7005D78D5000000
+ 0000000000008DA0DF009CB1F7007F9AF50094ABF6008195DC00627DD9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000566FC600566FC6000000000000000000000000000000
+ 00000000000000000000566FC6008AA0EB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000516AC1005075
+ F100053AEB000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000647EDA00B1BEE8005B76
+ D200D3DBF9005B76D200AAB8E800A5B5ED000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000647EDA0090A3E4009DB2F70093AAF600AABCF7008497D900000000000000
+ 0000000000007C93E5008497D900A9BBF7008BA4F60097ADF70093A6E8000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000647EDA008B9FE2005B76D200AFBFF300000000000000
+ 0000000000005B76D2008C9EDF00A2B2E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005971C7005075
+ F1001345EC000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009FB2F000D3DCF900B2BF
+ E9007B8FD400AEBCE700CDD7F800798ED5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005B76D2008195D900AEBDF100A0B4F700A3B4ED005A74CF00000000000000
+ 000000000000000000005A74CF00A1B1EC00ACBDF700A2B2EC00778CD5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C1CDF600BFCBF200A2B1E600778BD3005872C9005872
+ C9005872C900A0AFE300BCC9F2006F84D0000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005972CB006A86
+ E4006A86E4000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000758AD300BFCA
+ EF00D7DFF900C1CBEF00758AD3006B85DE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007C93E6005C75CC00A5B6EF006F84D0009FB2F000000000000000
+ 000000000000000000009FB2F0006F84D0008296DA005872CA00879CE9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000677ECE00A0B0E400C8D3F600CAD4F500CAD4
+ F500CAD4F500A6B5E8006F85D00093A8ED000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000093A8ED005872
+ CA005872CA000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DCDC
+ DC00DADADA00C9C9C900C7C7C700C7C7C700C0C0C000C0C0C000A4B1DD00333F
+ 6900303A62004656900000000000000000000000000000000000000000000000
+ 00000000000000000000DADADA00C1C1C1002C3C720025315900253159002531
+ 590025315900253159002531590025315900C1C1C100C8C8C800DADADA000000
+ 0000000000000000000000000000000000000000000000000000798CD2001926
+ 54001F2E65002233700024367500243675002436750024367500243675002436
+ 7500243675002436750024367500243675002436750024367500243675000000
+ 0000000000000000000000000000000000000000000000000000000000002E3E
+ 79002A396C0090A1D600C8C8C800B6C3EC00667CC4003D559D0025356A002535
+ 6A00243468003C5198006277BD00ABB9E500C3C3C30090A1D6002A396C002E3E
+ 7900000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D5DCF600384C8A00445698002D49
+ A7004D67C1006780D300627ACA00000000000000000000000000000000000000
+ 00000000000000000000000000000000000027387100425CB10013339E001333
+ 9E0013339E0013339E001F3DA300425CB1000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000001A2755002231
+ 6A003655BD001C41BA00042CB300042CB300042CB300042CB300042CB300042C
+ B300042CB300042CB300042CB300042CB300072FB400193EB9003656C200273A
+ 7D00667DCD000000000000000000000000000000000000000000000000003B51
+ 9F0003279F0022377D002F3F79003C56AA002F4CAF001F3FA9000F31A3000F31
+ A3000F31A3001F3FA9002F4CAF003C56AA002F3F790022377D0003279F003B51
+ 9F00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000394D8C0043569800435CB0004E69
+ C1006982D500768FE2004962B200000000000000000000000000000000000000
+ 000000000000000000000000000000000000293A7500435DB60003279E000327
+ 9E0003279E0003279E001334A300435DB6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000001B2957002333
+ 6D003555BF00042DB700042DB700042DB700042DB700042DB700042DB700042D
+ B700042DB700042DB700042DB700042DB700042DB700042DB7003556C500AAAF
+ BE00293D80000000000000000000000000000000000000000000000000005871
+ C1001C368C00374986003F57A9001639AD001034AB002344B1003553B7003553
+ B7003553B7002344B1001034AB001639AD003F57A900374986001C368C005871
+ C100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D5DCF60044579900425BAF00324DAA008196
+ DB0097AAE900889FED004961B200000000000000000000000000000000000000
+ 0000000000000000000000000000000000002C3D7B00435EBB000328A4000328
+ A4000328A4000328A4001336AA00435EBB000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000001D2A5A002435
+ 70003656C300042EBB00042EBB00042EBB00042EBB00042EBB00042EBB00042E
+ BB00042EBB00042EBB00042EBB00042EBB00042EBB00042EBB003658C800B6BB
+ C8002A3E84000000000000000000000000000000000000000000000000008297
+ DE003C4E8D003C58B6002244B6002849B8005C73C1009EA8C800CCCCCC006C6C
+ 6C00CCCCCC009EA8C8005D74C200294AB9002244B6003C58B6003C4E8D008297
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D5DCF6003E508F0046589A00314CA9005670C4008297DB00AFBF
+ F3008DA5F400607ACD00D8E0F800000000000000000000000000000000000000
+ 000000000000000000000000000000000000314486004361C500042CB100042C
+ B100042CB100042CB1001439B6004361C5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000001F2D5F002839
+ 77003658C9000430C3000430C3000430C3000430C3000430C3000430C3000430
+ C3000430C3000430C3000430C3000430C3000430C3000430C3003559CF00BEC3
+ D1002E438D000000000000000000000000000000000000000000D0D8F7003C4E
+ 91002348C300163DBE004B66C100DFDEDE00F5F5F500F8F8F800F9F9F900FAFA
+ FA00FAFAFA00FBFBFB00F8F8F800E2E2E2004D68C300163DBE002348C3003D50
+ 9300D0D8F7000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003F519100475A9C00435CAF005771C5008297DB00A6B6EB00849E
+ F2005C76CE004C63AF0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000033478C004362C900042DB700042D
+ B700042DB700042DB700143BBC004362C9000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000203063002A3B
+ 7B00375ACD000633C8000633C8000633C7000633C7000633C7000633C7000633
+ C7000633C7000633C7000633C7000633C7000633C8000633C800375BD300C3C8
+ D600314691000000000000000000000000000000000000000000566FC400455C
+ A900113AC3004765CB00B1B4BB00E2E2E200F5F5F500F6F6F600F7F7F700F8F7
+ F700F8F8F800F9F9F900F9F9F900FAFAFA00B7BAC1004967CD00113AC300455C
+ A900566FC4000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D5DCF700475A9C00425BAF00324DAA008297DB00A8B8EC00A8B9F2005E79
+ CF004F65B000D8E0F80000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000364A91004363CF00042FBE00042F
+ BE00042FBE00042FBE00143CC3004363CF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000213164002B3D
+ 7E003D5FD1000F3BCD00103CCE00123ECF00123ECF00123ECF00123ECF00123E
+ CF00123ECF00123ECF00123ECF00123ECF00103CCE000F3BCE003D61D700C6CB
+ DA003248940000000000000000000000000000000000D1DAF7003F539C004463
+ CA003156CF00A2AAC700E1E1E100EEEDED00D6D6D600F3F3F300F4F4F400F5F5
+ F500F6F5F500F7F6F600F7F7F700F8F7F700E9E9E900A8B1CE003055D0004463
+ CA003F539C00D1DAF70000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D3D3
+ D300485584004B63B4004A65C000758CD800ABBBF2008FA6F400607BD100D8E0
+ F80000000000000000000000000000000000000000003B519C003B519C003B51
+ 9C003B519C003B519C003B519C003B519C003B519C004366D8000432CB000432
+ CB000432CB000432CB00143FCE004366D8003B519C003B519C003B519C003B51
+ 9C003B519C003B519C003B519C004B63BA00000000000000000025356A002E41
+ 8400496BDA00214BD900244ED9002750D9002750D9002750D9006985E5006985
+ E5006985E5002750D9002750D9002750D900244ED900204AD800486BDF00CFD4
+ E400364D9C0000000000000000000000000000000000556EC7004B68C700385E
+ DD009CA5C800E5E4E400E9E8E800EAEAEA00EBEAEA00E1E0E000EEEDED00EBEB
+ EB00EFEFEF00F1F0F000F1F1F100F2F1F100F3F3F300F1F0F000A5AED100385E
+ DD004B67C700556EC70000000000000000000000000000000000000000000000
+ 0000A2A2A2007A7978006B6969006A6867006B6969007A797800C5C5C5007371
+ 710072737D005366A8007088D7007F96E30089A2F400667FD300526AB5000000
+ 000000000000000000000000000000000000000000004F6ED500516FD5005270
+ D6005270D6005270D6005270D6005270D6005370D600496CDE000E3CD4000E3C
+ D4000E3CD4000E3CD400113ED4004A6DDF005270D6005270D6005270D6005270
+ D6005270D6005270D600506ED4003E55A300000000000000000027366E003044
+ 88004E6FDE002A53DE002E57DF00325ADF00325ADF005878E500112B8400112B
+ 8400112B8400325ADF00325ADF00325ADF002E57DF002A53DE004F72E400D3D8
+ E8003951A000000000000000000000000000000000004960B3004C6DDB003A61
+ E300C8C9D000E7E6E600E6E6E600E6E5E500E7E6E600E8E7E700BEBEBE00D2D2
+ D200D5D4D400EDECEC00EEEDED00EEEEEE00F0EFEF00F1F0F000CFD1D8003960
+ E2005473D9004660B7000000000000000000000000000000000000000000A3A2
+ A200AAA9A900DAD9D900EDEDEC00E7E7E700EBEBEB00D8D7D60078767500706E
+ 6D007D7B7A005567A300637AC4007B95EB00647ED400546CB700D8E0F8000000
+ 00000000000000000000000000000000000000000000476BE300244FDD002852
+ DE002953DE002953DE002953DE002953DE002A53DE00224DDD001C48DC001C48
+ DC001C48DC001C48DC001C48DC00224DDD002953DE002953DE002953DE002953
+ DE002953DE002852DE00496DE3004058AA000000000000000000283870003246
+ 8C005475E200335BE300385FE3003C62E3003C62E3005268B000607FE8007792
+ EC007792EC00607FE8003C62E3003C62E300385FE300325BE3005476E700D6DB
+ EC003B52A50000000000000000000000000000000000455EB2005474E0004369
+ E900E0E0E000EFEEEE00EDECEC00EAE9E900E9E8E800E7E6E6007B7979006A68
+ 68007F7D7D00E9E8E800EAE9E900EBEAEA00ECECEC00EDECEC00DEDDDD004268
+ E8005878E100455EB2000000000000000000000000008C8B8B00A7A5A500ECEB
+ EB00BFBDBC00AAA8A700A09E9D009A9897009F9D9C00A8A6A500CFCECD00E6E5
+ E500A4A3A200BABABA009C9EAD006C80C200D8E0F80000000000000000000000
+ 000000000000000000000000000000000000000000005175ED00325CEA003760
+ EA003760EA003760EA003760EA003760EA003760EA003760EA003760EA003760
+ EA003760EA003760EA003760EA003760EA003760EA003760EA003760EA003760
+ EA003760EA003760EA00577AEE00465FB50000000000000000002B3B7500354A
+ 9400607FE800446AEA004A6FEB004F73EB004F73EB0042548F0042548F004F73
+ EB0042548F0042548F004F73EB004F73EB004A6FEB004369EA006081EE00DFE4
+ F5003F58AD00000000000000000000000000000000004A64BB006E8BEE005A7D
+ F200E9E9E900F9F8F800F8F8F800F6F6F600F5F5F500F4F4F4009F9E9C009290
+ 8E009F9D9B00EDECEC00EBEBEB00EAE9E900E7E6E600E6E5E500D7D6D600587C
+ F2007490EE004A64BB00000000000000000000000000A2A1A000EDECEC00D1CF
+ CF00A09E9D00B1B1B000BEBDBC00C3C2C200C2C2C200B6B5B400AFADAC00CAC8
+ C800E6E5E50087858400A19F9D00D5D5D3000000000000000000000000000000
+ 000000000000000000000000000000000000000000005579F1003E67EF00446B
+ EF00446BEF00446BEF00446BEF00446BEF00446BEF00446BEF00446BEF00446B
+ EF00446BEF00446BEF00446BEF00446BEF00446BEF00446BEF00446BEF00446B
+ EF00446BEF00446BEF005C7FF2004963BA0000000000000000002D3E7800384D
+ 97006685EC004C71EF005377EF00597CF000597CF00044569100364B90008BA3
+ F400364B900044569100597CF000597CF0005377EF004B70EF006686F100E3E9
+ FA00415BB10000000000000000000000000000000000526CC100819BEF006384
+ F300DBDDE200FCFCFC00FBFBFB00FAFAFA00F9F9F900F9F8F800E0DFDF005856
+ 5500DEDDDD00F3F3F300F2F1F100F1F0F000EEEDED00EDECEC00CCCDD2006183
+ F20089A1F100526CC100000000000000000000000000EDEDED00D7D6D500B4B2
+ B100B9B8B700B9B8B700B7B6B500B7B7B600BCBABA00C1C0C000A19F9E00AEAC
+ AB00CFCECD0088868500C8C8C800000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000597CF2004B71F1005277
+ F1005277F1005277F1005277F1005277F1005277F1005277F1005277F1005277
+ F1005277F1005277F1005277F1005277F1005277F1005277F1005277F1005277
+ F1005277F1005277F1006183F2004A64BB0000000000000000002E407A003A50
+ 9A006B89EE005277F1005B7EF2006384F3006384F300394D91003B57B400223C
+ 90003B57B400394D91006384F3006384F3005B7EF2005277F1006C8BF300E6EC
+ FD00445DB400000000000000000000000000000000005F79D2008DA1E6006D8C
+ F300BEC5DE00FAFAFA00FDFDFD00FDFCFC00FCFCFC00FCFBFB00FBFAFA007674
+ 7300F9F9F900F8F7F700F7F7F700F6F6F600F4F4F400F0EFEF00B7BDD6006B8A
+ F30092A5E7005F79D200000000000000000088878700D9D7D700ADABAA00B2B1
+ B100C1C0BF00C3C3C200C3C2C200C0C0BF00BFBFBF00BBBABA00BCBCBB00B4B3
+ B200A8A6A500DCDBDB0088878700000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000587CF2005479F1006183
+ F2006888F3006888F3006888F3006A8AF3006E8DF3006D8CF3006D8CF3006D8C
+ F3006D8CF3006D8CF3006D8CF3006E8DF3006A8AF3006989F3006888F3006888
+ F3006686F3006183F2006082F2004C66BD00000000000000000030417B003C51
+ 9C007792EF006283F2006C8BF3007592F4007592F4007592F400294190002941
+ 9000294190007592F4007592F4007592F4006B8AF3006183F2007693F400E6EC
+ FD00465FB70000000000000000000000000000000000919FD0005C74C500A6B8
+ F3009FB3F700C5CADA00EFEFEF00FFFFFF00FFFFFF00FFFEFE00FEFEFE008785
+ 8400FEFEFE00FDFDFD00FDFDFD00FCFCFC00ECECEC00C4C9D9009DB2F600A3B5
+ F3005D75C5008A97C600000000000000000085848300D0CECD00A3A1A000C4C3
+ C300CECDCD00D0D0D000D1D0CF00CAC9C900C7C6C600C2C2C000B6B4B400BCBC
+ BC009F9D9C00EBEBEB0085848300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A7BE9006987EA006E8A
+ EA00728EEA00738EEB00738EEB00748EEB007994EB00849EF5007B97F4007B97
+ F4007B97F4007B97F4007C97F4008CA5F600748EEB00738EEB00738EEB00728E
+ EA00718DEA006E8AEA005E7EE9004D67BE00000000000000000031427C003D53
+ 9C007C96F0006A8AF3007491F4007E99F5007E99F5007E99F5007E99F5007E99
+ F5007E99F5007E99F5007E99F5007E99F5007491F4006888F3007C97F400E6EC
+ FD004761B800000000000000000000000000000000007F7E7D008390C10092A3
+ DD0091A8F600B2C1F300C2C3C700FFFFFF00FFFFFF00FFFFFF00FFFFFF009D9B
+ 9A00FFFFFF00FEFEFE00FEFEFE00EBEBEB00C0C1C500B1C1F3008DA5F50091A2
+ DD00818FBE008785840000000000000000008C8A8800CBCAC9009E9D9C00CBCA
+ CA00D8D7D700DBDBDB00DDDDDD00D7D7D600CFCFCE00C7C6C600B9B7B600B8B8
+ B8009A989700E7E7E6008C8A8800000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004E68BF004E68BF004E68
+ BF004E68BF004E68BF004E68BF004E68BF004E68BF007391F40087A1F50087A1
+ F50087A1F50087A1F5008BA4F600829DF5004E68BF004E68BF004E68BF004E68
+ BF004E68BF004E68BF004E68BF00546FCB00000000000000000032437D003E53
+ 9E007F99F000708EF4007B97F400849EF500849EF500849EF500849EF500849E
+ F500849EF500849EF500849EF500849EF5007A96F4006F8DF300819BF500E6EC
+ FD004862B90000000000000000000000000000000000B2B0AF009A9CA6005E76
+ C70096ACF700A3B6F800B8C4EC00E5E5E500FBFBFB00FFFFFF00FFFFFF00D7D6
+ D600FFFFFF00FFFFFF00FBFBFB00E5E5E500B7C3EC00A0B4F70092A9F6005E76
+ C7009498A100B5B4B30000000000000000008F8D8D00D1D0CF00A4A2A100D2D2
+ D100E7E7E700EDEDED00F0F0F000ECEBEB00E4E4E400DADADA004863C0004D68
+ C1004D68C2004D68C2004D68C2004D68C2004D68C2004C66C1004964C1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000506AC1007290F400A2B6F800A3B6
+ F800A3B6F800A3B6F8009FB3F700859FF5000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000034447F004056
+ A00088A0F1007B97F40086A0F50091A8F60094ABF60095ACF70095ACF70095AC
+ F70095ACF70095ACF70094ABF60091A8F600849EF5007A96F40089A2F600E6EC
+ FD004A64BB0000000000000000000000000000000000BDBCBB00A3A1A0007978
+ 77007B90D300BAC8F600A9BBF800C9D5FB00D1D8F200D0D3DE00CECECE006D6D
+ 6D00CECECE00D0D3DE00D1D8F200C8D4FB00A5B8F800B8C6F6007B90D3007372
+ 71009B999800B5B4B300000000000000000093929100DCDADA00AFADAD00C5C5
+ C400EBEBEB00F0F0F000F6F6F600F2F2F200E8E8E800DFDEDE00607EE4005D7C
+ E2005E7DE3005E7DE3005E7DE3005E7DE3005E7DE3005D7CE2006B87E5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000516BC2007693F400B0C0F900B1C1
+ F900B1C1F900B1C1F900ABBDF8008AA3F6000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000034457F004156
+ A1008DA4F2007F9AF50088A2F60094ABF60097ADF70098AEF7009AAFF7009AAF
+ F70099AFF70098AEF70097ADF70094ABF60087A1F5007E99F5008DA5F600E6EC
+ FD004C65BC0000000000000000000000000000000000B4B3B200908E8D007D7B
+ 7A006C7BAA00758AD200B8C6F200B8C7F900C1CEFA00CED8FB00D5DEFC00D5DE
+ FC00D5DEFC00CDD8FB00BFCDFA00B6C6F900B6C4F200748AD200707DAE007371
+ 700089888700B1B0AF000000000000000000ACACAC00EAE9E900C6C4C400A7A5
+ A400EBEBEB00F0F0F000F6F6F600F3F3F300E9E9E900DFDFDF00728DEA0094A9
+ ED0096AAEC0096AAEC0096AAEC0096AAEC0096AAEC0093A8ED007B95EB000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000526CC3007A96F400BDCBFA00BDCB
+ FA00BDCBFA00BDCBFA00B5C5F9008FA7F6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000354681004157
+ A2008FA6F100819BF50089A2F60093AAF60096ACF70097ADF70098AEF70098AE
+ F70098AEF70097ADF70095ACF70093AAF60087A1F5007F9AF5008FA7F600E6EC
+ FD004D66BD0000000000000000000000000000000000A9A8A600898887006E6C
+ 6B008C8B8B00919BBC00637BCB00C6D1F700C0CEFA00BECCFA00BAC9FA00BAC9
+ FA00B7C7F900BCCAFA00BECCFA00C4D0F700627ACB0097A1C200989796006F6E
+ 6D00817F7E00ADABAA00000000000000000000000000BFBEBD00F2F2F200D7D6
+ D600A8A7A600CDCCCC00E6E6E600E9E9E900DDDDDD00C3C2C100B3B1B000D1CF
+ CF00ECEBEB00ADACAC0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000536DC5007C97F400CBD6FB00CDD8
+ FB00CDD8FB00CDD8FB00C0CEFA0093AAF6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000364882004156
+ 9D006984E30097ADF7009AAFF7009DB2F7009EB3F7009FB3F7009FB3F7009FB3
+ F7009FB3F7009EB3F7009EB3F7009DB2F70099AFF7009CB0F3007B8FD500E6EC
+ FD004F69C00000000000000000000000000000000000B3B3B300A19F9D00CBCA
+ CA00F2F1F100DEDEDE00B9B9B9007D808B008891B2006B81D3005771C8005771
+ C8005771C8006681D8008A93B4007D808B00A8A8A800D1D1D100F2F2F200D6D5
+ D500A9A8A6009F9F9F000000000000000000000000009F9E9D00C7C6C500F2F2
+ F200C6C4C400AFADAD00A4A2A1009E9C9C00A3A1A000ADABAA00D7D6D500EDEC
+ EC00C6C5C4000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000546EC5007995F400C7D3FB00CCD7
+ FB00CDD8FB00CAD5FB00B7C7F9008EA6F6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004459A7003D4F
+ 91005366A900506AC100506AC100506AC100506AC100506AC100506AC100506A
+ C100506AC100506AC100506AC100506AC100506AC100506AC1006E82CB00E6EC
+ FD005069C0000000000000000000000000000000000000000000B4B4B400AAA9
+ A700E4E4E400D2D1D100BAB9B900A09F9D00A0A09F0000000000000000009896
+ 94000000000000000000B4B4B400A09E9D00B1B0B000C9C9C900E1E0E000B1AF
+ AE00A0A09F000000000000000000000000000000000000000000A09F9F00C5C3
+ C200EAE9E900DCDADA00D1D0CF00CBCAC900D0CECD00D9D7D700F0F0F000C4C3
+ C100A09F9F000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000556FC6006F8DF300B2C2F900BECC
+ FA00C0CEFA00B6C6F900A2B6F800829CF5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B9C6F2003B4F
+ 950097A0C200C9D0E900E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6EC
+ FD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00CCD3
+ F000506AC3000000000000000000000000000000000000000000000000000000
+ 00009F9D9B00A9A7A500A1A09E00C8C8C800000000000000000092918F009896
+ 940092918F000000000000000000D5D5D5009F9D9B00A9A7A5009F9D9B00C8C8
+ C800000000000000000000000000000000000000000000000000000000000000
+ 0000B0AFAF00A19F9F00A9A7A500B0AEAC00A9A7A500A19F9F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005A76D2005771C8005771C8005771
+ C8005771C8005771C8005771C8005771C8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000D3D3D300C0C0
+ C0004153940034458000344580009FADDD00C0C0C000C0C0C000C0C0C000C0C0
+ C000C0C0C000C0C0C000CBCBCB00CECECE00CECECE00DADADA00DEDEDE00DEDE
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B8C5
+ F1002338820014309000143090002F407C00A8B8E80000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BECCF4003D56AA003A57
+ BC008CA2EB008695CC008695CC002650DD003A57BC003D56AA00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DCDCDC00C4C4C400C1C1
+ C1003E5194003E5194003E5194003E5194003E5194003E5194003E5194003D50
+ 92003B4D8B003647800034447C00324177002C3B6C002A38670029366200B1BC
+ E500C4C4C400DDDDDD0000000000000000000000000000000000000000000000
+ 0000D4D4D400C5C5C50030428100273567002735670027356700273567002735
+ 670027356700273567002735670027356700273567002F428100D1D1D1000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000435BB5004967CD003761
+ EE008A9AD4004964C1004964C10095ABF5003761EE004967CD00BECCF5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000637A
+ CC0091A4E50095A9EC0095A9ED0091A6ED008EA4ED008BA2ED00849CEB008199
+ E9007E96E400788FDB00758CD7007187D1006A7FC500687CC0006F7FB700455A
+ A300000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000002D4188008895C1008895C1008895C1008895C1008895
+ C1008895C1008895C1008895C1008795C1006474A9002D438D00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000536DC9004068F00097AC
+ F5004A65C20000000000000000008E9DD6009EB2F600476EF000455DB700BECC
+ F500000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000405A
+ B4008CA5F60089A2F60089A2F6007C97F4007391F4006989F300567AF2004C71
+ ED004469E6003157D600274DCD001D43C3000A2FAE000328A3003652AF002636
+ 6A00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BAC6F200283C8200283C8200283C8200283C8200283C
+ 8200283C8200283C8200283C8200283C82002E479500BAC6F200000000000000
+ 0000000000000000000000000000000000000000000028387100283871002838
+ 7100283871002838710028387100283871002838710028387100283871002838
+ 7100293C7A000000000000000000000000000000000000000000000000000000
+ 0000000000004B62B100283871000000000000000000A5B6EF006283F200697F
+ CC00000000000000000000000000000000004C67C30095A4D9006888F3006E86
+ D8004861BA000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000435D
+ B500A3B6F800ACBDF800A2B6F8008DA5F600829DF5007894F4006283F2005679
+ EE004B6FE700365BD7002C51CE002146C4000B30AE000328A30003269B002838
+ 6D00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002B408A00283C7E00283C7E00283C
+ 7E00283C7E00283C7E00283C7E002B408A000000000000000000000000000000
+ 000000000000000000000000000000000000000000004862B8004E67BA005069
+ BB004D66BA004C66BA004A64B8004660B700435EB600435DB6007D8FCC00929D
+ C00033447F000000000000000000000000000000000000000000000000000000
+ 0000A3B4EB0035447D003446820000000000000000009AAADC00A6B9F8007591
+ F1004D67C4000000000000000000000000009BAFEC004159B200B2C2F8007391
+ F4006F85D0000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000455F
+ B700A8BAF800ADBEF800A2B6F8008DA5F600829DF5007894F4006283F2000000
+ 0000829BEF00365BD7002C51CE002146C4000B30AE000328A30003269B002A39
+ 6D00000000000000000000000000000000003A53A7002D438E002D438E002D43
+ 8E002D438E002D438E002D438E002D438E002D438E002D438E002D438E002D43
+ 8E002D438E002D438E002D438E002D438E002D438E002D438E002D438E002D43
+ 8E002D438E002D438E002D438E003A53A700000000004F69BF002948B1002F4D
+ B3002B4AB2002646B0002142AF001739AB001033A9001538AA00929EC4003749
+ 8600ACBBEB000000000000000000000000000000000000000000000000000000
+ 000033488F0051629F00445CA90000000000000000004F67BD00B9C4EA00B1C1
+ F9006F85CF004E69C50000000000465EB6006177C1005266B10095A3D300839E
+ F50099ACEC000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004761
+ B800A9BBF800ADBEF800A2B6F8008DA5F600829DF5007894F4006283F2000000
+ 0000829BEF00365BD7002C51CE002146C4000B30AE000328A30003269B002A3A
+ 6F00000000000000000000000000000000002F44910094A7E90099ABEA009BAD
+ EA009BADEA009CAEEA009CAEEA009CAEEA009CAEEA009CAEEA009CAEEA009CAE
+ EA009CAEEA009CAEEA009CAEEA009CAEEA009CAEEA009CAEEA009CAEEA009BAD
+ EA009AACEA0099ABEA008CA1E7002F449100000000005C76CC004C68C7005570
+ CA004B67C7004562C500405EC4003454C000546FCA006E80BC00B1BFED000000
+ 0000000000000000000000000000000000000000000000000000000000004455
+ 92004964BF006980CC00B4C3EF00000000000000000000000000BFCCF5005169
+ BF00C5D1FA00A5B7F6007D91D3007A8DCB00A5B8F7006485F3005872C5004357
+ 9F008796CD000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004B65
+ BC00A9BBF800ADBEF800A2B6F8008DA5F600829DF5007894F40013192E000000
+ 0000171C2C00365BD7002C51CE002146C4000B30AE000328A30003269B002D3D
+ 71000000000000000000000000000000000032499900617EE100708AE400718B
+ E400718BE400718BE400718BE400718BE400718BE400718BE400718BE400718B
+ E400718BE400718BE400718BE400718BE400718BE400718BE400718BE400718B
+ E400718BE400708AE4009CAEEC003249990000000000607AD1005873CF00627C
+ D2005873D000526ECD004D6ACC004261C9004F6CCC00586FBA00000000000000
+ 0000000000000000000000000000000000000000000000000000556EC3004D67
+ BC003F5FC8008596D0000000000000000000000000000000000000000000BFCC
+ F500C4CCEC00C8D4FB00A9BBF700425DB90097A7DD00A4B7F8005E80F1005A73
+ C7003B519C000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004D67
+ BE00A8BAF800ADBEF800A2B6F8008DA5F600829DF5007894F4001F1F1F000C0C
+ 0C001F1F1F00365BD7002C51CE002146C4000B30AE000328A30003269B002F3E
+ 720000000000000000000000000000000000334B9D005D7BE1006683E3006683
+ E3006683E3006683E3006683E3006683E3006683E3006683E3006683E3006683
+ E3006683E3006683E3006683E3006683E3006683E3006683E3006683E3006683
+ E3006683E3006683E3009BAEED00334B9D00000000006580D700637ED6006F88
+ DA00647FD700607BD6005A76D4004E6CD1004766CF005C77D2005871C5000000
+ 000000000000000000000000000000000000CCD6F700455EB10044599E003255
+ CA00385ACB008392C20000000000000000000000000000000000000000000000
+ 0000536BC100C4CCEC00C8D4FB008E9ED8004F67BA0098A7DE006485F3005E80
+ F1005B74C800BCC8F30000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004F69
+ C000A5B8F800ACBDF800A2B6F8008DA5F600829DF5007894F4003C4257003333
+ 330041465600365BD7002C51CE002146C4000B30AE000328A30003269B002F3F
+ 740000000000000000000000000000000000354DA1005474E1005B7AE1005B7A
+ E1005B7AE1005B7AE1005B7AE1005B7AE1005B7AE1005B7AE1005B7AE1005B7A
+ E1005B7AE1005B7AE1005B7AE1005B7AE1005B7AE1005B7AE1005B7AE1005B7A
+ E1005B7AE1005B7AE10099ACEE00354DA100000000006C86E0007891E300889E
+ E6007E96E4007992E300748EE2006984E0006480DE005977DC006580D8005269
+ B900485EA600445BAA004359A600455BA5005570CC004F6FDA003459D5002F55
+ D40095A5D9004960AE0000000000000000000000000000000000000000000000
+ 000000000000BFCCF500556DC300D5DCF600D5DCF6008E9DD6009AA9E000A4B7
+ F8006485F3005D76CA0040549E002D44910019379D002D438F00374B90000000
+ 000000000000000000000000000000000000000000000000000000000000536D
+ C60090A8F6009AAFF7009DB2F7008FA7F60086A0F5007E99F5006C8BF3006383
+ F000597AE9004769DA003E60D2003457C9002244B6001C3DAC003652AF003141
+ 7600000000000000000000000000000000003952A9004065E000466AE100466A
+ E100466AE100466AE100466AE100466AE100466AE100466AE100466AE100466A
+ E100466AE100466AE100466AE100466AE100466AE100466AE100466AE100466A
+ E100466AE100466AE10093A8EE003952A900000000006E89E5007E96E70094A8
+ EB008BA1EA00869DE8008199E8007690E600718BE5006B86E3006683E3006B86
+ E300607EE2005270D3005A76D5005A78DE004A6CDE003158D900264FD8006D88
+ E2008090C500879CE10000000000000000000000000000000000000000000000
+ 00000000000000000000D2DBF8005873CE005873CE00657FD9004E68C1009AAA
+ E200A4B7F8005E80F1005E77CB003E55A3006A84D8000D37C2002846AA00BDC9
+ F40000000000000000000000000000000000000000000000000000000000718A
+ E1008CA3EE0093A8F00096ABF00093A8F00091A7F1008FA5F00089A1EF00879F
+ ED00849BE8007E94DF007B91DA00788DD4007286C9007083C5007283BE004F66
+ B400000000000000000000000000000000003B55AC00385FE0003C62E1003C62
+ E1003C62E1003C62E1003C62E1003C62E1003C62E1003C62E1003C62E1003C62
+ E1003C62E1003C62E1003C62E1003C62E1003C62E1003C62E1003C62E1003C62
+ E1003C62E1003C62E10091A7EF003B55AC00000000006D89E7007C96EA0097AB
+ EE009DB0F00093A8EE008DA3ED00839BEC007D97EB007792E9006D89E8006381
+ E7006482E700607FE6005E7DE6005072E3004065E1003D62E100335ADF00A8B6
+ E400566BB8000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCDF600506A
+ C3009BABE2006485F3005E80F1005F78CC008C9CD100839BE9001543DA00475F
+ B300BFCCF5000000000000000000000000000000000000000000000000000000
+ 00005771C800888C9C0094939200888C9C005771C8005771C8005771C800556E
+ C400516ABD004B62AE00485EA7006D717D006C6B6B005E616D003A4A83000000
+ 0000000000000000000000000000000000003C56AE002E56DE003259DE003259
+ DE003259DE003259DE003259DE003259DE003259DE003259DE003259DE003259
+ DE003259DE003259DE003259DE003259DE003259DE003259DE003259DE003259
+ DE003259DE003259DE008EA4EE003C56AE00000000005F80EE00A0B3F500ACB9
+ E700B9C6F100A5B7F500A0B3F5009DB1F40097ACF40092A9F400869FF200819B
+ F1007D97F100728FF0006C8AF0006786EF005B7DED005074EC007F99F0005C76
+ CC00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000006F89
+ DF00516DCC009EADE400A4B7F8006485F3006C80C5004E67BF0093A3DD003761
+ EF005270D600516AC30000000000000000000000000000000000000000000000
+ 00000000000080808000C6C6C600808080000000000000000000000000000000
+ 0000000000000000000000000000808080004646460080808000000000000000
+ 0000000000000000000000000000000000003D57AF001C47D8001E49D8001E49
+ D8001E49D8001E49D8001E49D8001E49D8001E49D8001E49D8001E49D8001E49
+ D8001E49D8001E49D8001E49D8001E49D8001E49D8001E49D8001E49D8001E49
+ D8001E49D8001E49D80089A0EB003D57AF0000000000859FF400A6B6E8005E76
+ C700768BD200BDCAF600A4B7F700A8BAF700A4B7F7009FB3F60094ABF6008EA6
+ F50088A1F500809BF5007A96F4007592F4006384F300839DF400B3C1ED00D3DB
+ F900000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005B75
+ D2006B87E6005A72C800A0AFE500AEBFF8007F93D7009FB1EF005671CD009FB3
+ F600496FF0005E7AD900BFCDF600000000000000000000000000000000000000
+ 00000000000080808000CBCBCB00808080000000000000000000000000000000
+ 0000000000000000000000000000808080004C4C4C0080808000000000000000
+ 0000000000000000000000000000000000003E58B0001340D5001441D5001441
+ D5001441D5001441D5001441D5001441D5001441D5001441D5001441D5001441
+ D5001441D5001441D5001441D5001441D5001441D5001441D5001441D5001441
+ D5001441D5001441D500869DE9003E58B00000000000A3B3E8006078C800B4C1
+ F2005974CF007D91D600BBC9F800A2B6F800AEBFF800ACBDF800A1B5F7009CB1
+ F70097ADF7008BA4F600859FF5007E99F50097ADF700B6C2EE006A80CD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005B76
+ D3009AACED006C85D8005770C7008598D9005872CA0000000000000000009AA8
+ DF00A8BAF700597CF200526BC400000000000000000000000000000000000000
+ 00000000000080808000D0D0D0007F7F7F000000000000000000000000000000
+ 0000000000000000000000000000888888005050500080808000000000000000
+ 0000000000000000000000000000000000003F59B1000B39D3000B39D2000B39
+ D2000B39D2000B39D2000B39D2000B39D2000B39D2000B39D2000B39D2000B39
+ D2000B39D2000B39D2000B39D2000B39D2000B39D2000B39D2000B39D2000B39
+ D2000B39D2000B39D200839AE8003F59B1000000000000000000000000000000
+ 00000000000000000000647EDA0096A8E300C1CEF800C3D0FA00B1C1F900A9BB
+ F800A5B8F800ABBDF800BAC9F900C1CCF400627BCE00BBC9F500000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005972C800A9BBF8007995F2007389D6000000000000000000000000000000
+ 00005872CF009AAAE3008FA4EB005C77D4000000000000000000000000000000
+ 00000000000080808000D4D4D40082828200C6C6C60000000000000000000000
+ 00000000000000000000C6C6C600969696006060600086868600000000000000
+ 000000000000000000000000000000000000415BB2000433CE000433CE000433
+ CE000433CE000433CE000433CE000433CE000433CE000433CE000433CE000433
+ CE000433CE000433CE000433CE000433CE000433CE000433CE000433CE000433
+ CE000433CE000433CE008299E600415BB2000000000000000000000000000000
+ 00000000000000000000000000005874CF00657DCD008497DB00B9C7F300C1CD
+ F600C0CDF600A7B6E700889AD900667FCC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C1CDF600BDC8EE00B4C4F90089A2F4005973CF0000000000000000000000
+ 00005973CF00899DDE00B1C0F1005D78D5000000000000000000000000000000
+ 00000000000090909000C0C0C0008B8B8B008A8A8A0000000000000000000000
+ 000000000000000000008A8A8A00B1B1B1006A6A6A0096969600000000000000
+ 000000000000000000000000000000000000415BB3000432CB000432CB000432
+ CB000432CB000432CB000432CB000432CB000432CB000432CB000432CB000432
+ CB000432CB000432CB000432CB000432CB000432CB000432CB000432CB000432
+ CB000432CB000432CB008198E400415BB3000000000000000000000000000000
+ 0000000000000000000000000000000000009FB1F0006B85DE005771C8005771
+ C8005771C800647EDA0093A8ED00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005D74CA00C4CDEF00BECCFA008297DB005974CF00000000005974
+ CF008297DB009CB0F5009DACE100718AE2000000000000000000000000000000
+ 000000000000B0B0B000A4A4A400ADADAD008A8A8A0086868600000000000000
+ 000000000000868686008F8F8F00A4A4A40076767600BBBBBB00000000000000
+ 000000000000000000000000000000000000425CB4000432C9000432C9000432
+ C9000432C9000432C9000432C9000432C9000432C9000432C9000432C9000432
+ C9000432C9000432C9000432C9000432C9000432C9000432C9000432C9000432
+ C9000432C9000432C9008198E300425CB4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C1CDF6005F76CC00C8D4FB00A9BBF7009BACE400A9BB
+ F700C8D4FB00C7D0F000C1CDF600000000000000000000000000000000000000
+ 00000000000000000000D3D3D300D6D6D600DFDFDF00CECECE00ADADAD009C9C
+ 9C0097979700BBBBBB00C0C0C000B4B4B400D3D3D30000000000000000000000
+ 000000000000000000000000000000000000445EB5000430C4000430C4000430
+ C4000430C4000430C4000430C4000430C4000430C4000430C4000430C4000430
+ C4000430C4000430C4000430C4000430C4000430C4000430C4000430C4000430
+ C4000430C4000430C4008197E200445EB5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C1CDF600C7D0F000CED8FB00B7C7F900CED8
+ FB00C7D0F0005F76CD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000080808000B3B3B300E1E1E100F3F3F300EEEE
+ EE00E8E8E800CBCBCB00A6A6A600808080000000000000000000000000000000
+ 000000000000000000000000000000000000445EB500889BDB00889BDB00889B
+ DB00889BDB00889BDB00889BDB00889BDB00889BDB00889BDB00889BDB00889B
+ DB00889BDB00889BDB00889BDB00889BDB00889BDB00889BDB00889BDB00889B
+ DB00889BDB00889BDB00889BDB00445EB5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005D75CC00A1B0E200CED7F400A1B0
+ E2005D75CC00C1CDF60000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B0B0B0008A8A8A00808080008080
+ 8000808080008A8A8A00B0B0B000000000000000000000000000000000000000
+ 0000000000000000000000000000000000004C67C400445EB500445EB500445E
+ B500445EB500445EB500445EB500445EB500445EB500445EB500445EB500445E
+ B500445EB500445EB500445EB500445EB500445EB500445EB500445EB500445E
+ B500445EB500445EB500445EB5004C67C4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DEDE
+ DE00D3D3D300CECECE00CECECE00C0C0C00097A7D7005769A700293462002530
+ 5800253058002934620032427B005769A700C0C0C000C7C7C700CECECE00D6D6
+ D600DEDEDE00DEDEDE0000000000000000000000000000000000000000000000
+ 0000C7C7C70045599A0026336000B2BDE500C7C7C700D2D2D200000000000000
+ 0000000000000000000000000000DADADA00C2C2C200475C9D002633620096A6
+ DB0000000000000000000000000000000000000000000000000000000000DEDE
+ DE00D3D3D300CECECE00CECECE00C0C0C00097A7D7005769A700293462002530
+ 5800253058002934620032427B005769A700C0C0C000C7C7C700CECECE00D6D6
+ D600DEDEDE00DEDEDE000000000000000000000000000000000000000000DEDE
+ DE00D3D3D300CECECE00CECECE00C0C0C00097A7D7005769A700293462002530
+ 5800253058002934620032427B005769A700C0C0C000C7C7C700CECECE00D6D6
+ D600DEDEDE00DEDEDE0000000000000000000000000000000000000000000000
+ 000000000000000000004259A70046589700455EAF002F4BAB001333A0000326
+ 9900032699001333A0001E3DA4002F4BAB004658970035447A004259A7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029387000364FA0008697D0002C3E8000758AD60000000000000000000000
+ 0000000000000000000000000000000000002E4286004359A5008596D0002739
+ 78007185D0000000000000000000000000000000000000000000000000000000
+ 000000000000000000004259A70046589700455EAF002F4BAB001333A0000326
+ 9900032699001333A0001E3DA4002F4BAB004658970035447A004259A7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000004259A70046589700455EAF002F4BAB001333A0000326
+ 9900032699001333A0001E3DA4002F4BAB004658970035447A004259A7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B9C6F1002E42880042538E002B49AE000B2EA10003279F0003279F000327
+ 9F0003279F0003279F0003279F0003279F002B49AE004760B10042538E00B9C6
+ F100000000000000000000000000000000000000000000000000000000000000
+ 0000263A7E007082BE00505F92003A53A60033478E0000000000000000000000
+ 000000000000000000000000000000000000294091007789C700505F94002942
+ 96003B529E000000000000000000000000000000000000000000000000000000
+ 0000B9C6F1002E42880042538E002B49AE000B2EA10003279F0003279F000327
+ 9F0003279F0003279F0003279F0003279F002B49AE004760B10042538E00B9C6
+ F100000000000000000000000000000000000000000000000000000000000000
+ 0000B9C6F1002E42880042538E002B49AE000B2EA10003279F0003279F000327
+ 9F0003279F0003279F0003279F0003279F002B49AE004760B10042538E00B9C6
+ F100000000000000000000000000000000000000000000000000000000000000
+ 00002F4284004D5F9E00415CB7000328A3000328A3000328A3000328A3000328
+ A3000328A3000328A3000328A3000328A3000328A3001336A900415CB7002F42
+ 8400B9C6F1000000000000000000000000000000000000000000000000000000
+ 0000243E92006676A8005169BB007488CD002E459600576EC300000000000000
+ 0000000000000000000000000000A4B3EB00526CBF005F6EA4005B72BF003A54
+ A9002F407C000000000000000000000000000000000000000000000000000000
+ 00002F4284004D5F9E00415CB7000328A3000328A3000328A3000328A3000328
+ A3000328A3000328A3000328A3000328A3000328A3001336A900415CB7002F42
+ 8400B9C6F1000000000000000000000000000000000000000000000000000000
+ 00002F4284004D5F9E00415CB7000328A3000328A3000328A3000328A3000328
+ A3000328A3000328A3000328A3000328A3000328A3001336A900415CB7002F42
+ 8400B9C6F100000000000000000000000000000000000000000000000000475F
+ B100415DBD00082EAE00042BAC00042BAC00042BAC00042BAC00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00042BAC00042BAC00042BAC00042BAC00042BAC00415D
+ BD0046589A00475FB10000000000000000000000000000000000000000000000
+ 00005C6FB200354A9100A3B3EB004258A100657ECF002F4CB000000000000000
+ 00000000000000000000708ADA003953A6005668A70098AAE90000000000586D
+ B800374C9100000000000000000000000000000000000000000000000000475F
+ B100415DBD00082EAE00042BAC00042BAC00042BAC00042BAC001338B100CFD6
+ EE00FFFFFF001338B100042BAC00042BAC00042BAC00042BAC00042BAC00415D
+ BD0046589A00475FB1000000000000000000000000000000000000000000475F
+ B100415DBD00082EAE00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00415D
+ BD0046589A00475FB10000000000000000000000000000000000A8B7ED003E50
+ 8E001439B600042CB100042CB100042CB100042CB100042CB100FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00042CB100042CB100042CB100042CB100042CB1001439
+ B6004964BF003E508E0000000000000000000000000000000000000000000000
+ 00006373AC00435BA8005A72C600647ED1004A63B7001F48D1007D93DE000000
+ 000000000000D1DAF800455BAC00294EC700445CAD000000000098AAE9007485
+ C100485FB2000000000000000000000000000000000000000000A8B7ED003E50
+ 8E001439B600042CB100042CB100042CB100042CB100042CB100CFD6EF00FFFF
+ FF00FFFFFF00CFD6EF001439B600042CB100042CB100042CB100042CB1001439
+ B6004964BF003E508E0000000000000000000000000000000000A8B7ED003E50
+ 8E001439B600042CB100042CB100042CB100042CB100042CB1001439B600CFD6
+ EF00042CB100042CB100042CB100042CB100042CB100042CB100042CB1001439
+ B6004964BF003E508E0000000000000000000000000000000000455BAE004C62
+ AD00042DB600042DB600042DB600042DB600042DB600042DB600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00042DB600042DB600042DB600042DB600042DB600042D
+ B6002B4EC2004C62AD0000000000000000000000000000000000000000000000
+ 00004B5EA0007A8DCC004157A1004760B3003D5BBD003158DC004A62B800D2DB
+ F800000000005671CB00425EBF003058DE00465CA9006680D400435DB3006778
+ B3008699DF000000000000000000000000000000000000000000455BAE004C62
+ AD00042DB600042DB600042DB600042DB600042DB600143ABA00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00D0D7F100143ABA00042DB600042DB600042DB600042D
+ B6002B4EC2004C62AD0000000000000000000000000000000000455BAE004C62
+ AD00042DB600042DB600042DB600042DB600042DB600042DB600D0D7F100FFFF
+ FF00042DB600042DB600042DB600042DB600042DB600042DB600042DB600042D
+ B6002B4EC2004C62AD00000000000000000000000000788DD7004F63AA00395B
+ CD00173FC400173FC400173FC400173FC400173FC400173FC400FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00173FC400173FC400173FC400173FC400173FC400173F
+ C400153DC400395BCD00788DD700000000000000000000000000000000000000
+ 0000D1DAF8004D64B2008596D3007E98EC00819BEF006D8BEE0098AAEA00536D
+ C4004F4E4E008699DD00728FF2006D8BF0007994EC008FA4EB008C9EDD008CA0
+ E6000000000000000000000000000000000000000000788DD7004F63AA00395B
+ CD00173FC400173FC400173FC400264BC800D2D9F300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00264BC800173FC400173FC400173F
+ C400153DC400395BCD00788DD7000000000000000000788DD7004F63AA00395B
+ CD00173FC400173FC400173FC400173FC400264BC800D2D9F300FFFFFF00FFFF
+ FF00173FC400173FC400173FC400173FC400173FC400173FC400173FC400173F
+ C400153DC400395BCD00788DD70000000000000000004963B600546DC0003357
+ CF00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00234ACB00234ACB00234ACB00234ACB00234ACB00234A
+ CB002148CB003357CF004963B600000000000000000000000000000000000000
+ 000000000000BFCCF5005F79CD006E82C900788DD7008297DE00667DCC00BCC5
+ E300D7D6D6005F75C3008095DA008A9EE4007689D1006278C300526BC1000000
+ 000000000000000000000000000000000000000000004963B600546DC0003357
+ CF00234ACB00234ACB00234ACB00D4DBF400FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D4DBF4002F54CE00234ACB00234A
+ CB002148CB003357CF004963B60000000000000000004963B600546DC0003357
+ CF00234ACB00234ACB00234ACB002F54CE00D4DBF400FFFFFF00FFFFFF00FFFF
+ FF00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234A
+ CB002148CB003357CF004963B60000000000000000003D54A2005C76D0003257
+ D3002E53D2002E53D2002E53D2002E53D2002E53D2002E53D200FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF002E53D2002E53D2002E53D2002E53D2002E53D2002E53
+ D2002D53D2003257D3003D54A200000000000000000000000000000000000000
+ 0000000000000000000000000000AEBEF300859BE900788DD900CAD1E900EEEE
+ ED00EBEAEA00C2C6D6007382B6007289D900AFBEF300D3DBF900000000000000
+ 000000000000000000000000000000000000000000003D54A2005C76D0003257
+ D3002E53D2002E53D2002E53CF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D6DDF5002E53D2002E53
+ D2002D53D2003257D3003D54A20000000000000000003D54A2005C76D0003257
+ D3002E53D2002E53D2002E53D200D6DDF500FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002E53
+ D2002D53D2003257D3003D54A20000000000000000004158A600627CD900365C
+ DC004569DF004569DF004569DF004569DF004569DF004569DF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF004569DF004569DF004569DF004569DF004569DF004569
+ DF004468DF003A5FDC004158A600000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A6A6A5006E6D6D00DAD9
+ D900E8E7E700BFBDBC009A9897009D9D9D000000000000000000000000000000
+ 000000000000000000000000000000000000000000004158A600627CD900365C
+ DC004569DF004569DF004569DF004569DF004569DF004569DF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF004569DF004569DF004569DF004569DF004569DF004569
+ DF004468DF003A5FDC004158A60000000000000000004158A600627CD900365C
+ DC004569DF004467DC00B6C2EA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004569
+ DF004468DF003A5FDC004158A6000000000000000000435BAB006681DE003F64
+ E1005173E3005173E3005173E3005173E3005173E3005173E300FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF005173E3005173E3005173E3005173E3005173E3005173
+ E3004F71E3004368E100435BAB00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000807E7E00ACABAA00A0A0
+ 9F00F1F0F000BCBAB900AEACAB0082807F000000000000000000000000000000
+ 00000000000000000000000000000000000000000000435BAB006681DE003F64
+ E1005173E3005173E3005173E3005173E3005173E3005173E300FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF005173E3005173E3005173E3005173E3005173E3005173
+ E3004F71E3004368E100435BAB000000000000000000435BAB006681DE003F64
+ E1005173E3004764C7004C66BA00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005173
+ E3004F71E3004368E100435BAB000000000000000000475EB4006C86E0005275
+ E7005C7CE8005C7CE8005C7CE800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E1E7FB005C7CE8005C7C
+ E800597AE8005375E700475EB400000000000000000000000000000000000000
+ 0000000000000000000000000000000000009796960094929100BFBDBC00EAEA
+ E9008A898900C0BEBC00A8A6A400989694000000000000000000000000000000
+ 00000000000000000000000000000000000000000000475EB4006C86E0005275
+ E7005C7CE8005C7CE8005C7CE8005C7CE8005C7CE8005C7CE800FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF005C7CE8005C7CE8005C7CE8005C7CE8005C7CE8005C7C
+ E800597AE8005375E700475EB4000000000000000000475EB4006C86E0005275
+ E7005C7CE8005B7BE5004E69C300DCE1F100FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005C7C
+ E800597AE8005375E700475EB40000000000000000007790E100687FCD006E8C
+ F0007491F1007491F100738FEE00677DC500E0E5F300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007D98F2007491F1007491F1007491
+ F1006988EF006E8CF0007790E100000000000000000000000000000000000000
+ 00000000000000000000000000008B8A8900ABAAA900BAB9B800CBCAC9008786
+ 860000000000D2D2D100E7E6E500B6B5B4008987870000000000000000000000
+ 000000000000000000000000000000000000000000007790E100687FCD006E8C
+ F0007491F1007491F1007491F1007491F1007491F1007491F100FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF007491F1007491F1007491F1007491F1007491F1007491
+ F1006988EF006E8CF0007790E10000000000000000007790E100687FCD006E8C
+ F0007491F1007491F1007491F1006078C900677DC500E0E5F300FFFFFF00FFFF
+ FF007491F1007491F1007491F1007491F1007491F1007491F1007491F1007491
+ F1006988EF006E8CF0007790E1000000000000000000BFCDF6005971C3007E98
+ F1007E99F500819BF500819BF5006B82CD007084C700E2E6F400FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00E7ECFD00819BF500819BF500819BF5007E99
+ F5007290F4007E98F100CED8F700000000000000000000000000000000000000
+ 00000000000000000000000000009F9E9D00C0BFBE00E5E4E4008F8D8C000000
+ 0000000000008F8F8D00E2E2E100E4E3E3009E9C9B00B3B1B100000000000000
+ 00000000000000000000000000000000000000000000BFCDF6005971C3007E98
+ F1007E99F500819BF500819BF500819BF500819BF500819BF500FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00819BF500819BF500819BF500819BF500819BF5007E99
+ F5007290F4007E98F100CED8F7000000000000000000BFCDF6005971C3007E98
+ F1007E99F500819BF500819BF5007E98F1006B82CD007084C700FFFFFF00FFFF
+ FF00819BF500819BF500819BF500819BF500819BF500819BF500819BF5007E99
+ F5007290F4007E98F100CED8F7000000000000000000000000005975D100768D
+ DD00829CF5008BA4F6008BA4F60089A2F3007489CD00788AC800FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E9EEFD0092A9F6008BA4F6008BA4F6008BA4F600829C
+ F500809BF500768DDD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C8C8C700DFDFDF00F2F2F100C7C7C6000000
+ 000000000000D3D3D300A3A2A100F2F2F200C1C0BF00908E8D00000000000000
+ 00000000000000000000000000000000000000000000000000005975D100768D
+ DD00829CF5008BA4F6008BA4F6008BA4F6008BA4F6008BA4F600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF008BA4F6008BA4F6008BA4F6008BA4F6008BA4F600829C
+ F500809BF500768DDD00000000000000000000000000000000005975D100768D
+ DD00829CF5008BA4F6008BA4F6008BA4F60089A2F3007489CD00E3E7F400FFFF
+ FF008BA4F6008BA4F6008BA4F6008BA4F6008BA4F6008BA4F6008BA4F600829C
+ F500809BF500768DDD000000000000000000000000000000000000000000607A
+ D70095ABF50092A9F600A0B4F700A2B6F800A2B6F800A0B3F4008998C900E7EA
+ F400FFFFFF00A8BAF800A2B6F800A2B6F800A2B6F800A2B6F8009FB3F70094AA
+ F500758AD500607AD70000000000000000000000000000000000000000000000
+ 000000000000000000009A989700F8F8F800C9C8C80094949400000000000000
+ 000000000000000000000000000098979700F8F8F800E2E2E2009F9E9C000000
+ 000000000000000000000000000000000000000000000000000000000000607A
+ D70095ABF50092A9F600A0B4F700A2B6F800A2B6F800A2B6F800FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00A2B6F800A2B6F800A2B6F800A2B6F8009FB3F70094AA
+ F500758AD500607AD7000000000000000000000000000000000000000000607A
+ D70095ABF50092A9F600A0B4F700A2B6F800A2B6F800A2B6F8008898CF00A2B6
+ F800A2B6F800A2B6F800A2B6F800A2B6F800A2B6F800A2B6F8009FB3F70094AA
+ F500758AD500607AD70000000000000000000000000000000000000000000000
+ 000090A2E2009CB1F7009CB1F700AEBFF800AEBFF800AEBFF80091A0D000929F
+ CA00DBE0F300AEBFF800AEBFF800AEBFF800AEBFF800A9BBF8009CB1F7008EA1
+ E300546FCA000000000000000000000000000000000000000000000000000000
+ 00000000000095959400C6C5C400E3E3E20092918F0000000000000000000000
+ 000000000000000000000000000000000000E9E9E900EEEEEE00C5C5C4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000090A2E2009CB1F7009CB1F700AEBFF800AEBFF800AEBFF8008B99C7008B99
+ C7008B99C700AEBFF800AEBFF800AEBFF800AEBFF800A9BBF8009CB1F7008EA1
+ E300546FCA000000000000000000000000000000000000000000000000000000
+ 000090A2E2009CB1F7009CB1F700AEBFF800AEBFF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800A9BBF8009CB1F7008EA1
+ E300546FCA000000000000000000000000000000000000000000000000000000
+ 00005870C70092A5E300A3B6F700ACBDF800B5C5F900B9C8F900B6C5F600A1AE
+ D900B6C5F600B9C8F900B9C8F900B9C8F900ACBDF800A2B6F800A1B5F7005870
+ C700BFCDF6000000000000000000000000000000000000000000000000000000
+ 0000C7C7C700A8A7A500DDDDDC009C9A9900D3D3D30000000000000000000000
+ 0000000000000000000000000000000000009C9B9900F3F2F200DFDFDE00BDBD
+ BD00000000000000000000000000000000000000000000000000000000000000
+ 00005870C70092A5E300A3B6F700ACBDF800B5C5F900B9C8F900B9C8F900B9C8
+ F900B9C8F900B9C8F900B9C8F900B9C8F900ACBDF800A2B6F800A1B5F7005870
+ C700BFCDF6000000000000000000000000000000000000000000000000000000
+ 00005870C70092A5E300A3B6F700ACBDF800B5C5F900B9C8F900B9C8F900B9C8
+ F900B9C8F900B9C8F900B9C8F900B9C8F900ACBDF800A2B6F800A1B5F7005870
+ C700BFCDF6000000000000000000000000000000000000000000000000000000
+ 00000000000000000000627DD900879BE300A0B3F500A3B6F800A4B7F8009FB3
+ F7009FB3F700A2B6F800A3B6F800A0B4F700879BE300677ECC00627DD9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A19F9D00EBEBEA00C0BFBE00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A6A5A500C4C3C200A2A0
+ 9E00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000627DD900879BE300A0B3F500A3B6F800A4B7F8009FB3
+ F7009FB3F700A2B6F800A3B6F800A0B4F700879BE300677ECC00627DD9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000627DD900879BE300A0B3F500A3B6F800A4B7F8009FB3
+ F7009FB3F700A2B6F800A3B6F800A0B4F700879BE300677ECC00627DD9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D500637BCC007C91DA0092A8F00091A7
+ F10092A8F10092A8F000879DE7007B90D9005E79D500AFBFF300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A4A2A000D2D1D0009A999800000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009C9A9900A5A3
+ A100000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D500637BCC007C91DA0092A8F00091A7
+ F10092A8F10092A8F000879DE7007B90D9005E79D500AFBFF300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D500637BCC007C91DA0092A8F00091A7
+ F10092A8F10092A8F000879DE7007B90D9005E79D500AFBFF300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CED8F8007C93E5005771C9005871
+ C8005871C8005771C9005E79D6007C93E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009C9A99009D9B9A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009C9A
+ 9900000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CED8F8007C93E5005771C9005871
+ C8005871C8005771C9005E79D6007C93E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CED8F8007C93E5005771C9005871
+ C8005871C8005771C9005E79D6007C93E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000808080007D7D7D009D9D
+ 9D00C5C5C500C5C5C500C5C5C500C5C5C500C7C7C700C7C7C700C8C8C800CECE
+ CE00CFCFCF000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DEDE
+ DE00D3D3D300CECECE00CECECE00C0C0C00097A7D7005769A700293462002530
+ 5800253058002934620032427B005769A700C0C0C000C7C7C700CECECE00D6D6
+ D600DEDEDE00DEDEDE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B0B0B000A6A6A600F9F8
+ F800838382009E9E9E0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000004259A70046589700455EAF002F4BAB001333A0000326
+ 9900032699001333A0001E3DA4002F4BAB004658970035447A004259A7000000
+ 0000000000000000000000000000000000000000000026366D0026366D002636
+ 6D0026366D0026366D0026366D0026366D0026366D0026366D0026366D002636
+ 6D0026366D0026366D0026366D0026366D0026366D0026366D0026366D002636
+ 6D0026366D0026366D0026366D0031458D0000000000354A88002E3D70002E3D
+ 70002E3D70002E3D70002E3D70002E3D70002E3D70002E3D70002E3D70002E3D
+ 70002E3D70002E3D70002E3D70002E3D70002E3D70002E3D70002E3D70002E3D
+ 70002E3D70002E3D7000D2D2D20000000000000000000000000086868600DCDC
+ DC00ACABA9008988870080808000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B9C6F1002E42880042538E002B49AE000B2EA10003279F0003279F000327
+ 9F0003279F0003279F0003279F0003279F002B49AE004760B10042538E00B9C6
+ F100000000000000000000000000000000000000000003269B000D2A90000D2A
+ 90000D2A90000D2A90000D2A90000D2A90000D2A90000D2A90000D2A90000D2A
+ 90000D2A90000D2A90000D2A90000D2A90000D2A90000D2A90000D2A90000D2A
+ 90000D2A90000D2A90000D2A9000293973000000000030438600E6EAF700E5E9
+ F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9
+ F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9F600E5E9
+ F600E5E9F600E5E9F60000000000000000000000000000000000000000008F8F
+ 8F00DCDCDB00A5A4A2008A898800D3D3D3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00002F4284004D5F9E00415CB7000328A3000328A3000328A3000328A3000328
+ A3000328A3000328A3000328A3000328A3000328A3001336A900415CB7002F42
+ 8400B9C6F100000000000000000000000000000000000429A8002E3F7E000000
+ 00004F70DE004F70DE004F70DE004F70DE004F70DE0039509D00354A9100506E
+ D400506ED400506ED400506ED400506ED400000000003A51A1005475E2005979
+ E3005979E3005878E3003A51A1000000000000000000354A9200E5EAF8004364
+ D2000430C2000430C2003659CE000430C2000430C2000430C2000430C2000430
+ C2000430C2003659CE000430C2000430C2000430C2003659CE000430C2000430
+ C2004364D200E5EAF80000000000000000000000000000000000000000000000
+ 0000CECECE00EBEBEA00C0BFBE008A8988007E7E7E00D3D3D300000000000000
+ 0000000000000000000000000000B6C3F0003E55A10000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000475F
+ B100415DBD00082EAE00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00415D
+ BD0046589A00475FB100000000000000000000000000082EAE00314284000000
+ 00005073E8000537DE000537DE000537DE005073E8003E55A900394F9B004F6F
+ DB000432CD000432CD000432CD004F6FDB00000000004058AF005F80EF002A56
+ E9002A56E9002855E9004058AF000000000000000000384E9800E5EAF9004162
+ D1000432C9000432C900365BD3000432C9000432C9000432C9000432C9000432
+ C9000432C900365BD3000432C9000432C9000432C900365BD3000432C9000432
+ C9004365D600E5EAF90000000000000000000000000000000000000000000000
+ 00007E7E7E00CECECE00EBEBEA00A5A4A2008A8988007E7E7E00000000000000
+ 00000000000000000000B6C3F000273872002E417F0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000A8B7ED003E50
+ 8E001439B600042CB100042CB100042CB100042CB100042CB100042CB100042C
+ B100042CB100042CB100A0AFE100042CB100042CB100042CB100042CB1001439
+ B6004964BF003E508E000000000000000000000000001137B800334689000000
+ 00004F74EF00053AE900053AE900053AE9004F74EF00425CB2003D55A5005072
+ E3000535D8000535D8000535D8005072E30000000000435CB4006A8AF300426A
+ F000426AF0003F68F000435CB40000000000000000003B519F00DADFED004A64
+ B9000937D0000A38D0003B60D9000A38D0000A38D0000A38D0000A38D0000A38
+ D0000A38D0003B60D9000A38D0000A38D0000A38D0003A5FD9000A38D0000836
+ D0004467DB00E6EBFA0000000000000000000000000000000000000000000000
+ 0000D3D3D3007E7E7E00CECECE00C0BFBE00A5A4A2008A898800D3D3D3000000
+ 000000000000B6C5F100283873006472A000364E960000000000000000000000
+ 0000000000000000000000000000000000000000000000000000455BAE004C62
+ AD00042DB600042DB600042DB600042DB600042DB600042DB600042DB600042D
+ B600042DB60003279F00FFFFFF009FAFE200042DB600042DB600042DB600042D
+ B6002B4EC2004C62AD000000000000000000000000002248C800384D95000000
+ 00005B7EF2001D4DED001D4DED001D4DED005B7EF200455FB600455FB6005075
+ F100053AEB00053AEB00053AEB005075F10000000000455FB6007592F4006686
+ F3006686F300597CF200455FB60000000000000000004159AB00E5EAFB007E98
+ ED003958C0001D48D700496DE5001D49DA001A41C3002F4FBA00B8C4EB003B5B
+ C6001D49DC00496DE5001E4BDF001E4BDF001E4BDF00496DE5001D4ADF001543
+ DE00496DE500E5EAFB0000000000000000000000000000000000000000000000
+ 00000000000000000000D3D3D300CECECE00EBEBEA00C0BFBE00706F6E005C5C
+ 5C009DADE2006979AE008192CC007E8EC7006077C40000000000000000000000
+ 00000000000000000000000000000000000000000000788DD7004F63AA00395B
+ CD00173FC400173FC400173FC400173FC400173FC400173FC400173FC400173F
+ C400173FC40012329D00FFFFFF00FFFFFF00A6B6E800173FC400173FC400173F
+ C400153DC400395BCD00788DD70000000000000000002B51D0003C519B000000
+ 00006485F300305CEE00315DEF00305CEE006485F3004760B7004760B7005075
+ F100053AEB00053AEB00053AEB005075F100000000004760B7007590EC008BA2
+ EE008BA2EE00849DEE004760B7000000000000000000445DB100E6EBFC004A6F
+ EA00C7D1F2004260C6004868D3003656BF008FA1DE00D4DCF90089A1F200B0BD
+ E8002D52CC005074EB002854E6002854E6002854E6005074EB002854E6001C4A
+ E5004B70EA00E6EBFC0000000000000000000000000000000000000000000000
+ 00000000000000000000000000007E7E7E00CECECE00EBEBEA00737271006367
+ 74003D5093008195D7005871C3007A8CCA00A2B3E90000000000000000000000
+ 000000000000000000000000000000000000000000004963B600546DC0003357
+ CF00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234A
+ CB00234ACB001C3BA300FFFFFF00FFFFFF00FFFFFF00ABBAEB00234ACB00234A
+ CB002148CB003357CF004963B60000000000000000003459D7003E54A1000000
+ 00006C8BF300446BF000456CF000446BF0006D8CF3004861B9004861B9005075
+ F100053AEB00053AEB00053AEB005075F100000000005069C7004861B9004861
+ B9004861B9004861B9005069C70000000000000000004761B700E6ECFD004D72
+ EF006D8BF100CAD4F40090A1DA00D5DDFA0099AEF600476DEE00325DED00ADBE
+ F70092A3DD00577AF000325DED00325DED00325DED00577AF000325DED002351
+ EB004E73EF00E6ECFD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D3D3D3007E7E7E00A7A7A70081859400455B
+ A6007084C7005A75D2004F6AC7008496D300B7C5F10000000000000000000000
+ 000000000000000000000000000000000000000000003D54A2005C76D0003257
+ D3002E53D2002E53D2002B4FC700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AFBEEE002E53
+ D2002D53D2003257D3003D54A20000000000000000004368E300445CAD000000
+ 00007D98F5006989F3006D8CF3006A8AF3007D98F5004A64BB004A64BB005176
+ F100083CEB00083CEB00083CEB005176F1000000000000000000000000000000
+ 000000000000000000000000000000000000000000004B65BC00E6ECFD007290
+ F4006283F2006586F3006586F3006586F3006586F3006586F3006586F3006586
+ F3008CA5F600667FD2006586F3006586F300607FE6005874D1005975D400577B
+ F2007592F400E6ECFD0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A2B1E600788ED9008CA4
+ F5006B8AF0005071DF003257D000123ABF004E5F9B00465CAC00000000000000
+ 000000000000000000000000000000000000000000004158A600627CD900365C
+ DC004569DF004569DF003854B200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008BA1
+ EB004468DF003A5FDC004158A60000000000000000004D71E9004760B3000000
+ 0000829DF5007794F400829CF5007894F400829DF5004C65BC004C65BC00587C
+ F2001647EC001647EC001647EC00587CF2000000000000000000000000000000
+ 000000000000000000000000000000000000000000004C66BD00E6ECFD005277
+ F1004B71F1005075F1006D8CF3005075F1005075F1005075F1005075F1005075
+ F1005075F100C5CEEC004667D600496CDF00657DCE00B5C1E9009EAEE1003862
+ EF00567AF200E6ECFD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000BFCCF5004862BC0095ACF7007C97
+ F400718FF4003D63E3000534D1000431C600556EC200475890004F67B7000000
+ 00000000000000000000000000000000000000000000435BAB006681DE003F64
+ E1005173E3005173E300415CB600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005173
+ E3004F71E3004368E100435BAB0000000000000000005579EF004A63B9000000
+ 0000829CF5007592F40086A0F5007592F400829CF5004D66BE004D66BE005E80
+ F2002453EE002453EE002453EE005E80F2000000000000000000000000000000
+ 000000000000000000000000000000000000000000004E68BF00E6ECFD005479
+ F1005479F100597CF2007491F400597CF200597CF200597CF200597CF200597C
+ F200597CF200CDD7F90099A9DD007E92D500CED8FB00ACBDF800C4D0F900365A
+ D200587CF200E6ECFD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000BFCCF5004963BD007E92DA008AA3F600859F
+ F5007E99F5002250E9000F3FDD000534D1002146C400556FC20042538B000000
+ 00000000000000000000000000000000000000000000475EB4006C86E0005275
+ E7005C7CE8005C7CE8004963B900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C2CEF6005C7C
+ E800597AE8005375E700475EB40000000000000000006787F3004F68BF000000
+ 00004F69C0004F69C0004F69C0004F69C0004F69C000556FCC004F69C0006A8A
+ F3004068F0004169F0004068F0006B8AF3000000000000000000000000000000
+ 00000000000000000000000000000000000000000000506AC100E6ECFD00577B
+ F2006586F3006D8CF300829CF5006D8CF3006D8CF3006D8CF3006D8CF3006D8C
+ F3006D8CF300829CF5007491F4006D8CF3006D8CF300829CF5006C8BF300D2DB
+ FA008094D700DFE5F60000000000000000000000000000000000000000000000
+ 00000000000000000000BFCDF500889BDD00AFC0F900B4C4F900D1DBFB00B6C6
+ F9006A8AF300476EF000345FEF002250E9000534D1000431C6003356C900394C
+ 8E00B9C6F200000000000000000000000000000000007790E100687FCD006E8C
+ F0007491F1007491F1007491F1007491F1007491F1007491F1007491F1007491
+ F1007491F1005C73C000FFFFFF00FFFFFF00CAD5F9007491F1007491F1007491
+ F1006988EF006E8CF0007790E10000000000000000006F8DF3005069C1000000
+ 0000000000000000000000000000000000000000000000000000516AC100718F
+ F4004E73F1004F74F1004E73F100718FF4000000000000000000000000000000
+ 00000000000000000000000000000000000000000000526CC300E6ECFD007995
+ F400819BF50088A2F60088A2F60088A2F60088A2F60088A2F60088A2F60088A2
+ F60088A2F60088A2F60088A2F60088A2F60088A2F60088A2F60087A1F500839E
+ F500D8E0FC00E8EDFD0000000000000000000000000000000000000000000000
+ 000000000000000000004F6BC600B9C5EF00ABB9E9008E9FD9006F83CB0096A6
+ DD00B2C2F8005579F100466DF000345FEF001040DD000534D1000935C8005B6F
+ B2003A4D8F00CED7F700000000000000000000000000BFCDF6005971C3007E98
+ F1007E99F500819BF500819BF500819BF500819BF500819BF500819BF500819B
+ F500819BF500677CC400FFFFFF00FFFFFF00819BF500819BF500819BF5007E99
+ F5007290F4007E98F100CED8F70000000000000000007894F400516BC2000000
+ 0000000000000000000000000000000000000000000000000000526CC3007894
+ F4005C7FF2005D80F2005C7FF2007894F4000000000000000000000000000000
+ 00000000000000000000000000000000000000000000536DC400E6ECFD00597C
+ F2006F8DF3007C97F4008FA7F600819BF500819BF500819BF500819BF500819B
+ F500819BF5008FA7F600819BF500819BF500819BF5008EA6F6007A96F4005075
+ F1005F81F200E6ECFD0000000000000000000000000000000000000000000000
+ 00000000000000000000546FCB005975D1006580D9007990E300BFCDF600546F
+ CB008FA0DA007491F4005479F100466DF0002250E9001040DE000534D1004161
+ CC00596BAC0037488700314075003C539C0000000000000000005975D100768D
+ DD00829CF5008BA4F6008BA4F6008BA4F6008BA4F6008BA4F6008BA4F6008BA4
+ F6008BA4F6006F83C500FFFFFF00D4DDFC008BA4F6008BA4F6008BA4F600829C
+ F500809BF500768DDD0000000000000000000000000088A2F600546DC4000000
+ 0000000000000000000000000000000000000000000000000000546EC500839E
+ F5007794F4007A96F4007894F400839EF5000000000000000000000000000000
+ 000000000000000000000000000000000000000000005670C700E6ECFD005378
+ F100577BF2006384F3007F9AF5006E8DF3006E8DF3006E8DF3006F8DF3006F8D
+ F3006F8DF300829DF5006E8DF3006E8DF3006C8BF3007E99F5006082F2003F68
+ F000587CF200E6ECFD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007488CF00B1BFF000829DF500466DF000345FEF002250E900042D
+ B600082BA100788AC60040539300B8C5F200000000000000000000000000607A
+ D70095ABF50092A9F600A0B4F700A2B6F800A2B6F800A2B6F800A2B6F800A2B6
+ F800A2B6F8008E9FD800A2B6F800A2B6F800A2B6F800A2B6F8009FB3F70094AA
+ F500758AD500607AD70000000000000000000000000092A9F600556EC5000000
+ 0000000000000000000000000000000000000000000000000000566FC60087A1
+ F500829CF50087A1F500829DF50087A1F5000000000000000000000000000000
+ 000000000000000000000000000000000000000000005771C800E6ECFD00496F
+ F0005A7DF2005E80F2007E99F5006183F2006183F2006283F2006283F2006283
+ F2006283F2007F9AF5006283F2006183F2006183F2007D98F5005D80F2005378
+ F1004B71F100E6ECFD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007991E400687DCA00B3C1F1005277F100466DF000345FEF001035
+ B200788CCF009CA8CF00BAC7F300000000000000000000000000000000000000
+ 000090A2E2009CB1F7009CB1F700AEBFF800AEBFF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800A9BBF8009CB1F7008EA1
+ E300546FCA00000000000000000000000000000000009AAFF700566FC6000000
+ 00000000000000000000000000000000000000000000000000005770C7008AA3
+ F60088A2F60096ACF7008AA3F6008AA3F6000000000000000000000000000000
+ 000000000000000000000000000000000000000000005771C800E6ECFD00E6EC
+ FD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6EC
+ FD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6EC
+ FD00E6ECFD00E6ECFD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000092A7EC006179CA009CB1F7004F74F100385CD2008196
+ DA009FACD6004F67B50000000000000000000000000000000000000000000000
+ 00005870C70092A5E300A3B6F700ACBDF800B5C5F900B9C8F900B9C8F900B9C8
+ F900B9C8F900B9C8F900B9C8F900B9C8F900ACBDF800A2B6F800A1B5F7005870
+ C700BFCDF60000000000000000000000000000000000A8BAF8005872C9000000
+ 00000000000000000000000000000000000000000000000000005872C9007D97
+ EE0090A7F10097ACF20090A7F1007D97EE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005670C700647ED2008A9DDC005B74
+ CA00C1CDF6000000000000000000000000000000000000000000000000000000
+ 00000000000000000000627DD900879BE300A0B3F500A3B6F800A4B7F8009FB3
+ F7009FB3F700A2B6F800A3B6F800A0B4F700879BE300677ECC00627DD9000000
+ 00000000000000000000000000000000000000000000AFBFF5005872C9000000
+ 00000000000000000000000000000000000000000000000000005B76D2005872
+ C9005872C9005872C9005872C9005872C9000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005771C8008EA0DF00A5B2DD00C1CD
+ F600000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D500637BCC007C91DA0092A8F00091A7
+ F10092A8F10092A8F000879DE7007B90D9005E79D500AFBFF300000000000000
+ 000000000000000000000000000000000000000000005872C9005B76D2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005771C800A3B0DE005C75CB000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CED8F8007C93E5005771C9005871
+ C8005871C8005771C9005E79D6007C93E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004A60B0002839760026356C00283976004A60B000A3B3EA00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DCDC
+ DC00DADADA00C9C9C900C7C7C700C7C7C700C0C0C000C0C0C000A4B1DD00333F
+ 6900303A6200465690000000000000000000CBCBCB0025325F0025325F002532
+ 5F0025325F0025325F0025325F0025325F0025325F0025325F0025325F002532
+ 5F0025325F0025325F0025325F0025325F0025325F0025325F0025325F002532
+ 5F0025325F0025325F0026346600CBCBCB000000000042579E0036457D002E3C
+ 6D00283868008D9DD300C0C0C000C0C0C000C0C0C000C0C0C000C2C2C200CECE
+ CE00CECECE00CECECE00DEDEDE00DEDEDE00DEDEDE0000000000000000000000
+ 00000000000000000000000000000000000000000000000000003B53A4002840
+ 93001A3FBA003453BC003F5CBD003453BC001A3FBA000C31B0003B53A4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D5DCF600384C8A00445698002D49
+ A7004D67C1006780D300627ACA0000000000000000003855B5003A56B5003B57
+ B5003C57B4003D58B5003D58B5003D58B5003D58B5003D58B5003D58B5003D58
+ B5003D58B5003D58B5003D58B5003D58B5003D58B5003D58B5003D58B5003C58
+ B5003B57B5003A56B5002637740000000000000000003F59B0005A78DE004D67
+ BE00334279002A3C780000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005069C0002E47A2000734
+ C8005069BC00475AA20043579D00475AA2005069BC002D52CE002E47A2005069
+ C000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000394D8C0043569800435CB0004E69
+ C1006982D500768FE2004962B20000000000000000003753B2000F34AF001337
+ AF00163AB000173AB000173AB000173AB000173AB000173AB000173AB000173A
+ B000173AB000173AB000173AB000173AB000173AB000173AB000173AB0001539
+ B0001337AF000F34AE00283A7C000000000000000000415BB2006F8DF3002F58
+ E2003C57B1002A38700000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003F56A9001843D5003059
+ E1004059AC008A9FE600000000008A9FE6004059AC005A70BC001843D5003F56
+ A900ACBCF1000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D5DCF60044579900425BAF00324DAA008196
+ DB0097AAE900889FED004961B2000000000000000000415EBF001F44BC00274A
+ BD002D4EBD002D4EBD002D4EBD002D4EBD002D4EBD002D4EBD002D4EBD002D4E
+ BD002D4EBD002D4EBD002D4EBD002D4EBD002D4EBD002D4EBD002D4EBD002C4E
+ BD00284BBD001F44BC002D41860000000000000000004A65BF00657DCF00899F
+ E800647ED800536DC1003F57A700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003B61DF002A57EE006076
+ C20000000000000000000000000000000000000000008FA3E9002A57EE003B61
+ DF00445DB6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D5DCF6003E508F0046589A00314CA9005670C4008297DB00AFBF
+ F3008DA5F400607ACD00D8E0F80000000000000000004764C600284CC4003254
+ C4003556C5003556C5003556C5003556C5003556C5003556C5003556C5003556
+ C5003556C5003556C5003556C5003556C5003556C5003556C5003556C5003556
+ C5003254C400284CC4002F448D000000000000000000BFCCF5004862BC006A81
+ D000556FC5003355C700506CCC004E65B40090A3E20000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000486CE8003C65ED00556C
+ BC000000000000000000000000000000000000000000000000003963EF004A6E
+ E600445DB4000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003F519100475A9C00435CAF005771C5008297DB00A6B6EB00849E
+ F2005C76CE004C63AF000000000000000000000000004C6ACD003155CB003C5D
+ CC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5F
+ CC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5FCC003F5F
+ CC003C5DCC003155CB0031479200000000000000000000000000BFCCF5004A64
+ BD008FA4E8005670C400647DD100425596003645760035498F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006080EB004A6FEE005168
+ BB00000000000000000000000000000000000000000000000000476EF0006080
+ EB00455EB5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D5DCF700475A9C00425BAF00324DAA008297DB00A8B8EC00A8B9F2005E79
+ CF004F65B000D8E0F8000000000000000000000000005C79DA004668D8005674
+ DA005876DA005876DA005876DA005876DA005876DA005876DA005876DA005876
+ DA005876DA005876DA005876DA005876DA005876DA005876DA005876DA005876
+ DA005674DA00486AD900374E9D00000000000000000000000000000000000000
+ 00004F68C1007087D40095A8E9004462C8005570CA00465AA00032458600B8C5
+ F100000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000008397DB006888F3006F88
+ DF0000000000000000000000000000000000C9D4F8004A64BD006886EC007F92
+ D100607AD3000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D3D3
+ D300485584004B63B4004A65C000758CD800ABBBF2008FA6F400607BD100D8E0
+ F80000000000000000000000000000000000000000006581E1005273E000627F
+ E1006682E1006682E1006682E1006682E1006682E1006682E1006682E1006682
+ E1006682E1006682E1006682E1006682E1006682E1006682E1006682E1006682
+ E1006380E1005474E0003A51A300000000000000000000000000000000000000
+ 0000BFCDF600506AC3007288D500637AC5004563C8003B5BC800394A86003142
+ 7D00A4B3EA00293B7B00283871002E4185000000000000000000000000000000
+ 000000000000000000000000000000000000000000006076C20096ACF4007391
+ F4004C64BE0090A4EA000000000090A4EA004C64BE009DACDE00A0B3F3005E73
+ BB004159AB000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A2A2A2007A7978006B6969006A6867006B6969007A797800C5C5C5007371
+ 710072737D005366A8007088D7007F96E30089A2F400667FD300526AB5000000
+ 000000000000000000000000000000000000000000006D89E8005D7DE7006F8B
+ E800748FE900748FE900748FE900748FE900748FE900748FE900748FE900748F
+ E900748FE900748FE900748FE900748FE900748FE900748FE900748FE900748F
+ E900718CE900607FE7003C55A800000000000000000000000000000000000000
+ 000000000000BFCDF600536CC50098AAE900637AC6004566D4003954B1003A49
+ 7E0035406900576EB900566DBA00556BB400374E9900CED7F700000000000000
+ 000000000000000000000000000000000000000000005C76D2008295D6009EB2
+ F500859BE400697EC9006076C200697EC900859BE400A9BBF800A0AEDF004362
+ CC002D4FC300BDCBF40000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000A3A2
+ A200AAA9A900DAD9D900EDEDEC00E7E7E700EBEBEB00D8D7D60078767500706E
+ 6D007D7B7A005567A300637AC4007B95EB00647ED400546CB700D8E0F8000000
+ 000000000000000000000000000000000000000000007C97F400708EF400829D
+ F4008EA6F5008EA6F5008EA6F5008EA6F5008EA6F5008EA6F5008EA6F5008EA6
+ F5008EA6F5008EA6F5008EA6F5008EA6F5008EA6F5008EA6F5008EA6F5008EA6
+ F50088A1F5007794F400425CB300000000000000000000000000000000000000
+ 00000000000000000000000000005770C800748BD900879DE8004D5D97004E65
+ B4004A6AD3000430C2000430C2000430C2004162D1005971C00046589B000000
+ 0000000000000000000000000000000000000000000000000000000000005D77
+ D3009CABE200BECBF500BCCAF600BECBF5009CABE200687CC600798FDA0086A0
+ F5004B71F1002E50C400435BAE00BDCBF4000000000000000000000000000000
+ 000000000000000000000000000000000000000000008C8B8B00A7A5A500ECEB
+ EB00BFBDBC00AAA8A700A09E9D009A9897009F9D9C00A8A6A500CFCECD00E6E5
+ E500A4A3A200BABABA009C9EAD006C80C200D8E0F80000000000000000000000
+ 000000000000000000000000000000000000000000007E99F500708EF400829D
+ F50093AAF60097ADF70099AFF70099AFF70099AFF70099AFF70099AFF70099AF
+ F70099AFF70099AFF70099AFF70099AFF70099AFF70099AFF70099AFF70099AF
+ F70091A8F6007E99F500445DB400000000000000000000000000000000000000
+ 0000000000000000000000000000C1CDF6005872CA006F85D000516BBE004A6C
+ DC00123ED2000433D0000433D0000433D0000937D2002F56D8005775D700455E
+ B500BDCBF4000000000000000000000000000000000000000000000000000000
+ 0000657FD9004C65BF004C65BC004C65BF00657FD900AEBEF2004C65BF007A90
+ DB0086A0F5001848EB002F51C500445CAE000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A2A1A000EDECEC00D1CF
+ CF00A09E9D00B1B1B000BEBDBC00C3C2C200C2C2C200B6B5B400AFADAC00CAC8
+ C800E6E5E50087858400A19F9D00D5D5D3000000000000000000000000000000
+ 000000000000000000000000000000000000000000007D98F5006989F3007995
+ F40088A2F6008FA7F60098AEF700A3B6F800A3B6F800A3B6F800A3B6F800A3B6
+ F800A3B6F800A3B6F800A3B6F800A3B6F800A3B6F800A3B6F800A3B6F800A0B4
+ F70096ACF700819BF500455EB600000000000000000000000000000000000000
+ 000000000000000000000000000000000000AEBEF3005E6FAD004B6FE7001242
+ E0000537DE000537DE000537DE000537DE000537DE000537DE001B49E1005E76
+ CA00455DB2008DA2E80000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCDF6004D66
+ C0007A90DB004B71F1001848EB003052C500BDCBF40000000000000000000000
+ 00000000000000000000000000000000000000000000EDEDED00D7D6D500B4B2
+ B100B9B8B700B9B8B700B7B6B500B7B7B600BCBABA00C1C0C000A19F9E00AEAC
+ AB00CFCECD0088868500C8C8C800000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005C79DA002E55D6002E55
+ D6002E55D6002E55D6006D87E0008DA5F60094ABF60097ADF7009AAFF7009AAF
+ F7009AAFF7009AAFF7009AAFF7009AAFF7009AAFF70099AFF70097ADF70090A8
+ F60086A0F5007794F4004761B800000000000000000000000000000000000000
+ 0000000000000000000000000000000000004963BC006A87E8002553EE002553
+ EE002553EE007C97F4007F9AF1007C97F4002553EE002553EE002553EE002553
+ EE004A70F0006983DB0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000BFCDF6007B91DC0086A0F5004B71F1003153C700475EB100BDCBF4000000
+ 00000000000000000000000000000000000088878700D9D7D700ADABAA00B2B1
+ B100C1C0BF00C3C3C200C3C2C200C0C0BF00BFBFBF00BBBABA00BCBCBB00B4B3
+ B200A8A6A500DCDBDB0088878700000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000007391F400456CF000456C
+ F000456CF000456CF0003A60E000A8BAF800ACBDF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800ABBD
+ F800A7B9F800A2B6F8004962B900000000000000000000000000000000000000
+ 0000000000000000000000000000000000004A64BB00718DEB003E67F0003E67
+ F0006888F300667CC5005A71C100667CC5006888F3003E67F0003E67F0003E67
+ F000486FF000718CE90000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004F69C3007B92DC0086A0F5001848EB003154C700485FB2000000
+ 00000000000000000000000000000000000085848300D0CECD00A3A1A000C4C3
+ C300CECDCD00D0D0D000D1D0CF00CAC9C900C7C6C600C2C2C000B6B4B400BCBC
+ BC009F9D9C00EBEBEB0085848300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000007894F4004B71F1004B71
+ F1004B71F1004B71F1004B71F100365BD700365BD700365BD700365BD700365B
+ D700365BD700365BD700365BD700365BD700365BD700365BD700365BD700365B
+ D700365BD700365BD7004A63BB00000000000000000000000000000000000000
+ 0000000000000000000000000000000000004F69C4007892E700567AF200567A
+ F20091A3E4009DB0EE00000000009DB0EE0091A3E400567AF200567AF2005D80
+ F2007794F4006B83D40000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000BFCDF600506AC4007C92DD004B71F1001848EB003254C800BFCB
+ F400000000000000000000000000000000008C8A8800CBCAC9009E9D9C00CBCA
+ CA00D8D7D700DBDBDB00DDDDDD00D7D7D600CFCFCE00C7C6C600B9B7B600B8B8
+ B8009A989700E7E7E6008C8A8800000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000819BF5005579F1005579
+ F1005579F1005579F1005579F1005579F1005D80F2007E99F500819BF500819B
+ F500819BF500819BF500819BF500819BF500819BF500819BF500819BF500819B
+ F500819BF500819BF5004C66BD00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000556FCC0096ACF7007995
+ F4005971C4000000000000000000000000005D75C500809AF10087A1F500728A
+ DB004F69C200BFCDF60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000BFCDF6007D93DD0086A0F5004B71F1003355
+ C9004A62B400BFCBF50000000000000000008F8D8D00D1D0CF00A4A2A100D2D2
+ D100E7E7E700EDEDED00F0F0F000ECEBEB00E4E4E400DADADA00C2C0BE00B6B6
+ B500A09E9D00EDEDEC008F8D8D00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000849EF5005B7EF2005B7E
+ F2005B7EF2005B7EF2005B7EF2006384F300829CF5007E91D5004E67BE004E67
+ BE004E67BE004E67BE004E67BE004E67BE004E67BE004E67BE004E67BE004E67
+ BE004E67BE004E67BE004E68C100000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D3DBF9009AACEA008FA7
+ F600647BC800000000000000000000000000657BC800859FF5009CB1F700516A
+ C400BFCDF6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000536DC6007E94DE0086A0F5001848
+ EB003456CA004B63B500000000000000000093929100DCDADA00AFADAD00C5C5
+ C400EBEBEB00F0F0F000F6F6F600F2F2F200E8E8E800DFDEDE00C2C2C200AFAD
+ AC00AAA8A700E2E1E00093929100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000088A2F6006183F2006183
+ F2006183F2006183F2006183F200839EF5008195D600536CC000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006278C900A2B4
+ F3008A9EE2009FB1F000000000009FB1F000869BE3009BB0F700788FDD00BFCD
+ F600000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C1CDF600536CC500859AE0004B71
+ F1001848EB003457CA00BFCBF50000000000ACACAC00EAE9E900C6C4C400A7A5
+ A400EBEBEB00F0F0F000F6F6F600F3F3F300E9E9E900DFDFDF00C3C2C200A09F
+ 9D00BFBDBC00C4C3C200ACACAC00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000008EA6F6008EA6F6008EA6
+ F6008EA6F6008EA6F6008EA6F600546DC10091A5EB0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005974
+ CF0098AAE400B2C2F900B4C4F900ADBEF8007D93DF00566FC700C1CDF6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000566FC8008295D400A1B1E500798F
+ DD0086A0F5004B71F1005E78D1005169BE0000000000BFBEBD00F2F2F200D7D6
+ D600A8A7A600CDCCCC00E6E6E600E9E9E900DDDDDD00C3C2C100B3B1B000D1CF
+ CF00ECEBEB00ADACAC0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000506AC100506AC100506A
+ C100506AC100506AC100506AC10091A5EB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C1CD
+ F6005C75CC00C1CEFA00B9C8F900B7C7F9005771C900C1CDF600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005874CF008DA0DF00C4CEF100657B
+ C5008B9FE30086A0F5006781DB00556DC600000000009F9E9D00C7C6C500F2F2
+ F200C6C4C400AFADAD00A4A2A1009E9C9C00A3A1A000ADABAA00D7D6D500EDEC
+ EC00C6C5C4000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000093A8ED009CAEE900A0B2EF008195DB00C1CDF60000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C1CDF6005874CF00556EC300B0BD
+ E7007A8CCA008399E1005872CA00C1CDF6000000000000000000A09F9F00C5C3
+ C200EAE9E900DCDADA00D1D0CF00CBCAC900D0CECD00D9D7D700F0F0F000C4C3
+ C100A09F9F000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C1CDF6005770
+ CA00BFCCF5000000000000000000000000000000000000000000000000000000
+ 0000B0AFAF00A19F9F00A9A7A500B0AEAC00A9A7A500A19F9F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D3D3D300C2C2C2003B4E
+ 91003B4E8E003B4E8E003B4E8E003B4E8E003B4E8E003B4E8E003B4E8E003B4E
+ 8E003B4E8E003B4E8E003B4E8E003B4E8E003B4E8E003B4E8E003B4E8E003B4E
+ 8E003B4E9100C2C2C200000000000000000000000000D6D6D600566AB0002836
+ 6700283667002836670028366700283667002836670028366700283667002836
+ 6700283667002836670028366700283667002836670028366700283667002836
+ 6700283667005468AB00DEDEDE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B6C3F000414F800023316200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000455CA5002F3E
+ 7100475CA400445BA800435AA700435AA600435AA600435AA500435AA500435A
+ A500445AA5004359A3004359A3004359A2004359A1004359A1004358A0004353
+ 8C002D3A660043589F0000000000000000000000000000000000000000003850
+ A3000536DB000536DB000536DB000536DB000536DB000536DB000536DB000536
+ DB000536DB000536DB000536DB000536DB000536DB000536DB000536DB004368
+ E4003850A3000000000000000000000000000000000000000000293C8000042D
+ B6000000000000000000042DB6006780D3006780D3005B75CF005772CE00536F
+ CC004765C9004765C9003F5EC7003758C5003758C5000931B800000000000000
+ 0000042DB600293C800000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CCD6
+ F60022357800435BAA0023336900000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006279C90030427E004660
+ B400072BA3000328A1000328A00003279F0003279F0003279F0003279D000326
+ 9C0003269C0003269A0003269A00032699000325970003259700032596002643
+ A300495EA5002E3D710000000000000000000000000000000000000000003851
+ A1000535D8000535D8000535D8000535D8000535D8000535D8000535D8000535
+ D8000535D8000535D8000535D8000535D8000535D8000535D8000535D8004368
+ E1003851A10000000000000000000000000000000000000000002A3E8200042D
+ B7000000000000000000042DB7003052C4003052C4003052C4003052C4003052
+ C4003052C4003052C4003052C4003052C4003052C400042DB700000000000000
+ 0000042DB7002A3E820000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002F43
+ 840043538C00425CB00025356D00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000283C8000495EA8002748
+ B5000429A7000429A7000429A6000429A5000328A4000328A3000328A2000328
+ A1000328A00003279F0003279F0003279E0003279D0003269C0003269B000326
+ 9A002745A800485B9B000000000000000000000000000000000000000000384F
+ 9F000534D4000534D4000534D4000534D4000534D4000534D4000534D4000534
+ D4000534D4000534D4000534D4000534D4000534D4000534D4000534D4004367
+ DF00384F9F0000000000000000000000000000000000000000002B3F8400042E
+ B900042EB900042EB900042EB900395AC800395AC800395AC800395AC800395A
+ C800395AC800395AC800395AC800395AC800395AC800042EB900042EB900042E
+ B900042EB9002B3F840000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000046589600405B
+ B8000F33A900435EBA002A3B7700000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002B3D81004361C700042C
+ B300042CB200042CB100042BB000042BAF00042BAE00042BAD00042BAC00042A
+ AB00042AAA00042AAA00042AA9000429A8000429A7000429A6000429A6000328
+ A4000328A300435EBB000000000000000000000000000000000000000000384E
+ 9B000634CD000735CD000735CD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000735CD000735CD004366
+ D900384E9B0000000000000000000000000000000000000000002D418700042E
+ BC00042EBC00042EBC00042EBC004C6ACF004C6ACF004C6ACF004C6ACF004C6A
+ CF004C6ACF004C6ACF004C6ACF004C6ACF004C6ACF00042EBC00042EBC00042E
+ BC00042EBC002D4187000000000000000000000000000000000090A3E3003B51
+ A2002F4385002F4284002E4284002E4183002E4183002E408100405DBD000F34
+ AF00042AAA00425EBD002C3E7D002B3D7C002B3C7A002B3C7A002B3C79002A3C
+ 7800344A95008196DC000000000000000000000000002D4185004362CA00042D
+ B800042DB600042DB600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00042AAA00042A
+ AA00042AA900425EBD000000000000000000000000000000000000000000384E
+ 98000E3ACB000F3ACB000F3ACB000C2FA3000C2FA3000C2FA3000C2FA3000C2F
+ A3000C2FA3000C2FA3000C2FA3000C2FA3000C2FA3000F3ACB000F3ACB004567
+ D600384E980000000000000000000000000000000000000000002F438A00042F
+ BE000000000000000000042FBE005673D3005673D3005673D3005673D3005673
+ D3005673D3005673D3005673D3005673D3005673D300042FBE00000000000000
+ 0000042FBE002F438A00000000000000000000000000546CC100405498004D66
+ B7004261CA004362CA004362C9004261C7004361C7004361C7001036B600042C
+ B100042BB0003655BE00425FC1004360C100425FBF00425EBE00435FBE004661
+ B9004B60A8003B4C87000000000000000000000000002F438A004363CE000530
+ BE00042EBC00042EBB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0003259600042B
+ AE00042BAE00425FC1000000000000000000000000000000000000000000384D
+ 9800153FCA001740CA001740CA001740CA001740CA001740CA001740CA001740
+ CA001740CA001740CA001740CA001740CA001740CA001740CA001740CA004868
+ D500384D9800000000000000000000000000000000000000000030448C00042F
+ C0000000000000000000042FC0005F7AD7005F7AD7005F7AD7005F7AD7005F7A
+ D7005F7AD7005F7AD7005F7AD7005F7AD7005F7AD700042FC000000000000000
+ 0000042FC00030448C00000000000000000000000000506AC100294FD0000C38
+ CA000D38C8000C37C6000C37C6000934C3000833C2000833C1000631BF00052F
+ BD00042EBC00042EBA00042EB900042DB800042DB600042DB600042DB500042C
+ B300042CB2002346BB00354B96000000000000000000334993004A6BD800143E
+ CA00153EC900143DC800123CC8000C30A8000A2FA700092EA700062BA4001437
+ A9001437A9000328A1000328A1000328A00003279F0003279F0003279F00042D
+ B800042DB8004362C90000000000000000000000000000000000000000003A50
+ 9B00254CCF00274ECF00274ECF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00274ECF00274ECF004D6D
+ D8003A509B000000000000000000000000000000000000000000324790000430
+ C3000430C3000430C3000430C300718ADD00718ADD00718ADD00718ADD00718A
+ DD00718ADD00718ADD00718ADD00718ADD00718ADD000430C3000430C3000430
+ C3000430C300324790000000000000000000000000004B6BD7001440D1001641
+ D1001943CF001943CF001842CE00153FCB00143ECA00133DC900103AC7000E38
+ C5000D37C4000B35C2000933C1000832BF000630BD00052FBC00052FBB00042E
+ B900042DB8000831B90033468A000000000000000000354B98004E6FDC001D46
+ D1002149D1001F48D0001D46CF001A43CD001841CC001640CB002148CC00D1D9
+ F400D1D9F4000B36C5000A35C4000833C3000530C1000530C100042FBF00042F
+ BE00042FBD004363CD0000000000000000000000000000000000000000003B51
+ 9C002D53D2003055D2003055D2002745A9002745A9002745A9002745A9002745
+ A9002745A9002745A9002745A9002745A9002745A9003055D2003055D2005070
+ D9003B519C000000000000000000000000000000000000000000334893000430
+ C4000430C4000430C4000430C4007B92E0007B92E0007B92E0007B92E0007B92
+ E0007B92E0007B92E0007B92E0007B92E0007B92E0000430C4000430C4000430
+ C4000430C40033489300000000000000000000000000496CE1001945D800214B
+ D800264FD800254ED700234CD500214AD3001F48D1001E47D1001B44CE001A43
+ CD001841CC00163FCA00143DC800133DC800103AC5000F39C4000E38C3000A34
+ C0000933BF000630BD00364A90000000000000000000384F9D005172E000264F
+ D8002C53D7002A51D6002951D600254DD400234BD300214AD200D3DBF500FFFF
+ FF00FFFFFF00254CCF00153FCB00133DCA000F3AC8000E39C7000C37C7000833
+ C4000632C3004364D10000000000000000000000000000000000000000003C53
+ 9D003358D400375CD400375CD400375CD400375CD400375CD400375CD400375C
+ D400375CD400375CD400375CD400375CD400375CD400375CD400375CD4005271
+ DA003C539D000000000000000000000000000000000000000000354A95000532
+ C70000000000000000000532C700859BE300859BE300859BE300859BE300859B
+ E300859BE300859BE300859BE300859BE300859BE3000532C700000000000000
+ 00000532C700354A95000000000000000000000000004E72EA002B56E5003961
+ E6003D64E5003B62E3003A61E300375EE100365DE000355CDF003259DD003057
+ DC002F56DB002C54D9002B53D8002A52D700274FD500264ED400244CD3002149
+ D1001E47D0001640CD003A519B0000000000000000003C54A7005879E800375E
+ E2004267E3004065E2003F64E2003B61E0004569E100D9E0F800FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00D6DDF700365BDA00264ED600244DD600224BD4001E47
+ D2001742D0004B6CDB0000000000000000000000000000000000000000003E55
+ A1004366D900486AD900486AD900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00486AD900486ADA005776
+ DC003E55A1000000000000000000000000000000000000000000394F99000D39
+ CB000D39CB000D39CB000D39CB009CAEEA009CAEEA009CAEEA009CAEEA009CAE
+ EA009CAEEA009CAEEA009CAEEA009CAEEA009CAEEA000D39CB000D39CB000D39
+ CB000D39CB00394F99000000000000000000000000005176EE00335DEB00436A
+ EB00486DEB00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002C53
+ D8002850D7001E48D4003E54A00000000000000000003F58AB005C7DEC003F66
+ E7004D71E9004B6FE700496EE7005073E600DBE2F900FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00D8DFF8003158DC002F56DB002D55DA002951
+ D900204AD6004E6FDE0000000000000000000000000000000000000000004056
+ A2004A6CDB005171DD005171DD00405AB000405AB000405AB000405AB000405A
+ B000405AB000405AB000405AB000405AB000405AB0005171DD005070DD005977
+ DD004056A20000000000000000000000000000000000000000003B519B00113D
+ CE00113DCE00113DCE00113DCE00113DCE00113DCE00113DCE00113DCE00113D
+ CE00113DCE00113DCE00113DCE00113DCE00113DCE00113DCE00113DCE00113D
+ CE00113DCE003B519B000000000000000000000000005378F1003B64EF004D72
+ F0005277EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00385E
+ DF003259DD00264FDA004157A6000000000000000000415AB1006081F000486D
+ EC00587BED005679EC005477EC00DDE4FA00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005F7EE6003A60E000395FE000335A
+ DE002952DC005173E20000000000000000000000000000000000000000004157
+ A5005272DD005978DE005978DE005978DE005978DE005978DE005978DE005978
+ DE005978DE005978DE005978DE005978DE005978DE005978DE005978DE005D7B
+ E0004157A50000000000000000000000000000000000000000003E539E001641
+ D1001641D1001641D1001641D100728CE300728CE3006783E0006480E000607D
+ E0005574DD005574DD004D6EDC004568DA004568DA001641D1001641D1001641
+ D1001641D1003E539E00000000000000000000000000587CF2004A70F0006283
+ F2006989F3006888F3006787F3006485F3006384F3006183F2005F81F2005D80
+ F2005C7FF200597CF100587BF100567AF0005478EF005276EE005074EC004E73
+ EB00486DEA00365FE700465FB3000000000000000000455EB6006787F300597C
+ F2006E8DF3006D8CF3006B8AF3005B77D5005772CF005570CD00FFFFFF00FFFF
+ FF00FFFFFF004C69CB004A68CB004866CA004563C9004564CA004D71E700486D
+ E9003A62E700597BEA000000000000000000000000000000000000000000435A
+ A800617FE2006A86E3006A86E300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006A86E3006985E300617E
+ E100435AA80000000000000000000000000000000000000000004258A2001E48
+ D50000000000000000001E48D5004E6FDE004E6FDE004E6FDE004E6FDE004E6F
+ DE004E6FDE004E6FDE004E6FDE004E6FDE004E6FDE001E48D500000000000000
+ 00001E48D5004258A2000000000000000000000000005A7DF2005176F1006C8B
+ F3007592F4007491F4007290F400708EF4006E8DF3006D8CF3006A8AF3006989
+ F3006787F3006485F3006384F3006283F2005F81F2005E80F2005C7FF100597C
+ F0005176EF003D65EC004962B80000000000000000004660B7006B8AF3006183
+ F2007A96F4007894F4007693F4007391F400718FF4006F8DF300FFFFFF00FFFF
+ FF00FFFFFF005671CE006384F3006082F1005C7EF0005B7EF000597CEF005276
+ EE004269EB005C7EEE000000000000000000000000000000000000000000445B
+ AA006985E300728CE500728CE5005A6FB7005A6FB7005A6FB7005A6FB7005A6F
+ B7005A6FB7005A6FB7005A6FB7005A6FB7005A6FB700728CE500718BE5006481
+ E300445BAA0000000000000000000000000000000000000000004359A500234C
+ D700234CD700234CD700234CD7005978E0005978E0005978E0005978E0005978
+ E0005978E0005978E0005978E0005978E0005978E000234CD700234CD700234C
+ D700234CD7004359A5000000000000000000000000005D80F200587CF2007693
+ F400809BF500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006485
+ F3005B7EF200456CF0004C66BD0000000000000000004761B8006E8DF3006A8A
+ F300849EF500829DF500819BF5007E99F5007C97F4007A96F400FFFFFF00FFFF
+ FF00FFFFFF005E78CF006D8CF3006C8BF3006888F3006686F3006586F3005E80
+ F2004B71F0006082F1000000000000000000000000000000000000000000465D
+ AB00708BE5007A94E8007A94E8007A94E8007A94E8007A94E8007A94E8007A94
+ E8007A94E8007A94E8007A94E8007A94E8007A94E8007A94E8007892E6006683
+ E400465DAB000000000000000000000000000000000000000000455BA8002750
+ D9002750D9002750D9002750D9006481E4006481E4006481E4006481E4006481
+ E4006481E4006481E4006481E4006481E4006481E4002750D9002750D9002750
+ D9002750D900455BA8000000000000000000000000006183F2006586F30088A2
+ F60096ACF7007F92D2007D90D1007C90D2007A8ED1007A8ED100778CD100758A
+ D000758AD1007288D1007086D0007086D1006E85D0006C83CF006B82D0007B97
+ F4006E8DF3005277F1004F69C00000000000000000004963BA007491F4007995
+ F4009BB0F70099AFF70097ADF70093AAF60091A8F60090A8F600FFFFFF00FFFF
+ FF00FFFFFF007187D100839EF500829CF5007F9AF5007D98F5007B97F400718F
+ F400597CF2006686F3000000000000000000000000000000000000000000485F
+ AF007F98EA008AA0EB008AA0EB008AA0EB008AA0EB008AA0EB008AA0EB008AA0
+ EB008AA0EB008AA0EB008AA0EB008AA0EB008AA0EB008AA0EB0089A0EB006A86
+ E500485FAF0000000000000000000000000000000000000000004A60AD003058
+ DE0000000000000000003058DE007A94EA007A94EA007A94EA007A94EA007A94
+ EA007A94EA007A94EA007A94EA007A94EA007A94EA003058DE00000000000000
+ 00003058DE004A60AD000000000000000000000000006183F2006A8AF3008FA7
+ F600A2B6F800A0B4F7009FB3F7009CB1F7009BB0F70099AFF70097ADF70095AC
+ F70094ABF60091A8F60090A8F6008EA6F6008CA5F6008AA3F60089A2F600849E
+ F5007693F400577BF200506AC10000000000000000004B64BB007693F4007D98
+ F500A6B9F800A4B7F800A2B6F8009FB3F7009DB2F7009BB0F700FFFFFF00FFFF
+ FF00FFFFFF007B8FD1008EA6F6008CA5F60089A2F60087A1F500859FF5007995
+ F4005F81F2006888F30000000000000000000000000000000000000000004960
+ B000879EEB0093A8ED0093A8ED0093A8ED0093A8ED0093A8ED0093A8ED0093A8
+ ED0093A8ED0093A8ED0093A8ED007D8EC9007D8EC9007D8EC9007B8DC9005A73
+ C4004960B00000000000000000000000000000000000000000004C62AF00355C
+ E0000000000000000000355CE000849CEC00849CEC00849CEC00849CEC00849C
+ EC00849CEC00849CEC00849CEC00849CEC00849CEC00355CE000000000000000
+ 0000355CE0004C62AF000000000000000000000000006183F2006989F30091A8
+ F600ADBEF800ACBDF800AABCF800A7B9F800A6B9F800A5B8F800A2B6F800A1B5
+ F7009FB3F7009CB1F7009BB0F7009AAFF70097ADF70096ACF70094ABF6008CA5
+ F6007A96F4005A7DF200516BC20000000000000000004C65BC007C96EF007F9A
+ F500ADBEF800AFC0F900ADBEF800AABCF800A8BAF800A6B9F800A3B6F800899A
+ D3008798D2008496D2009AAFF70098AEF70094ABF60092A9F60090A8F6007B97
+ F4006283F200718EEE0000000000000000000000000000000000000000004B62
+ B2008EA4ED009BAEEF009BAEEF009BAEEF009BAEEF009BAEEF009BAEEF009BAE
+ EF009BAEEF009BAEEF009BAEEF008494CC00485EAB00485EAB00485EAB005167
+ B0004B62B20000000000000000000000000000000000000000004F64B1003960
+ E2003960E2003960E2003960E2008FA5EF008FA5EF008FA5EF008FA5EF008FA5
+ EF008FA5EF008FA5EF008FA5EF008FA5EF008FA5EF003960E2003960E2003960
+ E2003960E2004F64B1000000000000000000000000006581E0006183F200708E
+ F400A2B6F800A9BBF800ACBDF800ABBDF800AABCF800AABCF800A8BAF800A6B9
+ F800A5B8F800A2B6F800A1B5F700A0B4F7009CB1F70099AFF70093AAF6007B97
+ F4006283F2005D80F2005570CB0000000000000000007990E3005F77C8008AA2
+ F1008AA3F60091A8F60094ABF60094ABF60093AAF60093AAF60090A8F6008EA6
+ F6008DA5F6008AA3F60088A2F60086A0F500829DF500809BF5007995F4007391
+ F4007D97EF005D74C70000000000000000000000000000000000000000004D65
+ B6009BAEF000ABBBF200ABBBF200ABBBF200ABBBF200ABBBF200ABBBF200ABBB
+ F200ABBBF200ABBBF200ABBBF20092A0CF00C7D2F600AEBEF200718CE7004C65
+ B900BFCCF5000000000000000000000000000000000000000000536AB7004267
+ E6004267E6004267E6004267E600A2B4F300A2B4F300A2B4F300A2B4F300A2B4
+ F300A2B4F300A2B4F300A2B4F300A2B4F300A2B4F3004267E6004267E6004267
+ E6004267E600536AB7000000000000000000000000005C75CB006282EC006686
+ F3007995F400829CF500849EF50086A0F500859FF500849EF500839EF500829D
+ F500829CF500809BF5007F9AF5007E99F5007B97F4007894F4007290F4006586
+ F3006183F2006583EC007A92E500000000000000000000000000546FCB006078
+ C9007C97F400809BF500829DF500839EF500829DF500829DF500819BF500819B
+ F500809BF5007F9AF5007E99F5007E99F5007B97F4007A96F4007794F400718B
+ E6005E75C8006680D90000000000000000000000000000000000000000004E66
+ B80097ABEF00AEBEF300B1C1F300B2C1F300B2C1F300B2C1F300B2C1F300B2C1
+ F300B2C1F300B2C1F300B1C1F30096A3CF00A6B7F100738EE800546DC200BFCC
+ F500000000000000000000000000000000000000000000000000546BB900466B
+ E7000000000000000000466BE700AABBF400AABBF400AABBF400AABBF400AABB
+ F400AABBF400AABBF400AABBF400AABBF400AABBF400466BE700000000000000
+ 0000466BE700546BB9000000000000000000000000006983DD006079CB00627E
+ E0006586F3006888F3006A8AF3006B8AF3006B8AF3006B8AF3006B8AF3006B8A
+ F3006B8AF3006A8AF3006A8AF3006A8AF3006989F3006888F3006586F3006A88
+ EC006380E0005D77CC0000000000000000000000000000000000000000007991
+ E3005069C0005069C0005069C0005069C0005069C0005069C0005069C0005069
+ C0005069C0005069C0005069C0005069C0005069C0005069C0005069C000506A
+ C3007991E3000000000000000000000000000000000000000000000000004F67
+ BA00879FEE009DB0F100A5B6F100A8B9F200A8B9F200A8B9F200A8B9F200A8B9
+ F200A8B9F200A7B8F100A5B6F1008898CD006986E7005770C4004F67BD000000
+ 0000000000000000000000000000000000000000000000000000576DBB00496E
+ E9000000000000000000496EE900B2C2F500B2C2F500B2C2F500B2C2F500B2C2
+ F500B2C2F500B2C2F500B2C2F500B2C2F500B2C2F500496EE900000000000000
+ 0000496EE900576DBB0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000516A
+ C000516ABD00516ABD00516ABD00516ABD00516ABD00516ABD00516ABD00516A
+ BD00516ABD00516ABD00516ABD00516ABD00516AC000BFCDF500000000000000
+ 00000000000000000000000000000000000000000000000000007790E100546B
+ BE005A71C1005A71C1005A71C1005A71C1005A71C1005A71C1005A71C1005A71
+ C1005A71C1005A71C1005A71C1005A71C1005A71C1005A71C1005A71C1005A71
+ C100546BBE007790E10000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B6C5F1006177C500273773002534
+ 6A0025346A0027377300364D96006177C5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002D4085003A4A7D0047589300556AB000556A
+ B000556AB000556AB0004F62A100475893002D4085008195DB00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005B74C7004455
+ 94004F64AD005062A1004057A900000000000000000000000000000000000000
+ 00006780CF005369B3004F64AD005062A1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008297DD00334580005467A7003351B7001134AA002444B1004E68BF004E68
+ BF004E68BF004E68BF003C59B9002444B1003351B700506ABE005467A7008297
+ DD00000000000000000000000000000000000000000013131300121212001111
+ 1100111111001111110011111100111111001111110011111100111111001111
+ 1100111111001111110011111100111111001111110011111100121212001212
+ 120013131300141414001111110000000000031D3D00093C7B00093C7B00093C
+ 7B00093C7B00093C7B00093C7B00093C7B00093C7B00093C7B00093C7B00093C
+ 7B00093C7B00093C7B00093C7B00093C7B00093C7B00093C7B00093C7B00093C
+ 7B00093C7B00093C7B00010D1D00000000000000000000000000374E9E005671
+ CE000B206700435FBF0041569C002A3B75002A3B75002A3B75002A3B75002A3B
+ 7500364C960010266E000B206700435FBF00D1DAF80000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00003A4B8900566DB800415EC100294AB900546FC70093A3DB00E7EBF700E7EB
+ F700B9BCC600E7EBF700C2CBEA0093A3DB00294AB9001136B100415EC1003A4B
+ 89005068BB00000000000000000000000000000000003B3B3B003C3C3C003C3C
+ 3C003C3C3C003C3C3C003C3C3C003C3C3C003C3C3C003C3C3C003C3C3C003C3C
+ 3C003C3C3C003C3C3C003C3C3C003D3D3D003D3D3D003D3D3D003D3D3D003D3D
+ 3D003D3D3D003D3D3D001B1B1B00000000000C458B001D54AB001E54A9001E54
+ A9001E54AA001E54AA001E54AA001E54AA001E54AA001E54AA001E54AA001E54
+ AA001E54AB001E54AB001E54AB001E54AB001E54AB001E54AB001D54AB001D54
+ AB001D54AB001C54AE000D468C000000000000000000000000003E58AE00274F
+ D600021C7100153EC700455DAE000E2D9A000E2D9A000E2D9A000E2D9A000E2D
+ 9A003A54AE00031E7900021C7100153EC7000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000859A
+ E0005971C1003253C2000D34B6008999CC00CACFDF00E6EAF800E6EAF800E6EA
+ F800C9CDD900E6EAF800E6EAF800E6EAF8008999CC00415FC5000D34B6005971
+ C1003D4F8F00859AE0000000000000000000000000002A2A2A002E2E2E003939
+ 39003939390039393900393939003939390039393900393939003A3A3A003A3A
+ 3A003A3A3A003A3A3A003A3A3A003A3A3A003A3A3A003A3A3A003A3A3A003A3A
+ 3A003B3B3B00323232001F1F1F00000000000F47910014439D0014439D001544
+ 9E0015449E0015449E0015449E0015449E0015449E0015449E0015449E001544
+ 9E0015449E0015449E0015449E0015449E0015449E0015449E0015449E001544
+ 9E0015449E003E8AD8000C458B00000000000000000000000000000000006983
+ DA00435CB300516CCA0000000000000000000000000000000000000000000000
+ 000000000000435CB300435CB3003754B7000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000003B53A3005A70
+ BB000934C5004B6AD300E1E6F800E5EAF800DADFEC00E5EAF800E5EAF800E5EA
+ F800E5EAF800E5EAF800E5EAF800E3E8F600E5EAF800E5EAF800E1E6F8000934
+ C5004162D1005A70BB0000000000000000000000000032323200343434003C3C
+ 3C003C3C3C003C3C3C003C3C3C003C3C3C003C3C3C003C3C3C003D3D3D003D3D
+ 3D003D3D3D003D3D3D003D3D3D003D3D3D003D3D3D003D3D3D003D3D3D003D3D
+ 3D003E3E3E003838380012121200000000000F47920015459F001546A0001546
+ A0001647A1001647A1001647A1001647A1001647A1001647A1001647A1001647
+ A1001647A1001647A1001647A1001647A1001647A1001647A1001647A1001647
+ A1001647A1001D55AF000C458B00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000003F56A6001939A600869BE10000000000000000000000
+ 000000000000000000000000000000000000000000008A9DE4004E61A8005271
+ D8002A50D100CDD6F500E5EAF900E5EAF900E5EAF900E5EAF900E5EAF900E5EA
+ F900E5EAF900E5EAF900E5EAF900E5EAF900E5EAF900E5EAF900E5EAF9002A50
+ D100123DCD005271D8008A9DE4000000000000000000272727004E4E4E004040
+ 40003F3F3F003F3F3F003F3F3F003F3F3F003F3F3F003F3F3F00404040004040
+ 4000404040004040400040404000404040004040400040404000404040004040
+ 4000424242004B4B4B0005050500000000000F4892001749A300184CA600194D
+ A7001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4F
+ A9001A4FA9001B4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4F
+ A9001B51AB00448EDA000C458B00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000007A8FDB002D469B004E66BC0000000000000000000000
+ 00000000000000000000000000000000000000000000425AAE005B75CA003359
+ D9008497D600D2D7E400E5EAFA00E5EAFA00E5EAFA00E5EAFA00E5EAFA00E5EA
+ FA00E5EAFA00E5EAFA00E5EAFA00E5EAFA00E5EAFA00E5EAFA00E5EAFA008497
+ D6000938D3003359D900425AAE00000000000000000000000000121212002C2C
+ 2C00686868006161610055555500464646004646460046464600464646004646
+ 46004646460046464600464646004747470049494900535353005E5E5E004A4A
+ 4A00303030001313130000000000000000000F4893001A4EA8001B51AB001C54
+ AE001E57B1001E57B1001E57B1001E57B1001E57B1001E57B1001E57B1001E57
+ B1001E57B1001E57B1001E57B1001E57B1001E57B1001E57B1001E57B1001E57
+ B1001E57B1004C92DC000B448A000000000000000000465EB3006279C300607C
+ D900617EDE00617EDE00627EDE00637FDF00637FDF00637FDF00637FDF00637F
+ DF00627EDE00617EDE00607DDE005F7CDE004F64AB008A9EE500000000000000
+ 000000000000000000000000000000000000000000005871C8004268E7000537
+ DF00E5EAFB00DFE4F500E5EAFB00E5EAFB00E5EAFB00E5EAFB00E5EAFB00E5EA
+ FB00E5EAFB00E5EAFB00E5EAFB00E5EAFB00E5EAFB00E5EAFB00E5EAFB00E5EA
+ FB00809AEE000537DF005871C800738BDD000000000000000000000000000202
+ 02002F2F2F003C3C3C00525252006A6A6A004F4F4F00494949004A4A4A004A4A
+ 4A004A4A4A004A4A4A004A4A4A00515151006D6D6D0058585800434343001C1C
+ 1C0002020200000000000000000000000000104894001A4EA8001B52AC001C55
+ AF001E58B2001E58B2001E58B2001E58B2001E58B2001E58B2001E58B2001E58
+ B2001E58B2001E58B2001E58B2001E58B2001E58B2001E58B2001E58B2001E58
+ B2001E58B2001E58B2000B448A0000000000000000004057A6006B85DC00355B
+ DA002F54CE003D62DC00365BD3003E63DB00365AD2003357CF00365AD2003256
+ CE003E63DC003055CE003A5FDC002B50CD00647CCB00556FC700000000000000
+ 000000000000000000000000000000000000000000005C78D8002A56EA000539
+ E600E5EBFC00E5EBFC00E5EBFC00E5EBFC00E5EBFC00E5EBFC00E5EBFC00E5EB
+ FC00E5EBFC00E5EBFC00D5DAE6009C9B9D00E5EBFC00E5EBFC00E5EBFC00E5EB
+ FC00C2CFF8000539E6005C78D800536ECA000000000000000000000000000000
+ 0000020202000F0F0F001E1E1E003A3A3A0065656500585858004D4D4D004D4D
+ 4D004D4D4D004D4D4D00606060006A6A6A0033333300202020000F0F0F000000
+ 000000000000000000000000000000000000104894001A4EA8001B52AC001C55
+ AF001E58B2001E58B2001E58B2001E58B2001E58B2001E58B2001E58B2001E58
+ B2001E58B2001E58B2001E58B2001E58B200053D8200053D82000D418700053D
+ 8200053D8200053D8200053D820003254F00000000005066B100758FE600476B
+ E300032597004A6AD700082A9C004B6BD700082A9C0003259700082A9C000325
+ 97004B6BD700032597004768D600032597007B93E100485FAE00000000000000
+ 000000000000000000000000000000000000000000005C7CE9001849EC00053A
+ EB00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00E6ECFD00C5CA
+ D900B8BDCA00C9CCD6009B989800B8B9BF00E6ECFD00E6ECFD00E6ECFD00E6EC
+ FD00E8EDFD00053AEB005C7CE9004862BC000000000000000000000000000000
+ 0000000000000000000000000000000000000101010031313100545454005454
+ 5400545454004646460026262600010101000000000000000000000000000000
+ 000000000000000000000000000000000000114995001A4EA8001C53AD001D56
+ B0001F59B3001F59B3001F59B3001F59B3001F59B3001F59B3001F59B3001F59
+ B3001F59B3001F59B3001F59B3001F59B3001C54AE003D5978006C715C003458
+ 88001C54AE001C54AE001A4FA900053D820000000000657BC5007F9AF1007490
+ F0000328A000607DDD000328A000607DDD000328A0000328A0000328A0000328
+ A000607DDD000328A000607DDD000328A0007D98F200758BD8005C76D2000000
+ 000000000000000000000000000000000000000000006683E9002C59EE001B4B
+ ED00CBD0DD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00E9EEFD00ADAB
+ A9009C999700E0E4F100E8EDFD00E8EDFD00E8EDFD00E8EDFD00E8EDFD00CBD0
+ DD00BABECB001B4BED006683E9004A63BB000000000000000000000000000000
+ 0000000000000000000000000000000000000000000028282800595959005959
+ 590059595900444444001B1B1B00000000000000000000000000000000000000
+ 000000000000000000000000000000000000114A9600194FA9001C53AD001D57
+ B1001F5AB4001F5AB4001F5AB4001F5AB4001F5AB4001F5AB4001F5AB4001F5A
+ B4001F5AB4001F5AB4001F5AB4001F5AB4001C54AE003F463C0032372C003B45
+ 42001A4FA9001A4FA9001A4FA900053D8200000000006C83D3008AA3F500859F
+ F4000328A4006D87E1000328A4006D87E1000328A4000328A4000328A4000328
+ A4006D87E1000328A4006D87E1000328A4007A95F00094A9EF00526AC0000000
+ 000000000000000000000000000000000000000000006A88EB003761EF002755
+ EE00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00CACA
+ CB00C3C1C000E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EEFD00E9EE
+ FD00D8DDEA002755EE006A88EB004B64BC000000000000000000000000000000
+ 000000000000000000000000000000000000040404003F3F3F005D5D5D005D5D
+ 5D005D5D5D005A5A5A003B3B3B00030303000000000000000000000000000000
+ 000000000000000000000000000000000000114A97001A4FA9001D54AE001E58
+ B200205BB500205BB500205BB500205BB500205BB500205BB500205BB500205B
+ B500205BB500205BB500205BB500205BB5001C54AE0043586C00D3D6B6003956
+ 7B001A4FA9001A4FA9001A4FA900053D820000000000748AD6008DA5F60095AC
+ F7000328A4007891E3000328A4007891E3000328A4000328A4000328A4000328
+ A4007891E3000328A4007891E3000328A4006E88E20095ACF7006A80CB000000
+ 00000000000000000000000000000000000000000000708BEB00426AF000335E
+ EF00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEF
+ FD008D8A8800EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEFFD00EAEF
+ FD00D4D8E600335EEF00708BEB004C66BF000000000000000000000000000000
+ 000000000000000000000000000000000000434343005F5F5F00636363006363
+ 6300636363006363630060606000333333000000000000000000000000000000
+ 000000000000000000000000000000000000114B97001A50AA001D55AF001E59
+ B300205CB600205CB600205CB600205CB600205CB600205CB600205CB600205C
+ B600205CB600205CB600205CB600205CB6005495DE003786D500327DCE00327D
+ CE00327DCE00327DCF002D77C400032F6500000000007A91E200839EF50094AB
+ F6000328A4007D94E2000328A4007D94E2000328A4000328A4000328A4000328
+ A4007D94E2000328A4007D94E2000328A4007991E20090A8F60098ACF0000000
+ 000000000000000000000000000000000000000000006D85D8007391F4004C72
+ F100EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1
+ FE0098959300EDF1FE00EDF1FE00EDF1FE00EDF1FE00EDF1FE00E9EDFA00EDF1
+ FE007588C8004C72F1006D85D8007990E3000000000000000000000000000000
+ 0000000000000000000000000000020202004E4E4E0065656500666666006666
+ 6600666666006666660066666600414141000000000000000000000000000000
+ 000000000000000000000000000000000000124B98001A4FA9001D55AF001F59
+ B300215CB600215CB600215CB600215CB600215CB600215CB600215CB600215C
+ B600215CB600215CB600215CB600215CB600215CB600215CB600215CB600215C
+ B600215CB6006EA7E8000B4489000000000000000000829BED007290F400849E
+ F5003C5BC30095AAF2003454BE008EA4ED00173AAF000328A4000D31A9000328
+ A4007D94E2000328A4007D94E2000328A4007891E30088A2F60090A8F60092A7
+ EC000000000000000000000000000000000000000000647AC700819CF3005E80
+ F200C1C6D400CCCFDA00E2E6F100EEF2FE00EEF2FE00EEF2FE00EEF2FE00EEF2
+ FE009E9B9900EEF2FE00EEF2FE00EEF2FE00EEF2FE00EEF2FE00EEF2FE00C1C6
+ D4005370D2005E80F2006479C700BFCDF6000000000000000000000000000000
+ 0000000000000000000000000000131313005151510068686800696969006969
+ 69006969690069696900696969004A4A4A000000000000000000000000000000
+ 000000000000000000000000000000000000124C99001A50AA001D56B0001F59
+ B300215DB700215DB700215DB700215DB700215DB700215DB700215DB700215D
+ B700215DB700215DB700215DB700215DB700215DB700215DB700215DB700215D
+ B700215DB70070A9EA000B44890000000000000000008098E700859FF5008CA5
+ F6009AAFF70092A9F60094ABF6008CA5F600859EF1008099EC006E89E100617C
+ D8009EB3F7003E5DC30095AAF200294AB9007D97EB007D98F5007D98F500617C
+ D8000000000000000000000000000000000000000000526CC8008399E4007D98
+ F5007582AE00D7DAE400EFF3FE00EFF3FE00EFF3FE00EFF3FE00EFF3FE00EFF3
+ FE00A8A5A400EFF3FE00EFF3FE00EFF3FE00EFF3FE00EFF3FE00EFF3FE007582
+ AE006282EE007E99F500526CC800000000000000000000000000000000000000
+ 0000000000000000000000000000222222005B5B5B006F6F6F00707070007070
+ 7000707070007070700070707000585858000000000000000000000000000000
+ 000000000000000000000000000000000000134C99002661B5003071C2003479
+ C900377DCD00377DCD00377DCD00377DCD00377DCD00377DCD00377DCD00377D
+ CD00377DCD00377DCD00377DCD00377DCD00377DCD00377DCD00377DCD00377C
+ CD00387ECE002360B9000B448A00000000000000000000000000AFBFF300AFBF
+ F3007C92E5007C92E5007C92E5005E79D5005E79D500566FC700687ECD006A80
+ CD006A80CD00768BD9007B91DB007F97E4008098E600809AEF007893EE006077
+ CA0093A7ED000000000000000000000000000000000000000000536EC900889D
+ E4007F9AF5006377B900D1D5E100F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5
+ FE00DCDDE200F2F5FE00F2F5FE00F2F5FE00F2F5FE00F2F5FE00D1D5E1007F9A
+ F50095ACF7008A9FE20000000000000000000000000000000000000000000000
+ 00000000000000000000000000001D1D1D005A5A5A0072727200737373007373
+ 7300737373007373730073737300555555000000000000000000000000000000
+ 000000000000000000000000000000000000134C9A002D6ABC00377ACB003B81
+ CF003D84D2003D84D2003D84D2003D84D2003D84D2003D84D2003D84D2003D84
+ D2003D84D2003D84D2003D84D2003D84D2003D84D2003D84D2003D84D2003D84
+ D2003D84D20074ABEB000B448A00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C1CD
+ F600AFBFF300859BE9007C93E5007C93E5005E79D6005E79D6005770C8004D6A
+ CC00647EDA000000000000000000000000000000000000000000BFCDF6006178
+ C9009DB2F700869FF1006878B100DDE0E700C8CAD100ECEFF700F3F6FE00F3F6
+ FE00F3F6FE00F3F6FE00F3F6FE00F3F6FE00DADDE400C0C5D6006878B1009DB2
+ F7009EAFEE005C74C70000000000000000000000000000000000000000000000
+ 00000000000000000000000000000D0D0D005E5E5E0075757500767676007676
+ 7600767676007676760076767600565656000000000000000000000000000000
+ 000000000000000000000000000000000000134D9B001E57B1006AA0E30070A6
+ E700225FB90074ABEB0074ABEB00225FB90074ABEB0074ABEB00225FB90074AB
+ EB0074ABEB00225FB90074ABEB0074ABEB00225FB90074ABEB0074ABEB00225F
+ B90074ABEB0074ABEB000C458A00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006B85DE002C57
+ E700647CCD00647CCD005A72CB000000000000000000000000000000000092A7
+ EC00A7B8F300A6B9F80094AAF2008A92AF00C9CCD500F4F7FE00F4F7FE00F4F7
+ FE00D4D6DD00F4F7FE00F4F7FE00F4F7FE008A92AF007182BB0094AAF200ABBB
+ F4006279C90092A7EC0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000039393900696969007C7C7C007C7C
+ 7C007C7C7C008181810067676700191919000000000000000000000000000000
+ 0000000000000000000000000000000000001A529A007FB5F200337ECF003481
+ D1003786D5003786D5003786D5003786D5003786D5003786D5003786D5003786
+ D5003786D5003786D5003786D5003786D5003786D5003786D5003786D5003786
+ D5003786D5007FB5F2000C458B00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000005872
+ C9005872C9005872C9005872CA00000000000000000000000000000000000000
+ 000092A7EC005F77CA009AABE600B5C5F900AEBEF40096A5D7007985AD007985
+ AD007985AD007985AD008694C00096A5D700B6C6F900B3C3F8009AACE70092A7
+ EC00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000002020200494949008F8F8F008A8A
+ 8A00898989007070700044444400020202000000000000000000000000000000
+ 0000000000000000000000000000000000000D468B001A4FA9001A4FA9001A4F
+ A9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4F
+ A9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4FA9001A4F
+ A9001A4FA9000C458B00010D1C00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C1CDF6005872CD00A0B0EB00B9C8F900BECCFA00BBCAFA00BCCA
+ FA00BCCAFA00BBCAFA00BDCBFA00BFCDFA00A1B2EB007489D3005872CD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000007070700525252005D5D
+ 5D005D5D5D003535350007070700000000000000000000000000000000000000
+ 000000000000000000000000000000000000031C3B000D468B000D468B000D46
+ 8B000D468B000D468B000D468C000D468C000D468C000D468C000D478C000D46
+ 8C000D468C000D468C000D468C000D468C000D468C000D468C000D468C000D46
+ 8C000D468C000D468C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005874CD007287D1008B9FE100ACBCF400ACBC
+ F500ADBDF500ACBCF4009DAEEA008C9FE1005874CD0093A7ED00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000319F700032A07100319F
+ 700031A07000319F710032A0710032A0700031A0710032A07000D58F6A00D58F
+ 6A00D58F6A00D58F6A00D58F6A00D58F6A00D58F6A00000000001560BC001560
+ BD001560BD001660BD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000101000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BD8B6B00D39E7A00D39E
+ 7B00D39E7A00D39E7A00D39E7A00D49E7A00D49E7A00D49E7A00D49E7A00D49E
+ 7A00D49E7A00D49F7A00D49F7A00D49F7A00D49F7A00D59F7A00D59F7A00D59F
+ 7A00D59F7A00D59F7A0073513D000000000000000000CC886500EEA97A00EEA9
+ 7A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A001361DF001361
+ DF001361DF001361DF000F3EB000EEA97A00EEA97A00EEA97A00EEA97A00EEA9
+ 7A00EEA97A00EEA97A00CC88650000000000000000000DC9920013B98C0013B9
+ 8C0013B98C0013B98C0013B98C0013B98C000EC992002FA17100D58F6A00EBA5
+ 7D00E19D7900E19D7900E19D7900E19D7900D58F6A00000000001661BE00076E
+ E600076EE6000578EA0000000000000000000000000000000000000000000000
+ 00000000000000000000000000002A9C75002A9C75002A9C7500000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C2937200F5C49C00F3BD
+ 9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD
+ 9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD9400F3BD
+ 9400F3BD9400F5C49C00D09775000201010000000000CC886500EEA97A00E59E
+ 7500DF977200DF977200DF977200DF977200DF977200DC936F000353DC000353
+ DC000352DB000353DB000F3FB100DD946F00DF977200DF977200DF977200DF97
+ 7200DF977200E59E7500CC88650000000000000000000DCA930013B98C000DCA
+ 93000DCA93000DCA94000DCA930013B98C000DCA93002FA27200D58F6A00ECA5
+ 7D00E29E7900ECA57D00ECA57C00E29E7900D58F6B00000000001662C000057A
+ EB000388F000057BEA0000000000000000000000000000000000000000000000
+ 000000000000040F0B000000000035CD980015B0810038D19B000D3427000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DDAB8600C5967400F5C9
+ A300E8B69000E8B69000E8B69000E8B69000E8B69000E8B69000E8B69000E8B6
+ 9000E8B69000E8B68F00E8B68F00E8B68F00E8B68F00E8B68F00E8B68F00E8B6
+ 8F00F5C9A300CF9D7A00D09775000202010000000000CD896500EEA97A00DF97
+ 7200DF977200DF977200DF977200DF977200DF977200DB916E000455DC000455
+ DC000454DC000454DC000E40B300DC926E00DF977200DF977200DF977200DF97
+ 7200DF977200DF977200CD89650000000000000000000DCB950013BA8D000DCB
+ 95000DCC94000DCB94000DCB940013B98C000ECB94002EA27300D68F6A00ECA5
+ 7E00E39E7A00ECA67D00ECA67D00E39E7A00D5906B00000000001764C300057C
+ EB000389F000057CEB0000000000000000000000000000000000000000000000
+ 000002090600000000002A9C750013B0820013B0820017B6870025977100030C
+ 0900000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F4C49B00F0C19800E7B8
+ 9100F7D3B400EBBD9600F5C89F00F5C79E00F5C79E00F5C79E00F5C79E00F5C7
+ 9E00F5C79E00F5C79E00F5C79E00F5C79E00F5C79E00F5C79E00EBBC9600D8A6
+ 8200ECB89000F2BD9400D09775000202010000000000CE8A6600EEA97B00E19A
+ 7400ECA77F00ECA77E00ECA77E00ECA87F00ECA87E00E09873000657DE000657
+ DE000657DF000657DF000E42B700E2997400ECA77F00ECA77F00ECA77F00ECA7
+ 7F00ECA87F00E1997400CE8A660000000000000000000DCD970013BD8F000ECE
+ 97000ECE97000DCE97000ECE980013BC8E000ECD97002CA57500D6906B00EDA7
+ 7F00E5A17B00ECA77E00ECA77E00E6A17B00D6906B00000000001A66C7000581
+ ED00038DF1000581ED0000000000000000000000000000000000000000000000
+ 00002A9C750032D59F0014B1830010CF9E0010CF9D0012C1910031D39D0023A0
+ 78000D3225000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F5C89E00F5C89E00F4C7
+ 9D00D3A58200F8D9BC00F5CAA100F5CAA100F5CAA100F5CAA100F5CAA100F5CA
+ A100F5CAA100F5CAA100F5CAA100F5CAA100F5CAA100F5CAA100F8D9BC00F1BE
+ 9600F4C19800F4C19800D09775000202010000000000CF8A6700EEA97C00E39C
+ 7600EDA98100ECA98000ECA98000ECA98000ECA98000DE9671000759E0000759
+ E0000759DF000759E0000D44BA00E0977200ECA88000EDA98000ECA98000EDA9
+ 8000EDA98000E39C7600CF8B670000000000000000000ECF990012C090000ECF
+ 98000ECF99000ECF99000ECF990012BF8F000ECF99002BA67500D6906C00EDA8
+ 7F00E7A27C00ECA87F00ECA87F00E7A27C00D6906B00000000001A68CB000482
+ ED00038EF1000483EE0000000000000000000000000000000000000000000223
+ 1A002BD19C0014B2840013B2840016D2A10011D09E0010D09E0016B6870027CB
+ 9900259670000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F5C89E00F5C89E00F5C8
+ 9E00F3C59C00DBAD8800F9DFC500F2C59D00F2C59D00F2C59D00F2C59D00F2C5
+ 9D00F2C59D00F2C59D00F2C59D00F2C59D00F2C59D00F9DFC700E2B38D00F4C4
+ 9B00F4C49B00F4C49B00D09775000302010000000000D08B6800EEA97D00E49F
+ 7800EEAA8100EEAB8200EDAA8200EDAB8200EDAA8200DC936F00095AE100095A
+ E100085AE100095AE1000D45BD00DD947000EEAB8100EDAA8200EEAA8100EDAB
+ 8200EEAA8100E49F7800CF8B670000000000000000000ED09A0011C392000ED0
+ 9A000ED09A000ED09A000ED09A0011C191000FD09A002AA67700D7906C00EDA9
+ 8000E8A47D00EDA98000EDA98000E8A47D00D7906B00000000001B6ACD000486
+ EF00038FF2000486EE000000000000000000000000000000000001150F002AA0
+ 750015B3840013B283000FCE9B0080EFD0006EE5BF000FD19E0013B7880024C9
+ 96001FB78A000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F6CDA400F6CDA400F6CD
+ A400F5CCA300F5CCA300F5CCA300FBE8D400E9B79000E9B79000E9B79000E9B7
+ 9000E9B79000E9B79000E9B79000E9B79000ECBF9700F5C89F00F5C89F00F5C8
+ 9E00F5C89E00F5C89E00D09775000302010000000000D28E6900EFAE8200ECA9
+ 8100F0B08600F0B08600F0B08600F0AF8600F0AF8600D68A68000D60E4000D60
+ E4000D60E4000D60E5000E4DC800D78B6900F0B08600F0B08600F0B08600F0AF
+ 8600F0AF8600ECAA8100D28D6900000000000000000013D59F0010CB97000ED3
+ 9C000FD39D000ED39D000ED39D0010C9960014D5A00027AA7800D7916D00EDAB
+ 8100EBA88000EDAA8200EEAA8200ECA88000D8926C00000000001E6ED200048C
+ F1000391F300048BF1000000000000000000000000002AA078001BD09D001DD2
+ 9F000FD09E0016D4A3005DE7BF0040AC890033A37E0055DCB3000FD29F0011C0
+ 90001ACC99002598710002090700000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F6D0A700F6D0A700F6D0
+ A700F6CFA600F6CFA600F6CFA600FDF2E600FDF4EA00FBEBD900FBEBD900FBEB
+ D900FBEBD900FBEBD900FDF4EA00FDF4EA00F5CBA200F5CBA200F5CBA200F5CA
+ A100F5CAA100F5CAA100D09775000302010000000000D38E6900EAA77D00E8A5
+ 7E00EBA88000EBA88000EBA88000EBA88000EBA88000D38564000E62E6000E62
+ E6000E61E5000E62E6000E50CC00D3866500EBA88100EAA98100EBA88000EBA8
+ 8000EBA88000E8A57D00D38E6A00000000000000000016D7A20010CE9A000FD4
+ 9E000ED59E000FD59E000ED49E0010CC990017D7A20026AA7900D8926D00EDAB
+ 8300EDAC8200EEAC8200EEAB8300EEAC8200D8926D00000000001F6FD400038E
+ F1000393F200038EF10000000000000000000001010018CF9C001CD4A00010D3
+ A00016D5A3005CE8C00046CFA80000000000071E1600269F770047E4B9000FD3
+ A0000FD3A0001DB78A001B725500000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7D3AA00F7D3AA00F7D3
+ AA00F6D2A900F6D2A900F6D3AA003786A9000685C4000685C5000299E8000299
+ EC000299EF00038FE300038FE3004FA4D400F6D0A800F6CEA500F6CEA500F6CD
+ A400F6CDA400F6CDA400D09775000302010000000000D48F6A00DB926E00DA90
+ 6E00DB926E00DB926E00DB926E00DB926E00DB926E00CE7F5F001064E7001064
+ E7001064E7001064E7001054D000CE806000DB916E00DB926E00DB926E00DB92
+ 6E00DB916E00DB926E00D48F6B0000000000000000001AD9A5000FD29D000ED5
+ A0000FD5A0000FD6A0000FD69F0010D19C001BD9A60025AC7A00D9936D00EEAE
+ 8400EDAC8300EEAC8300EEAC8300EEAC8300D9926D00000000002071D7000393
+ F3000393F3000393F30000000000000000002AA379001AD5A10010D4A1000FD4
+ A1005BEAC1004CD7B1002CAA7F000000000000000000071E160051DCB30044E4
+ B8000FD3A1001DD3A10023A178000C2F23000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7D5AD00F7D5AD00F7D5
+ AD00F7D7B100F9E2CA000C8ABA00069AD60004AFF20003AFF50003ACF60002AA
+ F60002A8F60002A3F60001A2F70001A0F700019DF700F9E2CA00F2D7B600F7D3
+ AA00F7D3AA00F7D3AA00D09775000302010000000000D6916C00CC7C5D00CC7C
+ 5D00CC7C5D00CC7C5D00CC7C5D00CC7C5D00CC7C5D00CC7C5D001368E9001368
+ E9001367EA001367EA00125BD900CC7C5D00CC7C5D00CC7C5D00CC7C5D00CC7C
+ 5D00CC7C5D00CC7C5D00D6906C00000000000000000022DDAB000ED9A3000FD9
+ A3000FD9A3000ED8A3000ED9A2000FD8A30025DFAC0022B07E00D9946E00F0B2
+ 8A00EFAE8500EEAE8500EFAE8400EFAE8400D9946E00000000001584EA005DC7
+ FB005DC7FB005DC7FB00000000000000000006140F003BCDA1003EE2B60056E9
+ C0002EAF830000020100000000000000000000000000000000000820180027A4
+ 7A004DDCB2000FD5A10015D5A1001CB88B000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7D5AD00F7D5AD00F7D5
+ AD00F8DFC3000997CA000999CE0005B5F40005B5F50004B4F50004B1F50003AE
+ F50003ACF60002A8F60002A7F60002A5F60001A0F700019FF700F8DFC300F7D8
+ B200F7D5AD00F7D5AD00D09775000302010000000000F4B78D00F5B88D00F4B8
+ 8D00F4B78D00F4B78D00F4B88D00F4B88D00F4B88D00F0AF86001469EB001469
+ EB00166BEB001369EB00135EDD00F2B28900F4B78D00F4B78D00F4B88D00F4B8
+ 8D00F4B88D00F5B78D00F5BC9300D7916C000000000027E0AE000EDAA4000EDA
+ A5000FDBA4000FDAA4000FDAA5000FDAA40029E0AE0022B17F00D9946E00EFB4
+ 8C00EFAF8600EEAF8500EFAF8500EFAF8600DA936E0000000000000000001584
+ EA001584EA001584EA00000000000000000000000000259E760087EBCD00FFFF
+ FF00010504000000000000000000000000000000000000000000000000000821
+ 180027A67A0036E0B30010D5A20013D4A1000C2E230000000000000000000000
+ 00000000000000000000000000000000000000000000F7D5AD00F7D5AD00EED2
+ B0000B9BCA000AA5D60009AFE40006B9F50006B8F50005B6F50005B5F50004B2
+ F50004B1F50003ACF50002ABF60002AAF60002A5F60002A3F60001A2F700F5D7
+ B500F4D6B400F7D5AD00D09775000302010000000000F5B98F00EFB08700EFB0
+ 8700EFB08700EFB08700EFB08700EFAF8700EFB08700E8A57E00146BEC00146B
+ EC002073EE00156AEC001462E000EAA78000EFB08700EFB08700EFB08700EFB0
+ 8700EFB08700EFB08700F5BD9400D8926D00000000002CE2B1000FDBA6000FDC
+ A5000FDBA6000FDBA6000FDCA6000FDCA6002EE3B10021B38100DA946E00F0B7
+ 8F00EFAF8600EFB08600EFB08600EFB08600DA946F0000000000000000000000
+ 0000000000000000000000000000000000000000000004100C0028A1790028A2
+ 7A00000000000000000000000000000000000000000000000000000000000000
+ 00000822190049DCB10033E0B2000FD6A300259C740002090600000000000000
+ 00000000000000000000000000000000000000000000F1D3B300F5D8B700C9A5
+ 8A0035C4E7000BC3F4000BC3F4000AC1F40009C0F40008BEF40007BCF50006B9
+ F50006B8F50005B5F50004B4F50004B2F50036AAD700A89D9000C3A28900E1B5
+ 9300F5D8B700F5D8B700DFB090000302010000000000F7C79F00F2B58C00F6BB
+ 9000F6BC9000F6BB9000F6BB9100F6BB9000F6BB9000EAA78000176DEE00176D
+ EE005196F400176EED001568E700EAA78000F6BB9000F7BB9100F6BB9100F6BB
+ 9100F6BB9000F6BB9000F7C7A000D9936E000000000037E6B5000FDEA9000FDE
+ A8000FDEA9000FDEA90010DEA9000FDEA90039E6B60020B88500DB956F00F1BD
+ 9400F0B18800EFB18800EFB18700EFB18700DB956F0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000008231A0027A77E0046DDB10010D6A30026A97E000C2E22000000
+ 00000000000000000000000000000000000000000000E8C2A200E6BA9600E0B2
+ 90009EA5980055D2EA000CC5F3000BC3F4000BC3F4000AC2F40009C0F40008BD
+ F40007BCF50006B8F50005B6F5000AB6F300BE9F8800CDA88C00DEB59300E8BB
+ 9700E8BC9700E8BC9700C39071000000000000000000F8CCA600F3B78D00F6BC
+ 9100F7BC9100F7BC9100F7BC9100F6BC9100F6BD9100EAA88100176EEE001970
+ EE0069A8F700176FEE00166BEA00E6A27C00F7BC9100F7BD9100F7BC9100F6BC
+ 9100F6BC9200F6BC9100F8CCA600DA946E00000000003DE8B8000FE0A9000FDF
+ AA000FDFAA0010E0A9000FE0AA000FDFA9003EE8B9001FB98600DB957000F2C0
+ 9700F0B18800F0B18700EFB28800F0B18800DB956F0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000009241B0028AA7F002BDFAF0014D09E0027A177000000
+ 00000000000000000000000000000000000000000000DAA88600ECCAAC00E7BB
+ 9800D7AE9000B3A7930074D9EA000CC5F3000BC3F3000BC3F4000BC3F4000AC1
+ F40009C0F40007BCF40021B7E60097A49D00D8B29200E4B99600E9BD9900E9BE
+ 9900E9BE9A00EECFB100564235000000000000000000F9DFC700F7BE9300F7BE
+ 9300F7BE9300F7BE9300F7BE9300F7BE9300F7BE9300E7A47E00186FEF00277A
+ F1007AB4F900186FEF00186EEE00E7A47E00F7BE9300F7BE9300F7BE9300F7BE
+ 9300F7BE9300F7BE9300FAE8D800DA946F000000000041E9BA000FE1AB000FE1
+ AC000FE0AB0010E0AB0010E1AB000FE1AB0043EABB001EBB8800DC956F00F2C2
+ 9900F0B28800EFB38900EFB28800F0B28800DC956F0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000009241B0044DDB10028DFAF001DBC8E000000
+ 000000000000000000000000000000000000000000000000000055413400DAA8
+ 8600EAC09B00E9BE9900E5BB98009CE8F30011CDF2000FCAF3000DC8F3000CC5
+ F3000EC9F400C1A78F00DAB59500E8BF9C00ECC29D00ECC29D00ECC39D00F2D6
+ B900DEAE8D0056423500000000000000000000000000DA957000AE8989003648
+ 99001E359200454C910061517800B67E6200BF82600095654A00146BEC00146B
+ EC00146BEC00146BEC00BF82600095654A00B67E63008C6B70007F708E00203E
+ 9A001A3B9B00374E9D00DA9570008D654A00000000004CECBE0010E3AE000FE3
+ AD0010E2AE000FE2AD000FE3AE0010E3AD004EECBF001DBE8B00DC967000F5F9
+ F700F7E1BA00F7E1BA00F7E1BA00F7E1BA00DC96700000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000A261C002AAC7F0040DCB00029A4
+ 7A00020806000000000000000000000000000000000000000000000000005541
+ 3400F2D8BD00ECC19E00EBC19C00CBB99E00AFEEF80012CEF20010CCF30013CE
+ F3005CBFC800E3BD9A00ECC39E00EEC59F00EEC59F00EEC59F00EEC5A000DFB0
+ 8E00574335000000000000000000000000000000000017234F000E33A0001F5D
+ CE000D46BB000B4ECB000A44BB000C2890001C3796005B568400062E9E00062E
+ 9E00062E9E00062E9E00947272005C5984000F379E000D3FAD000C4CC4000E48
+ BE001662DF002063D400615A7500000000000000000051EDC0000FE3AF0010E4
+ AF0010E4AE0010E4AF0010E3AF0010E4AE0053EDC1001DC18D0054392B00D796
+ 7000F2AF8500F3AE8500F2AE8500F2AE850035261D0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000A271D002BAC800026C1
+ 94001B7256000000000000000000000000000000000000000000000000000000
+ 0000DCAA8800F5DBC100EDC59F00ECC39D00CDC2A600BFF1FA0015D3F2005AC7
+ CE00DCB99800EEC7A100EEC7A100EFC8A200EFC8A200EFC8A200F4DBC0005844
+ 360000000000000000000000000000000000000000000C317F001653C5003880
+ ED000E50CC000C5FE3000448CE000E35A5000E34A4000D35A600103CAD004990
+ F1004990F100103CAD001345B2000E36A3000E35A5000E35A5000D40B5000E50
+ CC00387BEC003880ED000C317F00000000000000000056EEC20010E5AF000FE5
+ B00010E5B00010E4AF0010E5B00010E5B00058EEC2001CC28F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000A271D003ADB
+ AD002BB285000B2C210000000000000000000000000000000000000000000000
+ 00000000000058443600DDAD8B00F0CAA300F1CBA400F1CBA400F0CBA400F1CC
+ A400F2CCA500F2CDA500F2CDA500F3CEA600F5DDC300E1B593005B4637000000
+ 000000000000000000000000000000000000000000000B317F00215BCA005195
+ F8000C5BDD000C5FE3000E60E3002672E6002A6CDD00124FCB00123AA300173F
+ A5001241AE001241AB000E45B6000D4CCB00206CE4002270E7000E60E3000C5B
+ DD005091F6005195F8000B317F0000000000000000005FEFC40010E7B10010E7
+ B10010E6B10010E7B10010E6B10010E6B10061EFC5001CC59100000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000A29
+ 1E002CAF840032C0930000000000000000000000000000000000000000000000
+ 000000000000000000005A453700F7DFC600F7DEC200F7DEC200F7DEC200F7DE
+ C200F7DFC200F7DFC300F7DFC300F8DFC300E2B695005D473800000000000000
+ 00000000000000000000000000000000000000000000092869002158C700579B
+ FD001C6CE6003781EC00478AEB000D48C8000D40B8000D34A000000001000000
+ 00000000000000000200061B48000F3EA5000D49C8002464D800478AEB001C6C
+ E6005698FC00579BFD0009286900000000000000000063F0C50010E7B20010E7
+ B20010E7B20010E7B20010E7B20010E7B20065F0C5001CC79200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000B291F002CB1850013392C00000000000000000000000000000000000000
+ 0000000000000000000000000000B28B6F00E8BC9800E8BC9800E8BC9800E8BD
+ 9800E8BD9900E8BE9900E8BE9900E9BE99005E48380000000000000000000000
+ 00000000000000000000000000000000000000000000061C4A001B50BE00599C
+ FD0097C3FA001859D4000D47C7000D36A4000820620000030B00000000000000
+ 000000000000000000000000000001040B000F40A9000E46BC000D48C70097C3
+ FA009BC8FD00599CFD00061C4A00000000000000000068F0C70010E7B20010E7
+ B20010E7B20010E7B20010E7B20010E7B20068F0C7001DC89400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000B2B20002FAE8400020806000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000092963001143
+ B8000C329600071C570001030C00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000001040C000C3A
+ 9A000E42B0001249BB000000020000000000000000001BCB970020CA970021CB
+ 980021CB980021CB980021CB98001FCB970018C3900000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000B2B20002EAE83000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009D9E9E009D9E9E009D9E
+ 9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E
+ 9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E9E009D9E
+ 9E009D9E9E009D9E9E0000000000000000000000000000000000000000000534
+ 6A0012589F0012589F0012589F0012589F0012589F0012589F0012589F001258
+ 9F0012589F0012589F0012589F0012589F0012589F0012589F0012589F001258
+ 9F0005346A000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002E54
+ D4003569DC003569DC003569DC003569DC00173BB60006338400093889000938
+ 8900093889000C3C8F0006338400173BB6003568DC003568DC003568DC003568
+ DC002E54D40000000000000000000000000000000000CCCCCC00CCCCCC00CCCC
+ CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
+ CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
+ CC00CCCCCC00CCCCCC0000000000000000000000000000000000000000000534
+ 6A000F509400073B7500073A7400073973000739720007387100063770000637
+ 6F0006376F0006366E0006356D0005356D0005356C0005346B0005346B000E50
+ 940005346A000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002E54
+ D400366DDD00366DDD00366DDD00366CDD00173BB6000633840013469D001346
+ 9D0013469D000E3E920006338400173BB600366CDD00366CDD00366CDD00366C
+ DD002E54D40000000000000000000000000000000000CCCCCC00CCCCCC00CCCC
+ CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
+ CC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCCCC00CCCC
+ CC00CCCCCC00CCCCCC0000000000000000000000000000000000000000000534
+ 6A000F519500F6DDB600F6DDB500F6DDB400F6DDB400F6DCB300F6DCB300F6DC
+ B300F6DCB200F6DCB200F6DCB200F9E9C100FAEDD200F9E9CD00F7E1BD000F51
+ 950005346A000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002E54
+ D4005799EB005799EB005799EB0072B7FF00173BB600063384001548A0001448
+ A00014489F001142970006338400173BB6005799EB005799EB005799EB005799
+ EB002E54D40000000000000000000000000000000000CDCDCD00CCCCCC00DF98
+ 7100EBA27900EBA27900EAA27900EAA27900EAA27900EAA27900EAA27900FCC8
+ A500EAA27900EAA27900EBA27900EAA27900EAA27900EAA27900EAA27900DF98
+ 7100CCCCCC00CCCCCC0000000000000000000000000000000000000000000534
+ 6A0011549900F6DFB900F6DFB800F6DEB700F6DEB700F6DDB500F6DDB400F6DD
+ B400F6DDB400F6DDB400F6DDB400F6DDB400F8E5BB00FCF5D300FDF6DD001154
+ 990005346A0000000000000000000000000000000000BD846200E8A97F00EEA9
+ 7A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A00EEA9
+ 7A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A00EEA97A00D595
+ 7000140E0B000000000000000000000000000000000000000000000000000000
+ 0000D4D4D400BFBFBF00BFBFBF00BFBFBF009C9C9C0006338400194FA700184E
+ A700184EA700184EA500063384009C9C9C00BFBFBF00BFBFBF00C3C3C300B3B3
+ B3000000000000000000000000000000000000000000CECECE00CDCDCD00DE97
+ 7100EBA37A00EBA27A00EAA37A00E9A17800EAA17900EBA37A00EAA27A00FCC8
+ A500EAA27A00EAA27900EBA37900EBA27A00EAA37A00EBA37A00EBA27A00DF98
+ 7100CDCDCD00CDCDCD0000000000000000000000000000000000000000000535
+ 6B0011559B00F6E0BB00F6DFB900F6DFB800F6DEB800F6DEB700F6DDB600F6DD
+ B600F6DDB500F6DDB400F6DDB400F6DDB400F6DDB400F7DFB700FBF1CC001155
+ 9A0005356B0000000000000000000000000000000000B57D5B00F6BB9100E09B
+ 7300D5916A00D6926B00D8946C00D8956D00D9956D00DA966F00DB976F00DB97
+ 6F00DB976F00DD997100DE997100DE997100E09A7200E09A7200E09B7300E09C
+ 7400B07C5E000000000000000000000000000000000000000000000000000000
+ 0000D4D5D500BFBFBF00CBCBCB00CDCDCD009C9C9C0006338400093889000938
+ 8900093889001951AA00063384009C9C9C00CBCBCB00CBCBCB00BFBFBF00B3B3
+ B3000000000000000000000000000000000000000000CFCFCF00CECECE00DB94
+ 6E00EBA37A00EAA37A00E8A17800DC977000E0997100E8A07900EAA37A00FCC8
+ A500EBA47A00EBA37A00EBA37B00EBA37A00EBA37A00EBA37A00EAA47B00DF98
+ 7100CECECE00CECECE0000000000000000000000000000000000000000000535
+ 6C0012569D00F6E0BC00F6E0BB00F6E0BA00F6E0BA00F6DFB900F6DEB700F6DE
+ B700F6DEB700F6DDB600F6DDB500F6DDB500F6DDB500F6DDB500F6DEB5001256
+ 9D0006356C0000000000000000000000000000000000B67E5C00FDEFE200EDAC
+ 8300E9A37A00E9A37A00E9A37A00E9A37A00E9A37A00E9A37A00E9A37A00E9A3
+ 7A00E9A47A00E9A47A00E9A47B00E9A47B00E9A47B00E9A47B00E9A47B00E19C
+ 7400D3946F000000000000000000000000000000000000000000000000000000
+ 0000D6D6D600C3C3C300D3D3D300D6D6D6009C9C9C00063384001D58B0001D57
+ B0001D57AF0011449800063384009C9C9C00D6D6D600D3D3D300BFBFBF00B3B3
+ B3000000000000000000000000000000000000000000D1D1D100D0D0D000CC87
+ 6300D18C6800CF896500CA856200CE9B8100C7825F00D18C6800EBA47B00FCC8
+ A500ECA57C00ECA57C00E8A37B00E9A27A00EBA57C00EBA57C00ECA57C00DF9A
+ 7300D0D0D000D0D0D00000000000000000000000000000000000000000000637
+ 6F001359A000F7E2C000F7E2BF00F7E2BE00F7E2BE00F6E0BD00F6E0BB00F6E0
+ BB00F6E0BB00F6DFBA00F6DFB900F6DFB900F6DFB900F6DEB800F6DEB8001359
+ A10006366F0000000000000000000000000000000000B67E5D00F4C19600EDB1
+ 8700E19C7400EAA57C00EAA57C00EAA67D00EAA67D00EAA67D00EAA67D00EAA6
+ 7D00EAA67D00EBA77D00EBA77E00EBA77E00EBA87E00EBA87E00EBA87E00EAA7
+ 7E00E6A57B00C88D6B0000000000000000000000000000000000000000000000
+ 0000D9D9D900D0CFCF00D8D8D900D8D9D9009C9C9C0006338400215EB800205D
+ B700205EB7001952A900063384009C9C9C00D9D8D800D9D8D800C4C4C400B3B3
+ B3000000000000000000000000000000000000000000D2D2D200D1D1D100D7A7
+ 8E00C7836000CD8E6F00DBBCAC00E4E2E100D49E8100C9846100E59F7800FBC7
+ A400EBA67D00E6A27900DE9A7300DC977000EAA57D00ECA67D00ECA67D00DF9A
+ 7300D1D1D100D1D1D10000000000000000000000000000000000000000000737
+ 7000135AA300F7E3C100F7E2C000F7E2C000F7E2C000F7E2BF00F7E1BE00F7DF
+ BC00F7E0BA00F7E1BB00F7E0BA00F7E0BA00F7E0BB00F7E0BA00F7E0BA00135B
+ A3000737710000000000000000000000000000000000B7805E00F3C29700CC8F
+ 6900E19E7600EAA67D00EBA87E00EBA87E00EBA87E00EBA87F00ECA97F00ECA9
+ 7F00ECA97F00ECA97F00ECAA8000ECAA8000ECAA8000ECAA8000EDAA8000EDAB
+ 8100E9A77E00DB9C760000000000000000000000000000000000000000000000
+ 0000DADADA00D6D6D600DADADA00DADADB009C9C9C00063384003786D5003786
+ D5003786D5001E5AB200063384009C9C9C00DADADA00DADADA00CCCCCC00B3B3
+ B3000000000000000000000000000000000000000000D3D3D300D2D2D200E6E4
+ E300DFC4B500E6E4E300E6D6CC00E8BBA100E5DED900CE906F00DA956F00F5BF
+ 9D00EAA57D00D9946D00CB876300CA866300E8A37A00EBA77E00ECA77E00E09B
+ 7400D2D2D200D2D2D20000000000000000000000000000000000000000000738
+ 7200145BA400F8E3C300F7E3C200F7E3C100F7E3C100F7E2C000F7E2BF00F7E1
+ BD00F6DFBA00F7DFBA00F7E1BB00F7E1BC00F7E1BC00F7E0BB00F7E0BB00145C
+ A5000738720000000000000000000000000000000000B77F5E00F3C39700C286
+ 6100E8AB8200E5A47A00ECAA8000EDAA8000EDAB8100EDAB8100EDAB8100EDAB
+ 8100EDAC8200EDAC8200EDAC8200EEAC8300EEAD8300EEAD8300EEAD8400EEAD
+ 8400EDAD8300E9AA800000000000000000000000000000000000000000000606
+ 0600DCDBDB00DCDCDB00DBDCDB00DBDBDC009C9C9C00063384002260BA002260
+ BA002260BA002260BA00063384009C9C9C00DBDBDB00DBDBDC00D3D3D300ADAD
+ AD002C2C2C0000000000000000000000000000000000D5D5D500D4D4D400E19C
+ 7500ECA98000ECA98000EDA98000EDA98000ECAA8200E9DAD100CA866200CE8D
+ 6B00CB876400E4D5CE00E9E5E300DFBFAE00D08D6800E29F7700ECA87F00E09C
+ 7500D4D4D400D4D4D4000000000000000000000000000000000000000000073A
+ 7600155EA900F8E5C400F8E4C300F8E4C300F8E4C300F8E4C300F7E3C200F7E2
+ C100F6E1BE00F5DAB400F5DCB300F6DEB900F7E3C000F7E2BF00F7E2BE00155F
+ A900083A760000000000000000000000000000000000B7806000F2C49900CC90
+ 6A00EEC49900EBAC8300EDAD8400F0B08600F0B18700F0B18700F1B18800F1B1
+ 8800F1B28800F1B38800F1B38900F1B38900F1B48900F1B48900F2B48A00F2B4
+ 8B00F2B48B00F3B58B00936A5000000000000000000000000000000000001935
+ BF009F9F9F00D4D4D500DEDFDE00DFDEDE009C9C9C003786D5003786D5003786
+ D5003786D5003786D5003786D5009C9C9C00DEDEDF00DEDEDF00D1D0D000A3A3
+ A3001226AD0000000000000000000000000000000000D7D7D700D6D6D600EBB1
+ 8F00FCC9A600FCC9A600FCC9A600FCC9A600FCC9A600F9CAAB00DEB49D00C887
+ 6500D6A99100EBCDBA00F4C4A600ECE7E400CC8B6900DCA07E00F3BD9B00EBB1
+ 8F00D5D5D500D5D5D5000000000000000000000000000000000000000000083B
+ 78001660AB00F8E5C700F8E5C500F8E5C400F8E5C400F8E4C300F8E4C300F8E4
+ C300F8E3C200F5DFB700F5DBB200F5DCB400F7E1BE00F7E3C000F7E3C0001660
+ AB00083C780000000000000000000000000000000000B8816000F2C79A00D195
+ 6E00E5B28700EFC09400ECAF8500F2B48A00F2B48A00F2B48B00F3B58B00F3B6
+ 8B00F3B68B00F3B68B00F3B68C00F3B68C00F4B78D00F4B78D00F4B78D00F4B8
+ 8E00F4B88E00F4B88E00CA926F00000000000000000000000000000000001935
+ BF00A1A1A1009F9F9F00D5D5D500E0DFDF00DFE0E000E0DFE0002A8F60000CC7
+ 90002A8F6000E0E0E000E0DFE000E0E0DF00DFE0E000D2D2D2009C9C9C004275
+ DB001226AD0000000000000000000000000000000000D8D8D800D7D7D700E19E
+ 7700EDAB8200EEAB8200EEAB8200EDAB8200EDAB8200EDAB8200EEE9E700E7D1
+ C300ECE3DE00EBA98100EDAB8200EBB99A00D29B7E00CA866300DB977200E19E
+ 7700D7D7D700D7D7D7000000000000000000000000000000000000000000093C
+ 7A001662AD00F8E6C900F8E5C800F8E5C700F8E5C700F8E5C500F8E4C400F8E4
+ C300F8E4C300F8E1BF00F5DFB800F4DAB000F5DFBA00F7E1BF00F7E3C2001661
+ AD00093D7A0000000000000000000000000000000000B8826100F1C89B00D69A
+ 7200D79B7300F0C99C00F2B58B00F4B78D00F4B88D00F4B88E00F4B88E00F4B9
+ 8E00F4B98E00F5B98F00F5B98F00F5BA8F00F6BA9000F6BB9000F6BB9000F6BB
+ 9000F6BB9000F6BB9000E8AD8500624836000000000000000000000000001935
+ BF004275DB00A2A2A2009F9F9F00E1E1E100E1E1E100E1E1E1000CC790002A8F
+ 60002E54D4002A8F6000E1E1E100E1E1E100D2D2D2009D9D9D00A4A5A5004A8D
+ EB001226AD0000000000000000000000000000000000DADADA00D9D9D900E19F
+ 7800EEAD8400EEAD8400EEAD8400EEAD8400EEAD8400EEAD8400EEAD8400FCC8
+ A500EEAD8500EEAD8400EEAD8400EEAD8400EFD7C800ECD9CF00CA866300DA98
+ 7200D9D9D900D9D9D90000000000000000000000000000000000000000000A3F
+ 7E001864B200F8E7CB00F8E7CA00F8E7CA00F8E7CA00F8E6C900F8E5C800F8E5
+ C800F8E5C800F8E5C500F8E4C400F8E2C100F6DBB400F5DBB300F7E0BD001864
+ B1000A3F7E0000000000000000000000000000000000B8836200EFC99C00DFA3
+ 7B00DFA37B00E2A77F00FFFAF100FDF1DF00FDEFDB00FDEDD900FCEAD200FBE9
+ CF00FAE7CC00F9E2C400F9E1C100F8DFBE00F8DDBA00F7DCB800F7DCB800F6DB
+ B700F6DAB600F6DAB600F5D9B500D7A481000000000000000000000000001935
+ BF003562DA005092EF004275DB00A0A0A000D8D9D900E4E3E300154BA300F1B1
+ 8700F1B18700E4E4E300E3E3E300D5D5D500A4A4A5004275DB004B8EEC001934
+ BF001226AD0000000000000000000000000000000000DBDBDB00DADADA00E2A0
+ 7900EFAE8500EEAE8500EFAE8500EEAE8500EFAE8500EFAE8500EEAE8500FCC9
+ A600EEAE8500EFAE8500EEAE8500EFAE8500ECAE8700F2E4DC00E5C7B500D28E
+ 6A00DADADA00DADADA0000000000000000000000000000000000000000000A41
+ 81001965B300F8E8CC00F8E7CB00F8E7CB00F8E7CB00F8E7CA00F8E6C900F8E6
+ C900F8E6C900F8E5C800F8E5C700F8E5C700F6E0BB00F5DAB300F6DCB6001865
+ B3000A40810000000000000000000000000000000000B9836300EFCA9C00E3A8
+ 7F00E3A87F00E3A87F00E7AE8700E9AF8500E9AF8500E9AF8500E9AF8500E9AF
+ 8500E9AF8500E9AF8500E9AF8500E9AF8500E9AF8500E9AF8500E9AF8500DBA0
+ 790091674E008A624A00886149003D2C21000000000000000000000000000C17
+ 3A002E54D4003563DA005699F100A1A1A300A0A0A000DADAD900154BA300F1B1
+ 8700F1B18700E5E5E500D5D5D6009D9D9D004275DB004B8EEC002447CA001226
+ AD00060E340000000000000000000000000000000000DCDCDC00DBDBDB00E2A1
+ 7900EFAF8600EEAF8600EEAE8500EFAF8600EFAF8600EFAF8600EFAF8600FCC9
+ A600EEAE8600EEAF8600EFAF8600EFAF8600EFAF8600ECB58F00F5EFEB00CC88
+ 6400DBDBDB00DBDBDB0000000000000000000000000000000000000000000B41
+ 82001966B500F8E8CE00F8E8CD00F8E8CC00F8E8CC00F8E7CB00F8E7CA00F8E7
+ CA00F8E7CA00F8E6C900F8E5C800F8E5C800F8E2C300F6E0BC00F5DDB5001967
+ B5000B42820000000000000000000000000000000000B8846300EFCA9D00E8AD
+ 8400EFB58A00EFB58B00EFB58B00EFB48A00EEB48A00EEB48A00EDB38900EDB3
+ 8900EDB38900ECB28800ECB18800ECB18700EBB08600EAB08600EAAF8600DCA0
+ 790017100B000000000000000000000000000000000000000000000000000000
+ 00001935BF002E54D4003664DA004275DB00A1A1A300A0A0A000063384000633
+ 840006338400D6D6D6009D9D9D00A4A5A5005093EF00244ACB001934BF00060E
+ 33000000000000000000000000000000000000000000DEDEDE00DDDDDD00E3A1
+ 7A00EFB18700EFB18800EFB08700EFB08800EFB18700EFB18700EFB18800FCCA
+ A700EFB18700EFB18700EFB18800F0B18800EFB18800EFB08800EFB08800F5EA
+ E300DDDDDD00DDDDDD0000000000000000000000000000000000000000000C44
+ 87001B69B900F9E9D000F8E9CF009B9280009B9280009B927F009B927F009B92
+ 7F009B927E009B917E009B917D009B917D009B917D00BFB29900F8E5C7001B69
+ B8000C44870000000000000000000000000000000000BA866500EECC9F00F6BC
+ 9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC
+ 9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100E2A7
+ 7F00140E0A000000000000000000000000000000000000000000000000000000
+ 0000000000000B1535001935BF003664DB00579BF2004275DB00A0A0A000DBDC
+ DB00D8D7D800A3A4A7004275DB00579AF100878CA6001226AD00060D2F000000
+ 00000000000000000000000000000000000000000000DFDFDF00DEDEDE00E3A3
+ 7B00EFB28800F0B18800EFB28800F0B18800EFB18800EFB18800F0B28800FCCA
+ A700EFB28800F0B18800EFB28800EFB28900F0B18800EFB18800F0B18800EFD1
+ BD00DEDEDE00DEDEDE0000000000000000000000000000000000000000000D45
+ 8A001B6AB900F9EAD100F9E9D000565544005755450057554400575644005755
+ 44005655440057554500575544005756440086806C009B917D00F8E7CA001B69
+ BA000D45890000000000000000000000000000000000BC886700EDCC9F00F6BC
+ 9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100FADDB800FADD
+ B800FADDB800FADDB800FADDB800FADDB800FADDB800FADDB800FADDB800D198
+ 7300050302000000000000000000000000000000000000000000000000000000
+ 000000000000000000000B1432002E54D4003664DB00589BF200A0A1A400A0A0
+ A0009D9D9D004275DB00579BF200061D9400ABABAB00050C2D00000000000000
+ 00000000000000000000000000000000000000000000E1E1E100E0E0E000E2A3
+ 7B00EFB28900F0B28900F0B28900F0B28900F0B28800F0B28900EFB28900FCCA
+ A700F0B28900EFB28900EFB28900EFB28900EFB28900EFB28900F0B28900E9B7
+ 9800DFDFDF00DFDFDF0000000000000000000000000000000000000000000D47
+ 8C001C6BBB00F9EAD200F9EAD100908974009089740090897400908974009089
+ 7400908974009089740090897400908974005A5A48009B917E00F8E7CB001C6A
+ BB000D468C0000000000000000000000000000000000BF8A6900EDCD9F00F6BC
+ 9100F6BC9100F6BC9100F6BC9100F6BC9100F6BC9100F3D2AE00DDAC8E00DDAC
+ 8E00DDAC8E00DDAC8E00DDAC8E00DDAC8E00DDAC8E00DDAC8E00DDAC8E003B2B
+ 2000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001935BF002E54D4003664DB004275DB009FA1
+ A5009D9FA700589CF200061D9400A0A5BF00ABABAB0000000000000000000000
+ 00000000000000000000000000000000000000000000E3E3E300E2E2E200E3A3
+ 7C00E3A37C00E3A37C00E3A37C00E3A37C00E3A37C00E3A37C00E3A37C00EBB2
+ 9000E3A37C00E3A37C00E3A37C00E3A37C00E3A37C00E3A37C00E3A37C00E3A3
+ 7C00E2E2E200E2E2E20000000000000000000000000000000000000000000E49
+ 90003786D5003786D5003786D500F5F6EF00E3E5D200D3D6B600D3D6B600D3D6
+ B600D3D6B600D3D6B600D3D6B600DDDFC70064634F002F5B83003786D5003786
+ D5000E4990000000000000000000000000000000000087634C00D9A68600D89D
+ 7800D69C7700D69B7700D69B7700D49A7500C18B6900271C1500000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000A122E001935BF003563DA0072B7
+ FF0072B7FF001934BF00ABABAB00CCCCCC00ABABAB0000000000000000000000
+ 00000000000000000000000000000000000000000000E4E4E400E3E3E300E3E3
+ E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3
+ E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3E300E3E3
+ E300E3E3E300E3E3E30000000000000000000000000000000000000000000B39
+ 71000E4A93000E4B92000F4A920068675400686754006867540072725E007272
+ 5E0072725E0072725E006868540068675400455C6D00183A5E000E4B92000F4A
+ 92000B3971000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000009112C002E54D4003F82
+ E6003F82E6001226AD00ABABAB00CCCCCC00ABABAB0000000000000000000000
+ 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006C6B5700646351006463
+ 510064635100646351006D6C5800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000001935BF003F82
+ E6003F82E600050A2600ABABAB00E4EBEB00ABABAB0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004545380073725D007372
+ 5D0073725D0073725D0045453800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000509
+ 1800020616000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000030448900BECAF4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000026366A007D94E1004256
+ 9C00687FCF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A3B3E90029396C003B4A7E0043549300485C9E00485C
+ 9E00485C9E00435493003B4B80002A396E00A3B3E90000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CCCC
+ CC003E5291002B3767002A386800445799004D60A1005166AC005267AC005166
+ AE005267AB005064A8004E63A7004A5D9B002F3D6E0029366400293665009FAD
+ DC00D3D3D3000000000000000000000000000000000034343300232323002222
+ 220022222200212121002121210020202000202020001F1F1F001F1F1F001E1E
+ 1E001E1E1E001D1D1D001D1D1D001D1D1D001C1C1C001C1C1C001B1B1B001B1B
+ 1B001B1B1B001A1A1A0034343300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000028387000869FF1007D95
+ E6004A5DA0000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003E55A3002F3E7400455EAF002F4BAB001E3DA400032699000326
+ 9900032699001E3DA4002F4BAB00455EAF002F3E74003E55A300000000000000
+ 0000000000000000000000000000000000000000000000000000CBCBCB0093A2
+ D800475891005166B1004E60A2004E69C0003B58BA003856B9003B58B9003754
+ B7003653B6003552B300304DAF003551AE003545790047568D004C60A3002A37
+ 670092A1D7000000000000000000000000000000000036363500F4E0BD00F7E2
+ BF00F7E2BE00F7E2BE00F7E1BD00F7E1BC00F7E1BC00F7E0BB00F7E0BB00F7E0
+ BA00F7E0BA00F7E0BA00F7E0BA00F7E0BA00FAEFCC00F9EED000F7EBCF00F5E5
+ C900F2DFC000F2DAB60034343300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000002B3B75008BA1EB00829A
+ EA006A87EB003349900000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000293D85003D4E8900465FB0000B2EA10003279F0003279F0003279F000327
+ 9F0003279F0003279F0003279F000B2EA100465FB0003D4E8900293D85000000
+ 0000000000000000000000000000000000000000000000000000000000004860
+ B200506BC8003B5BC4005570CA005E78D1003D5DC8004664CA004563C9004563
+ C9004361C7003F5DC3003B5AC0003151BA0049598E004E67B800324EAE004A5A
+ 93004157A4000000000000000000000000000000000039393700F7E3C100F7E3
+ C100F7E2C000F7E2BF00F7E2BE00F7E2BE00F7E2BE00F7E1BD00F7E1BC00F7E0
+ BB00F7E0BB00F7E0BA00F7E0BA00F7E0BA00F8E3BC00FCF3CE00FDF7D800FEF9
+ E400FEF9E700F3DEBB0034343300000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000304180009CAEED007F96
+ E1004B67C7004368E40030418000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002D41
+ 8A003654B900082DA9000429A8000429A8000429A8000429A8000429A8000429
+ A8000429A8000429A8000429A8000429A8000429A800082DA9003654B9002D41
+ 8A00000000000000000000000000000000000000000000000000000000003C52
+ 9E005978E100617FE4006F8BE800859DED006D89E9006E8AEA006C89E9006B88
+ E8006986E7006481E300617EE1005C7ADE007F93D4005270D3004362CB005971
+ C10033458400000000000000000000000000000000003E3D3B00F8E4C400F8E4
+ C400F7E4C300F7E4C300F7E3C200F7E3C100D8C7A9008C817100F7E2BF00F7E2
+ BE00F7E2BE00B4A48C00756C5D00736A5C00F5DEBA00F7E0BB00F7E0BB00FCF5
+ D300FDF7DB00F8EBD00034343300000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000334486009EB0EE007F96
+ E1004B67C7004468E40033448600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000445DAE004154
+ 9500082EAE00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00082EAE004154
+ 9500445DAE00000000000000000000000000000000000000000000000000435B
+ AD006E8CEF007994F1007C97F3008DA5F500819BF400829CF500809AF4007F9A
+ F4007C97F3007692EF00738FED006F8BEB007F98E9005F7DE0005876DB006079
+ CC00384C90000000000000000000000000000000000040403C00F8E5C700F8E5
+ C700F8E4C500F8E4C400F7E4C300F7E4C300B7AA940026262600F7E3C100F7E2
+ C000F7E2C0001D1D1D001C1C1C001F1F1E00615A4E00F5DFBB00F7E1BC00F7E1
+ BC00FBEFCC00FAF1D20034343300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000035488B009FB1EE007F96
+ E1004B67C7004468E40035488B00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A7B6EC00384987004863
+ BE00042CB100042CB100042CB100042CB100042CB100042CB100042CB100042C
+ B100042CB100042CB100042CB100042CB100042CB100042CB100042CB1004863
+ BE0038498700A7B6EC0000000000000000000000000000000000000000004862
+ B9007A96F4008AA3F6008EA6F60092A9F60093AAF60093AAF60092A9F60091A8
+ F6008EA6F60088A2F600839DF400809AF4007591EF006F8BEB006784E700637E
+ D5003D539C000000000000000000000000000000000042423E00F8E6C900F8E6
+ C900F8E5C800F8E5C700F8E4C500F8E4C400B9AB950029292900F7E4C300F7E3
+ C200E2D0B20025252400C9B79D00EDD9B7001B1B1B00AA9C8500F7E2BE00F7E1
+ BD00F7E1BC00F9E9C30034343300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003A4F9700A0B2EE007F96
+ E1004B67C7004469E5003A4F9700000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000394B8E004A67C800133A
+ BF000C35BE000C35BE000C35BE00FFFFFF00FFFFFF00A2B2E5000C35BE000C35
+ BE000C35BE00A2B2E500FFFFFF00FFFFFF000C35BE000C35BE000C35BE001239
+ BE004A67C800394B8E0000000000000000000000000000000000000000006F89
+ DE00859FF5009FB3F700B2C2F900B7C7F900B8C7F900B9C8F900B7C7F900B5C5
+ F900B3C3F900ABBDF800A6B9F800A0B4F70094ABF6008CA5F6007894F400617A
+ CE006B85DA000000000000000000000000000000000047474200F8E7CC00F8E7
+ CC00F8E7CB00F8E7CB00F8E6CA00F8E6C900BBAF9A0030303000F8E5C700F8E4
+ C500F8E4C500F7E4C300F7E4C300F7E4C30022222200766E6100F7E3C100F7E2
+ C000F7E2BF00F7E2BF0034343300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003D539E00A0B2EE007F96
+ E1004B67C7004469E5003D539E00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004A5DA500395BCD00153D
+ C400173FC400173FC400173FC400FFFFFF00FFFFFF00FFFFFF00173FC400173F
+ C400173FC400FFFFFF00FFFFFF00FFFFFF00173FC400173FC400173FC400153D
+ C400395BCD004A5DA5000000000000000000000000000000000000000000D3DB
+ F8007C95E8009DB2F700B2C2F900C9D5FB00BAC5E800AEB8D800A1AAC900A0A9
+ C8009DA7C8009AA6CE009CAAD700A1B1E6009FB3F7008CA5F6007E99F500556E
+ C200D2DBF800000000000000000000000000000000004A494400F8E8CE00F8E8
+ CE00F8E7CD00F8E7CC00F8E7CB00F8E7CB00BCB09D0033333300F8E6C900F8E5
+ C800F6E3C50056524C00BDAF9900C9B9A10026262600AB9F8B00F7E4C300F7E3
+ C200F7E3C100F7E3C10034343300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000004056A300A1B3EE007F96
+ E1004B67C7004569E5004056A300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005169BD003357CF002148
+ CB00234ACB00234ACB00234ACB009DA9D000FFFFFF00FFFFFF00ABBAEB00234A
+ CB00ABBAEB00FFFFFF00FFFFFF009DA9D000234ACB00234ACB00234ACB002148
+ CB003357CF005169BD0000000000000000000000000000000000000000000000
+ 00005E76C700869DE9009CB1F700A2AFD900ADB5CF00D6D9E100EDECEB00ECEB
+ EA00ECEBEA00E4E4E800D2D5E100A2ACCE0097ADF70088A2F6007791E70092A5
+ EC0000000000000000000000000000000000000000004C4C4600F9E9CF00F9E9
+ CF00F8E8CE00F8E8CE00F8E7CD00F6E5CA00BDB19F0037373700F8E7CB00F8E6
+ CA00F8E6CA002E2E2E002D2D2D002C2C2C006E685E00F7E3C300F8E4C400F7E4
+ C300F7E4C300F7E4C30034343300000000000000000000000000000000000000
+ 0000000000000000000000000000000000004962B9006B82CC00B4C4F900A7B9
+ F80098AEF7007692F2006279CA00465EB3000000000000000000000000000000
+ 000000000000000000000000000000000000000000005D78D5002D54D500365B
+ D700395ED800395ED800395ED800395ED8003353BE00A4AFD400FFFFFF00FFFF
+ FF00FFFFFF00A4AFD4003353BE00395ED800395ED800395ED800395ED800385D
+ D8002E54D5005F79D50000000000000000000000000000000000000000000000
+ 000000000000CED8F7006B84DB005C72BD00C7CBDB00CDCBCA00A19F9E009997
+ 960099989600B8B7B500D1D0CE00CACEDE005972C5006B84DB00CED8F7000000
+ 0000000000000000000000000000000000000000000051514900F9EAD200F9EA
+ D200F9E9D100F9E9D100F9E9D000464544003E3E3E003D3D3D00F8E8CE00F8E7
+ CD00F8E7CD00353535009E948500E2D3B900E2D2B800F3E2C400F8E6C900F8E5
+ C800F8E5C700F8E5C70036363400000000000000000000000000000000000000
+ 0000000000000000000000000000516AC4006980CD0087A0F3009DB1F3008AA3
+ F4007993ED005C7AE0006081EE006078CC00BFCCF50000000000000000000000
+ 00000000000000000000000000000000000000000000607BD800365CDC004266
+ DE004569DF004569DF004569DF004569DF004569DF003D5CC300FFFFFF00FFFF
+ FF00FFFFFF003D5CC3004569DF004569DF004569DF004569DF004569DF004468
+ DF003A5FDC006681DB0000000000000000000000000000000000000000000000
+ 000000000000000000000000000093A7ED006475AC0083879400ACAAA900C3C1
+ C000C7C5C4009896950081879B006879B4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000053534B00F9EBD400F9EB
+ D400F9EAD300F9EAD200F9E9D100E1D3BD005D5B570041414100F9E9CF00F8E8
+ CE00F8E8CE0039393900383838003636360033333300CBBDA700F8E7CB00F8E6
+ CA00F8E6C900F8E6C90036363500000000000000000000000000000000000000
+ 0000000000000000000000000000677FD0007A95F1008CA1E80096ACF500839D
+ F100728DEA004F6ED7004667D4005276EC004D65BE00BFCDF600000000000000
+ 00000000000000000000000000000000000000000000657FDC003F64E1004D70
+ E3005173E3005173E3005173E3005173E3005173E300BCC9F400FFFFFF00FFFF
+ FF00FFFFFF00BCC9F4005173E3005173E3005173E3005173E3005173E3004F71
+ E3004368E1006C85DE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000009D9D9D005D5C5C00A9A7A500AFAD
+ AB00B7B5B300C0BEBD00646363009D9D9D000000000000000000000000000000
+ 0000000000000000000000000000000000000000000053534B00F9ECD500F9EC
+ D500F9EBD400F9EBD400F9EAD300F9EAD200DACEB900504F4D00F9E9D100F9E9
+ D000F9E9D0006B6760006A66600069655F0067635C00D7C9B100F8E7CC00F8E7
+ CB00F8E7CB00F8E7CB0038383600000000000000000000000000000000000000
+ 000000000000556FCD00637CD1006B85D9008096E1009CAEED0088A1F3007792
+ EC006582E4004363CF003354C3002446B5003C63E8005B75CF00506AC3000000
+ 000000000000000000000000000000000000000000006680D6006080EC006080
+ EB006886EC006886EC006886EC00C5D1F800FFFFFF00FFFFFF00B2BBDA005670
+ C400B2BBDA00FFFFFF00FFFFFF00C5D1F8006886EC006886EC006886EC006181
+ EB006181EC006780D60000000000000000000000000000000000000000000000
+ 000000000000000000000000000059595900ACABAA00C2C1C000BDBCBA00B7B6
+ B400AFADAB00A8A6A500B7B5B400AEADAC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000058584F000C5DDD000B5C
+ DC000A5ADA000959D9000958D8000855D6000754D5000653D4000551D2000550
+ D100044FD100034DCF00034DCE00024CCE00024BCD00024BCD00024BCD00024B
+ CD00024BCD00024BCD003A3A3800000000000000000000000000000000000000
+ 00005671CD00637CD1005C7DEC006E86D7008A9FE500A1B3F000819BF000718C
+ E9005F7DE1003D5ECB002D4EBD001F41B0001033A500375FE7005C76D000BFCD
+ F60000000000000000000000000000000000000000006279C8006E8CF0006887
+ EF007491F1007491F1007491F100FFFFFF00FFFFFF00FFFFFF00657FD3007491
+ F100657FD300FFFFFF00FFFFFF00FFFFFF007491F1007491F1007491F1006988
+ EF006E8CF0006279C80000000000000000000000000000000000000000000000
+ 00000000000000000000000000007E7E7D00D1D0D000D2D2D100CDCCCB00C7C6
+ C500BFBDBC00A8A6A400A8A6A400B9B7B600AAAAAA0000000000000000000000
+ 000000000000000000000000000000000000000000005A5A50000C5EDE000C5D
+ DE000B5BDC000A5ADB000A59DA000957D8000856D7000755D6000653D4000652
+ D3000551D200044FD000044ED000034DCF00024CCE00024BCD00024BCD00024B
+ CD00024BCD00024BCD003C3C3900000000000000000000000000000000000000
+ 0000607AD1005375EB004D69C8007990DD0094A8EA00A0B3F3007B96EE006A86
+ E6005977DD003758C600284AB9001A3CAB0004248F000C2E9F00375FE700526C
+ C500BFCDF600000000000000000000000000000000005169BB007E97F0006F8D
+ F300819BF500819BF500819BF500FFFFFF00FFFFFF00BAC2DC00819BF500819B
+ F500819BF500BAC2DC00FFFFFF00FFFFFF00819BF500819BF500819BF5007290
+ F4007E98F1005169BB0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C2C1C100E0DFDE00E1E0E000DBDBDA00D5D4
+ D300CCCBCA00B4B3B100A6A4A300ACAAA8006969690000000000000000000000
+ 000000000000000000000000000000000000000000005D5C52000D5FE0000D5F
+ DF000C5DDD000B5CDD000B5BDC000A59DA000958D9000857D8000754D6000753
+ D5000652D4000550D200044FD100044ED000034DCE00034CCE00024BCD00024B
+ CD00024BCD00024BCD003E3E3B000000000000000000000000005973CF005F79
+ D2003251B7003F5BB8005772C9008DA2E700A1B3F10092A9F4006F8BE8005D7B
+ E0004C6CD5002C4DBC001E40AF001031A00003238D0003238D0003238D00375F
+ E7005E78D200536EC700000000000000000000000000AEBDF200586EBF00869E
+ F0008FA7F60096ACF70096ACF7008497D8008497D80096ACF70096ACF70096AC
+ F70096ACF70096ACF7008497D8008497D80096ACF70096ACF70091A8F60089A1
+ F000586FBF00AEBDF20000000000000000000000000000000000000000000000
+ 0000000000000000000000000000A9A9A8004D4D4D00F7F6F600F1F1F100EBEA
+ EA00E2E1E000C8C7C600B9B7B60070706F004D4D4D0000000000000000000000
+ 00000000000000000000000000000000000000000000626156000E61E1000E61
+ E1000D60E0002A70E4003D79E6003270E0000B5BDC000A5ADB000958D9000857
+ D8000856D7000753D5000652D4002769DF003B77E500306CDD00044ECF00034C
+ CE00024BCD00024BCD0043433F0000000000000000005973CF005F78D3004068
+ EE003B59BF00516DCB006882D8009CAFEE00A3B5F40091A8F400708CE900607E
+ E3005070DA003255C7002447BC00183BB1001033A6001033A6001033A600193E
+ B8003B64ED005F78D300C1CDF6000000000000000000000000005C76D2006980
+ CE008BA4F6009DB2F700A2B6F800A2B6F800A2B6F800A2B6F800A2B6F800A2B6
+ F800A2B6F800A2B6F800A2B6F800A2B6F800A2B6F8009CB1F7008FA7F6006F85
+ D0005C76D2000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004D4D4D004D4D4D00FDFDFD00F8F8F800F2F1
+ F100E9E8E800CFCECD00B9B7B6004D4D4D004D4D4D0000000000000000000000
+ 00000000000000000000000000000000000000000000646458000E61E1000E61
+ E1001F6BE4002E65D00013389600133896002A5CBF000B5CDC000A5ADA000959
+ D9000957D8000855D6001B62DC002D63CE0017327100133896002A5EC500034D
+ CF00034CCE00024CCE004545400000000000000000005F79D3003C65EE00426A
+ F0006183F2007491F40088A2F600B3C3F900ADBEF8009EB3F700829CF5007491
+ F4006787F3004F74F100446BF0003B64EF003761EF003761EF003761EF003761
+ EF003761EF003B64ED005872CD00000000000000000000000000000000004E68
+ C30094ABF60097ADF700A8BAF800AEBFF800AEBFF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800AEBFF800AEBFF800A5B8F80095ACF70095ACF7004E68
+ C300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004D4D4D004D4D4D00BCBCBC00E6E6E600CBCB
+ CB00BABAB9009A9999007A7A79004D4D4D006969690000000000000000000000
+ 0000000000000000000000000000000000000000000067665A000E61E1000E61
+ E1001565E200133CA000526D9700506C9700163A8B000C59D5000B5BDC000A5A
+ DB000A59DA000957D800115BD900123BA0004774C500506C97001742A400044E
+ D000034ECF00034DCF004848420000000000000000003761EF000936CC00214A
+ D4005475E4006E8AE900869EEF0098ADF50088A1F5007B96F0005C7BE2004E6E
+ DA003F60CF002648B900193BAB000E2F9E000324930003269A000328A000042B
+ AD00042DB500042EBB005872C900000000000000000000000000000000000000
+ 00004F6AC500758AD3009EB2F400A8BAF800B2C2F900B7C7F900BCCAFA00BCCA
+ FA00BBCAFA00B6C6F900B1C1F900A7B9F80098ADF2006F85D1004F6AC5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000515151004D4D4D004D4D4D004D4D4D004D4D
+ 4D004D4D4D004D4D4D004D4D4D004D4D4D000000000000000000000000000000
+ 000000000000000000000000000000000000000000006B6B5D00579BF000579B
+ F000579BF000579BF00046453D0048473F00345E98004C89D600579BF000579B
+ F000579BF000579BF000579BF000579BF0003D3C360048473F00345E9800579B
+ F000579BF000579BF0004B4B45000000000000000000486CE800496DE8005477
+ EA006D8AED007994EE00849DF0008BA2F000849DF0007E98EE00708DED006A88
+ ED006483EB005678EA005174EA004C70E800486CE800486CE800486CE800486C
+ E800486CE800486CE8005872C900000000000000000000000000000000000000
+ 0000000000005E79D3005F76C5009FB3F500A3B6F800A4B7F8009FB3F7009FB3
+ F7009FB3F700A3B6F800A0B4F7009FB3F5005F76C5005E79D300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000AAAAAA004D4D4D004D4D4D004D4D4D004D4D
+ 4D004D4D4D004D4D4D004D4D4D004D4D4D000000000000000000000000000000
+ 000000000000000000000000000000000000000000006E6D5F004078AF002380
+ E4002380E4002380E4003D3C36003D3C3600164883001F6EC5002380E4002380
+ E4002380E4002380E4002380E4002380E4003D3C36003D3C3600164883002380
+ E4002380E4003770A9004F4E470000000000000000005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005872C9005872C9005872C9005872C9005872C9005872
+ C9005872C9005872C9005B76D200000000000000000000000000000000000000
+ 00000000000000000000AEBEF2005C74C500768CD500859AE40090A6F10091A7
+ F10090A6F100839AE500758AD5005C73C400AEBEF20000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000AAAAAA004D4D4D004D4D4D004D4D
+ 4D004D4D4D004D4D4D004D4D4D00AAAAAA000000000000000000000000000000
+ 000000000000000000000000000000000000000000006E6D5F006C6C5E006B6B
+ 5D006A695C0069685B00A9A98A00B8B9980032363F0052544F00636257006261
+ 5600626156005F5F54005E5E53005E5D5300D4D4AB00B8B998002C313B005858
+ 4F0058584F0057564E0079786D00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000051504400515044000000000000000000000000000000
+ 0000000000000000000000000000000000006867580051504400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CDD6F6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000038477E0041486200404761003E455F003D44
+ 5F003C435E003B435D003B425D003A415C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B6C3F0002939
+ 740027366B000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000002737730027377300B6C5F0000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B6C5F00027377300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000474E6A007A8ABF0013339F0013339F001333
+ 9F0013339F0013339F0013339F007988BD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B7C5F1004A5B99003E59
+ B1003E59B1002C3B73008195DB00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000273770003F519200283B7A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000B7C5F1002B3E7C004E5E9400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000048516E007B8BC10003279E0003279E000327
+ 9E0003279E0003279E0003279E007B8BC0000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B9C6F1002E4281003F5AB6000F31
+ A3000F31A3004A5D9E002D3E79008196DC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000002A3C7800435EB90040549800B9C6F10000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002E4282004B5D9F004961B100000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004B5472007C8CC3000328A2000328A2000328
+ A2000328A2000328A2000328A2007B8BC3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000B9C6F100304285004C5FA1000F33A9000328
+ A4000328A4003E5AB9004C5FA1002F417E000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000304486004260C5001E42BA00445AA50032468E00BAC7F2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000BAC7F200354990003F5EC4001E42BA004A65BD00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000515978007D8EC800042AAB00042AAB00042A
+ AB00042AAB00042AAB00042AAB007B8CC7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BAC7F2004E62AA003E5CC2001035B400042BB000042B
+ B000042BB000042BB0001035B4003E5CC200344688008499DF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000034488E004363CC00143BBF003F5FCB00455DAC00354A95000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000BCC8F300384D97004F66B1001038BF00143BBF004C67C400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000535C7C007C8ECB00042CB100042CB100042C
+ B100042CB100042CB100042CB1007B8DCA000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000BAC7F200374B94003F5EC7001037B900042DB600042DB600042D
+ B600042DB600042DB600042DB6001037B9004F65AF0036498C00859AE1000000
+ 00000000000000000000000000000000000000000000374C9500374C9500374C
+ 9500374C9500374C9500374C9500374C9500374C9500374C9500374C9500374C
+ 9500374C9500374C95004364D300143DC700103AC6003E60D1004760B300BDC9
+ F400000000000000000000000000000000000000000000000000000000000000
+ 00003A519D005169B8003E60D1000430C300143DC7004D6AC900374C9500374C
+ 9500374C9500374C9500374C9500374C9500374C9500374C9500374C9500374C
+ 9500374C9500374C95004259AC00000000000000000000000000000000000000
+ 0000000000000000000000000000555E7F007D8FCE00042DB600042DB600042D
+ B600042DB600042DB600042DB6007C8ECD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000BCC8F300394F98005167B200153CC0000932BC000932BC000932BC000932
+ BC000932BC000932BC000932BC000932BC004161CC005167B200394C91000000
+ 000000000000000000000000000000000000000000004D6DD6001441D8001441
+ D8001441D8001441D8001441D8001441D8001441D8001441D8001441D8001441
+ D8001441D8001441D8001441D8000838D5000535D5000535D500103ED7004C67
+ C1003F57AA00BECCF50000000000000000000000000000000000BECCF5004159
+ AB003E63DE00103ED7000535D5000535D5000838D5001441D8001441D8001441
+ D8001441D8001441D8001441D8001441D8001441D8001441D8001441D8001441
+ D8001441D8001F4AD9003E55A500000000000000000000000000000000000000
+ 00000000000000000000000000005A6488007E92D400042FBF00042FBF00042F
+ BF00042FBF00042FBF00042FBF007C90D2000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000BDC9
+ F400536BBC00496AD7002C51D000284ECE002A50D0002048CD001C44CC001C44
+ CC001C44CC001C44CC001C44CC002A50D000254CCE002C51D000496AD7003D52
+ 9C00899EE400000000000000000000000000000000004F70DD000637DD000738
+ DD000738DD000738DD000738DD000738DD000738DD000738DD000738DD000738
+ DD000738DD000738DD000738DD000738DD000738DD000738DD000738DD004167
+ E6004F6AC700435BB100000000000000000000000000BECCF500455EB2005871
+ CB001141DF000738DD000738DD000738DD000738DD000738DD000738DD000738
+ DD000738DD000738DD000738DD000738DD000738DD000738DD000738DD000738
+ DD000738DE001544DF004259AD00000000000000000000000000000000000000
+ 00000000000000000000000000005E678B007F92D5000531C4000531C3000531
+ C3000531C3000531C3000531C4007D91D4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000003D56
+ A500506ED2005370D2005673D3005B77D4005A78DC002B52D400254DD300254D
+ D300254DD300254DD300244CD3005A78DC005974D3005673D3005370D2005D72
+ B9004056A000D1DAF8000000000000000000000000005677E4001848E7001D4C
+ E8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4C
+ E8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8002552
+ E9004B70ED00536FCE00BFCCF50000000000000000004962BA005C77D2004A6F
+ ED001C4BE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4C
+ E8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4CE8001D4C
+ E8001C4BE8002653E900455EB500000000000000000000000000000000000000
+ 0000000000000000000000000000606A8F008295D800113CCB00153FCC00153F
+ CC00153FCC00153FCC00123DCC008094D7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004B62
+ AF003F56A5003F56A5003F56A5003F56A5005D79D8002A52D9002F56DA002F56
+ DA002F56DA002F56DA002951D9005D79D7003F56A5003F56A5003F56A5003F56
+ A5003F58AA00000000000000000000000000000000006785EA00496FF0005479
+ F1005579F1005579F1005579F1005579F1005579F1005579F1005579F1005579
+ F1005579F1005579F1005579F1005579F1005579F1005579F1005579F1005176
+ F1004B71F1005A7DF2004A64BD0000000000000000005E79D600577BF200466D
+ F0005479F1005579F1005579F1005579F1005579F1005579F1005579F1005579
+ F1005579F1005579F1005579F1005579F1005579F1005579F1005579F1005579
+ F1005479F1005176F1004A64BB00000000000000000000000000000000000000
+ 0000000000000000000000000000657097008C9EE000365CDB003F64DC003F64
+ DC003F64DC003F64DC00365CDB008A9DDF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000445DB100607DE000375FE5004167E6004167
+ E6004167E6004167E600375FE500607DE0000000000000000000000000000000
+ 000000000000000000000000000000000000000000006E8AEA005E80F200708E
+ F400718FF400718FF400718FF400718FF400718FF400718FF400718FF400718F
+ F400718FF400718FF400718FF400718FF400718FF400718FF400718FF4006989
+ F3006E8DF300607AD600BFCCF50000000000000000004E67C0006681D9006A8A
+ F3006E8DF300718FF400718FF400718FF400718FF400718FF400718FF400718F
+ F400718FF400718FF400718FF400718FF400718FF400718FF400718FF400718F
+ F4006F8DF3006586F3004B65BC00000000000000000000000000000000000000
+ 00000000000000000000000000006973990091A4E300466AE1005475E4005475
+ E4005475E4005475E400466AE1008FA1E1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004760B5006381E5003E65EA004A6FEB004A6F
+ EB004A6FEB004A6FEB003E65EA006280E5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000738EEB006D8CF30087A1
+ F5008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5
+ F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008BA4F6007F9A
+ F500657FD7004C66C000000000000000000000000000BFCDF6004F68C2006C86
+ D9007E99F50089A2F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5
+ F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5F6008CA5
+ F600849EF5007391F4004C66BD00000000000000000000000000000000000000
+ 00000000000000000000000000006B769E0096A8E5005879E7006684E9006684
+ E9006684E9006684E9005879E70094A5E4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004964BB006683E800466DEE005478F0005478
+ F0005478F0005478F000456CEE006582E8000000000000000000000000000000
+ 000000000000000000000000000000000000000000006985E300738EEB007C96
+ EC00829BED00829BED00829BED00829BED00829BED00829BED00829BED00829B
+ ED00839CED0096ABEF00B8C7F900C5D1FA00C1CEFA00ACBDF8008CA5F6004F69
+ C200BFCDF600000000000000000000000000000000000000000000000000BFCD
+ F6006D86DA0086A0F500A0B4F700C3D0FA00C1CEFA00B4C4F800869EED00839C
+ ED00829BED00829BED00829BED00829BED00829BED00829BED00829BED008099
+ ED007B95EC00728EEB004F69C00000000000000000000000000000000000717F
+ AF00889FE90091A6EA009AACEB00A8B8ED00B0C0F4008BA3F20087A0F20087A0
+ F20087A0F20087A0F200849EF200AFBFF4009DAEE90097AAE90090A4E8008E9A
+ C200616D9500CDD7F70000000000000000000000000000000000000000000000
+ 00000000000000000000000000004D67BE006B88EA005479F1006686F3006686
+ F3006686F3006686F3005479F1006A87EA000000000000000000000000000000
+ 00000000000000000000000000000000000000000000506AC100506AC100506A
+ C100506AC100506AC100506AC100506AC100506AC100506AC100506AC100506A
+ C100506AC100506AC1009BB0F700BDCBFA00B5C5F90096ACF7006882D800BFCD
+ F600000000000000000000000000000000000000000000000000000000000000
+ 0000536CC5006E87DB0088A2F600B9C8F900B2C2F9009DB0F000506AC100506A
+ C100506AC100506AC100506AC100506AC100506AC100506AC100506AC100506A
+ C100506AC100506AC100506AC30000000000000000000000000000000000BAC6
+ F40093A2D8008BA4F5007693F30092A9F500A0B4F6009AAFF60098AEF60098AE
+ F60098AEF60098AEF60097ADF6009FB3F6007E99F4007592F3008CA4F5006571
+ 9900869CE0000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004D67BF006D8AEA005C7FF200708EF400708E
+ F400708EF400708EF4005C7FF2006D8AEA000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000516BC20088A2F600A3B6F80098AEF7006F87DA00516BC4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000BFCDF600536DC6006E88DB0095ACF70092A9F6008AA1EE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007684B5009BA9D90099AFF7009AAFF700A6B9F800A7B9F800A7B9F800A7B9
+ F800A7B9F800A7B9F800A7B9F800A6B9F80087A1F50099AFF70092A0D100879C
+ E100000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004E68C000708CEA006485F3007995F4007995
+ F4007995F4007995F4006485F300708BEA000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000536DC4006A8AF3007693F400536DC600BFCDF600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BFCDF600708ADD006C8BF300708CEC00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000BAC6F4007683B400B3C3F900B2C2F900BDCBFA00C0CEFA00C0CE
+ FA00C0CEFA00C0CEFA00BDCBFA00B2C2F9009DA9D5006A76A000889CE2000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000506AC1007590EC007491F4008CA5F6008CA5
+ F6008CA5F6008BA4F6007491F400748FEC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000556FC600577BF200657FDB00BFCDF60000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005770C8006B85DD006181EB00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BAC6F400A1AEDA00B2C2F900B6C6F900CBD6FB00CBD6
+ FB00CBD6FB00C8D4FB00B8C7F900B2C2F9006C77A100889DE200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000516BC2007892EC007B97F40095ACF70095AC
+ F70095ACF70095ACF7007B97F4007691EC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005670C7005B78DA005670C8000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C1CDF6005871C9006D86D800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000007482B2009EABD900B4C4F900D1DBFB00D5DE
+ FC00D5DEFC00C5D1FA00B6C6F9009AA8D5008A9DE30000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000526CC3007994EC00829CF5009EB3F7009EB3
+ F7009EB3F7009EB3F700819BF5007993EC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000BAC6F4007381B200C1CEFA00C1CE
+ FA00C1CEFA00A7B2D900717DA7008A9EE3000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000546EC5007A94ED00829CF500B0C0F900B0C0
+ F900B0C0F900A9BBF800829CF5007993ED000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BAC6F300A6B1DA00B3C3
+ F900B3C3F900737EA8008B9EE400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000556FC600738FEC007693F400A3B6F800A6B9
+ F800A6B9F80098AEF7007693F400728EEC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000007181B0009DAA
+ D8009CA9D7008B9FE40000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005670C7006D88E5007590ED00859DEE00869E
+ EE00869EEE00829AEE007691ED006C88E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CED8F7000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000008D8B8B00918F8D00918F8D00918F8D00918F8D00918F
+ 8D00918F8D00918F8D00918F8D00918F8D00918F8D008D8B8B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A3B3EA002F3E73003F4F840044579700495DA100495D
+ A100495DA100445797003F4F86002F3F7400A3B3EA0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A3B3EA002F3E73003F4F840044579700495DA100495D
+ A100495DA100445797003F4F86002F3F7400A3B3EA0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000082807F00F7F7F700B2B2B200B2B2B200B2B2B200B2B2
+ B200B2B2B200B2B2B200B2B2B200B2B2B200F7F7F70082807F00000000000000
+ 000000000000000000000000000000000000000000000000000000000000AEBD
+ EC007A87B4008E9ED100808EBC00F0EFEF00EFEEEE00EDEDEC00EBEAEA00E9E9
+ E800E8E7E700E5E5E400E4E3E3008E99BE008E9AC3008E9AC300808EBC008293
+ CC008293CC008293CE0000000000000000000000000000000000000000000000
+ 0000000000004159A70035447A00455EAF002F4BAB001E3DA400032699000326
+ 9900032699001E3DA4002F4BAB00455EAF0035447A004159A700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004159A70035447A00455EAF002F4BAB001E3DA400032699000326
+ 9900032699001E3DA4002F4BAB00455EAF0035447A004159A700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000030458D0025356E004B494900717170007171700071717000717170007171
+ 700071717000717170007171700071717000717170004B49490025356E000000
+ 0000000000000000000000000000000000000000000000000000BAC6F2002E42
+ 8700798ED2002446B60003228900031E7B000322890003228900BCBAB900B7B5
+ B400B2B0AF00A7A5A400A2A09E00031E7B00032289000322890003228900042A
+ AB00042AAB008194D50000000000000000000000000000000000000000000000
+ 00002E42880042538E004760B1000B2EA10003279F0003279F0003279F000327
+ 9F0003279F0003279F0003279F000B2EA1004760B10042538E002E4288000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00002E42880042538E004760B1000B2EA10003279F0003279F0003279F000327
+ 9F0003279F0003279F0003279F000B2EA1004760B10042538E002E4288000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029386E00283564004D4C4B00767675006261600062616000626160006261
+ 600062616000626160006261600062616000767675004D4C4B0028356400768C
+ CF000000000000000000000000000000000000000000BAC6F20031458C006A79
+ B2001B40B8001D41B90003238D00031F7F0003238D0003238D00CAC8C700C5C3
+ C200C0BEBD00B6B4B300B1AFAD00031F7F0003238D0003238D0003238D00042C
+ B100042CB1008195D70000000000000000000000000000000000000000003147
+ 8F003654B900082DA9000429A8000429A8000429A8000429A8000429A8000429
+ A8000429A8000429A8000429A8000429A8000429A800082DA9003654B9003147
+ 8F00000000000000000000000000000000000000000000000000000000003147
+ 8F003654B900082DA9000429A8000429A8000429A8000429A8000429A8000429
+ A8000429A8000429A8000429A8000429A8000429A800082DA9003654B9003147
+ 8F000000000000000000000000000000000000000000344892004358A100425F
+ BF00425FBF0041528C0076757500ACACAC00ACACAC00ACACAC00ACACAC00ACAC
+ AC00ACACAC00ACACAC00ACACAC00ACACAC00ACACAC007675750041528C00425F
+ BF00425FBF004358A10000000000000000000000000034488F00879BDD00264B
+ C3001038BD00284CC4000D2D98000C2888000D2D98000D2D9800E0DFDF00DDDB
+ DB00D9D7D700D1CFCE00CDCBCA000C2888000D2D98000D2D98000D2D98001038
+ BD001038BD00869ADE0000000000000000000000000000000000475FB1004658
+ 9A00082EAE00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00082EAE004658
+ 9A00475FB1000000000000000000000000000000000000000000475FB1004658
+ 9A00082EAE00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00082EAE004658
+ 9A00475FB10000000000000000000000000000000000324588004260C5001036
+ B600042CB200021A6B00021A6B00021A6B00021A6B00021A6B00021A6B00021A
+ 6B00021A6B00021A6B00021A6B00021A6B00021A6B00021A6B00021A6B00042C
+ B2001036B6004260C500000000000000000000000000364B9400889DE100183F
+ C300183FC3002F53CA0013339C00112D8C0013339C0013339C00EBEAE900E7E6
+ E600E3E2E200DCDBDA00D8D7D600112D8C0013339C0013339C0013339C00183F
+ C300183FC300889DE100000000000000000000000000A8B7ED003E508E004964
+ BF00042CB100042CB100042CB100042CB100042CB100042CB100042CB100042C
+ B100042CB100042CB100042CB100042CB100042CB100042CB100042CB1004964
+ BF003E508E00A8B7ED00000000000000000000000000A8B7ED003E508E004964
+ BF00042CB100042CB100042CB100042CB100042CB100042CB100042CB100042C
+ B100042CB100042CB100042CB100042CB100042CB100042CB100042CB1004964
+ BF003E508E00A8B7ED00000000000000000000000000354A8F004362CB00042E
+ B900042EB900042EB900042EB900042EB900042EB900042EB900042EB900042E
+ B900042EB900042EB900042EB900042EB900042EB900042EB90003269C000325
+ 940003269C004362CB00000000000000000000000000394F99008A9FE3002047
+ CA002047CA003559CF001938A100173391001733910017339100F4F3F300F1F0
+ F000EDEDEC00E6E5E500E3E2E100173391001938A1001938A1001938A1002047
+ CA002047CA008A9FE3000000000000000000000000003F5194004966C8001139
+ BF000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE00FFFFFF00FFFF
+ FF00FFFFFF000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE001139
+ BF004966C8003F5194000000000000000000000000003F5194004966C8001139
+ BF000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE000C35
+ BE000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE000C35BE001139
+ BF004966C8003F5194000000000000000000000000003C529D004C6CD8002048
+ CE00234ACF00234ACF00234ACF00234ACF00234ACF00234ACF00234ACF00234A
+ CF00234ACF00234ACF00234ACF00234ACF00234ACF00234ACF002243B2002343
+ AC001F41B1004B6BD8000000000000000000000000003E55A30091A6EA003157
+ D6003157D6004668D8003350B2002D4BAE002D4BAE002D4BAE002D4BAE002D4B
+ AE002D4BAE002D4BAE002D4BAE002D4BAE002D4BAE002D4BAE003350B2003157
+ D6003157D60090A5EA000000000000000000000000004D62A9003659CC00123B
+ C300173FC400173FC400173FC400173FC400173FC400173FC400FFFFFF00FFFF
+ FF00FFFFFF00173FC400173FC400173FC400173FC400173FC400173FC400123B
+ C4003558CC004D62A9000000000000000000000000004D62A9003659CC00123B
+ C300173FC400173FC400173FC400173FC400173FC400173FC400173FC400173F
+ C400173FC400173FC400173FC400173FC400173FC400173FC400173FC400123B
+ C4003558CC004D62A9000000000000000000000000004157A4005373DE00385D
+ D9003C61D9003C61D9003C61D9003C61D9003C61D9003C61D9003C61D9003C61
+ D9003C61D9003C61D9003C61D9003C61D9003C61D9003C61D9003C61D9003C61
+ D900365BD8005272DE000000000000000000000000004058A90094A9ED003A5F
+ DD003A5FDD004669DF004E70E0004E70E0004E70E0004E70E0004E70E0004E70
+ E0004E70E0004E70E0004E70E0004E70E0004E70E0004E70E0004E70E0003A5F
+ DD003A5FDD0093A8ED000000000000000000000000005069BE002E53CE001D45
+ CA00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00FFFFFF00FFFF
+ FF00FFFFFF00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB001D45
+ CA002D52CE005069BE000000000000000000000000005069BE002E53CE001D45
+ CA00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234A
+ CB00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB00234ACB001D45
+ CA002D52CE005069BE00000000000000000000000000445BAB005B7BE4005072
+ E2005676E3005676E3005676E3005676E3005676E3005676E3005676E3005676
+ E3005676E3005676E3005676E3005676E3005676E3005676E3005676E3005676
+ E3004C6FE1005979E400000000000000000000000000435CAF0097ACF0004368
+ E3004368E3004368E3004368E3004368E3004368E3004368E3004368E3004368
+ E3004368E3004368E3004368E3004368E3004368E3004368E3004368E3004368
+ E3004368E30097ACF0000000000000000000000000005774D4002850D5003459
+ D700395ED800395ED800395ED800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00395ED800395ED800395ED8003459
+ D700224BD4005773D3000000000000000000000000005774D4002850D5003459
+ D700395ED800395ED800395ED800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00395ED800395ED800395ED8003459
+ D700224BD4005773D3000000000000000000000000004C65BA006A89EF007E99
+ F100A4B6F500A8BAF500A8BAF500A8BAF500A8BAF500A8BAF500A8BAF500A8BA
+ F500A8BAF500A8BAF500A8BAF500A8BAF500A8BAF500A8BAF500A8BAF50090A7
+ F3007A95F1006786EF000000000000000000000000004862B9009EB2F600587B
+ F000587BF0005070D9004F6ED7004F6ED7004F6ED7004F6ED7004F6ED7004F6E
+ D7004F6ED7004F6ED7004F6ED7004F6ED7004F6ED7004F6ED7004F6ED700587B
+ F000587BF0009DB2F6000000000000000000000000005A77D8003057DA003E63
+ DD004569DF004569DF003E5EC800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004569DF004569DF004569DF003E63
+ DD002B53DA005975D7000000000000000000000000005A77D8003057DA003E63
+ DD004569DF004569DF003E5EC800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004569DF004569DF004569DF003E63
+ DD002B53DA005975D700000000000000000000000000506AC1006F8DF30090A7
+ F5008C90A3006C6A6A006C6A6A006C6A6A006C6A6A006C6A6A006C6A6A006C6A
+ 6A006C6A6A006C6A6A006C6A6A006C6A6A006C6A6A006C6A6A006C6A6A00B6C6
+ F8008AA3F5006B8AF3000000000000000000000000004A64BB00A1B5F7006183
+ F2006183F2005876DA00BDC9F100BDC9F100BDC9F100BDC9F100BDC9F100BDC9
+ F100BDC9F100BDC9F100BDC9F100BDC9F100BDC9F100BDC9F100BDC9F1006183
+ F2006183F200A0B4F7000000000000000000000000005C79DB00375EDF00486C
+ E3005173E3005173E3004967CD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005173E3005173E3005173E300486C
+ E3003058DE005B78DB000000000000000000000000005C79DB00375EDF00486C
+ E3005173E3005173E3004967CD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005173E3005173E3005173E300486C
+ E3003058DE005B78DB00000000000000000000000000526CC3006C8BF3009CB1
+ F700959392009593920095939200959392009593920095939200959392009593
+ 920095939200959392009593920095939200959392009593920095939200C6D2
+ FA0092A9F6006787F3000000000000000000000000004B65BC00A4B7F8006A8A
+ F3006A8AF300607CDA00C4CEF1009DAEE8009DAEE8009DAEE8009DAEE8009DAE
+ E8009DAEE8009DAEE8009DAEE8009DAEE8009DAEE8009DAEE8009DAEE8006A8A
+ F3006A8AF300A3B6F8000000000000000000000000005C78D5005074EA005477
+ EA006886EC006886EC006886EC006886EC006886EC006886EC00FFFFFF00FFFF
+ FF00FFFFFF006886EC006886EC006886EC006886EC006886EC006886EC005477
+ EA004A6FE9005D78D5000000000000000000000000005C78D5005074EA005477
+ EA006886EC006886EC006886EC006886EC006886EC006886EC006886EC006886
+ EC006886EC006886EC006886EC006886EC006886EC006886EC006886EC005477
+ EA004A6FE9005D78D500000000000000000000000000000000005974CF006782
+ DB009C9A9900A09D9C0096939200969392009693920096939200969392009693
+ 9200969392009693920096939200969392009693920096939200A09D9C007A94
+ ED006681DB005974CF000000000000000000000000004D67BE00AABCF8007C97
+ F4007C97F4006F88DC00D1D9F400B2C0EC00B2C0EC00B2C0EC00B2C0EC00B2C0
+ EC00B2C0EC00B2C0EC00B2C0EC00B2C0EC00B2C0EC00B2C0EC00B2C0EC007C97
+ F4007C97F400A9BBF8000000000000000000000000005D76C900597CEE005578
+ EE007390F0007491F1007491F1007491F1007491F1007491F100FFFFFF00FFFF
+ FF00FFFFFF007491F1007491F1007491F1007491F1007491F1007390F0005679
+ EE005377EE005D77CA000000000000000000000000005D76C900597CEE005578
+ EE007390F0007491F1007491F1007491F1007491F1007491F1007491F1007491
+ F1007491F1007491F1007491F1007491F1007491F1007491F1007390F0005679
+ EE005377EE005D77CA0000000000000000000000000000000000000000005A75
+ D1006B6968009D9A9900615F5F00BFBFBE00BCBCBB00BAB9B800B4B3B200B1B0
+ AE00ADACAB00A6A5A400A2A1A0009F9D9C0097959300615F5F009D9A99005771
+ C8005A75D100000000000000000000000000000000004E68BF00ADBEF800849E
+ F500849EF500778EDC00D7DEF400BCC8EE00BCC8EE00BCC8EE00BCC8EE00BCC8
+ EE00BCC8EE00BCC8EE00BCC8EE00BCC8EE00BCC8EE00BCC8EE00BCC8EE00849E
+ F500849EF500ACBDF800000000000000000000000000566FC2006685EE00567A
+ F1007C97F400809BF500819BF500819BF500819BF500819BF500FFFFFF00FFFF
+ FF00FFFFFF00819BF500819BF500819BF500819BF500819BF5007D98F500587B
+ F1006081ED00566FC200000000000000000000000000566FC2006685EE00567A
+ F1007C97F400809BF500819BF500819BF500819BF500819BF500819BF500819B
+ F500819BF500819BF500819BF500819BF500819BF500819BF5007D98F500587B
+ F1006081ED00566FC20000000000000000000000000000000000000000000000
+ 000074727100A3A09F0067656500E2E1E100DFDFDE00DDDCDC00D7D7D600D5D4
+ D300D1D1D000CBCAC900C8C7C600C4C3C200BCBBBA0067656500A3A09F000000
+ 000000000000000000000000000000000000000000004F69C000B0C0F9008DA5
+ F6008DA5F6007F95DD00DDE2F600C6D0F000C6D0F000C6D0F000C6D0F000C6D0
+ F000C6D0F000C6D0F000C6D0F000C6D0F000C6D0F000C6D0F000C6D0F0008DA5
+ F6008DA5F600AFC0F900000000000000000000000000AEBEF3005B73C5006886
+ EC007391F40088A2F60093AAF60096ACF70096ACF70096ACF700798AC500798A
+ C5007F92D10096ACF70096ACF70096ACF70095ACF7008AA3F6007693F4006B89
+ ED005B72C500AEBEF300000000000000000000000000AEBEF3005B73C5006886
+ EC007391F40088A2F60093AAF60096ACF70096ACF70096ACF70096ACF70096AC
+ F70096ACF70096ACF70096ACF70096ACF70095ACF7008AA3F6007693F4006B89
+ ED005B72C500AEBEF30000000000000000000000000000000000000000000000
+ 000085838200AFADAB0073717000F2F2F200F1F1F000F0EFEF00EDECEC00EBEB
+ EA00E9E9E900E5E5E500E3E3E200E1E0E000DCDBDB0073717000AFADAB000000
+ 00000000000000000000000000000000000000000000516BC200B5C5F9009EB3
+ F7009EB3F7008EA0DE00E5EAF700D5DCF200D5DCF200D5DCF200D5DCF200D5DC
+ F200D5DCF200D5DCF200D5DCF200D5DCF200D5DCF200D5DCF200D5DCF2009EB3
+ F7009EB3F700B4C4F90000000000000000000000000000000000607AD600647D
+ D0006384F3007F9AF50093AAF600A2B6F800A2B6F800A2B6F800A2B6F800A2B6
+ F800A2B6F800A2B6F800A2B6F800A2B6F80095ACF700829CF5006686F300657E
+ D200607AD6000000000000000000000000000000000000000000607AD600647D
+ D0006384F3007F9AF50093AAF600A2B6F800A2B6F800A2B6F800A2B6F800A2B6
+ F800A2B6F800A2B6F800A2B6F800A2B6F80095ACF700829CF5006686F300657E
+ D200607AD6000000000000000000000000000000000000000000000000000000
+ 00008E8C8A00B5B3B10079777600F6F6F600F5F5F500F5F5F400F3F3F300F2F2
+ F200F1F0F000EEEEEE00ECECEC00EBEAEA00E7E7E60079777600B5B3B1000000
+ 00000000000000000000000000000000000000000000526CC300B8C7F900A7B9
+ F800A7B9F80096A6DF00E9EDF800DCE1F400DCE1F400DCE1F400DCE1F400DCE1
+ F400DCE1F400DCE1F400DCE1F400DCE1F400DCE1F400DCE1F400DCE1F400A7B9
+ F800A7B9F800B6C6F9000000000000000000000000000000000000000000536F
+ CA006989F3006A8AF300849EF500A8BAF800ADBEF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800ADBEF800A9BBF80087A1F5006D8CF3006B8AF300536F
+ CA0000000000000000000000000000000000000000000000000000000000536F
+ CA006989F3006A8AF300849EF500A8BAF800ADBEF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800ADBEF800A9BBF80087A1F5006D8CF3006B8AF300536F
+ CA00000000000000000000000000000000000000000000000000000000000000
+ 0000908F8E00959391007F7D7C00F7F7F700F7F7F700F7F7F700F6F6F600F6F6
+ F600F5F5F500F4F4F400F3F3F200F2F1F100EFEFEF007F7D7C00959391000000
+ 00000000000000000000000000000000000000000000536DC400BAC9FA00B0C0
+ F900B0C0F9009DADDF00EDF0F900E3E8F600E3E8F600E3E8F600E3E8F600E3E8
+ F600E3E8F600E3E8F600E3E8F600E3E8F600E3E8F600E3E8F600E3E8F600B0C0
+ F900B0C0F900B9C8F90000000000000000000000000000000000000000000000
+ 00005570CB006780D400718EEE00819BF50090A8F6009FB3F700AFC0F900B1C1
+ F900AFC0F900A1B5F70093AAF600849EF5007490ED006981D4005570CB000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005570CB006780D400718EEE00819BF50090A8F6009FB3F700AFC0F900B1C1
+ F900AFC0F900A1B5F70093AAF600849EF5007490ED006981D4005570CB000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000008B898800EBEBEA00EDECEC00EEEEED00F1F1F100F3F2
+ F200F4F4F400F6F6F600F7F7F700F7F7F700F7F7F7008B898800000000000000
+ 00000000000000000000000000000000000000000000556FC600BECCFA00C0CE
+ FA00C0CEFA00ADB9E100F4F6FA00EDF0F800EDF0F800EDF0F800EDF0F800EDF0
+ F800EDF0F800EDF0F800EDF0F800EDF0F800EDF0F800EDF0F800EDF0F800C0CE
+ FA00C0CEFA00BDCBFA0000000000000000000000000000000000000000000000
+ 000000000000627DD8006179CA007A95F1007D98F500849EF5008BA4F6008EA6
+ F6008BA4F60086A0F5007F9AF5007D97F1006179CA00627DD800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000627DD8006179CA007A95F1007D98F500849EF5008BA4F6008EA6
+ F6008BA4F60086A0F5007F9AF5007D97F1006179CA00627DD800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000918F8D00E4E4E300E6E5E400E7E7E600EAEAE900ECEB
+ EB00EDEDEC00F0EFEF00F1F1F100F3F2F200F5F5F500918F8D00000000000000
+ 000000000000000000000000000000000000000000005670C700A6B9F800C1CE
+ FA00C3D0FA00BCC8EE00F9FAFE00F4F6FC00F4F6FC00F4F6FC00F4F6FC00F4F6
+ FC00F4F6FC00F4F6FC00F4F6FC00F4F6FC00F4F6FC00F4F6FC00F4F6FC00C3D0
+ FA00C0CEFA00A4B7F80000000000000000000000000000000000000000000000
+ 00000000000000000000AFBFF3005E77CA006881D4006B85E2007691ED007792
+ ED007691ED006C86E2006881D4005E77CA00AFBFF30000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000AFBFF3005E77CA006881D4006B85E2007691ED007792
+ ED007691ED006C86E2006881D4005E77CA00AFBFF30000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000908F8E00959391009593910095939100959391009593
+ 91009593910095939100959391009593910095939100908F8E00000000000000
+ 000000000000000000000000000000000000000000005771C9005771C8005771
+ C8005771C8005771C800ABB8E300ABB8E300ABB8E300ABB8E300ABB8E300ABB8
+ E300ABB8E300ABB8E300ABB8E300ABB8E300ABB8E300ABB8E300ABB8E3005771
+ C8005771C8005771C80000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000339F7000339F7000339F7000339F7000339F7000339F
+ 7000339F7000339F7000339F7000339F7000339F7000339F7000000E0B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000E332400339F
+ 70000E3324000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DEDE
+ DE00D3D3D300CECECE00CECECE00C0C0C00097A7D7005769A700293662002531
+ 5800253158002633600032427B005769A700C0C0C000C7C7C700CECECE00D6D6
+ D600DEDEDE00DEDEDE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000032A0720012BC8E0012BC8E0012BC8E0012BC8E0012BC
+ 8E0012BC8D0012BC8E0012BC8D0012BC8E003CD7A70032A17200000E0B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000F3424003AD6A60013BA
+ 8C003AD6A6000F34240000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000004259A70046599700455EAF002F4BAB001333A0000326
+ 9900032699001333A0001E3DA4002F4BAB004659970035457A004259A7000000
+ 00000000000000000000000000000000000000000000000000007E7E7E003C3C
+ 3C007B7B7B008A8A8A00D8D8D800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000031A1720012BD8E0012BC8E0012BD8E0012BC8E0012BD
+ 8E0012BC8E0012BD8E0012BD8E0012BD8E003CD7A70031A17200000E0B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000F34240032A1710013BA8C0013BA
+ 8C0013BA8C0031A071000F342400000402000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B9C6F1002E42880042538E002B49AE000B2EA10003279F0003279F000327
+ 9F0003279F0003279F0003279F0003279F002B49AE004760B10042538E00B9C6
+ F1000000000000000000000000000000000000000000000000009E9E9E005959
+ 5900333333006B6B6B0088888800C6C6C6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000030A2730011C090000DCB95000CCA94000DCB94000CCB
+ 95000CCB94000CCB95000CCA95000CCB95003CD7A70030A27300000E0B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000F34240030A1720035D5A50011BE8E0012BD
+ 8E0013BB8D0035D5A50030A172000F3424000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00002F4284004D609E00415CB7000328A3000328A3000328A3000328A3000328
+ A3000328A3000328A3000328A3000328A3000328A3001336A900415CB7002F42
+ 8400B9C6F1000000000000000000000000000000000000000000000000007676
+ 76003C3C3C00ADACAC00C4C3C2008D8D8D0080808000B0B0B000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000002DA5750011C291000CCD97000DCD97000CCC96000CCC
+ 96000CCC97000DCC96000DCC96000DCC97003BD7A7002EA57400000E0B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000F34240030D4A30012BD8E0012BD8E000DCB95000DCB
+ 96000DCB950012BD8E0012BD8E0030D4A3000F34240000040200000000000000
+ 000000000000000000000000000000000000000000000000000000000000475F
+ B100415DBD00082EAE00042BAC00042BAC00042BAC00042BAC00042BAC00042B
+ AC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00042BAC00415D
+ BD0046599A00475FB10000000000000000000000000000000000000000000000
+ 0000E0DFDF00CECCCC00C0BEBD00A09E9D00605F5E006F6F6E0027377200B6C3
+ F000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000002CA6760011C392000DCE98000DCE98000DCD97000DCE
+ 97000DCD98000DCE98000DCD97000CCE97003BD7A7002CA67600011C14000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000F3424002DA5750012BE8F0012BE8F000ECC97000ECC96000DCC
+ 96000ECC96000ECD970012BE8E0012BF8F002DA575000F342400000000000000
+ 0000000000000000000000000000000000000000000000000000A8B7ED003E50
+ 8E001439B600042CB100042CB100042CB100042CB100042CB100A0AFE100A0AF
+ E100042CB100042CB100042CB100042CB100042CB100042CB100042CB1001439
+ B6004964BF003E508E0000000000000000000000000000000000000000000000
+ 0000CBCACA00DAD9D900C7C6C500767574007777760071737A003E508B002738
+ 7300B6C5F0000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000002BA7760010C492000DCE98000DCF99000DCF99000DCE
+ 98000DCF99000DCE99000DCE99000DCF99003AD7A6002BA87700000E0B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000F3424002CA676002AD3A20011C090000ECD98000ECD98000ECE97000ECD
+ 98000DCE97000ECE98000ECD980011C190002AD4A1002CA676000F3424000000
+ 0000000000000000000000000000000000000000000000000000455CAE004C63
+ AD00042DB600042DB600042DB600042DB600042DB600042DB600FFFFFF00FFFF
+ FF009FAFE200042DB600042DB600042DB600042DB600042DB600042DB600042D
+ B6002B4EC2004C63AD0000000000000000000000000000000000000000000000
+ 00009A999900E3E2E200C8C7C6009291910085888F001F3A95003E57A9003E50
+ 8B00283873000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000028AA790010C794000DD19B000DD19B000ED19B000DD1
+ 9B000ED19B000DD19B000ED19B000DD19A0038D7A60028AA7900000E0B000000
+ 0000000000000000000000000000000000000000000000000000000000000F34
+ 240024D4A10010C9950010C995000ED09B000ED09A000ED09A000ED09B000ED0
+ 9A000ED09A000ED09A000ED09A000ED09A0010C9960010C9950024D4A1000F34
+ 24000000000000000000000000000000000000000000788DD7004F63AA00395B
+ CD00173FC400173FC400173FC400173FC400A6B6E800FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00A6B6E800173FC400173FC400173FC400173FC400173FC400173F
+ C400153DC400395BCD006C83D400000000000000000000000000000000000000
+ 0000B0B0B00093929200B3B2B2006883E0005070DC003B5CCB00092A99000F2D
+ 93003E57A900293A7500B6C5F100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000027AC7A0010C795000DD29C000ED29C000ED29C000ED2
+ 9C000ED29C000DD29D000DD29D000DD29C0037D6A60026AB7A00000E0B000000
+ 00000000000000000000000000000000000000000000000000000F34240027AB
+ 7A000FCC98000FCC97000ED19C000ED19C000ED19C000ED19B000FD19C000ED2
+ 9C000ED19C000ED29B000ED19C000ED29C000ED19B000FCB97000FCC980027AA
+ 7A000F342400000000000000000000000000000000004963B600546DC0003357
+ CF00234ACB00234ACB00234ACB00ABBAEB00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00ABBAEB00234ACB00234ACB00234ACB00234ACB00234A
+ CB002148CB003357CF004963B600000000000000000000000000000000000000
+ 0000000000006F75900091939D006E8CF2006A88EC005574DD002143B300092A
+ 99000F2D930040528C002A3B7500B6C5F1000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000025AD7B0011C996000ED39D000DD39D000ED39E000DD3
+ 9E000ED39D000DD39E000ED39D000DD49D0036D6A60025AD7B00000E0B000000
+ 000000000000000000000000000000000000000000000F34240026AC7B001ED4
+ A1000FCF9A000ED39D000ED39D000ED29D000ED39D000ED29D000FD39D000ED3
+ 9D000ED29D000ED39D000ED39D000ED39D000FD29D000ED39C0010CE99001ED4
+ A10026AC7A000F3424000000000000000000000000003D54A2005C76D0003257
+ D3002E53D2002E53D2002E53D200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00AFBEEE002E53D2002E53D2002E53D2002E53
+ D2002D53D2003257D3003D54A200000000000000000000000000000000000000
+ 000000000000BECCF500455FB900829DF5007B97F4006C89EC003B5CCB002143
+ B300092A99003E57A90040528D002A3C76000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000022B17E0010CB98000ED6A0000ED69F000ED6A0000ED6
+ A0000ED6A0000ED6A0000ED6A0000ED6A00033D7A60022B07D00000000000000
+ 0000000000000000000000000000000000000F342400D0F5EB0057E7BE0057E7
+ BE0056E9BF0057EABF00CEF5EB000ED59F000ED5A0000ED5A0000ED5A0000ED6
+ A0000ED5A0000FD6A0000ED59F000ED59F0023DBA900CEF5EB0056EABF0057E7
+ BE0057E7BE00D0F5EB000F34240000000000000000004158A600627DD900365C
+ DC004569DF003C5BC200B4BFE200FFFFFF00FFFFFF00FFFFFF003D5CC3003854
+ B200B4BFE200FFFFFF00FFFFFF00FFFFFF00B8C6F2004569DF004569DF004569
+ DF004468DF003A5FDC004158A600000000000000000000000000000000000000
+ 00000000000000000000000000004762BB00627BD4007D98F5006B89EC005574
+ DD003B5CCB00092A99000F2D93003E57A9002C3D7800B6C5F100000000000000
+ 00000000000000000000000000000000000020B27F0021B27F0021B27F0021B2
+ 7F0020B27F0021B27F0021B27F0010CC99000ED7A2000ED7A1000FD7A1000ED7
+ A1000ED8A1000ED7A1000ED7A1000ED7A10031D7A60021B27F0020B27F0021B2
+ 7F0020B27F0020B27F0021B27F000000000021B17E0021B17F0021B17F0020B1
+ 7F0021B17F0021B17F0019B885000FD7A2000ED7A1000ED7A1000FD7A1000FD6
+ A1000FD7A2000FD6A1000FD7A1000ED7A10027DEAC0018B9850021B07E0021B1
+ 7F0021B17E0021B17E0021B17F000000000000000000435BAB006681DE003F64
+ E1005173E3004764C700415CB600FFFFFF00FFFFFF00BECBF5005173E3004764
+ C700415CB600FFFFFF00FFFFFF00FFFFFF00FFFFFF00BCC9F4005173E3005173
+ E3004F71E3004368E100435BAB00000000000000000000000000000000000000
+ 0000000000000000000000000000BFCCF5004963BC00627CD5007894F4006D8A
+ EC005574DD002143B300092A99000F2D930042548E002C3E7900B6C5F1000000
+ 00000000000000000000000000000000000005291D0042E6B8003EDCB0003EDC
+ B0003EDCB0003EDCB0003EDCB00011CE9B000ED9A3000ED8A2000ED8A3000ED8
+ A3000ED8A2000ED8A2000ED8A3000FD9A2003EDCB0003EDCB0003EDCB0003EDC
+ B0003EDCB00038E3B40005291D00000000000000000000000000000000000000
+ 0000000000000000000017BB87000FD8A3000FD8A3000FD8A3000FD8A2000FD9
+ A3000FD8A2000FD8A2000ED9A3000ED8A3002CE0AE0017BA8700000000000000
+ 00000000000000000000000000000000000000000000475EB4006C86E0005275
+ E7005C7CE8005C7CE800526ECB00BCC5E500C2CEF6005C7CE8005C7CE8005C7C
+ E800526ECB00BCC5E500FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0CCF5005C7C
+ E800597AE8005375E700475EB400000000000000000000000000000000000000
+ 000000000000000000000000000000000000BFCCF5004A64BD007E99F5007E99
+ F5006D8AEC003B5CCB002143B300092A99003E57A90042548F002D3E79000000
+ 0000000000000000000000000000000000000000000005291D001CB7830052EB
+ C0000FDAA5000EDBA5000EDAA4000FDBA5000EDBA5000FDAA5000EDBA5000FDB
+ A5000FDBA5000EDBA5000FDBA5000FDBA5000FDBA4000EDBA5000EDBA50049E9
+ BC001CB7830005291D0000000000000000000000000000000000000000000000
+ 0000000000000000000014BD8A000FDBA5000FDBA6000FDBA6000FDBA6000FDA
+ A5000FDBA6000FDBA5000FDAA6000FDBA50035E4B40014BD8A00000000000000
+ 000000000000000000000000000000000000000000007790E100687FCD006E8C
+ F0007491F1007491F1007491F1007491F1007491F1007491F1007491F1007491
+ F1007491F100657FD3005C73C000C3CBE800FFFFFF00FFFFFF00FFFFFF007491
+ F1006988EF006E8CF0007790E100000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000004D67C0006C85
+ D80088A2F6006D8AEC005574DD003B5CCB00092A99000F2D93003E57A9002E40
+ 7B00B6C5F100000000000000000000000000000000000000000005291D001AB8
+ 84000FDCA6000FDCA6000FDCA6000EDCA7000EDCA6000FDCA6000FDCA6000FDC
+ A6000EDCA6000FDCA6000EDDA6000FDCA6000FDCA6000FDCA6000FDCA6001AB8
+ 840005291D000000000000000000000000000000000000000000000000000000
+ 0000000000000000000013BF8B000FDCA7000FDCA7000FDCA7000FDCA7000FDC
+ A6000FDCA60010DCA7000FDCA6000FDCA70039E6B70013BF8B00000000000000
+ 00000000000000000000000000000000000000000000CED8F7005971C3007E98
+ F1007D98F500819BF500819BF500819BF500819BF500819BF500819BF500819B
+ F500819BF500819BF5007088D600677CC400FFFFFF00FFFFFF00CFD9FA007E99
+ F5007290F4007E98F100CED8F700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000BFCDF6004E68
+ C1006D85D9007E99F5006D8AEC005574DD002143B300092A99000F2D93004354
+ 8D004C526E00AFBEEE0000000000000000000000000000000000000000000529
+ 1D0060F0C7000FDDA7000EDDA7000FDDA7000FDDA7000EDDA7000FDEA7000FDD
+ A7000FDDA7000EDDA8000FDEA7000FDDA7000FDDA7000EDDA8005AEEC4000529
+ 1D00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000012C08C000FDDA8000FDDA80010DDA8000FDDA8000FDD
+ A8000FDDA8000FDEA8000FDEA8000FDDA8003DE7BA0012C08C00000000000000
+ 00000000000000000000000000000000000000000000000000005975D100758C
+ DD007F9AF5008BA4F6008BA4F6008BA4F6008BA4F6008BA4F6008BA4F6008BA4
+ F6008BA4F6008BA4F6008BA4F6007A8FD700C9D0E800D4DDFC008BA4F600819B
+ F500809BF500768DDD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000BFCD
+ F6004F69C2007E99F5007894F4006B89EC003B5CCB002143B300092A99007B7E
+ 8F00686769005557690000000000000000000000000000000000000000000000
+ 000005291D0017BD87006FF3CD000FE0AA000FDFAA000FE0AA000FDFA90010DF
+ AA000FDFAA000FDFA9000FE0A9000FE0A9006AF2CB0017BD880005291D000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000010C28D0010E0AB0010E0AB000FE0AB000FE0AA0010E0
+ AA0010E0AA000FDFAA000FE0AB000FDFAA0045EBBD0010C28D00000000000000
+ 000000000000000000000000000000000000000000000000000000000000607A
+ D7008CA4F4008BA4F6009DB2F700A2B6F800A2B6F800A2B6F800A2B6F800A2B6
+ F800A2B6F800A2B6F800A2B6F800A2B6F800A2B6F800A2B6F8009CB1F70092A9
+ F400758AD500607AD70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000516BC4006881D9007D98F5006C89EC005674D700949AAF00F4F4
+ F400E3E2E200B1B2B800697CC200000000000000000000000000000000000000
+ 00000000000005291D0015BE880010E0AA000FE0AA000FE1AB000FE0AA000FE1
+ AB000FE0AA0010E1AB000FE1AA000FE1AB0015BE880005291D00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000FC38E000FE1AC000FE1AB000FE1AC0010E1AC000FE1
+ AC000FE1AC000FE1AB0010E1AB000FE1AC004AECC0000FC38E00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008599E00094ABF60097ADF700AEBFF800AEBFF800AEBFF800AEBFF800AEBF
+ F800AEBFF800AEBFF800AEBFF800AEBFF800AEBFF800A5B8F80095ACF7008CA0
+ E100546FCA000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000BFCDF600536DC6006882DA007A95ED00B9BFD400BFBEBC00EEEE
+ ED00CDCED400898D9C005A638700000000000000000000000000000000000000
+ 0000000000000000000005291D007BF6D2000FE1AC0010E1AB000FE1AC000FE1
+ AB000FE2AB000FE1AB000FE2AC0078F5D10005291D0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000FC38E000FE2AD0010E2AD000FE2AD000FE2AD000FE2
+ AD0010E2AD0010E2AD0010E2AD0010E2AD004DEDC1000FC38E00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000576FC80090A3E300A0B4F600ACBDF800B5C5F900B9C8F900B9C8F900B9C8
+ F900B9C8F900B9C8F900B9C8F900B9C8F900A9BBF8009CB1F70098ADF5005870
+ C700BFCDF6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BFCDF600536EC700ADB2C100EDECEC00EDECEC00BFC0
+ C6008F93A2008F93A2006A6E7E00000000000000000000000000000000000000
+ 000000000000000000000000000005291D0013C28B0086F8D60010E4AD000FE3
+ AD000FE4AE0084F7D50012C18B0005291D000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000EC48F0010E4AF0010E4AF0010E4AF0010E4AF0010E4
+ AE0010E4AF0010E4AF0010E4AF000FE4AF0053EFC5000EC48F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000627DD900879BE3009FB3F500A3B6F800A4B7F8009FB3
+ F7009FB3F700A2B6F800A3B6F800A0B4F700859BE200667DCC00627DD9000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000787D9300B5B5B900C9CAD000AFB4
+ C300B3B8C800B3B9C8007286CC00000000000000000000000000000000000000
+ 00000000000000000000000000000000000005291D0012C38C0010E4AE0010E4
+ AE0010E4AE0011C38C0005291D00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000EC48F0010E5B00010E5B00010E5B00010E5B00010E5
+ B00010E5B00010E5B0000FE5B0000FE4B00055F0C5000EC48F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005E79D500637BCC007C91DA0092A8F00091A7
+ F10092A8F10092A8F000869CE7007B90D9005E79D500AFBFF300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006974A1009095A500BCC1
+ D000BCC1D100A3A8B80000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000005291D008DF9D80010E4
+ AF008DF9D80005291D0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000EC48F000FE5B10010E6B00010E6B00010E5B0000FE5
+ B10010E6B10010E5B00010E6B10010E6B10057F0C8000EC48F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CED8F8007C93E5005771C9005871
+ C8005871C8005771C9005E79D6007C93E5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000007489C8008E92
+ A200828BAF007A8ED40000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000005291D000FC5
+ 8E0005291D000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000EC48F000EC48F000EC48F000EC48F000EC48F000EC4
+ 8F000EC48F000EC48F000EC48F000EC48F000EC48F000EC48F00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000339F70000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000F342400339F
+ 7000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FED6AE00FED6AE00FED6AE00FED7B000FED7
+ B000FED8B100FED9B400FEDAB600FEDAB600FEDCB900FEDCB900000000000000
+ 0000000000000000000000000000000000000000000025242200262624002625
+ 23000E86F2000E86F2000E86F2000E86F2000E86F2000E86F2000E86F2000E86
+ F2000E86F2000E86F2000E86F2000E86F2000E86F2000E86F2000E86F2000E86
+ F200262524002625240000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000032A0710032A071000F342400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000F3424003CD7A70032A0
+ 7100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000001111110014141400FED4AA00FED4AA00FED4AA00FED5AC00FED5
+ AE00FED6AF00FED8B200FED8B200FED9B400FEDAB700FFDBB900111111000000
+ 0000000000000000000000000000000000000000000026252300282724002727
+ 2400037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037F
+ EE00037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037F
+ EE00272625000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031A172003BD7A70030A271000F3424000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000F34240030A2710017CA950031A1
+ 7200000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000003F3F3F00ACAC
+ AC00ACACAC00ACACAC0063626200FFCD9D00FFCD9D00FFCE9F00FFD0A300FFD2
+ A600FFD4AA00FFD7AF00FFD8B100FFD9B500FFDDBC00FFDDBC0063636300ACAC
+ AC00ACACAC004B4B4B0000000000000000000000000027262400292826002929
+ 2600037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037F
+ EE00037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037FEE00037F
+ EE002A2927002928260000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000030A3730010BF8E0039D6A60030A373000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000F34240030A3730039D6A6001FCE9A0030A3
+ 7300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000ACACAC00D1D1D100D1D1
+ D100D1D1D100D1D1D10032323200C49F7B00C4A07E00C4A17F00C4A38300C4A5
+ 8700C4A68800C4A78B00C4A88E00C4A99100C4AC9600C4AC960032323200CCCC
+ CC00CCCCCC00CCCCCC00000000000000000000000000292927002E2D2A002E2D
+ 2A00FBE7D000FBE6D000FBE7CF00FCE6CF00FBE7D000FBE7D000FBE6D000FCE7
+ D000FBE6CF00FBE6CF00FBE7D000FCE7CF00FBE6D000FBE6CF00FBE7CF00FBE6
+ CF002D2C2A002D2C2A0000000000000000000003020000040300000403000004
+ 0300000403000004030000090600000403000004030000040300000403000000
+ 00002DA5750010BF8E0010BF8E0010BF8E002DA575000F342400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000F34240034D5A40010BF8E0010BF8E0030D4A2002DA5
+ 7500000000000004030000040300000403000004030000090600000403000004
+ 03000004030000040300000403000003020000000000ACACAC00D4D4D400D4D4
+ D400D4D4D400D4D4D400333131009E8373009E8373009E8373009E8474009E84
+ 74009E8475009E8576009E8576009E8577009E8577009E85770033313100C8CC
+ CA00CECECE00CECECE000000000000000000000000002B292700302E2C00302E
+ 2D00FBE7D000FCE7D000FCE7D000FBE7D100FBE7D100FCE7D000FBE7D100FBE7
+ D100FBE7D000FBE7D100FBE7D000FBE7D000FCE7D100FBE7D100FCE7D000FBE7
+ D000302E2C00302F2C0000000000000000002CA676002CA776002CA676002CA6
+ 75002CA675002BA676002BA675002CA675002BA676002CA676002CA676002CA6
+ 76002BA7760010BF8E000DCA940010C08E0031D4A3002CA675000F3424000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000805000F3424002CA6750010C08F0010C08E000DCA940037D6A5002BA7
+ 76002CA676002CA676002CA676002BA676002BA676002BA675002BA676002CA6
+ 76002CA675002CA676002BA675002CA6760000000000ACACAC00D7D7D700D7D7
+ D700D7D7D700D7D7D700D6D6D600D6D6D600D5D5D500D5D5D500D5D5D500D4D4
+ D400D4D4D400D4D4D400D3D3D300D3D3D300D3D3D300D2D2D200D2D2D20039A4
+ 7600C4CDCA00D1D1D1000000000000000000000000002C2A290033312E003231
+ 2F00C4D1D700C4D0D700C4D0D700C4D0D700C4D0D800C4D0D700C4D1D700C4D1
+ D800C4D1D700C4D1D700C4D1D800C4D0D800C4D0D800C4D1D700C4D0D800C4D0
+ D70033302F0033302F0000000000000000002AA777003CD7A7003CD7A7003CD7
+ A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7
+ A7003CD7A70010BF8E000DCB95000DCC95000FC18F002ED4A2002BA777000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000F3424002BA777002ED4A20010C18F000DCC95000DCB95000DCB95003CD7
+ A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7A7003CD7
+ A7003CD7A7003CD7A7003CD7A7002AA7770000000000ACACAC00DCDCDC00EDED
+ ED00269B6A00279B6A00279B6A00279B6900279A6900289A6900289A6800289A
+ 6800289A6800289968002899680028996800289968002899680028996800CBE8
+ DC00EAEAEA00D7D7D7000000000000000000000000002F2E2B00373534003735
+ 3400FBE8D400FBE9D300FCE9D400FBE8D400FCE9D300FCE8D400FBE8D300FCE9
+ D400FBE9D400FBE8D300FBE9D300FBE8D300FCE9D300FBE9D400FCE8D400FCE8
+ D4003836340037363300000000000000000028AA7A0010C18F0010C18F0010C1
+ 8F0010C18F0010C18F0010C18F0010C18F0010C18F0010C18F0010C18F0010C1
+ 8F0010C18F000FC793000ECE98000DCE98000DCE98000DCE98000FC4920027AA
+ 7A000F3424000006040000000000000000000000000000000000000604000F34
+ 240019C895000FC492000DCE98000DCF98000DCE98000ECE980010C18F0010C1
+ 8F0010C18F0010C18F0010C18F0010C18F0010C18F0010C18F0010C18F0010C1
+ 8F0010C18F0010C18F0019D29F0028AA7A0000000000A3A3A300E0E0E000F9FC
+ FB004ACC9F004ACC9F004ACC9F004ACC9F004ACC9F004ACC9F004ACC9F004ACC
+ 9F004ACC9F004ACC9F004ACC9F004ACC9F004ACC9F004ACC9F004ACC9F002899
+ 6800FFFFFF00DADADA00000000000000000000000000302E2C003A3836003A38
+ 3600C4D2DA00C4D2DA00C4D2DA00C4D2DA00C4D3DA00C4D2DA00C4D2DA00C4D2
+ DA00C4D2DA00C4D3DA00C4D2DA00C4D2DA00C4D2DA00C4D2DA00C4D2DA00C4D2
+ DA003A3836003A383600000000000000000026AB7B000FC3900010C18F000EC9
+ 95000ECF99000DD099000DD09A000DD099000DCF9A000DD09A000DD099000DD0
+ 99000ED099000DCF9A000ED09A000ED099000ED09A000ECF9A000DCF990019C9
+ 970026AC7B000F342400000000000000000000000000000000000F34240026AC
+ 7B000FC793000DCF99000ECF9A000DD099000ED099000ED09A000DD099000ED0
+ 99000DD099000ED099000DD09A000DCF9A000DCF9A000DD09A000DD099000DD0
+ 9A000EC9950010C18F0020D6A20026AB7B0000000000A1A1A100EAEAEA00F4FA
+ F70047CA9D0023A6740023A6740024A4720024A4720024A4720024A4720024A4
+ 720024A4720024A4720024A4720024A4720024A4720024A4720023A67400279B
+ 6B00FFFFFF00E5E5E500000000000000000000000000312F2E003D3B38003C3A
+ 3900FCE9D500FCEAD500FCE9D500FBEAD600FCEAD500FCE9D500FCE9D600FCEA
+ D500FCEAD600FCEAD500FCEAD500FCEAD600FBEAD600FCE9D500FCEAD600FBE9
+ D5003D3B39003D3B3900000000000000000024AD7C000FC492000ECA96000DD1
+ 9B000DD29B000ED29B000DD19B000ED19A000DD19B000DD19B000ED29B000ED1
+ 9B000DD29B000ED19B000DD19A000DD19B000DD19B000ED19B000ED19B000FC9
+ 950019CB990024AD7C000004030000000000000000000F34240024AD7C0019CB
+ 99000DD19B000ED19B000ED19B000ED19B000DD19B000DD19A000DD19B000DD2
+ 9B000ED19B000ED19B000DD19B000DD19B000DD29B000DD19B000ED29B000ED1
+ 9B000DD19B000ECA960027D9A60024AD7C0000000000A7A7A700FFFFFF00EEFA
+ F5005AE0B60026C18F0026C8950026C8950026C8950026C8950026C8950026C8
+ 950026C8950026C8950026C8950026C8950026C8950026C8950026C08E0023A2
+ 7000FFFFFF00FFFFFF000000000000000000000000003533310043403E004240
+ 3E00C4D3DC00C4D4DC00C4D4DC00C4D4DC00C4D4DB00C4D3DC00C4D4DC00C4D4
+ DC00C4D4DC00C4D3DC00C4D3DC00C4D4DC00C4D4DC00C4D4DC00C4D3DB00C4D3
+ DC0042403E0043403E00000000000000000021B17F000FC995000ED49E000ED4
+ 9E000DD49E000DD49E000ED49E000ED49E000ED49E000DD49E000ED49E000ED4
+ 9D000ED49E000ED49E000ED49E000ED49E000ED49E000DD49E000ED49E000ED5
+ 9E000ED49E000FCF9A0022B07F000F3424000F34240017D09C000FCF9A000ED4
+ 9E000DD49E000ED49E000DD49E000ED49E000ED49E000ED49E000ED49E000ED4
+ 9E000ED49D000ED49E000DD49E000ED49E000ED49E000ED49E000DD49E000ED4
+ 9E000ED49E000ED49E0034DFB00021B17F0000000000A8A8A800FFFFFF00E6F8
+ F2006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEE
+ C8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC80021A7
+ 7400FFFFFF00FFFFFF0000000000000000000000000036343200454341004643
+ 4000FBEAD700FCEBD800FCEBD800FCEBD700FCEBD800FCEBD800FCEBD700FCEB
+ D700FCEBD700FCEBD700FCEBD800FCEBD800FCEBD800FCEBD800FCEAD800FCEB
+ D8004543410045434100000000000000000020B280000FCC98000ED5A0000ED6
+ A0000ED69F000ED5A0000ED59F000ED6A0000ED69F000ED59F000ED5A0000ED6
+ 9F000ED5A0000ED69F000ED69F000ED69F000ED69F000ED59F000ED6A0000ED5
+ A0000ED69F000ED5A0002ADEAC0020B27F0020B27F000ED6A0000ED5A0000ED6
+ 9F000ED69F000ED6A0000ED59F000ED69F000ED69F000ED69F000ED5A0000ED5
+ A0000ED69F000ED59F000ED59F000ED69F000ED5A0000ED59F000ED5A0000ED6
+ 9F000ED6A0000ED5A0003CE2B40020B2800000000000A0A0A000FFFFFF00DDF7
+ EF006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEE
+ C8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8006CEEC8001EAB
+ 7800FFFFFF00FFFFFF0000000000000000000000000038363400484643004846
+ 4300FCEBD800FCEBD800FCEBD800FCEBD800FCEBD800FCEBD800FCEBD800FCEB
+ D800FCEBD800FCEBD800FCEBD800FCEBD800FCEBD800FCEBD800FCEBD800B2A6
+ 9A00484543004845430000000000000000001FB381000FCF9A000ED7A1000ED7
+ A1000ED7A1000ED7A1000ED7A1000ED6A1000ED7A2000ED7A1000ED7A1000ED7
+ A1000ED7A1000ED7A1000ED6A1000ED7A1000ED7A1000ED7A1000ED7A1000ED7
+ A1000ED7A1000FD7A1001EB38100063C2C00063C2C0033E1B1000FD7A1000ED7
+ A1000FD7A1000ED7A1000ED7A1000ED7A1000ED7A1000ED6A1000ED7A1000ED7
+ A1000ED7A1000ED7A1000ED7A1000ED7A2000ED7A1000ED7A1000ED7A1000FD6
+ A1000ED7A1000ED7A10042E5B7001FB38100000000007B7B7B00EFEFEF00F6FC
+ FA005CE7BD0023C08D00ECBD9600ECBE9700ECBE9700ECBE9700ECBE9700ECBE
+ 9700ECBE9700ECBE9700ECBE9700ECBE9700ECBE9700ECBE970024BD8B0019B3
+ 7F00FFFFFF00F3F3F3000000000000000000000000003B3836004E4B49004E4A
+ 49004E4B49004E4B49004E4B48003D3A39003C3A39003C3A39003C3A38003D3A
+ 39003C3A39003D3A38003C3A39003C3A39003D3A38003D3A39003C3A39004E4B
+ 49004E4A48004D4A490000000000000000001BB783000FD5A1000FDAA4000EDA
+ A4000EDAA4000FDAA4000FDAA4000FDAA4000EDAA4000EDAA4000EDAA4000FDA
+ A4000EDAA4000FD9A4000ED9A4000EDAA5000FDAA4000EDAA4000FDAA4000EDA
+ A40046E7BA001BB68400000000000000000000000000063C2C001BB6840046E7
+ BA000FDAA4000FDAA4000EDAA4000EDAA4000EDAA5000ED9A4000FDAA4000EDA
+ A4000FDAA4000EDAA4000EDAA4000EDAA4000FDAA4000FDAA4000FDAA4000FDA
+ A4000EDAA4000FDAA4004EE9BE001BB78300000000000D0D0D0095959500C3CE
+ CA0054BF9E0048B48F00F1C9A000F3CCA300F3CCA300F3CCA300F3CCA300F3CC
+ A300F3CCA300F3CCA300F3CCA300F3CCA300F3CCA300F3CBA20046B28C0018B7
+ 8300BDBDBD009B9B9B000000000000000000000000003C393800504D4B00504E
+ 4B006D6B6A005F5B58005F5B5800E8E8C200E8E8C200E8E8C200E8E8C200E8E8
+ C200E8E8C200E8E8C200E8E8C200E8E8C200E8E8C200E8E8C2003E3C3A00504D
+ 4B00504D4B00504D4B00000000000000000019B884000ED8A3000EDBA6000FDB
+ A6000EDBA6000FDBA6000EDBA5000FDCA6000EDCA6000EDBA5000FDBA5000FDC
+ A5000EDBA6000EDBA6000FDCA6000FDCA5000FDBA6000FDBA6000FDBA6004FEA
+ BF001AB88500063C2C0000000000000000000000000000000000063C2C001AB8
+ 85000EDBA5000FDBA6000FDBA6000FDBA5000FDCA5000FDCA6000EDBA5000EDB
+ A6000FDCA5000FDBA6000EDBA5000EDCA6000FDCA6000EDBA5000FDBA6000FDB
+ A6000FDBA6000EDBA60053EBC10019B884000000000000000000000000002222
+ 22001616160000000000F5D1AB00F9D8B200F8D8B200F9D8B200F8D8B100F9D8
+ B200F9D8B200F8D8B100F9D8B100F9D8B200F9D8B100F7D5AF00161817001616
+ 160010101000000000000000000000000000000000003D3A3900534F4D005350
+ 4D005F5B58004A4645004A464500E9E8C400E9E9C400E9E9C400E9E9C500E8E9
+ C400E8E9C400E9E8C4002F2E2C0047434100E9E9C500E9E9C500413D3C00534F
+ 4D0053504D0053504E00000000000000000018B985000FDCA6000FDDA7000EDD
+ A7000FDDA7000EDDA7000FDCA7000FDDA7000EDDA7000FDDA7000FDCA7000FDD
+ A7000EDDA7000FDDA7000FDCA7000FDDA7000FDCA7000FDDA7000FDCA70018BA
+ 8500063C2C00000000000000000000000000000000000000000000000000063C
+ 2C0058EDC3000FDCA7000FDDA7000FDDA7000FDDA7000FDCA7000EDCA7000EDD
+ A7000FDDA7000EDDA7000FDDA7000EDDA7000FDCA7000FDCA7000EDDA7000FDD
+ A7000EDDA7000FDDA70056EDC20018B985000000000000000000000000000000
+ 00000000000000000000F3CEA900FADBB700FADBB700F9DAB700FADBB700F9DB
+ B700F9DBB700F9DBB700F9DAB700FADBB700F9DBB700F5D2AE00000000000000
+ 00000000000000000000000000000000000000000000403E3C00575452005754
+ 52005F5B58004A46450057545200EBEBCD00EBEBCC00EBEBCC00EBEBCC00EBEC
+ CC00EBEBCC00EBEBCC002F2E2C0047434100EBEBCC00EBEBCC00444140005754
+ 52005754520057545200000000000000000013C08A0013C08A0013C08A0013C0
+ 8A0013C08A0013C08A0013C08A0013C08A0013C08A0013C08A0013C08A0013C0
+ 8A0016BC89000FE0AA000FDFAA000FE0AA000FE0A9006BF2CC0016BC88000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000063C2C0016BC88006BF2CC000FDFA9000FE0AA000FDFAA0021E3B10016BC
+ 890013C08A0013C08A0013C08A0013C08A0013C08A0013C08A0013C08A0013C0
+ 8A0013C08A0013C08A0013C08A0013C08A000000000000000000000000000000
+ 00000000000000000000F2CCA800FADDBA00FADCBA00FADCBA00FADDBA00F9DC
+ BA00FADDBA00FADCBA00F9DCBA00FADCBA00FADCB900F4D0AD00000000000000
+ 00000000000000000000000000000000000000000000413E3D005A5654005A56
+ 54005F5B58004A4645005A565400EDECD000EDEDD100EDEDD000EDEDD100ECEC
+ D000EDEDD000ECEDD0002F2E2C0047434100ECEDD000ECECD100464341005A56
+ 54005A5654005955540000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000014BD89000FE1AB0010E0AB0010E1AB0073F4CF0014BD8900063C2C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000063C2C0014BD890010E0AB0010E1AB0010E0AB002DE6B60014BD
+ 8900000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F1CBA600FADEBC00FADEBD00FADDBC00FADDBC00FADE
+ BD00FADEBD00FADDBD00FADEBC00FADEBD00FADDBD00F3CFAC00000000000000
+ 0000000000000000000000000000000000000000000042403E005B5855005B57
+ 56005F5B58004A4645005C585500EEEED500EEEED500EEEED500EEEED500EEEE
+ D500EEEED500EEEED5002F2E2C0047434100EEEED500EEEED500484442005B57
+ 56005C5856005B58560000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000013BE8B000FE2AC0010E1AD000FE2AC0013BF8A00063C2C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000063C2C007CF5D2000FE2AC0010E1AD003AEABB0013BE
+ 8B00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000EFC8A400FAE0C100FBE0C200FAE0C100FBE0C200FAE0
+ C200FAE0C200FAE0C200FAE0C100FBE0C100FAE0C200F1CBA800000000000000
+ 00000000000000000000000000000000000000000000444140005F5A58005F5B
+ 58005F5B58004A4645005E5B5900F0F1DE00F1F1DD00F1F1DE00F1F1DE00F0F1
+ DE00F1F1DE00F0F1DE002F2E2C002F2E2C00F1F1DD00F0F1DE00494645005F5A
+ 59005F5B59006D6B6A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000012C18C0010E3AF0089F8D70011C18C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000063C2C0011C18C0089F8D70050EEC40012C1
+ 8C00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000EEC7A400FBE2C300FAE1C400FBE1C300FAE2C300FBE1
+ C400FAE1C400FBE1C400FBE1C300FBE1C300FBE1C400EFC8A600000000000000
+ 00000000000000000000000000000000000000000000454241008D8C8B006D6B
+ 6A005F5B58004A4645006D6B6A00FBFBF500FBFBF500FBFBF500FBFBF500FBFB
+ F500FBFBF500FBFBF500FBFBF500FBFBF500FBFBF500FBFBF500555353006D6B
+ 6A008D8C8B004542400000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000011C28D008EF9D80010C28D00063C2C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000063C2C0010C28D0057F0C70011C2
+ 8D00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000EFC7A400EFC7A400EFC7A400EFC7A400EFC7A400EFC7
+ A400EFC7A400EFC7A400EFC7A400EFC7A400EFC7A400EFC7A500000000000000
+ 000000000000000000000000000000000000000000003A373600454241004542
+ 40005F5B58004A46450045424100C3C3B500C3C3B500C3C3B500C3C3B500C3C3
+ B500C3C3B500C3C3B500C3C3B500C3C3B500C3C3B500F4F3E400363333004542
+ 4100454240001F1D1D0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000010C28D000FC28D00063C2C00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000063C2C00F5F9F70010C2
+ 8D00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000EC48F000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000EC4
+ 8F00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000020202000A0A0900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000A0A090002020200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000008E8F82008E8F82008E8F82008E8F82008E8F
+ 82008E8F82008E8F82008E8F82008E8F82001313120002020200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000349E6F00349E6F00349E6F00349E6F00349E
+ 6F00349E6F00349E6F00349E6F00349E6F000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000A5A69B00C2C3B400C2C3B400C2C3B400C2C3
+ B400C2C3B400C2C3B400C2C3B400A5A69B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000E2B79800E1B69600E1B69600E1B69600E1B69600E1B69600E1B69600E1B6
+ 9600E1B69600E1B69600E1B69600E1B69600E1B69600E1B69600E1B69600E1B6
+ 9600E1B69600E1B6960000000000000000000000000000000000000000000000
+ 000000000000000000000000000033A070003CD7A70013B98C0013B98C0013B9
+ 8C0013B98C0013B98C003CD7A700329F70000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000A5A5A500CECECE00E7E7E700E7E7E700E7E7E700E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700CCCCCC002525
+ 2500000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C2C3B400F0F0EC00F0F0EC00F0F0EC00F0F0
+ EC00F0F0EC00F0F0EC00F0F0EC00C2C3B4000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F9E5C400F9E5C400F9E5C400F9E5C400F9E5C400F9E5C400F9E5C400F9E5
+ C400F9E5C400F9E5C400F9E5C400F9E5C400F9E5C400F9E5C400F9E5C400F9E5
+ C400F9E5C400E2B7970000000000000000000000000000000000000000000000
+ 000000000000000000000000000031A1710039D7A6000CC78F000CC78F000CC7
+ 8F000CC78F000CC78F0039D7A60032A171000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000F0F0F00B3B3B300CECECE00E4E4E400E4E4E400E4E4E400E3E3E300E3E3
+ E300E3E3E300F2F2F200D4DDD900E2E2E200E1E1E100EFEFEF00CCCCCC005B5B
+ 5B00000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000A5A69B00C2C3B400C2C3B400C2C3
+ B400C2C3B400C2C3B400A5A69B00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F8E2BB00F3D6B100F3D6B100F3D6B100F3D6B100F3D6B100F3D6B100F3D6
+ B100F3D6B100F3D6B100F3D6B100F3D6B100F3D6B100F3D6B100F3D6B100F3D6
+ B100F8E0BA00E2B8980000000000000000000000000000000000000000000000
+ 000000000000000000000000000030A2720034D5A4000CC790000CC790000CC7
+ 90000CC790000CC7900034D6A50031A272000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000033333300C2C2C200D5D5D500E4E4E400F3F3F300F3F3F300F3F3F300F3F3
+ F300E3E3E3005DB59100BFD7CD00F3F3F300F2F2F200EDEDED00D5D5D5008383
+ 8300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008182770081827700818277008182
+ 7700818277008182770081827700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F8E1BE00F3D6B100F5DAB500F8E1BB00F8E0BB00F8E1BB00F8E1BB00F8E1
+ BB00F8E1BB00F8E1BC00F8E1BB00F8E1BB00F9E1BC00F8E1BB00F8E1BB00F4D7
+ B200F8E1BB00E3B99A0000000000000000000000000000000000000000000000
+ 00000000000000000000000000002DA4740029D3A1000DCA92000DCA92000DCA
+ 92000DCA92000DCA920029D3A1002EA473000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008C8C8C00CFCFCF00E8E8E8006CC0A00038B2840039B083003BB083003AAE
+ 820078C0A4003EAC80003BAC81003DAB7F003DAA7D00D1DFD800E9E9E900ACAC
+ AC0000000000000000000000000000000000A5A69B00A5A69B00A5A69B00A5A6
+ 9B00A5A69B00A5A69B00A5A69B00A5A69B00A5A69B00A5A69B00A5A69B00A5A6
+ 9B00A5A69B00A5A69B00A5A69B00A5A69B00A5A69B00A5A69B00A5A69B00A5A6
+ 9B00A5A69B00A5A69B00A5A69B00A5A69B000000000000000000000000000000
+ 0000F8E2BF00F3D7B200F8E2BC00F8E1BC00F8E1BC00F8E1BC00F8E2BC00F8E1
+ BC00F8E1BC00F8E1BC00F8E2BC00F8E1BC00F8E1BC00F9E1BC00F8E1BC00F5DA
+ B500F8E1BC00E3BA9B0000000000000000000000000000000000000000000000
+ 00000000000000000000000000002CA6750023D29F000DCB93000DCB93000DCB
+ 93000DCB93000DCB930023D19F002DA574000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009D9D9D00D0D0D000EFEFEF0039B2850039B184005DBC980064BC9B0058B8
+ 9400DEE3E1003CAB800092CAB30084C4AA003EAA7E0096C9B300EEEEEE00B9B9
+ B90002020200000000000000000000000000A5A69B00C3C4B500C2C3B500C2C4
+ B500C3C4B400C2C4B500C3C4B500C3C3B500C2C4B500C3C4B500C3C3B400C3C3
+ B500C3C3B500C3C4B500C3C3B500C2C4B500C3C4B500C3C3B400C3C4B400C3C4
+ B500C3C3B400C2C4B500C3C3B500A5A69B000000000000000000000000000000
+ 0000F8E3BF00F4D8B300F8E2BD00F8E2BD00F8E2BD00F8E1BD00F9E2BC00F8E2
+ BD00F8E2BD00F8E2BD00F8E2BD00F8E2BC00F8E1BD00F8E1BC00F8E2BD00F5DB
+ B600F8E1BD00E3BC9C0000000000000000000000000000000000000000000000
+ 00000000000000000000000000002BA676001DD09D000DCC94000DCC94000DCC
+ 94000DCC94000DCC94001DD19C002BA676000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000ACACAC00D0D0D000F1F1F10044B98E0038B2850041B28800CFDFD900E6E6
+ E600E6E6E60058B69100A5D0BE00B9D7CC003BAA7D00AED1C200F0F0F000C4C4
+ C40025252500000000000000000000000000A5A69B00E4E3DB00E4E3DB00E5E6
+ DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6
+ DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6DF00E5E6
+ DF00E5E6DF00E5E6DF00C7C7B800A5A69B000000000000000000000000000000
+ 0000F9E4C300F4DAB500F8E2BF00F8E3BF00F8E3BF00F9E3BF00F8E2BE00F8E3
+ BE00F9E3BF00F8E2BF00F8E2BF00F8E3BF00F8E2BF00F8E2BE00F8E3BE00F5DC
+ B800F8E2BF00E5BE9F00000000000000000028AA7A0028AA7A0027AA790028AA
+ 790028AA790028AA790028AA790027AA790014CE99000DCF98000DCF98000DCF
+ 98000DCF98000DCF980013CF990028A9790029A9780028A9790028A9780029A9
+ 780028A9780029A9780029A97800000000000000000000000000000000000000
+ 0000CACACA00DADADA00F2F2F200E0E7E40045B98F0035B486008DCDB500E8E8
+ E800E8E8E800E6E6E6006FC0A1003BAE8200D7E1DC00E5E5E500EEEEEE00CDCD
+ CD0083838300000000000000000000000000A5A69B00D6977300D7977400D797
+ 7400D7977400D7977400D7977400D7977400D7977400D7977400D7977400D797
+ 7400D7977400D7977400D7977400D7977400D7977400D7977400D7977400D797
+ 7400D7977400D7977400C7C9B900A5A69B000000000000000000000000000000
+ 0000F8E4C500F6DEBA00F9E3BF00F8E2BF00F8E3C000F8E3C000F8E3C000F9E3
+ C000F8E2C000F8E3C000F8E3BF00F8E3C000F9E3C000F7E2BE00F9E1BE00F6DD
+ B900F7E1BD00E5BFA000000000000000000026AC7B003EDCB0003EDCB0003EDC
+ B0003EDCB0003EDCB0003EDCB0003EDCB00011CE98000DD099000DD099000DD0
+ 99000DD099000DD0990011CE98003EDCB0003EDCB0003EDCB0003EDCB0003EDC
+ B0003EDCB0003EDCB00027AA7900000000000000000000000000000000000000
+ 0000D0D0D000E5E5E500EFEFEF0059C09C0039B88B0035B58700E7E9E800E6E8
+ E700E8E8E800E8E8E800E5E6E60080C7AC00E6E6E600E6E6E600EBEBEB00CFCF
+ CF009A9A9A00000000000000000000000000A5A69B00E6A47E00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00C9CABB00A5A69B000000000000000000000000000000
+ 0000F9E5C500F7DFBD00F8E3C000F9E3C000F9E3C100F8E3C000F8E3C000F9E3
+ C000F9E3C000F8E2C000F9E3C100F9E4C100F7E2C000F8E3BF00F7E2BF00F5DD
+ BA00F7E0BE00E6C0A300000000000000000024AE7C0011C9960011C9960011C9
+ 960011C9960011C9960011C9960011C9960011C996000DD29B000DD29B000DD2
+ 9B000DD29B000DD29B000DD29B0011C9960011C9960011C9960011C9960011C9
+ 960011C9960011C9960026AC7B00000000000000000000000000000000000000
+ 0000D2D2D200EDEDED00EDEDED00EAEAEA00EAEAEA00DCE6E2003EB88C0081CB
+ AF00E5E8E70048B78E0037AF82007FC5AA00E7E7E700E6E6E600E8E8E800CFCF
+ CF00A8A8A800000000000000000000000000A5A69B00E6A37D00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00CCCDBE00A5A69B000000000000000000000000000000
+ 0000F9E6C900F7E1BF00F9E4C200F8E4C300F8E4C200F9E4C200F8E4C200F9E4
+ C200F7E3C200F7E1BF00F5DEBD00F5DFBD00F5DFBE00F5DEBE00F5DEBD00F3DC
+ BA00F3DCBC00E8C3A500000000000000000021B17F000ED59E000ED59E000ED5
+ 9E000ED59E000ED59E000ED59E000ED59E000ED59E000ED59E000ED59E000ED5
+ 9E000ED59E000ED59E000ED59E000ED59E000ED59E000ED59E000ED59E000ED5
+ 9E000ED59E000ED59E0022AF7D00000000000000000000000000000000000B0B
+ 0B00D3D3D300F4F4F400EBEBEB00EBEBEB00EBEBEB00EBEBEB0031B6860035B5
+ 870094D1BA0036B385003DB388002EAE8000E9E9E900E8E8E800E8E8E800D0D0
+ D000C6C6C6002C2C2C000000000000000000A5A69B00E5A37D00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A57F00E8A5
+ 7F00E8A57F00E8A57F00CCCEBF00A5A69B000000000000000000000000000000
+ 0000F9E7CA00F7E2C000F9E5C400F8E4C300F9E5C400F8E5C400F9E5C300F9E4
+ C400F8E3C100F4DEBE00F2DCBC00F3DDBD00F4DDBE00F5DEBE00F4DEBD00F4DD
+ BA00F4DEBD00E8C5A70000000000000000001FB280000ED6A0000ED6A0000ED6
+ A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6
+ A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6A0000ED6
+ A0000ED6A0000ED6A00020B17F00000000000000000000000000000000002C2C
+ 2C00D6D6D600F5F5F500ECECEC00EBEBEB00EBEBEB00EBEBEB007CCCAF0034B6
+ 880035B5870038B58700CEE2DA0096D0B800E9E9E900E9E9E900E9E9E900D6D6
+ D600CDCDCD005C5C5C000000000000000000A5A69B00E5A37E00E9A68000E8A6
+ 8000E9A68000E8A68000E8A68000E9A68000E9A68000E9A68000E8A68000E8A6
+ 8000E8A78000E8A68000E8A78000E9A68000E9A78000E9A68000E9A68100E8A6
+ 8000E8A78000E8A68000CECFC000A5A69B000000000000000000000000000000
+ 0000F9E8CC00F8E5C400F9E5C500F9E5C500F9E5C500F9E5C400F8E5C400F8E4
+ C400F8E3C200F2DCBD00F3DCBD00F2DBBA00F2DBBB00F2DCBC00F3DCBC00F3DD
+ BC00F3DCBD00E9C7A90000000000000000001EB4820010D8A10010D8A10010D8
+ A10010D8A1000FD8A1000FD8A1000FD8A1000FD8A1000FD8A1000ED8A1000ED8
+ A1000ED8A1000ED8A1000ED8A1000ED8A1000ED8A1000ED8A1000ED8A1000ED8
+ A1000ED8A1000ED8A10020B28000000000000000000000000000000000005B5B
+ 5B00D1D1D100E4E4E400DDDDDD00DCDCDC00DCDCDC00DCDCDC00D9DBDA0030AB
+ 800030AA7F002AA77B00DADBDA00DBDBDB00DADADA00D9D9D900D9D9D900D1D1
+ D100C2C2C200797979000000000000000000A5A69B00E6A68100EAAA8400EAA9
+ 8400EBA98300EBA98300EBA98400EAAA8300EAAA8300EBA98300EAAA8300EBAA
+ 8300EAAA8400EAAA8300EBA98300EAA98300EAAA8400EBAA8300EBA98300EAAA
+ 8300EAAA8400EAAA8300D1D2C300A5A69B000000000000000000000000000000
+ 0000F9E8CD00F8E6C700F9E6C800F9E5C800F8E6C800F9E5C700F9E6C800F7E4
+ C500F6E1C300EDD5B700EACFB100E8CCAF00E7CBAC00E6CBAD00E7CBAC00E8CC
+ AF00DEBEA300E7C3A80001010100000000001AB7840016DBA60016DBA60016DB
+ A60016DBA60015DBA60015DBA60015DBA60014DBA60014DBA60014DBA60014DB
+ A60013DBA60013DBA60013DBA60013DBA60013DBA60013DBA60013DBA60013DB
+ A50013DBA50012DBA5001CB68300000000000000000000000000000000007171
+ 7100A4A4A4009494940092929200929292009292920092929200929292009191
+ 910091919100909090009090900090909000909090009090900090909000A3A3
+ A3008B8B8B00767676000000000000000000A5A69B00E6A88100ECAB8500ECAC
+ 8600EBAC8500EBAB8500EBAB8500ECAB8500EBAC8500ECAC8500EBAC8500EBAC
+ 8500ECAB8500EBAC8500EBAC8500ECAC8500EBAB8500ECAC8500ECAB8500ECAC
+ 8500ECAC8500EBAC8500D3D4C500A5A69B000000000000000000000000000000
+ 0000F9E9CF00F8E6C800F9E7C800F9E6C800F9E6C800F8E6C900F9E7C900F8E5
+ C700F5E1C300EACFB300E4C5AA00E2C0A500DBB89C00DBB89C00D9B69B00D9B7
+ 9B00E8CDAE00E7C3A800000000000000000018B8850090F9D90090F9D90090F9
+ D90090F9D90090F9D90090F9D900F5F9F7001FDDA90019DCA70019DCA70019DC
+ A70018DCA70018DCA7001DDDA900F5F9F70090F9D90090F9D90090F9D90090F9
+ D90090F9D90090F9D9001AB7840000000000000000000E7C5A0021B17F0021B1
+ 7F0021B17F0021B17F0021B17F0021B17F0021B17F0021B17F0021B17F0021B1
+ 7F0021B17F0021B17F0021B17F0021B17F0021B17F0021B17F0021B17F0021B1
+ 7F0021B17F0021B17F000E7C5A0000000000A5A69B00E8A98300ECAE8700ECAE
+ 8700EDAE8700EDAE8700ECAE8700ECAD8700ECAE8700EDAE8700EDAE8800EDAE
+ 8700ECAE8800EDAE8700EDAE8700ECAD8700EDAE8700ECAE8700ECAE8700ECAE
+ 8700ECAE8800ECAE8700D4D5C800A5A69B000000000000000000000000000000
+ 0000F9E9CF00F8E7C900F8E7C900F9E7C900F8E6C900F9E7CA00F9E6C900F8E5
+ C800F4E0C100E8CBAF00E2C2A700E4C7AE00DFBFA600E1C3A800EAD2B600F5DF
+ BC00E8C5AA00483B3200000000000000000017BA870017BB870017BA860017BA
+ 860018BA870017B9860017BA870017BA86002AE0AD001DDDA9001DDDA9001DDD
+ A9001CDDA9001CDDA90028E0AD0018B9860018B9860018B9860018B9860018B9
+ 860018B9860019B9850019B98500000000000000000021B17F001AC995001AC9
+ 95001AC995001AC995001AC995001AC995001AC995001AC995001AC995001AC9
+ 95001AC995001AC995001AC995001AC995001AC995001AC995001AC995001AC9
+ 95001AC995001AC9950021B17F0000000000A5A69B00E8AC8600EFB38C00EFB3
+ 8C00EFB28C00EFB28C00EFB28C00EFB38C00EFB28C00EFB38B00EFB28C00EFB3
+ 8C00EFB28B00EFB28C00EFB28C00EFB28C00EFB38C00EFB38B00EFB28C00EFB3
+ 8B00EFB38B00EFB28C00D7D7CB00A5A69B000000000000000000000000000000
+ 0000F9EAD100F9E7CB00F9E8CB00F9E8CB00F9E7CC00F9E8CB00F9E8CB00F6E6
+ C900F1DDC000FCF9F700F8F2EC00FDF7EE00FAECD500F8E3C300F7E0BB00483D
+ 3300000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000014BC88003FE4B30026DEAB0025DEAB0025DE
+ AB0025DEAB0024DEAB003CE3B20015BC88000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021B17F0012C28E0012C2
+ 8E0013C28D0013C38E0012C28E0012C28E0012C28D0013C28E0012C28E0012C2
+ 8E0012C38D0013C28E0012C38E0012C38E0012C38E0012C28E0013C28E0013C2
+ 8E0012C38E0013C38E0021B17F0000000000A5A69B00E9AD8700F1B58E00F1B5
+ 8E00F1B58E00F0B58E00F0B58D00F0B58E00F0B58E00F1B58E00F1B58E00F0B5
+ 8E00F1B58E00F1B58D00F1B58E00F1B58E00F0B58D00F1B58D00F0B58D00F0B5
+ 8D00F0B58E00F1B58E00D7D8CC00A5A69B000000000000000000000000000000
+ 0000F9EBD200F9E8CC00F8E7CC00F9E8CC00F9E7CC00F9E8CC00F8E7CB00F7E4
+ C800F2DDC000FEFAF500FCF6EC00FBF0DD00F8E3C200F7DFBA00EDD0B4000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000013BE8A0046E5B5002ADEAB0029DEAB0029DE
+ AB0029DEAB0029DEAB0045E5B50014BE89000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021B17F0012C4900011C4
+ 8F0012C48F0012C48F0011C48F0011C48F0011C48F0012C48F0012C48F0012C4
+ 8F0011C48F0012C48F0012C48F0012C48F0011C48F0011C38F0012C48F0012C4
+ 8F0011C48F0011C48F0021B17F0000000000A5A69B00EAAF8900F1B78F00F1B7
+ 9000F1B89000F1B79000F2B79000F2B89000F1B79000F1B79000F1B89000F1B8
+ 9000F2B89000F2B89000F2B79000F1B79000F2B79000F2B89000F2B78F00F2B7
+ 8F00F2B79000F1B79000D8DACE00A5A69B000000000000000000000000000000
+ 0000F9EBD200F9E8CD00F9E8CD00F9E8CC00F9E8CD00F8E8CD00F9E7CB00F6E4
+ C900F1DCBF00FCF4E700FBEFDC00F9E8CE00F7DFB900EFD3B700493E35000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000013BF8B004CE6B7002EDEAB002EDEAB002DDE
+ AB002DDEAB002DDEAC004BE6B70013BF8B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021B17F0011C5900011C5
+ 900011C5900011C5900011C5900011C5900011C5900011C5900011C5900011C5
+ 900011C5900011C5900011C5900011C5900011C5900011C5900011C5900011C5
+ 900011C5900011C5900021B17F0000000000A5A69B00EBB18B00F4BB9300F3BB
+ 9400F3BB9400F3BB9400F4BB9300F4BB9400F4BB9300F4BB9400F3BB9400F3BB
+ 9400F3BC9400F4BB9400F3BB9400F3BB9300F4BC9300F3BB9400F4BB9300F4BB
+ 9400F4BB9400F4BB9400DBDBD000A5A69B000000000000000000000000000000
+ 0000F9EBD400F9E8CE00F9E8CE00F9E8CE00F9E9CE00F9E9CE00F7E6CD00F5E1
+ C800F0DABE00F7E2C000F7E1BE00F7DFB90051463C0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000011C28C0053E8B90035DDAB0034DDAB0034DD
+ AB0034DEAB0034DEAB0053E8B90011C18C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000016BD880017E8B40017E8
+ B40017E8B40017E8B40017E8B40017E8B40017E8B40017E8B40017E8B40017E8
+ B40017E8B40017E8B40017E8B40017E8B40017E8B40017E8B40017E8B40017E8
+ B40017E8B40017E8B40016BD880001060400A5A69B00EBB28C00F4BD9400F4BC
+ 9500F4BC9500F4BC9500F5BD9500F4BD9500F4BC9500F4BD9500F4BD9500F5BD
+ 9500F4BC9500F4BD9500F4BD9500F5BD9500F5BD9500F4BD9500F4BD9500F4BD
+ 9500F4BD9400F5BD9400DBDCD000A5A69B000000000000000000000000000000
+ 0000FAECD400F9E8CE00F9E9CF00F9E9CE00F9E9CF00F9E8CD00F7E5CC00F4E2
+ C700F0DABF00F7DFB900F7DFB900F1D8BC000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000FC38D0054E9BA0037DDAB0037DDAB0037DD
+ AB0037DDAB0037DDAB0054E9BA0010C28D000000000000000000000000000000
+ 000000000000000000000000000000000000000000000E382C0016BD880017E8
+ B400299065002892660025A1710025A1710025A1710025A1710025A1710025A1
+ 710025A1710025A1710025A1710025A1710025A1710025A1710025A171000CBE
+ 890046E7B50017E8B4000E372A0000000000A5A69B00C98C6B00C98C6B00C98C
+ 6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C
+ 6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C6B00C98C
+ 6B00C98C6B00C98C6B00DCDDD100A5A69B000000000000000000000000000000
+ 0000FAECD500F9E9CF00F9E9CF00F9E9CF00F9E9CF00F9E9CE00F7E6CC00F6E3
+ C900F1DDC200F4DCB800F1D8BC006A5E50000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000EC38E0079EDC8003ADCAB0039DCAB0039DC
+ AB0039DCAB0039DDAB0079EDC8000FC38E000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000F3C2E0016BD
+ 880048E6B5002990650025A1710025A1710025A1710025A1710025A1710025A1
+ 710025A1710025A1710025A1710025A1710025A1710025A1710025A171004DEC
+ BA0017E8B40016BD88000000000000000000C2C3B400C2C3B400C2C3B400C2C3
+ B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3
+ B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3B400C2C3
+ B400C2C3B400C2C3B400C2C3B400C2C3B4000000000000000000000000000000
+ 0000F1D8BC00F1D8BC00F1D8BC00F1D8BC00F1D8BC00F1D8BC00F1D8BC00F1D8
+ BC00F1D8BC007266580000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000EC48F000EC48F000EC48F000EC48F000EC4
+ 8F000EC48F000EC48F000EC48F000EC48F000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 010017DCA70010D1970010D1970010D1970010D1970010D1970010D1970010D1
+ 970010D1970010D1970010D1970010D1970010D1970010D1970010D1970016CE
+ 99000F3A2D00000101000000000000000000424D3E000000000000003E000000
+ 2800000060000000480300000100010000000000602700000000000000000000
+ 000000000000000000000000FFFFFF00FFFFFF000000000000000000FFE00300
+ 0000000000000000FFFF01000000000000000000FFFF01000000000000000000
+ FFFE01000000000000000000FFF801000000000000000000FFF8030000000000
+ 00000000FFF003000000000000000000FFE00F000000000000000000F0001F00
+ 0000000000000000E0001F00000000000000000080007F000000000000000000
+ 8000FF0000000000000000008001FF0000000000000000000000FF0000000000
+ 000000000000FF0000000000000000000000FF00000000000000000000001F00
+ 000000000000000000001F00000000000000000000001F000000000000000000
+ 8000FF0000000000000000008000FF000000000000000000C000FF0000000000
+ 00000000F03FFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 0000FFFFFF8007FF00003F000000FFFFFF80FFFF8000FF000000010101807FFF
+ 8000FF000000010101803FFF8000FF800001010101801FFF8000FF8000030101
+ 01800FFF8000FFC000030101018007FF8000FFE00007010101E003FF8000FFE0
+ 0007010101F001FF8000FFF0000FEFEFEFF000FF8000F8F0001FEFEFEFFC007F
+ 8000F8F0001FE0000FFE00078000F8F8001FFFEFFFFE0003FFE3F8FC003FFE00
+ FFFF8001FFE3F8FE007FFE00FFFFC000FFE3F8FE007FFE00FFFFC000FFE1F0FE
+ 00FFFE00FFFFF020FFE1F0FF00FFFE00FFFFF070FFE0E0FF00FFFE00FFFFF038
+ FFF001FFC1FFFE00FFFFF01CFFF803FFC3FFFE00FFFFF81FFFFC07FFC7FFFE00
+ FFFFF80FFFFFFFFFFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFC00007FFFFFFFFFFFFC0000FE0001F800001000000C0000FE0001F000000
+ 800003C0000FE0001F000000800003C0000FE0001F000000800003C0000FE000
+ 1F000000800003C0000FE0001F000000800003C0FC0FE0001F000000800003C0
+ FC0FE0001F000000800003C0FC0FE0001F000000800001C0FC0FE0001F000000
+ 800001C0FC0FE0001F000000800001C0FC0FE0001F000000800001C0C000E000
+ 1F000000800001C0C000E0001F000000800001C0C000E0001F000000FE007FC0
+ F003E0001F000000FE007FC0F803800007000000FE007FC0F807800007000000
+ FFFFFFC0FE1F800007800003FFFFFFE1FF1F800007FFFFFFFFFFFFFFFF1FC000
+ 0FFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF801FFFFFFFFFFFFFC00001FFE0FFFE003FFFFFFFC00001FFC07FFE003F
+ FFFFFFC00001FFC03FFFC0FFFFFFFFC00001FF001FFFC1FFFFFFFFC00001FE00
+ 0FFFC1FFFFFFFFC00001FE0007FFC1FFFFFFFFC00001F80003FFC1FF800003C0
+ 0001F00001FFC1FF800003C00001F00000FFC1FF800003C00001C00001FFC1FF
+ E00007C00001800003FFC1FFE00007C00001800003FFC1FFF0000FC000018000
+ 0FFFC1FFF0000FC0000180001FFFC1FFF0000FC0000180001FFFC1FFF0000FC0
+ 000182007FF3C1E3F0001FC000018200FFF1C1E3F8001FC000018000FFF1C1C3
+ FFFFFFFFFFFFC003FFF00003FFFFFFFFFFFFE007FFF00003FFFFFFFFFFFFF007
+ FFF00003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFF
+ 000FF01C07F8001FFF87FFFFFC3FF07F0FF0000FFF87FFFFF83FF83E1FE00007
+ FF87FFFFF83FF8181FC00003F8007FFFE03FFC001F800001F8007FFFC03FFC00
+ 1F000000F8007FFC003FFC001F000000FF03FFF0001FFE003F000000FE00FFF0
+ 001FFE001F000000FC00FFF0000FF8001F000000F0003FF0000FE00003000000
+ F0303FF0000FC00003000000F0781FF0000F800000000000F0FC1FF0001F8000
+ 00000000F1FE1FF0001FFF80FF000000F1FE1FF0003FFF80FF000000F0FC1FFF
+ C03FFFC1FF000000F0781FFFE03FFFC1FF800001F0303FFFF03FFFC3FF800003
+ F8007FFFF83FFFC3FFE00007FC00FFFFFC3FFFE7FFF0000FFE00FFFFFE3FFFE7
+ FFF0001FFFFFFFFFFFFFFFFFFFFC003FFFFFFFFFFFFFFE00FFFFFFFFC0000FE0
+ 0007FF81FFFFFFFF80001FF8003FFE00FFFC0FFF80001FF8003FFE007FF007FF
+ 80001FF8003FFE007FF003FF80001FF8003FF8001FC000FFF0001FF8003FF000
+ 1FC0C0FFF0001FF8003FF0001F81E0FFF0001FF8003FF0000F83F0FFF0001FF8
+ 003FE0000787F8FFF0001FF8003FE0000787F8FFF0001FF8003FC0000383F0FF
+ F0001FF8003FC0000381E0FFF0001FF8003FC00003C0C0C7F0001FF8003FC000
+ 03E00047F0001FF8003FC00003F00007F0001FF8003FC00003F00007F00003F8
+ 003FC00003FFF807F00003F8003FC00003FFF807F00003F8003FC00003FFE007
+ F00003F8003FFF81FFFFE007F00003F8003FFFC3FFFFE007F80003F8003FFFC7
+ FFFFFFFFFFFFFFF8003FFFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3FFC00003FFFFFFFFFFFFFF80E3800003
+ FFFFFFFFFFFFFF00C38000039FFFFFFFFFFFFE00018000039FE001FFFFFFFC00
+ 018000038FE001FFFFFFF800018000038FF001800001F0000380000387F80180
+ 0001E0000380000383F801800001E00003800003806001800001800001800003
+ C00001800001800001800003C00001800001800001800003E000018000018000
+ 01800003F00001800001800001800003F00001800001800001800003F80019FF
+ FFFF800001800003FC003FFFFFFF800001800003FE007FFFFFFF800001800003
+ FFFFFFFFFFFF801803800003FFFFFFFFFFFFC03803C00003FFFFFFFFFFFFF03E
+ 07E00007FFFFFFFFFFFFFFFFFFFFFFFF800001FFFFFFFFFFFFFFFFFFF0000780
+ 0001FFFFFFFFFFFFF00007C00003F07FFF80007FF00007C00003E03FFF80007F
+ F00007C00003C01FFF80007FF00007C000038007FF800063F00007C000038007
+ FF800043F00007C000038003FF800041F00007C000038000FFC20001F00007C0
+ 00038000FFE30001F00007C00003C0007FFF0001F00007C00003E0001FC20001
+ F00007C00003F0001F800001F00007C00003F0000F800001F00007C00003FC00
+ 07800063F00007C00003FE000380007FF00007C00003FE000380007FF00007C0
+ 0003FF800380007FF00007C00003FFC003FE07FFF00007C00003FFC003FC03FF
+ F00007C00003FFF007F801FFF00007C00003FFF80FF801FFFE493FC00003FFFC
+ 1FF801FFFE493FFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFE001FFFFFFFFFFFFF800003FFF8FFFE0003FFFFFF800003FFF0FFFC0003
+ FC003F800003FFE0FFF80003000000800003FFC0FFF00003000000800003FF80
+ C7E00003000000800003F00083E00003000000800003C00003E00003FC003F80
+ 0003C00003E00003FF00FF800003C00003E00003FF00FF800003C00007E00003
+ FF00FF800003C00007E00003FF00FFFC0003C00003E00003FFC3FFFC0003C000
+ 03E00003FFC3FFFC0003C00003E00003FFC3FFFC0003E00003E00003FFC3FFFC
+ 0003FF80C7E00003FFC3FFFC0003FFC0FFE00003FFC3FFFC0003FFC0FFE00003
+ FFC3FFFC0003FFF0FFE00003FFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFF8
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC003FC00FFFF00007FF
+ FFFFFFC3FFC07FFFFC001FFFFFFFFF00FF807FFFFC001FFFFFFFFE00FF807FFF
+ FC001FF8000FFE007F807E1FFC001FFF181FFE007F807807FC001FFF181FFF81
+ FFC07807FC001FFE101FF381CFE07807FC001FFE007FE381C3F87807FC001FFE
+ 00FFC00003F87807FC001FFC00FF800001F87C07FC001FF8007F000000F87F07
+ FC001FF8003F000000F87F87FC001FF0003F000000F87F87FC001FF000FF8000
+ 03F87F87FC001FF003FFC381C3F80F87FC001FF007FFE381C7F80187FC001FE0
+ 3FFFFF81FFF80007FC001FC0FFFFFE007FF80007FC001FC3FFFFFE007FF80007
+ FC001FFFFFFFFE00FFFC0007FC001FFFFFFFFF00FFFF0007FC001FFFFFFFFF81
+ FFFFE007FFFFFFFFFFFFFFC7FFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF80000383FFFFFFFFFFFFFFFF80000381FFFFFFFFFF
+ FFFFFF80000381FFFFFFFFFFFFFFFF800003C07FFF800001800001800003E03F
+ FF800001800001800003F03FFF800001800001800003F80FFF80000180000180
+ 0003FC07FF800001800001800003FE07FF800001800001800003FF00CF800001
+ 800001800003FF8007800001800001800003FFC007800001800001800003FFE0
+ 03800001800001800003FFE001800001EFFFFF800003FFE001800001E0000380
+ 0003FFF803800001FFFFFF800003FFF803800001FFFFFF800003FFF003800001
+ FFFFFFFFFFFFFFF003800001FFFFFFFFFFFFFFFE1FFFFFFFFFFFFFFFFFFFFFFF
+ 1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00007FFFFFF800003FF
+ FFFFF0000FFFFFFFE00007FC007FF0000FF8001FE00007F8003FF0000FF8001F
+ E00007F0001FF0000FF8001FE00007E0000FF0000FF8001FE00007C00007F000
+ 0FF8001FE00007800003F0000FF8001FE00007800003F0000FF8001FE0000780
+ 0003F0000FF8001F800001800003F0000FF8001F800001800003F0000FF8001F
+ 800001800003F0000FF8001F800001800003F0000FF8001FC00003800003F000
+ 0FF8001FE00007800003F0000FF8001FF0000F800003F0000FF8001FF8000F80
+ 0003F0000FF8001FFC0007C00007F0000FF8001FFE0007E0000FF0000FF8001F
+ FF00FFF0001FF0000FF8001FFF81FFF8003FF0000FF8001FFFC3FFFC007FF000
+ 0FF8001FFFFFFFFFFFFFF8001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFF
+ FFFFFC003FFE00FFF8001FFFFFFFFF81FFF6004FF0001FFFFFFFFF00FFE80003
+ F0000FFFFFFFFE00FFC0001BC00003000000FC003FA00005C00003000000F800
+ 1FE00005800003000000F0001FC00001800001000000E0000F803C0180000100
+ 0000E00007807E01800001000000C0000380FF0180000100000080000380FF01
+ 80000100000080000380FF0180000100000080000180FF018000010000008000
+ 01807E01800001800001800001803C01800003800003800001C00001C00003E0
+ 0007800001E00007C00003F0000F800001E00007E00007FFFFFF800001B0000F
+ F0001FFFFFFFC03803D80013F8001FFFFFFFF03E07CE0067FE007FFFFFFFFFFF
+ FFF300CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+ 00FFFFBFFFF0001F807E03F1FFFFFF8FFFF8001F807E03F1FFFFFF8FFFF8001F
+ 80FF03F1FFFFFF87FFF8001F807E03F1FFFFFF87FFC00003803C03F1FFFFFF83
+ FF800003803803F1FFFFFFC3FF800003880013F1FFFFFFC0FFC03C03FC003FF1
+ FFFFFFC0FFC07E03FE007FF1FFFFFFC0FF80FF03FF00FFF00003FE007F81FF01
+ FF00FFF00003FE003F81FF01FE00FFF00003FE003F80FF01FC003FF00003FE00
+ 1FC07E03880013F00003FE001FC03C03801803F00003FE01FF801803803C03F0
+ 0003FE00FF800003807E03F00003FE00FFC0000380FF03F00003FE00FFF8001F
+ 807E03F00003FE007FF8001F807E03F001F3FE003FF8001F807E03F0FFFFFE00
+ 3FFCC33FFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000FFFFFFFF03E0780
+ 0001F0001FFFFFFFE07E07E00007F0001F800001C03C03E00007F0001F800001
+ 803803E00007F0001F800001800001E00007F0001F800001800001E00007F000
+ 1F800001800001E00007F0001F800001C00003E00007F0001F800001E00007E0
+ 0007F0001F800001F0000FE00007F0001F800001F8001FE00007F0001F800001
+ F8001FE00007F0001F800001F0001FE00007F0001F800001E00007E00007F000
+ 1F800001C00003E00007F0001F800001800003E00007F0001F800001800001E0
+ 0007F0001F800001800001E00007F0001F803FFF801801E00007F0001F803FFF
+ C03C03E00007F0001F80FFFFE07E07E0000FF0001FFFFFFFF0FF0FE0001FF000
+ 1FFFFFFFFFFFFFE0003FF0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800001FF
+ F0E3FF00FFFFFFFFE00007FFF003FC001FE0000FE00007FFF003F0000FE0000F
+ E00007FFF003F00007E0000FE00007FE001FE00003E0000FE00007FE001FC000
+ 03E0000FE00007FE001FC00003E0000FE00007C0021F800001E0000FE00007C0
+ 021F800001E0000FE00007C0021F800001E0000FE00007C0021F800001E0000F
+ E00007C0021F800001E0000FE00007C0021F800001E0000FE00007C0021F8000
+ 01E0000FE00007C0021F800001E0000FE00007C0021FC00003E0000FE00007C0
+ 021FE00003E0000FE00007C0021FF00007E0000FE00007C0021FF00007E0000F
+ E00007FE001FFC001FE0000FF0000FFE001FFE003FE0000FFE00FFFE001FFF00
+ FFF0001FFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8001FFFFFFFFFFFFFFF
+ FFFFFC003FFFFFFFFFFFFF800003F0000FFC03FF840023800003E00007F803FF
+ 840021800003C00003F003FF840021800003800003E001FF8E00618000038000
+ 01C001FF840021800003800001C001FF800001800003000000E000FF80000180
+ 0003000000F040FF800001800003000800F0C0FF800001800003003800FFE07F
+ 800001800003003C00FFE03F800001800003003800FFF03F8000018000030000
+ 00FFF81F800001E00007000000FFF81F800001E00007000000FFFC0F800001E0
+ 0007800001FFFF03800001FFFFFF800003FFFF03800001FFFFFF800003FFFF83
+ FFFFFFFFFFFFE00007FFFFE1FFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF000
+ 1FFFFFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+ 0003FFFFFFF8001F80001FC00007FFFFFFF8001F80000FC00007800003F0000F
+ 800007C00007800001F00007800003C00007800001E00003800003C000078000
+ 01C01E03800003C00007800001C00F03800003C00007800001800781800003C0
+ 00078000018003C1800003C000078000018001C1800003C000078000018100C1
+ 800003C00007800001818041800003C0000780000181C001800003C000078000
+ 0181E001800003C0000780000181F001800003C00007800003C0F803800003C0
+ 0007E00007E00003800003C00007F8001FE00007800003C00007FFC01FF00007
+ 800003C00007FFFFFFF8001F800003C00007FFFFFFFE003FFFFFFFC00007FFFF
+ FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFF9FBFFFFFFFFFFFFFF80001FF9F3FFFF
+ FFFFFFFFFFC00003F8E3FF000000FFFFFFC00007F843FF000000800003C00007
+ F803FF000000800003C00007F803FF000000800003C00007F803FF0000008000
+ 03C00007F803FF000000800003C00007F803FF000000800003C00007F803FF00
+ 0000800003C00007F803FF000000800003C00007F803FF000000800003C00007
+ F803FF000000800003C00007F8001F000000800003C00007F8001F0000008000
+ 03C00007F8001F000000800003C00007F8001F000000800003C00007F8001F00
+ 0000800003C0001FF8001F800001800003C0001FF8001FFE3CFF800003C001FF
+ F8001FFE00FFFFFFFFC001FFF8001FFE00FFFFFFFFC001FFF8001FFE00FFFFFF
+ FFC001FFFE007FFFFFFFFFFFFFF007FFFFF7FFFFFFFFFFFFFFFFFFFFFFC1FFFF
+ FFFFF8001FFFFFFFFE003FFE7E7FFE00FFE00007FC001FF83C1FFE18FFC00003
+ F8000FF03C1FFE38FFC00003F00003F0181FFE3CFFC00003C0C181F8181FFC38
+ FFC00003C1C1C1F8001FFC38FFC00003C1C1C1FE007FFC38FFC00003C1C1E1FE
+ 007FFC38FFC00003C3E3E1FE00FFFC38FFC00003CFE3F9800001FC38FF800001
+ CFE3FD800001FC38FF800001FF80FF800001FC38FF800001FF80FF800001FC38
+ FF800001FFE3FFFE00FFFC30FFFFC7FFFFC1FFFE007FFC30FFFFC7FFFF80FFFC
+ 003FFC00FFFFC7FFFF80FFFC001FFC84FFFFC7FFFF88FFF8181FFCFCFFFFC7FF
+ FF80FFF0381FFC38FFFFC7FFFF80FFF03C1FFC00FFFFC7FFFFC0FFF83C1FFE00
+ FFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE003FC
+ 001FC0001FE0000FFFFF01FF00FFC00007E0000FFFFF01FF00FFC00007E0000F
+ FFFE01FF00FFC00007E0000FFFF801FF00FFC00007C00007FFF803FF00FFC000
+ 07C00007FFF003FF00FFC00007800003FFE00F800000C00007800003F0001F80
+ 0000C00007800003E0001F800000C0000780000380007F800000C00007800003
+ 8000FF800000C000078000038001FF800000C000078000030001FF800000C000
+ 078000030001FF800000C000078000030001FF800000C0000780000300001FFF
+ 00FFC0000780000300001FFF00FFC0000780000300001FFF00FFC00007800003
+ 8003FFFF00FFC000078000038007FFFF00FFC00007C06C07C007FFFF00FFC000
+ 07F0C60FF03FFFFF00FFFFFFFFFFFFFFFFFFFFC0000FFFFFFFFFFFFFFFFFFFE0
+ 7FFFFFFFFFFFFFFFFFFFFF803FFF800003F0001FFFFFFF801FFFE0000FFC003F
+ FFFFFF860FFFE0000FFC003F8007F98F07FFE0000FFF00FF8007F18707FFE000
+ 0F0000008007F18207FFE0000F000000801FE1C007FFE0000F000000803FC3E0
+ 07FFE0000F000000801F03F003FFE0000F000000800003F8001FE0000F000000
+ 800003FC000FE0000F000000800007FFC007F0001F00000080000FFFE003F8FE
+ 3F00000080000FFFE001F8FE3F00000080001FFFE061F8FE3F000000FC003FFF
+ F0F0F87C3F000000FE00FFFFF070F87C3F000000FF01FFFFF820F8383F000000
+ FFFFFFFFFC01FC007F000000FFFFFFFFFE03FE00FF000000FFFFFFFFFF03FF01
+ FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00003F0
+ 3E0FE00003E00003FC001FF07F07FC001FFC001FF0000FF07F07F0000FF0000F
+ F00007F03E07F00007F00007E00003F03C27E00003E00003C00003F01847C000
+ 03C00003C00003F00807C00003C00003800001F0000F800001800001800001F8
+ 001F800001800001800001FE003F800001800001800001FF80FF800001800001
+ 800001FF80FF800001800001800001FF00FF800001800001800001FE087F8000
+ 01800001800001FE183F800001800001C00003FE183FC00003C00003E00003FC
+ 3E1FE00003E00003F00007F87F1FF00007F00007F00007F07F0FF00007F00007
+ FC001FF1FF8FFC001FFC001FFE003FF1FFCFFE003FFE003FFF00FFF3FFEFFF00
+ FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFF8007FFE00003FFFFFFFFFFFF83FFFFFC001F800000800001C1FFFFF0000F
+ 800000800003E0FFFFF00007900081800003F03E7FE00003900081800003F03C
+ 7FC00003900081800003F0187FC00003900081800003FC007F80000190008180
+ 0003FE007F800001900081800003FE007F8000019000FF800003FF803F800001
+ 9000FF800003FF001F8000019000FF800003FE001F8000019000FF800003FC00
+ 078000019FC0FF800003FC00038000019FC0FF800003FC0000C000039FC0FF80
+ 0003FFF800E000039FC0FF800003FFF801F000079FC0FF800003FFFC03F00007
+ 9FC0FFFFFFFFFFFF07FC001F9FC0FFFFFFFFFFFF0FFE003F9FFFFFFFFFFFFFFF
+ 1FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFF03FFFFFE00300000080007FC01FFFFFFF0180000183FFFF800FFFFFFF01
+ 80000183FFFF8207FFFFFE0180000181FFFF8F87FFFFF801800001807FFF8FC7
+ FFFFF803800001C03FFF8FC7FFFFF003800001F00FFF8F07FFFFE00F800001F0
+ 00FF8207FFF0001F800001F8003F8003FFE0001F800001FE001FE000FF80007F
+ 800001FE0007F000FF8000FF800001FF0003FFC07F8001FF800001FF0003FFF0
+ 1F0001FF800001FF0003FFF81F0001FF800001FF0203FFF80F0001FF800001FF
+ 8703FFFE030001FF800001FF8707FFFF030001FF803FFFFFC20FFFFF010001FF
+ 807FFFFFE01FFFFF008003FF80FFFFFFE03FFFFF008007FFFFFFFFFFF07FFFFF
+ 00C007FFFFFFFFFFFFFFFFFFC7F03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFF800003800001FFF1FFC00003E00007CC0033FFE1FF800003E00007CC0033
+ FFE1FF800003E00007C00003FFC1FF800003E00007C00003C00003800003E000
+ 07CC0033800003800003E00007CC0033800001800003E00007C0000380000180
+ 0003E00007C00003800001800003E00007CC0033800001800003E00007C00003
+ 800001800003E00007C00003800001800003E00007C00003800001800003E000
+ 07CC0033800001800003E00007C00003800001800003E00007C0000380000180
+ 0003E00007CC0033800001800003E00007CC0033800001800003E00007C00003
+ 800001800003E00007C00003800001C00003E0000FCC0033800003E00007E000
+ 1FCC0033FFFFFFFFFFFFE0003FC00003FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF
+ FFFFFFFFFFFE003F000000000000C1F0FFF0000F000001000001C0007FF00007
+ 800001000001C000FFE00003800001000001E3F8FFC00003800001000001FFFC
+ 7F800001800001000001FFFC7F800001C0000300000180003F800000E0000700
+ 000180003F800000F0000F00000080003F800000FF00FF00000080001F800000
+ FF81FF00000080001F800000FF00FF00000080001F800000FF00FF0000008000
+ 1F800000FE00FF00000180000F800000FE00FF00000180000F800001FE00FF00
+ 0001C00007C00003FE00FF000001FFE007C00003FE00FF000001FFFFC1E00003
+ FF00FF000001FFFFE1F0000FFF00FF000001FFFFFFF8001FFF81FF000001FFFF
+ FFFE003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000001FFFFFF00000000
+ 0000000041FE000F800001800001800041FC0007800000800001800041FA000F
+ 800000800001800041F00FFF800000800001800041F007FF8000008000018000
+ 41E003FF8000008000018000418003FF8000008000018000418001FF80000080
+ 00018000410001FF80000080000180004101807F80000080000180004103C07F
+ 80000080000080006387E07F80000080000080007F87F03F8000008000008000
+ 7FFFF81F80000180000080007FFFFC0F80000180000080007FFFFE0FC0000380
+ 000080007FFFFF07E0000780000080007FFFFF87F0000F800001803FFFFFFFC1
+ F8001F800001803FFFFFFFE1FC003F801801803FFFFFFFF1FE007F803E01803F
+ FFFFFFF8FFFFFFC1FFC1807FFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFF00000180
+ 0001FFFFFF800001000001E00007FFFFFFE00007800001E00007FFFFFFE00007
+ 800001E00007000001E00007800001E00007000001F0000F800001E000078000
+ 07F0000F800001E00007800003F0000F800001E00007800003F0000F800001E0
+ 0007800001F0000F800001E00007800001E00007800001E00007800001E00007
+ 800001E00007800001E00007800001E00007800000E00007800001E000078000
+ 00E00007800001E00007800000E00007800001E00007800007F0000F800001E0
+ 0007800007F8001F800001E00007800007FC003F800001E0000780000FFE007F
+ 800001E00007803FFFFF007F800001E00007FFFFFFFF807F800001FF81FFFFFF
+ FFFFC07FFFFFFFFF81FFFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFF
+ FFFFFFFFFF000000FF87FFFC007FE00007800001FF87FFF8003FC00007800001
+ FF83FFF0001FE00007800001FF81FFE0000FE00007800001FF81FFC00007E000
+ 07800001FF81FF800003E00007800001FF81FF800003E00007800001FF81FF80
+ 0003E00007800001FF81FF800003F0000F800001FF00FF800003F8001F800001
+ FE007F800003FE00FF800001FE003F800003FF00FF800001F8001F800003FE00
+ FF800001F0000F800003FE007F800001F00007800003FE007F800001C0000380
+ 0003FE007F800001800001C00007FE007F800001800001E0000FFE007F800001
+ 800001F0001FFE00FF800001800001F8003FFE00FF800001800001FC007FFF00
+ FF800001FFFFFFFFFFFFFFFFFFFCFF3FFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFF
+ FFFFFE00FFFFC7FFFFF8FFFF3FFFFE00FFFF81FFFFF8FFFE3FFFFE00FFFF00FF
+ FFF87FFE3FFFFE00FFFE00FFFFF81FF83FFFFE00FFFC003FFFF81FF03FFFFE00
+ FFF8001F80000FF00001FE00FFF0001F800003C00001FE00FFE0000780000380
+ 0001FE00FFE00003800001800001FE00FFE00007800001800001FE00FFFE00FF
+ 800001800001FE00FFFE00FF800003800001FE00FFFE00FF800007E00001E000
+ 03FE00FF80000FF00001E00007FE00FFFFF81FF03FFFF0000FFE00FFFFF83FFC
+ 3FFFF8001FFE00FFFFF87FFE3FFFFC003FFE00FFFFF8FFFE3FFFFE007FFE00FF
+ FFFFFFFFFFFFFF00FFFE00FFFFFFFFFFFFFFFF81FFFE00FFFFFFFFFFFFFFFFC3
+ FFFE00FFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFC003FFFFFFFFC007FFC007FFC003FE00003F8003FF8003FF0001FC00003
+ F0001FF0001FF0000F800003E0000FE0000F800003800003C00007C000078000
+ 0380000380000380000380000380000380000380000380000380000380000380
+ 0003800003800003800003800003800003800003800003800003800003800003
+ 800003800003800003800003800003800003800003800003800003800003C000
+ 03800003800003800003E00007800003800003800003F0001F80000380000380
+ 0003F0001F800003C00007C00007F0001F800003E0000FE0000FF0001F800003
+ F0001FF0001FFC003F800003F8003FF8003FFC003F800003FC007FFC007FFC00
+ 3F800003FFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFFFFFFFFFFC001FF0
+ 000FE00003FFFFFFFC001FFF83FFFC001FC1FFFFFC001FFF00FFF0000FC0FFFF
+ FC001FFE007FF00007E03FFFFC001FFC003FE00003F00FFFFC001FF8003FC000
+ 03F007FFFC001FF0000FC00003F007FFFC001FE0000F800001F001FFFC001FC0
+ 0007800001F800FFFC001F800001800001F800FFFC003F000001800001FE003F
+ 000001000001800001FE001F000001FC003F800001FF001F800003FC003F8000
+ 01FFC007C00007FC003F800001FFC003E0000FFC003FC00003FFE003F0001FFC
+ 003FE00003FFF801F8003FFC003FF00007FFF801FC007FFC003FF00007FFFC01
+ FE00FFFC003FFC001FFFFF01FF01FFFC003FFE003FFFFF83FF83FFFC003FFF00
+ FFFFFFC3FFC7FFFC003FFFFFFFFFFFFFFFFFFFFFFFFFF0000FE0001FF8000F00
+ 0000F0000FE0001FFE003F800001FFF1FFFF8FFF000000800005FFF0FFFF0FFF
+ 000000800001FFF07FFE0FFF80000180000100103FFC08008000018000010000
+ 0FF00000800001800001000007E00000800001800001000003C0000080000180
+ 0001000003C00000800001800001000000000000800001800001000000000000
+ 8000018000010000000000008000018000010000000000008000018000010000
+ 01800000800001800001000003C00000E40007800001000007E00000FC003F80
+ 000100000FF00000FC003F800001FFF01FF80FFFFC003F800001FFF03FFC0FFF
+ FC003F800001FFF07FFE0FFFFC003F800001FFF0FFFF0FFFFC003F800001FFF1
+ FFFF8FFFFFFFFFFFFFFFFFF7FFFFEFFFF8003FFFFFFF88007FFFFFFFFE003FE0
+ 0001800000000000FE00FFC00001FE00FF000000FE00FFF00003FE00FFF0000F
+ FF01FFF00003FE00FFF0000FFF01FFF00003FE00FFF0000F000000F00003FE00
+ FFF00007000000F00003FE00FFF00007000000F00003000001F00007000000F0
+ 0003000001F00007000000F00003000001F00003000000F00003000001E00003
+ 000000F00003000001E00003000000F00001000001E00003000000F000010000
+ 01E00001000000F00001000001800001000000F00003000001800001000000F0
+ 000FFE00FF800001000000F0000FFE00FF800001000000F0001FFE00FF800001
+ 000000F0007FFE00FF800000000000F0007FFE00FF800001000000F000FFFE00
+ FF800001000000F003FFFE00FFE0000300000000000000000000000000000000
+ 000000000000}
+ end
+ object Timer_link: TTimer
+ Interval = 15000
+ OnTimer = Timer_linkTimer
+ Left = 248
+ Top = 92
+ end
+end
diff --git a/T03贸易布匹检验/U_DataLink.pas b/T03贸易布匹检验/U_DataLink.pas
new file mode 100644
index 0000000..25c442b
--- /dev/null
+++ b/T03贸易布匹检验/U_DataLink.pas
@@ -0,0 +1,113 @@
+unit U_DataLink;
+
+interface
+
+uses
+ SysUtils, Classes, DB, ADODB, ImgList, Controls, cxStyles, cxLookAndFeels,
+ Windows, Messages, forms, OleCtnrs, DateUtils, ExtCtrls, SyncObjs, cxClasses,
+ System.ImageList,U_BaseDataLink,
+ dxCore, cxLocalization, dxLayoutLookAndFeels, cxImageList, cxGraphics, cxEdit,
+ cxContainer, dxSkinsForm, dxSkinsCore;
+
+type
+ TMyThread = class(TThread)
+ protected
+ procedure Execute; override;
+ end;
+
+var
+ DConString: string; {ȫַ}
+ server, dtbase, user, pswd: string; {ݿӲ}
+ DCurHandle: hwnd; //ǰ
+ DName: string; //#û#//
+ DCode: string; //#û#//
+ Ddatabase: string; //#ݿ#//
+ DTitCaption: string; //##//
+ PicSvr: string;
+ fDllFileName:string;
+ DParameters1, DParameters2, DParameters3, DParameters4, DParameters5: string; // ⲿ
+ DParameters6, DParameters7, DParameters8, DParameters9, DParameters10: string; //ⲿ
+ OldDllApp: Tapplication; //ԭо
+ NewDllApp: Tapplication; //ǰ
+ MainApplication: Tapplication;
+ DFormCode: integer; //ǰں
+ IsDelphiLanguage: integer;
+ DServerDate: TdateTime; //ʱ
+ DCompany: string; //˾
+ IpCall: Integer;
+ IpWLDZStr: string;
+ UserDataFlag: string;
+
+type
+ TDataLink_TradeInsp = class(TBaseDataLink)
+ AdoDataLink: TADOQuery;
+ ADOLink: TADOConnection;
+ ThreeImgList: TImageList;
+ Timer_link: TTimer;
+ procedure DataModuleDestroy(Sender: TObject);
+ procedure Timer_linkTimer(Sender: TObject);
+ procedure DataModuleCreate(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+ TMakebar = procedure(ucData: pchar; nDataLen: integer; nErrLevel: integer; nMask: integer; nBarEdition: integer; szBmpFileName: pchar; nScale: integer); stdcall;
+
+ TMixtext = procedure(szSrcBmpFileName: PChar; szDstBmpFileName: PChar; sztext: PChar; fontsize, txtheight, hmargin, vmargin, txtcntoneline: integer); stdcall;
+
+var
+ DataLink_TradeInsp: TDataLink_TradeInsp;
+ CriticalSection: TCriticalSection; {ٽ}
+
+implementation
+{$R *.dfm}
+
+procedure TMyThread.Execute;
+begin
+ FreeOnTerminate := True;
+ CriticalSection.Enter;
+ try
+ with DataLink_TradeInsp.AdoDataLink do
+ begin
+ close;
+ sql.Clear;
+ sql.Add('select getdate()');
+ open;
+ end;
+ except
+ try
+ with DataLink_TradeInsp.ADOLink do
+ begin
+ Connected := false;
+ ConnectionString := DConString;
+ LoginPrompt := false;
+ Connected := true;
+ end;
+ except
+
+ end;
+ end;
+ CriticalSection.Leave;
+end;
+
+procedure TDataLink_TradeInsp.DataModuleDestroy(Sender: TObject);
+begin
+ CriticalSection.Free;
+ DataLink_TradeInsp := nil;
+end;
+
+procedure TDataLink_TradeInsp.Timer_linkTimer(Sender: TObject);
+begin
+ TMyThread.Create(False);
+end;
+
+procedure TDataLink_TradeInsp.DataModuleCreate(Sender: TObject);
+begin
+ inherited ;
+ CriticalSection := TCriticalSection.Create;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_DeviceJkDll.pas b/T03贸易布匹检验/U_DeviceJkDll.pas
new file mode 100644
index 0000000..af7f3dc
--- /dev/null
+++ b/T03贸易布匹检验/U_DeviceJkDll.pas
@@ -0,0 +1,100 @@
+unit U_DeviceJkDll;
+
+interface
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
+ System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
+ cxLookAndFeelPainters, cxClasses, dxLayoutContainer,
+ dxLayoutControl, dxLayoutcxEditAdapters, cxContainer, cxEdit, Vcl.StdCtrls,
+ cxTextEdit, Vcl.ExtCtrls, dxLayoutControlAdapters, U_BaseList, Data.DB,
+ Data.Win.ADODB, Vcl.Buttons, Vcl.ComCtrls, Vcl.ToolWin, cxImage, cxDBEdit,
+ cxStyles, cxCustomData, cxData, cxDataStorage, cxNavigator,
+ dxDateRanges, dxScrollbarAnnotations, cxDBData, dxBarBuiltInMenu, cxPC,
+ cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
+ cxGridCustomView, cxGrid, cxMemo, cxRichEdit, U_frameBads,
+ Datasnap.DBClient, RM_Common, RM_Class, RM_GridReport,
+ cxCheckBox, cxMaskEdit, cxDropDownEdit, Vcl.Menus, cxButtonEdit, RM_Dataset,
+ cxGeometry, dxFramedControl, dxPanel, U_KeyBoard, cxGroupBox,
+ cxGridCustomPopupMenu, cxGridPopupMenu, MovePanel;
+
+ procedure OpenCom(mHandle:Thandle;DllName: string;var fIsCommopen:boolean);
+ procedure CloseCom(DllName: string);
+implementation
+
+
+
+procedure OpenCom(mHandle:Thandle;DllName: string;var fIsCommopen:boolean);
+type
+ TMyFunc = function(fhandle: hwnd; sCommName: PAnsiChar; IntTime: Integer;
+ IsMessage: Integer): hwnd; stdcall;
+var
+ Tf: TMyFunc;
+ Tp: TFarProc;
+ Th: Thandle;
+ newh: hwnd;
+begin
+ Th := LoadLibrary(pchar(trim(DllName)));
+ if Th > 0 then
+ begin
+ try
+ Tp := GetProcAddress(Th, 'CommOpen');
+ if Tp <> nil then
+ begin
+ Tf := TMyFunc(Tp);
+ newh := Tf(mHandle, 'Comm1', 500, 1);
+ if newh < 1 then
+ begin
+ Application.MessageBox(pchar('ʧܣ'), 'ʾ');
+ end
+ else
+ fIsCommopen := true;
+ end
+ else
+ begin
+ fIsCommopen := false;
+ end;
+ finally
+ // FreeLibrary(Th);
+ end;
+ end
+ else
+ begin
+ fIsCommopen := false;
+ Application.MessageBox(pchar('Ҳ ' + trim(DllName) + ' ļ'), 'ʾ');
+ end;
+end;
+
+procedure CloseCom(DllName: string);
+type
+ TMyFunc = function(sCommName: PAnsiChar): hwnd; stdcall;
+var
+ Tf1: TMyFunc;
+ Tp1: TFarProc;
+ Th1: Thandle;
+ newh1: hwnd;
+begin
+ Th1 := LoadLibrary(pchar(trim(DllName)));
+ if Th1 > 0 then
+ begin
+ try
+ Tp1 := GetProcAddress(Th1, 'CommClose');
+ if Tp1 <> nil then
+ begin
+ Tf1 := TMyFunc(Tp1);
+ newh1 := Tf1('Comm1');
+ end
+ else
+ begin
+
+ end;
+ finally
+ // FreeLibrary(Th1);
+ end;
+ end
+ else
+ begin
+ Application.MessageBox(pchar('Ҳ ' + trim(DllName) + ' ļ'), 'ʾ');
+ end;
+end;
+end.
diff --git a/T03贸易布匹检验/U_DeviceJkTest.dfm b/T03贸易布匹检验/U_DeviceJkTest.dfm
new file mode 100644
index 0000000..455e5f6
--- /dev/null
+++ b/T03贸易布匹检验/U_DeviceJkTest.dfm
@@ -0,0 +1,255 @@
+inherited frmDeviceJkTest: TfrmDeviceJkTest
+ Caption = #27979#35797#36890#35759#25509#21475
+ ClientHeight = 449
+ ClientWidth = 831
+ Color = clBtnFace
+ FormStyle = fsMDIChild
+ Visible = True
+ ExplicitWidth = 847
+ ExplicitHeight = 488
+ PixelsPerInch = 96
+ TextHeight = 17
+ object SpeedButton1: TSpeedButton [0]
+ Left = 296
+ Top = 240
+ Width = 23
+ Height = 22
+ end
+ object cxGroupBox1: TcxGroupBox [1]
+ Left = 0
+ Top = 33
+ Align = alTop
+ Caption = #25509#25910#25968#25454
+ TabOrder = 4
+ Height = 87
+ Width = 831
+ object InputLen: TcxTextEdit
+ Tag = 999
+ Left = 280
+ Top = 23
+ AutoSize = False
+ Properties.ReadOnly = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 0
+ TextHint = #26174#31034#25509#25910#25968#25454
+ Height = 38
+ Width = 193
+ end
+ object cxButton1: TcxButton
+ Left = 528
+ Top = 23
+ Width = 89
+ Height = 42
+ Caption = #24320#22987#27979#35797
+ TabOrder = 1
+ OnClick = cxButton1Click
+ end
+ object cxButton2: TcxButton
+ Left = 639
+ Top = 23
+ Width = 89
+ Height = 42
+ Caption = #20572#27490#27979#35797
+ TabOrder = 2
+ OnClick = cxButton2Click
+ end
+ object fileType: TcxComboBox
+ Left = 3
+ Top = 25
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #30721#34920
+ #30005#23376#31216)
+ Properties.OnChange = cxComboBox1PropertiesChange
+ TabOrder = 3
+ Width = 87
+ end
+ end
+ object cxGrid1: TcxGrid [2]
+ Left = -8
+ Top = 144
+ Width = 793
+ Height = 207
+ TabOrder = 5
+ LookAndFeel.NativeStyle = False
+ LookAndFeel.SkinName = 'WXI'
+ object tv1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <>
+ DataController.Summary.SummaryGroups = <>
+ OptionsData.Deleting = False
+ OptionsData.Editing = False
+ OptionsData.Inserting = False
+ OptionsSelection.CellSelect = False
+ OptionsView.GroupByBox = False
+ OptionsView.Indicator = True
+ object tv1FtFileName: TcxGridDBColumn
+ Caption = #25991#20214#21517#31216
+ DataBinding.FieldName = 'FileName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 123
+ end
+ object tv1FileType: TcxGridDBColumn
+ Caption = #25991#20214#31867#22411
+ DataBinding.FieldName = 'FileType'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #19968#33324
+ #20844#29992)
+ Properties.ReadOnly = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 77
+ end
+ object tv1factory: TcxGridDBColumn
+ Caption = #29983#20135#21378#23478
+ DataBinding.FieldName = 'factory'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 100
+ end
+ object tv1remark: TcxGridDBColumn
+ Caption = #22791#27880
+ DataBinding.FieldName = 'remark'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 115
+ end
+ object tv1fileCreatedate: TcxGridDBColumn
+ Caption = #21019#24314#26085#26399
+ DataBinding.FieldName = 'fileCreatedate'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 105
+ end
+ object tv1FileEditDate: TcxGridDBColumn
+ Caption = #20462#25913#26085#26399
+ DataBinding.FieldName = 'FileEditDate'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 115
+ end
+ object tv1fillTime: TcxGridDBColumn
+ Caption = #19978#20256#26085#26399
+ DataBinding.FieldName = 'fillTime'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 91
+ end
+ object tv1FileSize: TcxGridDBColumn
+ Caption = #25991#20214#22823#23567
+ DataBinding.FieldName = 'FileSize'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 69
+ end
+ end
+ object cxGrid1Level1: TcxGridLevel
+ GridView = tv1
+ end
+ end
+ object ToolBar1: TToolBar [3]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 831
+ Height = 33
+ ButtonHeight = 30
+ ButtonWidth = 96
+ Caption = 'ToolBar1'
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 2
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object ToolButton1: TToolButton
+ Left = 63
+ Top = 0
+ AutoSize = True
+ Caption = #25171#24320'ini'#25991#20214
+ ImageIndex = 9
+ OnClick = ToolButton1Click
+ end
+ object ToolButton2: TToolButton
+ Left = 163
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ Visible = False
+ end
+ object TBClose: TToolButton
+ Left = 250
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object edt_dllName: TcxTextEdit [4]
+ Left = 96
+ Top = 69
+ AutoSize = False
+ Properties.ReadOnly = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 3
+ Height = 30
+ Width = 162
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 577
+ Top = 241
+ end
+ object DataSource1: TDataSource
+ DataSet = cds_list
+ Left = 136
+ Top = 192
+ end
+ object ADOQueryList: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 208
+ Top = 200
+ end
+ object cds_list: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 296
+ Top = 224
+ end
+ object ADOQueryTmp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 432
+ Top = 120
+ end
+end
diff --git a/T03贸易布匹检验/U_DeviceJkTest.pas b/T03贸易布匹检验/U_DeviceJkTest.pas
new file mode 100644
index 0000000..5c4f33d
--- /dev/null
+++ b/T03贸易布匹检验/U_DeviceJkTest.pas
@@ -0,0 +1,377 @@
+unit U_DeviceJkTest;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
+ cxLookAndFeelPainters, cxContainer, cxEdit, Vcl.Menus,
+ Vcl.StdCtrls, cxButtons, cxTextEdit, cxGroupBox, cxStyles, cxCustomData,
+ cxFilter, cxData, cxDataStorage, cxNavigator, dxDateRanges, ShellAPI,
+ dxScrollbarAnnotations, Data.DB, cxDBData, Data.Win.ADODB, cxGridLevel,
+ cxClasses, cxGridCustomView, cxGridCustomTableView, cxGridTableView,
+ cxGridDBTableView, cxGrid, cxDropDownEdit, Vcl.ComCtrls, Vcl.ToolWin,
+ Datasnap.DBClient, cxMaskEdit, Vcl.Buttons, U_BaseList, cxProgressBar,
+ dxSkinsCore, Vcl.ExtCtrls;
+
+type
+ TfrmDeviceJkTest = class(TfrmBaseList)
+ cxGroupBox1: TcxGroupBox;
+ InputLen: TcxTextEdit;
+ cxButton1: TcxButton;
+ DataSource1: TDataSource;
+ ADOQueryList: TADOQuery;
+ cxGrid1: TcxGrid;
+ tv1: TcxGridDBTableView;
+ tv1FtFileName: TcxGridDBColumn;
+ tv1FileType: TcxGridDBColumn;
+ tv1factory: TcxGridDBColumn;
+ tv1remark: TcxGridDBColumn;
+ tv1fileCreatedate: TcxGridDBColumn;
+ tv1FileEditDate: TcxGridDBColumn;
+ tv1fillTime: TcxGridDBColumn;
+ tv1FileSize: TcxGridDBColumn;
+ cxGrid1Level1: TcxGridLevel;
+ ToolBar1: TToolBar;
+ TBRafresh: TToolButton;
+ ToolButton2: TToolButton;
+ TBClose: TToolButton;
+ edt_dllName: TcxTextEdit;
+ cds_list: TClientDataSet;
+ cxButton2: TcxButton;
+ ADOQueryTmp: TADOQuery;
+ fileType: TcxComboBox;
+ ToolButton1: TToolButton;
+ SpeedButton1: TSpeedButton;
+ procedure FormShow(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure TBCloseClick(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormDestroy(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure cxButton1Click(Sender: TObject);
+ procedure cxComboBox1PropertiesChange(Sender: TObject);
+ procedure cxButton2Click(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ private
+ fIsCommopen: Boolean;
+ fDllName:string;
+ procedure InitGrid();
+ procedure testCom();
+ function ExportFtErpFile(recid,mFileName:string;ADORead:TADOQuery):boolean;
+ procedure On1201(var Message: Tmessage); message 1201; // ӳ
+ procedure On1301(var Message: Tmessage); message 1301; //
+ public
+ fFormID:Integer;
+
+ end;
+
+var
+ frmDeviceJkTest: TfrmDeviceJkTest;
+
+implementation
+uses
+ U_DataLink,U_globalVar,U_DeviceJkDll,U_RTFun;
+
+{$R *.dfm}
+
+procedure TfrmDeviceJkTest.cxButton1Click(Sender: TObject);
+begin
+ if cds_list.IsEmpty then
+ begin
+ exit;
+ end;
+
+
+ testCom();
+end;
+
+procedure TfrmDeviceJkTest.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ if fIsCommopen then
+ begin
+ CloseCom(fDllName);
+ end;
+ Action:=caFree;
+end;
+
+procedure TfrmDeviceJkTest.FormCreate(Sender: TObject);
+begin
+ inherited;
+ cxGrid1.Align:=alClient;
+end;
+
+procedure TfrmDeviceJkTest.FormDestroy(Sender: TObject);
+begin
+ inherited;
+ frmDeviceJkTest:=nil;
+end;
+
+procedure TfrmDeviceJkTest.FormShow(Sender: TObject);
+begin
+ // inherited;
+ InitGrid();
+end;
+
+procedure TfrmDeviceJkTest.InitGrid();
+begin
+ try
+ ADOQueryList.DisableControls ;
+ with ADOQueryList do
+ begin
+ close;
+ sql.clear;
+ sql.Add('select recid, FileName,FileType,FileEditDate,fileCreateDate,FileSize,filltime,');
+ sql.Add('FilePath,remark,factory');
+ sql.Add('from RT_deviceDllFile');
+ if Trim(fileType.Text)<>'' then
+ sql.Add('where filetype='+QuotedStr(Trim(fileType.Text)));
+ sql.Add('order by fillTime desc');
+ Open;
+
+ SCreateCDS(ADOQueryList, cds_list);
+ SInitCDSData(ADOQueryList, cds_list);
+ end;
+ finally
+ ADOQueryList.EnableControls ;
+ tv1.ApplyBestFit() ;
+ end;
+end;
+
+procedure TfrmDeviceJkTest.TBCloseClick(Sender: TObject);
+begin
+ inherited;
+ close;
+end;
+
+procedure TfrmDeviceJkTest.TBRafreshClick(Sender: TObject);
+begin
+ InitGrid();
+end;
+
+procedure TfrmDeviceJkTest.testCom();
+var
+ iniFileName:string;
+ filePath:string;
+begin
+ try
+ // while True do
+ // begin
+ fDllName:=Trim(cds_list.FieldByName('FileName').AsString) ;
+ edt_dllName.Text:=fDllName ;
+ if Trim(cds_list.FieldByName('FileType').AsString)<>'' then
+ ExportFtErpFile(Trim(cds_list.FieldByName('recid').AsString),fDllName,ADOQueryTmp);
+ iniFileName:= StringReplace(fDllName,'.dll','.ini',[rfIgnoreCase]);
+ filePath:= ExtractFilePath(Paramstr(0))+iniFileName ;
+ if not FileExists(filePath) then
+ begin
+ ExportFtErpFile('',iniFileName,ADOQueryTmp);
+ end;
+
+
+
+ if not FileExists(ExtractFilePath(Paramstr(0))+iniFileName) then
+ begin
+ application.MessageBox(PChar(iniFileName+'ļ!'),'Ϣ',0);
+ Exit;
+ end;
+ OpenCom(self.handle,fDllName,fIsCommopen);
+ // Close;
+ // end;
+ finally
+
+ end;
+end;
+
+procedure TfrmDeviceJkTest.ToolButton1Click(Sender: TObject);
+var
+ iniFileName:String;
+ filePath:string;
+begin
+ if cds_list.IsEmpty then exit;
+ iniFileName :=Trim( cds_list.FieldByName('fileName').AsString );
+ iniFileName:= StringReplace(iniFileName,'.dll','.ini',[rfIgnoreCase]);
+ filePath:= ExtractFilePath(Paramstr(0))+iniFileName ;
+ if not FileExists(filePath) then
+ begin
+ ExportFtErpFile('',iniFileName,ADOQueryTmp);
+ end;
+
+ if not FileExists(filePath) then
+ begin
+ application.MessageBox(PChar(iniFileName+'ļ!'),'Ϣ',0);
+ Exit;
+ end;
+ //
+ ShellExecute(0, 'open', PChar('notepad.exe'), PChar(filePath), nil, SW_SHOWNORMAL);
+end;
+
+///////////////////////////////////////////////////////
+ //ܣӷļ
+///////////////////////////////////////////////////////
+procedure TfrmDeviceJkTest.cxButton2Click(Sender: TObject);
+begin
+ if fDllName<>'' then
+ CloseCom(fDllName);
+end;
+
+procedure TfrmDeviceJkTest.cxComboBox1PropertiesChange(Sender: TObject);
+begin
+ TBRafresh.Click;
+end;
+
+function TfrmDeviceJkTest.ExportFtErpFile(recid,mFileName:string;ADORead:TADOQuery):boolean;
+var
+ Stream : TMemoryStream;
+ ff:TADOBlobstream;
+ mfileSize:integer;
+ mCreationTime:TdateTime;
+ mWriteTime:TdateTime;
+ IsFileHas:boolean;
+ mChildPath:string;
+ mFilePath:string;
+begin
+ try
+ result:=false;
+ mChildPath:=''; //test\
+ ///////////////////////////////////////////////
+ //Ʒ
+ mFilePath:= ExtractFilePath(Paramstr(0))+mChildPath;
+ IsFileHas:= FileExists(mFilePath+fDllName);
+ if IsFileHas then
+ begin
+ //////////////////////////
+ //ȡļϢ
+ GetFileInfo(mFilePath+mFileName,mfileSize,mCreationTime,mWriteTime);
+ //eleteFile(mFilePath+fDllName);
+ end;
+ //////////////////////////////////////////
+ //ļ
+ if IsFileHas then
+ begin
+ with ADORead do
+ begin
+ close;
+ sql.Clear ;
+ sql.Add('select count(FileName) as cnt ');
+ sql.Add('from RT_deviceDllFile');
+ if recid<>'' then
+ sql.Add('where recid='+quotedStr(recid))
+ else
+ sql.Add('where FileName='+quotedStr(mFileName));
+ sql.Add(' and DATEDIFF(minute,'+ quotedStr(formatDateTime('yyyy-MM-dd hh:mm',mWriteTime))+',fileEditDate)>0');
+ Open;
+
+
+ //Ƿµļ
+ if fieldByName('cnt').AsInteger>0 then
+ begin
+ close;
+ sql.Clear ;
+ sql.Add('select * ');
+ sql.Add('from RT_deviceDllFile');
+ if recid<>'' then
+ sql.Add('where recid='+quotedStr(recid))
+ else
+ sql.Add('where FileName='+quotedStr(mFileName));
+
+ Open;
+
+ ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead);
+ end
+ else
+ begin
+ exit;
+ end;
+
+ if trim(fieldByName('FilePath').AsString)<>'' then
+ mChildPath:=trim(fieldByName('FilePath').AsString)+'\';
+ end;
+ end
+ //////////////////////////////////////
+ //
+ else
+ begin
+ with ADORead do
+ begin
+ close;
+ sql.Clear ;
+ sql.Add('select * ');
+ sql.Add('from RT_deviceDllFile');
+ if recid<>'' then
+ sql.Add('where recid='+quotedStr(recid))
+ else
+ sql.Add('where FileName='+quotedStr(mFileName));
+ Open;
+
+ if recordCount>0 then
+ begin
+ ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead);
+ end
+ else
+ begin
+ application.MessageBox(pchar('δҵļ'+mfileName+'!'),'ʾϢ',0);
+ exit;
+ end;
+
+ if trim(fieldByName('FilePath').AsString)<>'' then
+ mChildPath:=trim(fieldByName('FilePath').AsString)+'\';
+ end;
+
+ end;
+
+ if ff<>nil then
+ begin
+ try
+ mfileName:=trim(ADORead.fieldByName('FileName').asString);
+ if not DirectoryExists(ExtractFileDir(mFilePath+mfileName)) then
+ ForceDirectories(ExtractFileDir(mFilePath+mfileName));
+ Stream:= TMemoryStream.Create ;
+ ff.SaveToStream(Stream);
+ Stream.SaveToFile(mFilePath+mfileName); //+'\tmpFile\'
+ finally
+ Stream.Free ;
+ ff.free;
+ end;
+ end;
+ UpdateFileTime(mFilePath+mfileName,ADORead.fieldByName('FileCreateDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime);
+ Result:=true;
+ except
+ application.MessageBox(pchar('ȡļ'+mfileName+'ʧ!'),'ʾϢ',0);
+ end;
+end;
+
+
+procedure TfrmDeviceJkTest.On1301(var Message: Tmessage);
+var
+ i1, i2: Integer;
+ unitname: string;
+ fdata: double;
+begin
+ i1 := Message.WParam;
+ i2 := Message.LParam;
+
+ // if trim(cds_list.fieldbyName('filetype').AsString) = '' then
+ // begin
+ InputLen.Text := format('%.2f', [i1 / 100000]);
+
+ //end;
+end;
+
+procedure TfrmDeviceJkTest.On1201(var Message: Tmessage);
+var
+ i1, i2: Integer;
+ unitname: string;
+ fdata: double;
+begin
+ i1 := Message.WParam;
+ i2 := Message.LParam;
+
+// if trim(cds_list.fieldbyName('filetype').AsString) = 'ӳ' then
+// begin
+ InputLen.Text := format('%.2f', [i1 / 100000]);
+// end;
+
+end;
+end.
diff --git a/T03贸易布匹检验/U_DjdDjClList.dfm b/T03贸易布匹检验/U_DjdDjClList.dfm
new file mode 100644
index 0000000..1fdf418
--- /dev/null
+++ b/T03贸易布匹检验/U_DjdDjClList.dfm
@@ -0,0 +1,474 @@
+inherited frmDjdDjClList: TfrmDjdDjClList
+ Caption = #25171#21367#20135#37327#32479#35745#27719#24635
+ ClientHeight = 422
+ ClientWidth = 1061
+ Color = clBtnFace
+ Font.Height = -16
+ FormStyle = fsMDIChild
+ Visible = True
+ ExplicitWidth = 1077
+ ExplicitHeight = 461
+ PixelsPerInch = 96
+ TextHeight = 21
+ object toolbar1: TToolBar [0]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 1061
+ Height = 33
+ ButtonHeight = 30
+ ButtonWidth = 99
+ Caption = 'toolbar1'
+ Color = clBtnFace
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ParentColor = True
+ ShowCaptions = True
+ TabOrder = 3
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object TBFind: TToolButton
+ Left = 71
+ Top = 0
+ AutoSize = True
+ Caption = #36807#28388
+ ImageIndex = 0
+ Visible = False
+ OnClick = TBFindClick
+ end
+ object TBExport: TToolButton
+ Left = 142
+ Top = 0
+ AutoSize = True
+ Caption = #23548#20986
+ ImageIndex = 28
+ OnClick = TBExportClick
+ end
+ object Tbcgs: TToolButton
+ Left = 213
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = TbcgsClick
+ end
+ object TBClose: TToolButton
+ Left = 316
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object cxGrid1: TcxGrid [1]
+ Left = 20
+ Top = 184
+ Width = 1005
+ Height = 230
+ BorderStyle = cxcbsNone
+ TabOrder = 1
+ object TV1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ Column = cxGridDBColumn9
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn11
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn10
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Format = #26816#39564#31995#25968'=#.##'
+ Kind = skAverage
+ end
+ item
+ Format = #25442#31639#31995#25968'=#.##'
+ Kind = skAverage
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn12
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn8
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ OptionsView.IndicatorWidth = 30
+ object cxGridDBColumn3: TcxGridDBColumn
+ Tag = 11
+ Caption = #35746#21333#21495
+ DataBinding.FieldName = 'OrderNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 112
+ end
+ object TV1ConNo: TcxGridDBColumn
+ Caption = #21512#21516#21495
+ DataBinding.FieldName = 'ConNo'
+ DataBinding.IsNullValueType = True
+ end
+ object TV1CustName: TcxGridDBColumn
+ Caption = #23458#25143
+ DataBinding.FieldName = 'CustName'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object cxGridDBColumn4: TcxGridDBColumn
+ Caption = #20135#21697#21517#31216
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 101
+ end
+ object TV1Column1: TcxGridDBColumn
+ Caption = #25171#30721#20154
+ DataBinding.FieldName = 'Filler'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object cxGridDBColumn7: TcxGridDBColumn
+ Caption = #25171#21367#26085#26399
+ DataBinding.FieldName = 'Filltime'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 84
+ end
+ object cxGridDBColumn8: TcxGridDBColumn
+ Caption = #21367#25968
+ DataBinding.FieldName = 'SumPieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 94
+ end
+ object cxGridDBColumn9: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'GrossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 88
+ end
+ object cxGridDBColumn10: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 93
+ end
+ object cxGridDBColumn11: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 91
+ end
+ object cxGridDBColumn12: TcxGridDBColumn
+ Caption = #30721#25968
+ DataBinding.FieldName = 'Yardage'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 99
+ end
+ end
+ object cxGridLevel1: TcxGridLevel
+ GridView = TV1
+ end
+ end
+ object dxLayoutControl_query: TdxLayoutControl [2]
+ Left = 0
+ Top = 33
+ Width = 1061
+ Height = 83
+ Align = alTop
+ BorderWidth = 2
+ TabOrder = 2
+ LayoutLookAndFeel = DataLink_TradeInsp.dxLayoutSkinLookAndFeel1
+ OptionsItem.SizableHorz = True
+ OptionsItem.SizableVert = True
+ object Filler: TcxTextEdit
+ Tag = 2
+ Left = 306
+ Top = 33
+ Hint = 'Filler'
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 4
+ Width = 136
+ end
+ object begdate: TcxDateEdit
+ Left = 88
+ Top = 8
+ ParentFont = True
+ Properties.ImmediatePost = True
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 0
+ Width = 155
+ end
+ object enddate: TcxDateEdit
+ Left = 88
+ Top = 33
+ AutoSize = False
+ ParentFont = True
+ Properties.ImmediatePost = True
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 3
+ Height = 29
+ Width = 153
+ end
+ object C_name: TcxTextEdit
+ Tag = 2
+ Left = 523
+ Top = 33
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 5
+ Width = 160
+ end
+ object orderNo: TcxTextEdit
+ Tag = 2
+ Left = 308
+ Top = 8
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 1
+ Width = 134
+ end
+ object C_color: TcxTextEdit
+ Tag = 2
+ Left = 10000
+ Top = 10000
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 6
+ Visible = False
+ Width = 105
+ end
+ object conNo: TcxTextEdit
+ Tag = 2
+ Left = 523
+ Top = 8
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 2
+ Width = 161
+ end
+ object dxLayoutControl_queryGroup_Root: TdxLayoutGroup
+ AlignHorz = ahParentManaged
+ AlignVert = avParentManaged
+ CaptionOptions.AlignVert = tavCenter
+ CaptionOptions.Text = #26597#35810#32452
+ CaptionOptions.Visible = False
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ Hidden = True
+ ItemIndex = 1
+ Padding.Top = -8
+ Padding.AssignedValues = [lpavBottom, lpavTop]
+ ShowBorder = False
+ UseIndent = False
+ Index = -1
+ end
+ object dxLayoutItem2: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 190
+ AllowRemove = False
+ CaptionOptions.Text = #35746#21333#21495
+ Control = orderNo
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 134
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem_color: TdxLayoutItem
+ SizeOptions.Width = 136
+ CaptionOptions.Text = #39068#33394
+ Control = C_color
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 105
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_pm: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.Width = 232
+ CaptionOptions.Text = #20013#25991#21517#31216
+ Control = C_name
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 160
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem_hth: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 233
+ CaptionOptions.Text = #21512#21516#21495
+ Control = conNo
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 161
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutGroup1: TdxLayoutGroup
+ Parent = dxLayoutControl_queryGroup_Root
+ CaptionOptions.Text = #32452'1'
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutGroup2: TdxLayoutGroup
+ Parent = dxLayoutControl_queryGroup_Root
+ CaptionOptions.Text = #32452'2'
+ Hidden = True
+ ItemIndex = 2
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem_beg: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 227
+ CaptionOptions.Text = #26816#39564#26102#38388
+ Control = begdate
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 155
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem_end: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ AlignVert = avClient
+ SizeOptions.Width = 225
+ CaptionOptions.Text = #33267
+ Control = enddate
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 153
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem1: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.Width = 192
+ CaptionOptions.Text = #25171#30721#20154
+ Control = Filler
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 136
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ end
+ inherited cxProgressBar2: TcxProgressBar
+ Left = 291
+ Top = 136
+ ExplicitLeft = 291
+ ExplicitTop = 136
+ ExplicitHeight = 26
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 265
+ Top = 232
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 185
+ Top = 241
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ CommandTimeout = 60
+ Parameters = <>
+ Left = 584
+ Top = 224
+ end
+ object DataSource1: TDataSource
+ DataSet = ADOQueryMain
+ Left = 632
+ Top = 152
+ end
+ object cxGridPopupMenu1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 552
+ Top = 160
+ end
+end
diff --git a/T03贸易布匹检验/U_DjdDjClList.pas b/T03贸易布匹检验/U_DjdDjClList.pas
new file mode 100644
index 0000000..17494d4
--- /dev/null
+++ b/T03贸易布匹检验/U_DjdDjClList.pas
@@ -0,0 +1,165 @@
+unit U_DjdDjClList;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
+ cxLookAndFeelPainters, cxStyles, cxCustomData,
+ cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, dxDateRanges,
+ dxScrollbarAnnotations, Data.DB, cxDBData, cxGridLevel, cxGridCustomTableView,
+ cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomView, cxGrid,
+ Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.ToolWin,U_BaseList,
+ Data.Win.ADODB, Data.FMTBcd, dxBarBuiltInMenu, cxGridCustomPopupMenu,
+ cxGridPopupMenu, Data.SqlExpr, cxContainer, dxCore, cxDateUtils, cxTextEdit,
+ cxMaskEdit, cxDropDownEdit, cxCalendar, dxLayoutcxEditAdapters,
+ dxLayoutContainer, dxLayoutControl,
+ cxProgressBar;
+
+type
+ TfrmDjdDjClList = class(TFrmBaseList)
+ toolbar1: TToolBar;
+ TBRafresh: TToolButton;
+ TBFind: TToolButton;
+ TBExport: TToolButton;
+ Tbcgs: TToolButton;
+ TBClose: TToolButton;
+ Filler: TcxTextEdit;
+ cxGrid1: TcxGrid;
+ TV1: TcxGridDBTableView;
+ cxGridDBColumn3: TcxGridDBColumn;
+ cxGridDBColumn4: TcxGridDBColumn;
+ TV1Column1: TcxGridDBColumn;
+ cxGridDBColumn7: TcxGridDBColumn;
+ cxGridDBColumn8: TcxGridDBColumn;
+ cxGridDBColumn9: TcxGridDBColumn;
+ cxGridDBColumn10: TcxGridDBColumn;
+ cxGridDBColumn11: TcxGridDBColumn;
+ cxGridDBColumn12: TcxGridDBColumn;
+ cxGridLevel1: TcxGridLevel;
+ ADOQueryMain: TADOQuery;
+ DataSource1: TDataSource;
+ cxGridPopupMenu1: TcxGridPopupMenu;
+ begdate: TcxDateEdit;
+ enddate: TcxDateEdit;
+ TV1ConNo: TcxGridDBColumn;
+ dxLayoutControl_query: TdxLayoutControl;
+ C_name: TcxTextEdit;
+ orderNo: TcxTextEdit;
+ C_color: TcxTextEdit;
+ conNo: TcxTextEdit;
+ dxLayoutControl_queryGroup_Root: TdxLayoutGroup;
+ dxLayoutItem2: TdxLayoutItem;
+ dxLayoutItem_color: TdxLayoutItem;
+ dxLayoutItem_pm: TdxLayoutItem;
+ dxLayoutItem_hth: TdxLayoutItem;
+ dxLayoutGroup1: TdxLayoutGroup;
+ dxLayoutGroup2: TdxLayoutGroup;
+ dxLayoutItem_beg: TdxLayoutItem;
+ dxLayoutItem_end: TdxLayoutItem;
+ dxLayoutItem1: TdxLayoutItem;
+ TV1CustName: TcxGridDBColumn;
+ procedure FormCreate(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure TBExportClick(Sender: TObject);
+ procedure TBCloseClick(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure TBFindClick(Sender: TObject);
+ procedure TbcgsClick(Sender: TObject);
+ private
+ procedure InitGrid();
+ public
+ { Public declarations }
+ end;
+
+var
+ frmDjdDjClList: TfrmDjdDjClList;
+
+implementation
+uses
+ U_RTFun,U_DataLink,U_globalVar,U_FormLayOutDesign;
+{$R *.dfm}
+
+procedure TfrmDjdDjClList.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ Action := caFree;
+end;
+
+procedure TfrmDjdDjClList.FormCreate(Sender: TObject);
+begin
+ inherited ;
+ cxGrid1.Align:=alClient;
+ BegDate.Date:=SGetServerDateTime(ADOQueryBaseTemp);
+ EndDate.Date:=SGetServerDateTime(ADOQueryBaseTemp)
+end;
+
+procedure TfrmDjdDjClList.FormShow(Sender: TObject);
+begin
+ inherited;
+ TBRafresh.Click;
+ ReadCxGrid(Trim(self.Caption) + 'Tv1', Tv1, gDllFileCaption);
+end;
+
+procedure TfrmDjdDjClList.InitGrid();
+begin
+try
+ ADOQueryMain.DisableControls;
+ with ADOQueryMain do
+ begin
+ Close;
+ sql.Clear;
+ Filtered:=False;
+ sql.Add('exec p_select_djcl_list');
+ sql.Add('@begdate='+ quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.Date)));
+ sql.Add(',@enddate='+ quotedstr(FormatDateTime('yyyy-MM-dd', endDate.Date+1)));
+ sql.Add(',@djMan='+ quotedstr(gUserName));
+ sql.Add(',@cltype='+ quotedstr(''));
+ Open;
+ end;
+
+ finally
+ ADOQueryMain.EnableControls;
+ end
+end;
+
+procedure TfrmDjdDjClList.TbcgsClick(Sender: TObject);
+begin
+ inherited;
+ WriteCxGrid(Trim(self.Caption) + 'Tv1', Tv1, gDllFileCaption);
+ if gIsCanDesign then
+ begin
+ saveLayOut(application, dxLayoutControl_query, ADOQueryBaseCmd, PWideChar( fDllFileName + '|' + Self.Name + '|' + dxLayoutControl_query.Name + '.ini'));
+ end;
+end;
+
+procedure TfrmDjdDjClList.TBCloseClick(Sender: TObject);
+begin
+ inherited;
+ close;
+end;
+
+procedure TfrmDjdDjClList.TBExportClick(Sender: TObject);
+begin
+ inherited;
+ if ADOQueryMain.IsEmpty then exit;
+ TcxGridToExcel(self.Caption,cxGrid1);
+end;
+
+procedure TfrmDjdDjClList.TBFindClick(Sender: TObject);
+begin
+ inherited;
+ if ADOQueryMain.Active then
+ begin
+ SDofilter(ADOQueryMain,SLGetFilters(dxLayoutControl_query,1,2));
+ end;
+end;
+
+procedure TfrmDjdDjClList.TBRafreshClick(Sender: TObject);
+begin
+ inherited;
+ InitGrid();
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_GetDllForm.pas b/T03贸易布匹检验/U_GetDllForm.pas
new file mode 100644
index 0000000..5ab6b93
--- /dev/null
+++ b/T03贸易布匹检验/U_GetDllForm.pas
@@ -0,0 +1,308 @@
+unit U_GetDllForm;
+
+interface
+
+uses
+ Windows, Messages, forms, OleCtnrs, DateUtils, SysUtils, ADODB, dxCore,
+ ActiveX, IniFiles;
+
+function GetDllForm(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; export; stdcall;
+
+function ConnData(): Boolean;
+
+function GetsysParam(muserId: pchar; fparam1: pchar): Boolean;
+
+implementation
+
+uses
+ U_DataLink, U_globalVar, U_iniParam, U_TradeMachInsp, U_ProductJYHZList,
+ U_DeviceJkTest, U_TradeClothInspList, U_MachRollMain, U_TradePack,
+ U_DjdDjClList, U_TradeClothTotalCXJYOutList;
+
+ /////////////////////////////////////////////////////////////////
+ // ˵:ȡDllеô //
+ // ˵App>>Ӧó //
+ // FormH>>ôھ //
+ // FormID>>ں; //
+ // Language>>; //
+ // WinStyle>>ͣ //
+/////////////////////////////////////////////////////////////////
+
+function GetDllForm(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd;
+var
+ i: Integer;
+ bFound: Boolean;
+ mnewHandle: hwnd;
+ mstyle: TFormStyle; // 0:Ӵ; 1ͨ
+ mstate: TWindowState;
+ mborderstyle: TFormBorderStyle;
+begin
+ mnewHandle := 0;
+ DName := PChar(GName);
+ DCode := PChar(GCode);
+ DdataBase := DataBase;
+ DTitCaption := Title;
+ DParameters1 := Parameters1;
+ DParameters2 := Parameters2;
+ DParameters3 := Parameters3;
+ DParameters4 := Parameters4;
+ DParameters5 := Parameters5;
+ DParameters6 := Parameters6;
+ DParameters7 := Parameters7;
+ DParameters8 := Parameters8;
+ DParameters9 := Parameters9;
+ DParameters10 := Parameters10;
+
+ gScanBarcodeMaxLen := 0;
+
+ SetLength(fDllFileName, 255);
+ GetModuleFileName(HInstance, PChar(fDllFileName), Length(fDllFileName));
+ fDllFileName := ExtractFileName(PChar(fDllFileName));
+ gDllFileCaption := 'ָʾװ';
+ MainApplication := App;
+ DCurHandle := FormH;
+ IsDelphiLanguage := Language;
+
+ Application := TApplication(App);
+ DCurHandle := 0;
+
+
+ //ֵַ
+ SetLength(server, 255);
+ SetLength(dtbase, 255);
+ SetLength(user, 255);
+ SetLength(pswd, 255);
+
+ if trim(DataBaseStr) = '' then
+ begin
+ server := '101.132.143.144,7781';
+ dtbase := 'gemeiData';
+ user := 'rtsa';
+ pswd := 'rightsoft@5740';
+ DConString := 'Provider=SQLOLEDB.1;Password=' + pswd + ';Persist Security Info=True;User ID=' + user + ';Initial Catalog=' + dtbase + ';Data Source=' + server;
+// DParameters1:='Ȩ';
+ end
+ else
+ begin
+ DConString := DataBaseStr;
+ end;
+
+ if not ConnData() then
+ begin
+ result := 0;
+ exit;
+ end;
+ // application.MessageBox('44','',0);
+ gConString := DConString;
+ if IsINIFile() then
+ ReadINIFile()
+ else
+ WriteINIFile;
+ GetsysParam('', '');
+ // 崰 ״̬
+// if WinStyle = 0 then
+// begin
+ mstyle := fsMDIChild;
+ mstate := wsMaximized;
+ mborderstyle := bsSizeable;
+// end
+// else
+// begin
+// mstyle := fsNormal;
+// mstate := wsNormal;
+// mborderstyle := bsSizeable;
+// end;
+ bFound := False;
+ if FormID <> 10000 then
+ begin
+ for i := 0 to Application.MainForm.MDIChildCount - 1 do
+ begin
+ if Application.MainForm.MDIChildren[i].Caption = Title then
+ begin
+ mnewHandle := Application.MainForm.MDIChildren[i].Handle;
+ Application.MainForm.MDIChildren[i].BringToFront;
+ bFound := True;
+ Result := mnewHandle;
+ exit;
+ end;
+ end;
+ end;
+ /////////////////////
+ //ģ鴰
+ case FormID of
+
+ 2: //
+ begin
+ with TfrmDeviceJkTest.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10)) do //
+ begin
+ fFormID := FormID;
+ FormStyle := mstyle;
+ WindowState := mstate;
+ BorderStyle := mborderstyle;
+ mnewHandle := Handle;
+ end;
+ end;
+
+// 111: //̨
+// begin
+// with TfrmTradeMachInsp.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10)) do //
+// begin
+// fFormID := FormID;
+// // FormStyle := mstyle;
+// WindowState := mstate;
+// BorderStyle := mborderstyle;
+// mnewHandle := Handle;
+// end;
+// end;
+
+ 1: //̨
+ begin
+ with TfrmMachRollMain.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10)) do //
+ begin
+ fFormID := FormID;
+ // FormStyle := mstyle;
+ WindowState := mstate;
+ BorderStyle := mborderstyle;
+ mnewHandle := Handle;
+ end;
+ end;
+
+ 121: //ƥ
+ begin
+ with TfrmTradePack.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10), FormID) do //
+ begin
+ fFormID := FormID;
+ // FormStyle := mstyle;
+ WindowState := mstate;
+ BorderStyle := mborderstyle;
+ mnewHandle := Handle;
+ end;
+ end;
+
+ 211: //Ϣ
+ begin
+ with TfrmTradeClothInspList.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10), FormID) do //
+ begin
+ fFormID := FormID;
+ FormStyle := mstyle;
+ WindowState := mstate;
+ BorderStyle := mborderstyle;
+ mnewHandle := Handle;
+ end;
+ end;
+
+ 221: //ؼϢ
+ begin
+ with TfrmTradeClothTotalCXJYOutList.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10), FormID) do //
+ begin
+ fFormID := FormID;
+ FormStyle := mstyle;
+ WindowState := mstate;
+ BorderStyle := mborderstyle;
+ mnewHandle := Handle;
+ end;
+ end;
+
+ 212: //Ϣ
+ begin
+ with TfrmProductJYHZList.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10), FormID) do //
+ begin
+ fFormID := FormID;
+ // FormStyle := mstyle;
+ WindowState := mstate;
+ BorderStyle := mborderstyle;
+ mnewHandle := Handle;
+ end;
+ end;
+ 213: //ʹ
+ begin
+ with TfrmDjdDjClList.Create(Application.MainForm, Title, trim(Parameters1), trim(Parameters2), trim(Parameters3), trim(Parameters4), trim(Parameters5), trim(Parameters10), FormID) do //
+ begin
+ fFormID := FormID;
+ // FormStyle := mstyle;
+ WindowState := mstate;
+ BorderStyle := mborderstyle;
+ mnewHandle := Handle;
+ end;
+ end;
+
+ 10000:
+ begin
+ for i := 0 to application.MainForm.MDIChildCount - 1 do
+ begin
+ if application.MainForm.MDIChildren[i].Caption = Title then
+ begin
+ application.MainForm.MDIChildren[i].Close;
+ end;
+ end;
+ end;
+ end;
+
+ Result := mnewHandle;
+end;
+
+function GetsysParam(muserId: pchar; fparam1: pchar): Boolean;
+begin
+ result := true;
+ //////////////////////////////
+// shortDateFormat := 'yyyy-MM-dd';
+ //
+ with DataLink_TradeInsp.AdoDataLink do
+ begin
+ close;
+ sql.Clear;
+ sql.Add('select getDate()as dt');
+ open;
+ DServerDate := fieldByName('dt').AsDatetime;
+ end;
+ result := true;
+end;
+
+//===========================================================
+ //ݿӳ
+//===========================================================
+
+function ConnData(): Boolean;
+var
+ IniFile: TIniFile;
+begin
+ try
+ IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'SYSTEMSET.INI');
+ PicSvr := IniFile.ReadString('SERVER', 'ַ', '127.0.0.1');
+ UserDataFlag := IniFile.ReadString('SERVER', 'ַ', '-1');
+ finally
+ IniFile.Free;
+ end;
+ if not Assigned(DataLink_TradeInsp) then
+ DataLink_TradeInsp := TDataLink_TradeInsp.Create(Application);
+ try
+ with DataLink_TradeInsp.ADOLink do
+ begin
+ if not Connected then
+ begin
+ Connected := false;
+ ConnectionString := DConString;
+ LoginPrompt := false;
+ Connected := true;
+ end;
+ end;
+ Result := true;
+ except
+ Result := false;
+ application.MessageBox('ݿʧܣ', '', mb_Ok + MB_ICONERROR);
+ end;
+
+end;
+
+initialization
+ CoInitialize(nil);
+ dxUnitsLoader.Initialize;
+
+
+finalization
+ DataLink_TradeInsp.Free;
+ application := NewDllApp;
+ dxUnitsLoader.Finalize;
+
+end.
+
diff --git a/T03贸易布匹检验/U_KeyBoard.dfm b/T03贸易布匹检验/U_KeyBoard.dfm
new file mode 100644
index 0000000..71c6c87
--- /dev/null
+++ b/T03贸易布匹检验/U_KeyBoard.dfm
@@ -0,0 +1,133 @@
+object FrameKeyBoard: TFrameKeyBoard
+ Left = 0
+ Top = 0
+ Width = 314
+ Height = 235
+ TabOrder = 0
+ object dxPanel1: TdxPanel
+ Left = 0
+ Top = 0
+ Width = 314
+ Height = 235
+ Align = alClient
+ Frame.Visible = False
+ TabOrder = 0
+ ExplicitHeight = 192
+ object SpeedButton1: TSpeedButton
+ Left = 1
+ Top = 2
+ Width = 60
+ Height = 60
+ Caption = '1'
+ end
+ object SpeedButton4: TSpeedButton
+ Left = 1
+ Top = 63
+ Width = 60
+ Height = 60
+ Caption = '4'
+ end
+ object SpeedButton7: TSpeedButton
+ Left = 1
+ Top = 125
+ Width = 60
+ Height = 60
+ Caption = '7'
+ end
+ object SpeedButton2: TSpeedButton
+ Left = 62
+ Top = 2
+ Width = 60
+ Height = 60
+ Caption = '2'
+ end
+ object SpeedButton5: TSpeedButton
+ Left = 62
+ Top = 63
+ Width = 60
+ Height = 60
+ Caption = '5'
+ end
+ object SpeedButton8: TSpeedButton
+ Left = 62
+ Top = 125
+ Width = 60
+ Height = 60
+ Caption = '8'
+ end
+ object SpeedButton3: TSpeedButton
+ Left = 124
+ Top = 2
+ Width = 60
+ Height = 60
+ Caption = '3'
+ end
+ object SpeedButton6: TSpeedButton
+ Left = 124
+ Top = 63
+ Width = 60
+ Height = 60
+ Caption = '6'
+ end
+ object SpeedButton9: TSpeedButton
+ Tag = 9
+ Left = 124
+ Top = 125
+ Width = 60
+ Height = 60
+ Caption = '9'
+ end
+ object SpeedButton_back: TSpeedButton
+ Left = 186
+ Top = 2
+ Width = 60
+ Height = 60
+ Caption = #8592
+ end
+ object SpeedButton0: TSpeedButton
+ Left = 186
+ Top = 63
+ Width = 60
+ Height = 60
+ Caption = '0'
+ end
+ object SpeedButton_dot: TSpeedButton
+ Left = 186
+ Top = 125
+ Width = 60
+ Height = 60
+ Caption = '.'
+ end
+ object SpeedButton_yc: TSpeedButton
+ Tag = 9
+ Left = 248
+ Top = 2
+ Width = 60
+ Height = 60
+ Caption = #38544#34255
+ end
+ object SpeedButton_zdykey2: TSpeedButton
+ Tag = 9
+ Left = 248
+ Top = 63
+ Width = 60
+ Height = 60
+ Caption = 'C'
+ end
+ object SpeedButton_zdykey1: TSpeedButton
+ Tag = 9
+ Left = 248
+ Top = 125
+ Width = 60
+ Height = 60
+ Caption = 'A'
+ end
+ object SpeedButton10: TSpeedButton
+ Left = 2
+ Top = 187
+ Width = 60
+ Height = 44
+ Caption = '-'
+ end
+ end
+end
diff --git a/T03贸易布匹检验/U_KeyBoard.pas b/T03贸易布匹检验/U_KeyBoard.pas
new file mode 100644
index 0000000..ccaa3bc
--- /dev/null
+++ b/T03贸易布匹检验/U_KeyBoard.pas
@@ -0,0 +1,41 @@
+unit U_KeyBoard;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
+ Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls,
+ cxLookAndFeels, cxLookAndFeelPainters,
+ dxLayoutContainer, cxClasses, Vcl.Buttons, dxLayoutControl, cxGeometry,
+ dxFramedControl, dxPanel, dxSkinsCore;
+
+type
+ TFrameKeyBoard = class(TFrame)
+ dxPanel1: TdxPanel;
+ SpeedButton1: TSpeedButton;
+ SpeedButton4: TSpeedButton;
+ SpeedButton7: TSpeedButton;
+ SpeedButton2: TSpeedButton;
+ SpeedButton5: TSpeedButton;
+ SpeedButton8: TSpeedButton;
+ SpeedButton3: TSpeedButton;
+ SpeedButton6: TSpeedButton;
+ SpeedButton9: TSpeedButton;
+ SpeedButton_back: TSpeedButton;
+ SpeedButton0: TSpeedButton;
+ SpeedButton_dot: TSpeedButton;
+ SpeedButton_yc: TSpeedButton;
+ SpeedButton_zdykey2: TSpeedButton;
+ SpeedButton_zdykey1: TSpeedButton;
+ SpeedButton10: TSpeedButton;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+implementation
+
+{$R *.dfm}
+
+end.
diff --git a/T03贸易布匹检验/U_Link.dfm b/T03贸易布匹检验/U_Link.dfm
new file mode 100644
index 0000000..0eadbcf
--- /dev/null
+++ b/T03贸易布匹检验/U_Link.dfm
@@ -0,0 +1,46 @@
+object frmLink: TfrmLink
+ Left = 294
+ Top = 244
+ BorderIcons = []
+ BorderStyle = bsNone
+ ClientHeight = 114
+ ClientWidth = 246
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ OldCreateOrder = False
+ Position = poScreenCenter
+ OnClose = FormClose
+ OnCreate = FormCreate
+ OnDestroy = FormDestroy
+ PixelsPerInch = 96
+ TextHeight = 13
+ object AADs: TPanel
+ Left = 36
+ Top = 32
+ Width = 185
+ Height = 41
+ Caption = #27491#22312#36830#25509#26381#21153#22120'...'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlue
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ ParentFont = True
+ TabOrder = 0
+ Visible = False
+ end
+ object CSocket: TClientSocket
+ Active = False
+ ClientType = ctNonBlocking
+ Port = 0
+ OnConnect = CSocketConnect
+ OnRead = CSocketRead
+ OnError = CSocketError
+ Left = 12
+ Top = 84
+ end
+end
diff --git a/T03贸易布匹检验/U_Link.pas b/T03贸易布匹检验/U_Link.pas
new file mode 100644
index 0000000..57727b1
--- /dev/null
+++ b/T03贸易布匹检验/U_Link.pas
@@ -0,0 +1,115 @@
+unit U_Link;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ IniFiles,Dialogs, ScktComp, ExtCtrls;
+
+type
+ TCommBlock = record
+ workFlag:integer; //0:ʼַ
+ linkString:string[255];
+ // buf:array [0..Buffersize] of char;
+ end;
+ TfrmLink = class(TForm)
+ CSocket: TClientSocket;
+ AADs: TPanel;
+ procedure CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure CSocketConnect(Sender: TObject; Socket: TCustomWinSocket);
+ procedure FormDestroy(Sender: TObject);
+ procedure CSocketError(Sender: TObject; Socket: TCustomWinSocket;
+ ErrorEvent: TErrorEvent; var ErrorCode: Integer);
+ procedure FormCreate(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ fADOConnString:string;
+ LinkFlag:string;
+ function LinkTxServer():Boolean;
+
+ { Public declarations }
+ end;
+
+var
+ frmLink: TfrmLink;
+
+implementation
+//uses U_Main;
+{$R *.dfm}
+function TfrmLink.LinkTxServer():Boolean;
+var
+ CommBlock : TCommBlock;
+begin
+ result:=false;
+ try
+ CommBlock.workFlag:=strtointdef(LinkFlag,-1);
+ CommBlock.linkString:='';
+ CSocket.Socket.SendBuf(CommBlock,SizeOf(CommBlock));
+ Result:=true;
+ except
+ Application.MessageBox('ͨѶʧܣ','Ϣ',MB_ICONERROR);
+ end;
+end;
+
+procedure TfrmLink.CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
+var
+ CommBlock1: TCommBlock;
+begin
+ try
+ CSocket.Socket.ReceiveBuf(CommBlock1,SizeOf(CommBlock1));
+ fADOConnString:=trim(CommBlock1.linkString);
+ ModalResult:=1;
+ except
+ ModalResult:=-1;
+ end;
+end;
+
+procedure TfrmLink.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ Action:=cahide;
+end;
+
+procedure TfrmLink.CSocketConnect(Sender: TObject;
+ Socket: TCustomWinSocket);
+begin
+ if not LinkTxServer() then ModalResult:=-1;
+end;
+
+procedure TfrmLink.FormDestroy(Sender: TObject);
+begin
+ frmLink:=nil;
+end;
+
+procedure TfrmLink.CSocketError(Sender: TObject; Socket: TCustomWinSocket;
+ ErrorEvent: TErrorEvent; var ErrorCode: Integer);
+begin
+ Application.MessageBox('ͨѶʧܣ','Ϣ',MB_ICONERROR);
+ application.Terminate;
+end;
+
+procedure TfrmLink.FormCreate(Sender: TObject);
+var
+ IniFile: TIniFile;
+ LinkServer:string;
+begin
+ try
+ IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'SYSTEMSET.INI');
+ LinkServer := IniFile.ReadString('SERVER', 'ַ','127.0.0.1');
+ LinkFlag:= IniFile.ReadString('SERVER', 'ַ','0');
+ finally
+ IniFile.Free;
+ end;
+
+ try
+ CSocket.Host:=trim(LinkServer);
+ CSocket.Port:=47936;
+ CSocket.Open;
+ except
+ ModalResult:=-1;
+ end;
+
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_MachRollMain.dfm b/T03贸易布匹检验/U_MachRollMain.dfm
new file mode 100644
index 0000000..c1b68ea
--- /dev/null
+++ b/T03贸易布匹检验/U_MachRollMain.dfm
@@ -0,0 +1,1545 @@
+inherited frmMachRollMain: TfrmMachRollMain
+ Caption = #26426#21488#26816#39564
+ ClientHeight = 851
+ ClientWidth = 1289
+ Color = clBtnFace
+ Font.Charset = ANSI_CHARSET
+ Font.Height = -16
+ FormStyle = fsMDIChild
+ Visible = True
+ ExplicitWidth = 1305
+ ExplicitHeight = 890
+ PixelsPerInch = 96
+ TextHeight = 21
+ object dxLayoutControl_pack: TdxLayoutControl [0]
+ Tag = 999
+ Left = 0
+ Top = 0
+ Width = 443
+ Height = 851
+ Margins.Left = 0
+ Margins.Top = 0
+ Margins.Right = 0
+ Margins.Bottom = 0
+ Align = alLeft
+ TabOrder = 3
+ LayoutLookAndFeel = DataLink_TradeInsp.dxLayoutSkinLookAndFeel1
+ OptionsItem.SizableHorz = True
+ OptionsItem.SizableVert = True
+ OnDblClick = dxLayoutControl_packDblClick
+ ExplicitHeight = 791
+ object Piece: TcxTextEdit
+ Left = 239
+ Top = 154
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 8
+ Width = 161
+ end
+ object Qty: TcxTextEdit
+ Left = 79
+ Top = 154
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 4
+ Width = 111
+ end
+ object FtyPCId: TcxTextEdit
+ Left = 79
+ Top = 121
+ Properties.ReadOnly = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 3
+ OnClick = edtScanEnter
+ Width = 111
+ end
+ object Color: TcxTextEdit
+ Left = 239
+ Top = 88
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 6
+ Width = 161
+ end
+ object ColorNo: TcxTextEdit
+ Left = 79
+ Top = 88
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 2
+ Width = 111
+ end
+ object CodeName: TcxTextEdit
+ Left = 239
+ Top = 55
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 5
+ Width = 161
+ end
+ object OrderNo: TcxTextEdit
+ Left = 79
+ Top = 55
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 1
+ Width = 111
+ end
+ object BCIOID: TcxTextEdit
+ Left = 239
+ Top = 121
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 7
+ Width = 161
+ end
+ object InputLen: TcxTextEdit
+ Tag = 999
+ Left = 79
+ Top = 209
+ AutoSize = False
+ Properties.ReadOnly = False
+ Properties.OnChange = InputLenPropertiesChange
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 9
+ OnClick = edtScanEnter
+ OnKeyPress = InputLenKeyPress
+ Height = 38
+ Width = 132
+ end
+ object BTPrint: TButton
+ Left = 259
+ Top = 256
+ Width = 140
+ Height = 59
+ Caption = #25552' '#20132
+ TabOrder = 13
+ OnClick = BTPrintClick
+ end
+ object Tare: TcxTextEdit
+ Tag = 999
+ Left = 158
+ Top = 256
+ AutoSize = False
+ Properties.OnChange = InputLenPropertiesChange
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 12
+ OnClick = edtScanEnter
+ OnKeyPress = InputLenKeyPress
+ Height = 59
+ Width = 57
+ end
+ object Coefficient: TcxTextEdit
+ Tag = 999
+ Left = 79
+ Top = 324
+ AutoSize = False
+ Properties.ReadOnly = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 14
+ OnClick = edtScanEnter
+ OnKeyPress = InputLenKeyPress
+ Height = 37
+ Width = 52
+ end
+ object InputWeight: TcxTextEdit
+ Tag = 999
+ Left = 79
+ Top = 256
+ AutoSize = False
+ Properties.OnChange = InputLenPropertiesChange
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 11
+ OnClick = edtScanEnter
+ OnKeyPress = InputLenKeyPress
+ Height = 59
+ Width = 70
+ end
+ object OutPutWeight: TcxTextEdit
+ Tag = 999
+ Left = 9726
+ Top = 10000
+ AutoSize = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 18
+ Visible = False
+ OnClick = edtScanEnter
+ OnKeyPress = InputLenKeyPress
+ Height = 44
+ Width = 191
+ end
+ object AOrdDefNote1: TcxRichEdit
+ Left = 1
+ Top = 382
+ Properties.ReadOnly = True
+ Properties.ScrollBars = ssBoth
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 16
+ Height = 206
+ Width = 181
+ end
+ object cxDBImage1: TcxDBImage
+ Left = 9726
+ Top = 10000
+ Hint = 'FileName'
+ DataBinding.DataField = 'FilesOther'
+ DataBinding.DataSource = DS_IMAGE
+ Properties.GraphicClassName = 'TdxSmartImage'
+ Properties.GraphicTransparency = gtTransparent
+ Properties.ReadOnly = True
+ Properties.ShowFocusRect = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 19
+ Visible = False
+ Height = 122
+ Width = 280
+ end
+ object grade: TcxComboBox
+ Left = 305
+ Top = 209
+ AutoSize = False
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #27491#21697
+ #27425#21697)
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 10
+ Text = #27491#21697
+ OnKeyPress = InputLenKeyPress
+ Height = 38
+ Width = 94
+ end
+ object lblRuleConversion: TcxComboBox
+ Tag = 2
+ Left = 140
+ Top = 324
+ AutoSize = False
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #26080#38656#36716#25442
+ #38271#24230#36716#20844#26020
+ #20928#37325#36716#38271#24230
+ #27611#37325#36716#38271#24230)
+ Properties.OnChange = lblRuleConversionPropertiesChange
+ Style.HotTrack = False
+ Style.LookAndFeel.SkinName = 'WXI'
+ Style.TransparentBorder = False
+ StyleDisabled.LookAndFeel.SkinName = 'WXI'
+ StyleFocused.LookAndFeel.SkinName = 'WXI'
+ StyleHot.LookAndFeel.SkinName = 'WXI'
+ TabOrder = 15
+ Text = #26080#38656#36716#25442
+ Height = 37
+ Width = 102
+ end
+ object packnote: TcxMemo
+ Tag = 999
+ Left = 191
+ Top = 382
+ Properties.ReadOnly = True
+ Properties.ScrollBars = ssVertical
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 17
+ Height = 206
+ Width = 199
+ end
+ object edtScan: TcxTextEdit
+ Tag = 999
+ Left = 73
+ Top = 11
+ Properties.CharCase = ecUpperCase
+ Style.HotTrack = False
+ Style.LookAndFeel.Kind = lfUltraFlat
+ Style.LookAndFeel.SkinName = 'WXI'
+ Style.TransparentBorder = False
+ StyleDisabled.LookAndFeel.Kind = lfUltraFlat
+ StyleDisabled.LookAndFeel.SkinName = 'WXI'
+ StyleFocused.LookAndFeel.Kind = lfUltraFlat
+ StyleFocused.LookAndFeel.SkinName = 'WXI'
+ StyleHot.LookAndFeel.Kind = lfUltraFlat
+ StyleHot.LookAndFeel.SkinName = 'WXI'
+ TabOrder = 0
+ OnClick = edtScanEnter
+ OnDblClick = edtScanDblClick
+ OnKeyPress = edtScanKeyPress
+ Width = 148
+ end
+ object C_Pattern: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 23
+ Visible = False
+ Width = 124
+ end
+ object RuleYardstick: TcxTextEdit
+ Left = 9565
+ Top = 10000
+ AutoSize = False
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 24
+ Text = '100'
+ Visible = False
+ OnClick = edtScanEnter
+ OnKeyPress = InputLenKeyPress
+ Height = 29
+ Width = 69
+ end
+ object C_StyleNo: TcxTextEdit
+ Left = 9565
+ Top = 10000
+ Properties.ReadOnly = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 25
+ Visible = False
+ Width = 168
+ end
+ object customStrField1: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 26
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object customStrField2: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 27
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object C_Width: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 28
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object C_GramWeight: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 29
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object addLen: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 30
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object addWet: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 31
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object bt_printmd: TButton
+ Left = 9726
+ Top = 10000
+ Width = 48
+ Height = 33
+ Caption = #30721#21333
+ TabOrder = 32
+ Visible = False
+ OnClick = bt_printmdClick
+ end
+ object presentLen: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 33
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object presentWeight: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 34
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object unitPieces: TcxTextEdit
+ Left = 9726
+ Top = 10000
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 35
+ Visible = False
+ OnClick = edtScanEnter
+ Width = 121
+ end
+ object dxLayoutControl_packGroup_Root: TdxLayoutGroup
+ AlignHorz = ahClient
+ AlignVert = avTop
+ CaptionOptions.Text = #26681#30446#24405
+ CaptionOptions.Visible = False
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ AllowRemove = False
+ Hidden = True
+ ItemIndex = 1
+ Padding.Left = -15
+ Padding.Top = -5
+ Padding.AssignedValues = [lpavLeft, lpavTop]
+ ShowBorder = False
+ UseIndent = False
+ Index = -1
+ end
+ object dxLayoutGroup_scan: TdxLayoutGroup
+ Parent = dxLayoutControl_packGroup_Root
+ AlignHorz = ahClient
+ AlignVert = avTop
+ CaptionOptions.Text = #25195#25551#26465#30721#32452
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 697
+ AllowRemove = False
+ Hidden = True
+ ItemIndex = 1
+ LayoutDirection = ldHorizontal
+ Padding.Bottom = -10
+ Padding.Top = -10
+ Padding.AssignedValues = [lpavBottom, lpavTop]
+ ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem1: TdxLayoutItem
+ Parent = dxLayoutGroup_scan
+ SizeOptions.AssignedValues = [sovSizableHorz]
+ SizeOptions.SizableHorz = True
+ SizeOptions.Width = 220
+ AllowRemove = False
+ CaptionOptions.Text = '[B][COLOR=#FF0000][SIZE=12]'#25195#25551#26465#30721'[/SIZE][/COLOR][/B]'
+ Control = edtScan
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 148
+ ControlOptions.ShowBorder = False
+ OnCaptionClick = dxLayoutItem1CaptionClick
+ Index = 0
+ end
+ object dxLayoutItem3: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_1
+ Offsets.Left = 5
+ AllowRemove = False
+ CaptionOptions.Text = #25351#31034#21333
+ Control = OrderNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutGroup_plan: TdxLayoutGroup
+ Parent = dxLayoutControl_packGroup_Root
+ AlignHorz = ahRight
+ CaptionOptions.Text = #35746#21333#20449#24687#32452
+ CaptionOptions.Visible = False
+ SizeOptions.Width = 721
+ AllowRemove = False
+ LayoutDirection = ldHorizontal
+ Padding.Bottom = -10
+ Padding.Left = -15
+ Padding.Top = -10
+ Padding.AssignedValues = [lpavBottom, lpavLeft, lpavTop]
+ Index = 1
+ end
+ object dxLayoutItem4: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_1
+ Offsets.Left = 5
+ CaptionOptions.Text = #26579#21378#32568#21495
+ Control = FtyPCId
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem5: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_1
+ Offsets.Left = 5
+ CaptionOptions.Text = #33394#21495
+ Control = ColorNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem6: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_1
+ Offsets.Left = 5
+ AllowRemove = False
+ CaptionOptions.Text = #25968#37327
+ Control = Qty
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutGroup_plan_1: TdxLayoutGroup
+ Parent = dxLayoutGroup_plan
+ AlignHorz = ahLeft
+ AlignVert = avClient
+ CaptionOptions.Text = #35745#21010#21333#20449#24687#32452'1'
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 188
+ Hidden = True
+ ItemIndex = 3
+ ShowBorder = False
+ UseIndent = False
+ Index = 0
+ end
+ object dxLayoutGroup_plan_2: TdxLayoutGroup
+ Parent = dxLayoutGroup_plan
+ CaptionOptions.Text = #35745#21010#21333#20449#24687#32452'2'
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 201
+ Hidden = True
+ ItemIndex = 2
+ ShowBorder = False
+ UseIndent = False
+ Index = 1
+ end
+ object dxLayoutItem7: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_2
+ AllowRemove = False
+ CaptionOptions.Text = #21697#21517
+ Control = CodeName
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem8: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_2
+ AllowRemove = False
+ CaptionOptions.Text = #39068#33394
+ Control = Color
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem9: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_2
+ CaptionOptions.Text = #21305#25968
+ Control = Piece
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem10: TdxLayoutItem
+ Parent = dxLayoutGroup_plan_2
+ CaptionOptions.Text = #21345#21495
+ Control = BCIOID
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 144
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutEmptySpaceItem1: TdxLayoutEmptySpaceItem
+ Parent = dxLayoutGroup_scan
+ SizeOptions.AssignedValues = [sovSizableHorz]
+ SizeOptions.SizableHorz = True
+ SizeOptions.Height = 10
+ CaptionOptions.Text = #20998#21106#26465
+ Index = 1
+ end
+ object dxLayoutGroup_do2: TdxLayoutGroup
+ Parent = dxLayoutControl_packGroup_Root
+ AlignHorz = ahClient
+ AlignVert = avTop
+ CaptionOptions.Text = #25171#21367#25968#25454#32452
+ CaptionOptions.Visible = False
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 747
+ AllowRemove = False
+ LayoutDirection = ldHorizontal
+ Padding.Left = -10
+ Padding.Top = -10
+ Padding.AssignedValues = [lpavLeft, lpavTop]
+ Index = 2
+ end
+ object dxLayoutItem15: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup5
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 204
+ CaptionOptions.Text = '[B][COLOR=#FF0000][SIZE=14]'#38271#24230'[/SIZE][/COLOR][/B]'
+ Control = InputLen
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 132
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem16: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup3
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 142
+ CaptionOptions.Text = '[COLOR=Red][SIZE=14]'#37325#37327'[/COLOR][/SIZE]'
+ Control = InputWeight
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 70
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem_outweight: TdxLayoutItem
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ CaptionOptions.Text = '[COLOR=Red][SIZE=14]'#20928#37325'[/COLOR][/SIZE]'
+ Control = OutPutWeight
+ ControlOptions.OriginalHeight = 44
+ ControlOptions.OriginalWidth = 191
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object lblLenUnit: TdxLayoutLabeledItem
+ Tag = 999
+ Parent = dxLayoutAutoCreatedGroup5
+ AlignVert = avBottom
+ SizeOptions.AssignedValues = [sovSizableHorz]
+ SizeOptions.SizableHorz = False
+ SizeOptions.Width = 36
+ CaptionOptions.Hint = 'M'
+ CaptionOptions.ShowAccelChar = False
+ CaptionOptions.Text = '[B][SIZE=12]M[/SIZE][/B]'
+ Index = 1
+ end
+ object dxLayoutItem18: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup3
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 57
+ Control = Tare
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 57
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutLabeledItem2: TdxLayoutLabeledItem
+ Parent = dxLayoutAutoCreatedGroup3
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz]
+ SizeOptions.SizableHorz = True
+ SizeOptions.Width = 26
+ CaptionOptions.Hint = 'KG'
+ CaptionOptions.Text = '[B][SIZE=12]KG[/SIZE][/B]'
+ Index = 2
+ end
+ object dxLayoutItem21: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup3
+ AlignHorz = ahClient
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 59
+ AllowRemove = False
+ CaptionOptions.Text = 'New Item'
+ CaptionOptions.Visible = False
+ Control = BTPrint
+ ControlOptions.OriginalHeight = 59
+ ControlOptions.OriginalWidth = 120
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutEmptySpaceItem3: TdxLayoutEmptySpaceItem
+ Parent = dxLayoutGroup_do2
+ AlignHorz = ahLeft
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz]
+ SizeOptions.SizableHorz = True
+ SizeOptions.Height = 10
+ SizeOptions.Width = 2
+ CaptionOptions.Text = #20998#21106#26465
+ Index = 1
+ end
+ object dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup
+ Parent = dxLayoutAutoCreatedGroup2
+ AlignVert = avTop
+ Index = 0
+ end
+ object dxLayoutAutoCreatedGroup3: TdxLayoutAutoCreatedGroup
+ Parent = dxLayoutAutoCreatedGroup1
+ AlignVert = avTop
+ LayoutDirection = ldHorizontal
+ Index = 1
+ end
+ object dxLayoutAutoCreatedGroup5: TdxLayoutAutoCreatedGroup
+ Parent = dxLayoutAutoCreatedGroup1
+ AlignVert = avClient
+ LayoutDirection = ldHorizontal
+ Index = 0
+ end
+ object dxLayoutGroup1: TdxLayoutGroup
+ Parent = dxLayoutGroup_do2
+ AlignHorz = ahLeft
+ AlignVert = avClient
+ CaptionOptions.Text = #31354#30333#32452
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 121
+ SizeOptions.Width = 114
+ Hidden = True
+ ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutEmptySpaceItem5: TdxLayoutEmptySpaceItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Height = 10
+ SizeOptions.Width = 10
+ CaptionOptions.Text = #20998#21106#26465
+ Index = 0
+ end
+ object dxLayoutItem24: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup4
+ AlignHorz = ahLeft
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 124
+ CaptionOptions.Text = #31995#25968
+ Control = Coefficient
+ ControlOptions.OriginalHeight = 37
+ ControlOptions.OriginalWidth = 52
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutGroup2: TdxLayoutGroup
+ Parent = dxLayoutControl_packGroup_Root
+ CaptionOptions.Text = #35746#21333#20449#24687#32452'3'
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 74
+ AllowRemove = False
+ Hidden = True
+ ItemIndex = 1
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem_zhfield: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 206
+ SizeOptions.Width = 181
+ CaptionOptions.Text = #35746#21333#32452#21512#23383#27573
+ CaptionOptions.Visible = False
+ Control = AOrdDefNote1
+ ControlOptions.OriginalHeight = 206
+ ControlOptions.OriginalWidth = 181
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem_pic: TdxLayoutItem
+ AlignHorz = ahClient
+ AlignVert = avTop
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 122
+ CaptionOptions.Text = #22270#29255'1'
+ CaptionOptions.Visible = False
+ Control = cxDBImage1
+ ControlOptions.OriginalHeight = 122
+ ControlOptions.OriginalWidth = 280
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutAutoCreatedGroup2: TdxLayoutAutoCreatedGroup
+ Parent = dxLayoutGroup_do2
+ Index = 0
+ end
+ object dxLayoutItem_grade: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup5
+ AlignVert = avClient
+ SizeOptions.Width = 134
+ AllowRemove = False
+ CaptionOptions.Text = '[COLOR=Red][SIZE=12]'#31561#32423'[/COLOR][/SIZE]'
+ Control = grade
+ ControlOptions.OriginalHeight = 38
+ ControlOptions.OriginalWidth = 94
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem14: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup4
+ AlignVert = avClient
+ SizeOptions.Width = 102
+ CaptionOptions.Text = #31995#25968#36716#25442
+ CaptionOptions.Visible = False
+ Control = lblRuleConversion
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 102
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutAutoCreatedGroup4: TdxLayoutAutoCreatedGroup
+ Parent = dxLayoutAutoCreatedGroup2
+ AlignVert = avClient
+ LayoutDirection = ldHorizontal
+ Index = 1
+ end
+ object dxLayoutItem_packnote: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.Height = 206
+ SizeOptions.Width = 199
+ CaptionOptions.Text = #21253#35013#35201#27714
+ CaptionOptions.Visible = False
+ Control = packnote
+ ControlOptions.OriginalHeight = 206
+ ControlOptions.OriginalWidth = 199
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem_Pattern: TdxLayoutItem
+ CaptionOptions.Text = #33457#22411
+ Control = C_Pattern
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 124
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_RuleYardstick: TdxLayoutItem
+ CaptionOptions.Text = #30721#23610
+ Control = RuleYardstick
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 69
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_StyleNo: TdxLayoutItem
+ CaptionOptions.Text = #27454#21495
+ Control = C_StyleNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 168
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_customStrField1: TdxLayoutItem
+ CaptionOptions.Text = #33258#23450#20041#36755#20837'1'
+ Control = customStrField1
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_customStrField2: TdxLayoutItem
+ CaptionOptions.Text = #33258#23450#20041#36755#20837'2'
+ Control = customStrField2
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_width: TdxLayoutItem
+ CaptionOptions.Text = #38376#24133
+ Control = C_Width
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_gram: TdxLayoutItem
+ CaptionOptions.Text = #20811#37325
+ Control = C_GramWeight
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_addlen: TdxLayoutItem
+ CaptionOptions.Text = #21152#38271
+ Control = addLen
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_addwet: TdxLayoutItem
+ CaptionOptions.Text = #21152#37325
+ Control = addWet
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_btprintmd: TdxLayoutItem
+ CaptionOptions.Text = #25171#21360#30721#21333
+ CaptionOptions.Visible = False
+ Control = bt_printmd
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 48
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_presentLen: TdxLayoutItem
+ CaptionOptions.Text = #36192#36865#38271#24230
+ Control = presentLen
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_presentWeight: TdxLayoutItem
+ CaptionOptions.Text = #36192#36865#37325#37327
+ Control = presentWeight
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_unitPieces: TdxLayoutItem
+ CaptionOptions.Text = #25340#21305
+ Control = unitPieces
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ end
+ object Panel_right: TPanel [1]
+ Left = 443
+ Top = 0
+ Width = 846
+ Height = 851
+ Align = alClient
+ Caption = 'Panel_right'
+ TabOrder = 4
+ ExplicitLeft = 1037
+ ExplicitWidth = 252
+ ExplicitHeight = 791
+ object ToolBar2: TToolBar
+ Tag = 1000
+ Left = 1
+ Top = 1
+ Width = 844
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 83
+ Caption = 'ToolBar1'
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 0
+ object ToolButton3: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #37325#25171
+ ImageIndex = 21
+ OnClick = ToolButton3Click
+ end
+ object TprintPack: TToolButton
+ Left = 63
+ Top = 0
+ AutoSize = True
+ Caption = #21253#26631#31614
+ ImageIndex = 21
+ OnClick = TprintPackClick
+ end
+ object Trolldel: TToolButton
+ Left = 138
+ Top = 0
+ AutoSize = True
+ Caption = #21024#38500
+ ImageIndex = 5
+ OnClick = TrolldelClick
+ end
+ object ToolButton4: TToolButton
+ Left = 201
+ Top = 0
+ AutoSize = True
+ Caption = #30133#28857#31649#29702
+ ImageIndex = 2
+ OnClick = ToolButton4Click
+ end
+ object ToolButton1: TToolButton
+ Left = 288
+ Top = 0
+ AutoSize = True
+ Caption = #25171#21367#35774#32622
+ ImageIndex = 25
+ OnClick = ToolButton1Click
+ end
+ object ToolButton7: TToolButton
+ Left = 375
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton7Click
+ end
+ object Tlog: TToolButton
+ Left = 462
+ Top = 0
+ AutoSize = True
+ Caption = #26085#24535
+ ImageIndex = 30
+ OnClick = TlogClick
+ end
+ object ToolButton8: TToolButton
+ Left = 525
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = ToolButton8Click
+ end
+ end
+ object cxGrid3: TcxGrid
+ Tag = 9999
+ Left = 1
+ Top = 31
+ Width = 844
+ Height = 819
+ Align = alClient
+ TabOrder = 1
+ ExplicitLeft = 0
+ ExplicitTop = 37
+ object Tv3: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ OnCustomDrawCell = Tv3CustomDrawCell
+ OnFocusedRecordChanged = Tv3FocusedRecordChanged
+ DataController.DataSource = ds_3
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = v3GrossWeight
+ end
+ item
+ Kind = skSum
+ Column = v3NetWeight
+ end
+ item
+ Format = #21367#25968':0'
+ Kind = skCount
+ Column = tv3CIID
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = Tv3Yardage
+ end
+ item
+ Kind = skSum
+ Column = Tv3Meter
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ Column = v3PieceNo
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object v3PieceNo: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 71
+ end
+ object Tv3Yardage: TcxGridDBColumn
+ Caption = #30721#25968
+ DataBinding.FieldName = 'Yardage'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 69
+ end
+ object Tv3Meter: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 79
+ end
+ object v3NetWeight: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 62
+ end
+ object v3GrossWeight: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'GrossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 61
+ end
+ object Tv3Grade: TcxGridDBColumn
+ Caption = #31561#32423
+ DataBinding.FieldName = 'Grade'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 54
+ end
+ object Tv3PacketNo: TcxGridDBColumn
+ Caption = #21253#21495
+ DataBinding.FieldName = 'PacketNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 57
+ end
+ object Tv3BatchNO: TcxGridDBColumn
+ Caption = #26412#21378#32568#21495
+ DataBinding.FieldName = 'BatchNO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 89
+ end
+ object tv3CIID: TcxGridDBColumn
+ Caption = #21367#26465#30721
+ DataBinding.FieldName = 'CIID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 112
+ end
+ object Tv3FtyPCId: TcxGridDBColumn
+ Caption = #32568#21495
+ DataBinding.FieldName = 'FtyPCId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 77
+ end
+ end
+ object cxGridLevel2: TcxGridLevel
+ GridView = Tv3
+ end
+ end
+ end
+ object cxGroupBox_keys: TcxGroupBox [2]
+ Left = 56
+ Top = 408
+ Caption = #34394#25311#38190#30424
+ Style.LookAndFeel.NativeStyle = False
+ StyleDisabled.LookAndFeel.NativeStyle = False
+ TabOrder = 2
+ Transparent = True
+ Visible = False
+ Height = 245
+ Width = 319
+ inline FrameKeyBoard1: TFrameKeyBoard
+ Left = 4
+ Top = 23
+ Width = 311
+ Height = 206
+ Align = alClient
+ TabOrder = 0
+ ExplicitLeft = 4
+ ExplicitTop = 23
+ ExplicitWidth = 311
+ ExplicitHeight = 206
+ inherited dxPanel1: TdxPanel
+ Width = 311
+ Height = 206
+ ExplicitLeft = -228
+ ExplicitTop = 7
+ ExplicitWidth = 311
+ ExplicitHeight = 206
+ inherited SpeedButton1: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton4: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton7: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton2: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton5: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton8: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton3: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton6: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton9: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton_back: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton_backClick
+ end
+ inherited SpeedButton0: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton_dot: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton_yc: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton_ycClick
+ end
+ inherited SpeedButton_zdykey2: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton_zdykey1: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ inherited SpeedButton10: TSpeedButton
+ OnClick = FrameKeyBoard1SpeedButton1Click
+ end
+ end
+ end
+ object MovePanel1: TMovePanel
+ Left = 89
+ Top = -23
+ Width = 237
+ Height = 42
+ BevelOuter = bvNone
+ DockSite = True
+ ParentColor = True
+ TabOrder = 1
+ end
+ end
+ inherited loadProcess: TPanel
+ Left = 483
+ Top = 157
+ Width = 177
+ ExplicitLeft = 483
+ ExplicitTop = 157
+ ExplicitWidth = 177
+ end
+ inherited cxProgressBar2: TcxProgressBar
+ Left = 483
+ Top = 121
+ ExplicitLeft = 483
+ ExplicitTop = 121
+ ExplicitHeight = 29
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 442
+ Top = 270
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 536
+ Top = 270
+ end
+ object cds_params: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 818
+ Top = 364
+ object cds_paramsdabao: TStringField
+ FieldName = 'dabao'
+ Size = 10
+ end
+ object cds_paramspackRolls: TIntegerField
+ FieldName = 'packRolls'
+ end
+ object cds_paramsrollNoMake: TStringField
+ FieldName = 'rollNoMake'
+ end
+ object cds_paramsMinWeight: TIntegerField
+ FieldName = 'MinWeight'
+ end
+ object cds_paramsMaxWeight: TIntegerField
+ FieldName = 'MaxWeight'
+ end
+ object cds_paramslblLenUnit: TStringField
+ FieldName = 'lblLenUnit'
+ end
+ object cds_paramsMinLen: TIntegerField
+ FieldName = 'MinLen'
+ end
+ object cds_paramsmaxLen: TIntegerField
+ FieldName = 'maxLen'
+ end
+ object cds_paramsweightRule: TIntegerField
+ FieldName = 'weightRule'
+ end
+ object cds_paramschen: TStringField
+ FieldName = 'chen'
+ Size = 10
+ end
+ object cds_paramsmabiao: TStringField
+ FieldName = 'mabiao'
+ end
+ object cds_paramsmbunit: TStringField
+ FieldName = 'mbunit'
+ end
+ object cds_paramsmplace: TIntegerField
+ FieldName = 'mplace'
+ end
+ object cds_paramsyplace: TIntegerField
+ FieldName = 'yplace'
+ end
+ object cds_paramskgplace: TIntegerField
+ FieldName = 'kgplace'
+ end
+ object cds_paramslabNumber: TIntegerField
+ FieldName = 'labNumber'
+ end
+ object cds_paramsoutPage: TStringField
+ FieldName = 'outPage'
+ Size = 10
+ end
+ object cds_paramsEndPieceNo: TIntegerField
+ FieldName = 'EndPieceNo'
+ end
+ object cds_paramsBeginPieceNo: TIntegerField
+ FieldName = 'BeginPieceNo'
+ end
+ object cds_paramsFixedLength: TIntegerField
+ FieldName = 'FixedLength'
+ end
+ object cds_paramspacknoMake: TStringField
+ FieldName = 'packnoMake'
+ Size = 30
+ end
+ object cds_paramspieceOrder: TBooleanField
+ FieldName = 'pieceOrder'
+ end
+ object cds_paramsLabVolume: TStringField
+ FieldName = 'LabVolume'
+ Size = 60
+ end
+ object cds_paramsLabPackage: TStringField
+ FieldName = 'LabPackage'
+ Size = 60
+ end
+ object cds_paramsAddwetPresent: TFloatField
+ FieldName = 'AddwetPresent'
+ end
+ object cds_paramsAddLenPresent: TFloatField
+ FieldName = 'AddLenPresent'
+ end
+ object cds_paramspackPrintPreview: TBooleanField
+ FieldName = 'packPrintPreview'
+ end
+ object cds_paramspacklabNumber: TIntegerField
+ FieldName = 'packlabNumber'
+ end
+ object cds_paramspackPostAction: TStringField
+ FieldName = 'packPostAction'
+ end
+ end
+ object CDS_2: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 630
+ Top = 364
+ end
+ object DS_2: TDataSource
+ DataSet = CDS_2
+ Left = 630
+ Top = 458
+ end
+ object cds_1: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 536
+ Top = 364
+ end
+ object cds_3: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 724
+ Top = 364
+ end
+ object ds_3: TDataSource
+ DataSet = cds_3
+ Left = 724
+ Top = 458
+ end
+ object ds_1: TDataSource
+ DataSet = cds_1
+ Left = 536
+ Top = 458
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 724
+ Top = 270
+ end
+ object ADOQueryPrint: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 818
+ Top = 270
+ end
+ object RM1: TRMGridReport
+ ThreadPrepareReport = True
+ InitialZoom = pzDefault
+ PreviewButtons = [rmpbZoom, rmpbLoad, rmpbSave, rmpbPrint, rmpbFind, rmpbPageSetup, rmpbExit, rmpbExport, rmpbNavigator]
+ DefaultCollate = False
+ ShowPrintDialog = False
+ SaveReportOptions.RegistryPath = 'Software\ReportMachine\ReportSettings\'
+ PreviewOptions.RulerUnit = rmutScreenPixels
+ PreviewOptions.RulerVisible = False
+ PreviewOptions.DrawBorder = False
+ PreviewOptions.BorderPen.Color = clGray
+ PreviewOptions.BorderPen.Style = psDash
+ Dataset = RMDB_1
+ CompressLevel = rmzcFastest
+ CompressThread = False
+ LaterBuildEvents = True
+ OnlyOwnerDataSet = False
+ Left = 536
+ Top = 552
+ ReportData = {}
+ end
+ object RMDB_1: TRMDBDataSet
+ Visible = True
+ DataSet = ADOQueryPrint
+ Left = 442
+ Top = 552
+ end
+ object GPM_3: TcxGridPopupMenu
+ Grid = cxGrid3
+ PopupMenus = <>
+ Left = 442
+ Top = 458
+ end
+ object ADOQueryImage: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ CommandTimeout = 300
+ Parameters = <>
+ Left = 630
+ Top = 270
+ end
+ object DS_IMAGE: TDataSource
+ DataSet = ADOQueryImage
+ Left = 818
+ Top = 458
+ end
+ object RMRichObject1: TRMRichObject
+ Left = 630
+ Top = 552
+ end
+ object ADO_CJ: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 442
+ Top = 364
+ end
+end
diff --git a/T03贸易布匹检验/U_MachRollMain.pas b/T03贸易布匹检验/U_MachRollMain.pas
new file mode 100644
index 0000000..19a8c9e
--- /dev/null
+++ b/T03贸易布匹检验/U_MachRollMain.pas
@@ -0,0 +1,2526 @@
+unit U_MachRollMain;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
+ System.Classes, Vcl.Graphics, mmsystem, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
+ cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxClasses,
+ dxLayoutContainer, dxLayoutControl, dxLayoutcxEditAdapters, cxContainer,
+ cxEdit, Vcl.StdCtrls, cxTextEdit, Vcl.ExtCtrls, dxLayoutControlAdapters,
+ U_BaseList, Data.DB, Data.Win.ADODB, Vcl.Buttons, Vcl.ComCtrls, Vcl.ToolWin,
+ cxImage, cxDBEdit, cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage,
+ cxNavigator, dxDateRanges, dxScrollbarAnnotations, cxDBData, dxBarBuiltInMenu,
+ cxPC, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
+ cxGridCustomView, cxGrid, cxMemo, cxRichEdit, U_frameBads, Datasnap.DBClient,
+ RM_Common, RM_Class, RM_GridReport, cxCheckBox, cxMaskEdit, cxDropDownEdit,
+ Vcl.Menus, cxButtonEdit, RM_Dataset, cxGeometry, dxFramedControl, dxPanel,
+ U_KeyBoard, cxGroupBox, cxGridCustomPopupMenu, cxGridPopupMenu, MovePanel,
+ RM_RichEdit, cxProgressBar, cxCurrencyEdit, dxSkinsCore;
+
+type
+ TfrmMachRollMain = class(TfrmBaseList)
+ dxLayoutControl_packGroup_Root: TdxLayoutGroup;
+ dxLayoutControl_pack: TdxLayoutControl;
+ Piece: TcxTextEdit;
+ Qty: TcxTextEdit;
+ FtyPCId: TcxTextEdit;
+ Color: TcxTextEdit;
+ ColorNo: TcxTextEdit;
+ CodeName: TcxTextEdit;
+ OrderNo: TcxTextEdit;
+ edtScan: TcxTextEdit;
+ BCIOID: TcxTextEdit;
+ dxLayoutGroup_scan: TdxLayoutGroup;
+ dxLayoutItem1: TdxLayoutItem;
+ dxLayoutItem3: TdxLayoutItem;
+ dxLayoutGroup_plan: TdxLayoutGroup;
+ dxLayoutItem4: TdxLayoutItem;
+ dxLayoutItem5: TdxLayoutItem;
+ dxLayoutItem6: TdxLayoutItem;
+ dxLayoutGroup_plan_1: TdxLayoutGroup;
+ dxLayoutGroup_plan_2: TdxLayoutGroup;
+ dxLayoutItem7: TdxLayoutItem;
+ dxLayoutItem8: TdxLayoutItem;
+ dxLayoutItem9: TdxLayoutItem;
+ dxLayoutItem10: TdxLayoutItem;
+ dxLayoutEmptySpaceItem1: TdxLayoutEmptySpaceItem;
+ InputLen: TcxTextEdit;
+ BTPrint: TButton;
+ Tare: TcxTextEdit;
+ Coefficient: TcxTextEdit;
+ InputWeight: TcxTextEdit;
+ OutPutWeight: TcxTextEdit;
+ dxLayoutGroup_do2: TdxLayoutGroup;
+ dxLayoutItem15: TdxLayoutItem;
+ dxLayoutItem16: TdxLayoutItem;
+ dxLayoutItem_outweight: TdxLayoutItem;
+ lblLenUnit: TdxLayoutLabeledItem;
+ dxLayoutItem18: TdxLayoutItem;
+ dxLayoutLabeledItem2: TdxLayoutLabeledItem;
+ dxLayoutItem21: TdxLayoutItem;
+ dxLayoutEmptySpaceItem3: TdxLayoutEmptySpaceItem;
+ dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup;
+ dxLayoutAutoCreatedGroup3: TdxLayoutAutoCreatedGroup;
+ dxLayoutAutoCreatedGroup5: TdxLayoutAutoCreatedGroup;
+ dxLayoutGroup1: TdxLayoutGroup;
+ dxLayoutEmptySpaceItem5: TdxLayoutEmptySpaceItem;
+ dxLayoutItem24: TdxLayoutItem;
+ dxLayoutGroup2: TdxLayoutGroup;
+ cxDBImage1: TcxDBImage;
+ Panel_right: TPanel;
+ ToolBar2: TToolBar;
+ ToolButton3: TToolButton;
+ Trolldel: TToolButton;
+ ToolButton4: TToolButton;
+ ToolButton7: TToolButton;
+ ToolButton8: TToolButton;
+ dxLayoutItem_zhfield: TdxLayoutItem;
+ AOrdDefNote1: TcxRichEdit;
+ dxLayoutItem_pic: TdxLayoutItem;
+ dxLayoutAutoCreatedGroup2: TdxLayoutAutoCreatedGroup;
+ cds_params: TClientDataSet;
+ cds_paramsdabao: TStringField;
+ cds_paramspackRolls: TIntegerField;
+ cds_paramsrollNoMake: TStringField;
+ cds_paramsMinWeight: TIntegerField;
+ cds_paramsMaxWeight: TIntegerField;
+ cds_paramslblLenUnit: TStringField;
+ cds_paramsMinLen: TIntegerField;
+ cds_paramsmaxLen: TIntegerField;
+ cds_paramsweightRule: TIntegerField;
+ cds_paramschen: TStringField;
+ cds_paramsmabiao: TStringField;
+ cds_paramsmbunit: TStringField;
+ cds_paramsmplace: TIntegerField;
+ cds_paramsyplace: TIntegerField;
+ cds_paramskgplace: TIntegerField;
+ cds_paramslabNumber: TIntegerField;
+ CDS_2: TClientDataSet;
+ DS_2: TDataSource;
+ cds_1: TClientDataSet;
+ cds_3: TClientDataSet;
+ ds_3: TDataSource;
+ ds_1: TDataSource;
+ ADOQueryMain: TADOQuery;
+ cds_paramsoutPage: TStringField;
+ ADOQueryPrint: TADOQuery;
+ RM1: TRMGridReport;
+ grade: TcxComboBox;
+ dxLayoutItem_grade: TdxLayoutItem;
+ cds_paramsEndPieceNo: TIntegerField;
+ cds_paramsBeginPieceNo: TIntegerField;
+ cds_paramsFixedLength: TIntegerField;
+ cds_paramspacknoMake: TStringField;
+ cds_paramspieceOrder: TBooleanField;
+ lblRuleConversion: TcxComboBox;
+ dxLayoutItem14: TdxLayoutItem;
+ dxLayoutAutoCreatedGroup4: TdxLayoutAutoCreatedGroup;
+ cds_paramsLabVolume: TStringField;
+ cds_paramsLabPackage: TStringField;
+ dxLayoutItem_packnote: TdxLayoutItem;
+ packnote: TcxMemo;
+ RMDB_1: TRMDBDataSet;
+ TprintPack: TToolButton;
+ Tlog: TToolButton;
+ cxGroupBox_keys: TcxGroupBox;
+ FrameKeyBoard1: TFrameKeyBoard;
+ dxLayoutItem_Pattern: TdxLayoutItem;
+ C_Pattern: TcxTextEdit;
+ RuleYardstick: TcxTextEdit;
+ dxLayoutItem_RuleYardstick: TdxLayoutItem;
+ cds_paramsAddwetPresent: TFloatField;
+ cds_paramsAddLenPresent: TFloatField;
+ C_StyleNo: TcxTextEdit;
+ dxLayoutItem_StyleNo: TdxLayoutItem;
+ GPM_3: TcxGridPopupMenu;
+ MovePanel1: TMovePanel;
+ ADOQueryImage: TADOQuery;
+ DS_IMAGE: TDataSource;
+ cds_paramspackPrintPreview: TBooleanField;
+ RMRichObject1: TRMRichObject;
+ cds_paramspacklabNumber: TIntegerField;
+ cds_paramspackPostAction: TStringField;
+ customStrField1: TcxTextEdit;
+ dxLayoutItem_customStrField1: TdxLayoutItem;
+ dxLayoutItem_customStrField2: TdxLayoutItem;
+ customStrField2: TcxTextEdit;
+ dxLayoutItem_width: TdxLayoutItem;
+ dxLayoutItem_gram: TdxLayoutItem;
+ C_Width: TcxTextEdit;
+ C_GramWeight: TcxTextEdit;
+ dxLayoutItem_addlen: TdxLayoutItem;
+ dxLayoutItem_addwet: TdxLayoutItem;
+ addLen: TcxTextEdit;
+ addWet: TcxTextEdit;
+ bt_printmd: TButton;
+ dxLayoutItem_btprintmd: TdxLayoutItem;
+ dxLayoutItem_presentLen: TdxLayoutItem;
+ dxLayoutItem_presentWeight: TdxLayoutItem;
+ presentLen: TcxTextEdit;
+ presentWeight: TcxTextEdit;
+ unitPieces: TcxTextEdit;
+ dxLayoutItem_unitPieces: TdxLayoutItem;
+ ADO_CJ: TADOQuery;
+ ToolButton1: TToolButton;
+ cxGrid3: TcxGrid;
+ Tv3: TcxGridDBTableView;
+ v3PieceNo: TcxGridDBColumn;
+ Tv3Yardage: TcxGridDBColumn;
+ Tv3Meter: TcxGridDBColumn;
+ v3NetWeight: TcxGridDBColumn;
+ v3GrossWeight: TcxGridDBColumn;
+ Tv3Grade: TcxGridDBColumn;
+ Tv3PacketNo: TcxGridDBColumn;
+ Tv3BatchNO: TcxGridDBColumn;
+ tv3CIID: TcxGridDBColumn;
+ Tv3FtyPCId: TcxGridDBColumn;
+ cxGridLevel2: TcxGridLevel;
+ procedure FormCreate(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure frameBads1cxButton3Click(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormDestroy(Sender: TObject);
+ procedure edtScanDblClick(Sender: TObject);
+ procedure edtScanKeyPress(Sender: TObject; var Key: Char);
+ procedure frameBads1cxCheckBox_readLenPropertiesChange(Sender: TObject);
+ procedure ToolButton8Click(Sender: TObject);
+ procedure SpeedButton1Click(Sender: TObject);
+ procedure SpeedButton_backClick(Sender: TObject);
+ procedure edtScanEnter(Sender: TObject);
+ procedure Edit_fixLenClick(Sender: TObject);
+ procedure BTPrintClick(Sender: TObject);
+ procedure ToolButton7Click(Sender: TObject);
+ procedure ToolButton4Click(Sender: TObject);
+ procedure TrolldelClick(Sender: TObject);
+ procedure ToolButton3Click(Sender: TObject);
+ procedure Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
+ procedure Tv3FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
+ procedure InputLenKeyPress(Sender: TObject; var Key: Char);
+ procedure InputLenPropertiesChange(Sender: TObject);
+ procedure Edit_pieceOrderClick(Sender: TObject);
+ procedure TprintPackClick(Sender: TObject);
+ procedure TlogClick(Sender: TObject);
+ procedure FrameKeyBoard1SpeedButton_backClick(Sender: TObject);
+ procedure FrameKeyBoard1SpeedButton1Click(Sender: TObject);
+ procedure FrameKeyBoard1SpeedButton_ycClick(Sender: TObject);
+ procedure dxLayoutItem1CaptionClick(Sender: TObject);
+ procedure Tv2DblClick(Sender: TObject);
+ procedure lblRuleConversionPropertiesChange(Sender: TObject);
+ procedure frameBads1CIFBegDblClick(Sender: TObject);
+ procedure frameBads1cxCheck_lenPropertiesChange(Sender: TObject);
+ procedure bt_printmdClick(Sender: TObject);
+ procedure dxLayoutControl_packDblClick(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ private
+ FCIID, FOperationStatus, FCIFName, FWorkshop: string;
+ FBCIOID, FOrderNo, FMainId, FSubId, FPCId, FConNo, FConMId, fBuyConNo, FConSId, FQtyUnit: string;
+ FBatchNO, FLenUnit, FC_Code, FC_Name, FC_EName, FC_Spec, FC_Width, FC_GramWeight: string;
+ FC_Color, FC_EColor, FC_ColorNo, FC_StyleNo, FC_Composition, FC_Pattern, FC_CustPattern, FC_ColorDepth: string;
+ Faddwet, faddlen: double;
+ FFtyPCId, FGangNo, FRulePieceNo, FCDUnit: string;
+ FPieceNo: Integer;
+ fIsPack: string;
+ fIsCommopen: Boolean;
+ FPacketCIID: string;
+ fLabPackage, fLabVolume: string;
+ FPacketCount: Integer;
+ fAddwetVirtual: double;
+ fAddLenVirtual: double;
+ fTareType: string;
+ funitPiecesStr: string; //ƴƥ
+ procedure setFocusCtrol(controlName: string);
+ procedure CIFEndChange(Sender: TObject);
+ function CheckData(CKType: string): Boolean;
+ procedure QuantityConversion();
+ procedure ClearGlobal();
+ procedure InitPlan(MSubID: string);
+ procedure SetUnit(MUnit: string);
+ procedure SetDdetails();
+ procedure SetINIFile();
+ procedure GetINIFile();
+ procedure InitCDGrid(MCIID: string);
+ procedure InitCDGridCX(MCIID: string);
+ procedure InitJYGrid();
+ procedure OpenCom(DllName: string);
+ procedure CloseCom(DllName: string);
+ function SaveData(): Boolean;
+ procedure PrtData(MCIID: string; againPring: Boolean = false);
+ procedure PrintBao(PPacketId: string; againPring: Boolean = false);
+ procedure InitJTM(MCIID: string);
+ procedure BadSpeedButtonClick(Sender: TObject);
+ procedure setFormCtrol();
+ procedure PrtMD(MInNo: string);
+ procedure On1201(var Message: Tmessage); message 1201; // ӳ
+ procedure On1301(var Message: Tmessage); message 1301; //
+ procedure initEditPiece();
+ procedure GetPacketNo();
+ procedure getPlanImage(MSubID: string);
+ function deletePack(packId: string): boolean;
+ function checkPicecNo(): boolean;
+ function getCurPieceNO(mCcid: string): string;
+ type
+
+
+ public
+ fmanage: string;
+ fFlileFlag: string;
+ end;
+
+var
+ frmMachRollMain: TfrmMachRollMain;
+ newh, newh1: hwnd;
+
+implementation
+
+uses
+ U_DataLink, U_ControlData, U_ParamSet, U_RTFun, U_globalVar,
+ U_FormLayOutDesign, U_ZDYHelp, U_iniParam, U_ProductListHelp, U_SysLogList,
+ U_LabelPrint, U_TradeClothTotalOutSel;
+{$R *.dfm}
+
+procedure TfrmMachRollMain.BTPrintClick(Sender: TObject);
+var
+ fPrintFile, MPacketId: string;
+ mvalue: double;
+ i: Integer;
+begin
+ try
+ BTPrint.Enabled := false;
+
+ edtScan.SetFocus;
+ if trim(OrderNo.Text) = '' then
+ exit;
+ if trim(grade.Text) = '' then
+ begin
+ Application.MessageBox('ȼΪ!', 'ʾ', 0);
+ exit;
+ end;
+ if CheckData('ύ') = false then
+ exit;
+
+ if FCDUnit <> lblLenUnit.CaptionOptions.Hint then
+ begin
+ Application.MessageBox('λƻò!', 'ʾ', 0);
+ exit;
+ end;
+
+ if SaveData() then
+ begin
+ InputLen.Text := '';
+ presentLen.Text := '';
+ funitPiecesStr := '';
+ presentWeight.Text := '';
+ if BTPrint.Caption = 'ύ' then
+ begin
+ BTPrint.Caption := ' ';
+ cds_params.edit;
+ cds_params.fieldbyName('chen').value := '1';
+ cds_params.fieldbyName('mabiao').value := '1';
+ cds_params.Post;
+
+ if fileexists(ExtractFilePath(Application.ExeName) + 'ijɹ.wav') then
+ playSound(pwidechar('ijɹ.wav'), 0, SND_FILENAME or SND_ASYNC);
+ end
+ else
+ begin
+ if fileexists(ExtractFilePath(Application.ExeName) + 'ȷ.wav') then
+ playSound(pwidechar('ȷ.wav'), 0, SND_FILENAME or SND_ASYNC);
+ end;
+
+ InputWeight.Text := '';
+
+ if trim(cds_params.fieldbyName('outPage').AsString) = '' then
+ begin
+ PrtData(FCIID);
+ end;
+
+ end;
+ InputLen.SetFocus;
+ setFocusCtrol(InputLen.Name);
+ FOperationStatus := '';
+ InitJYGrid();
+ InitCDGrid('');
+ FCIID := '';
+ finally
+ BTPrint.Enabled := true;
+ end;
+end;
+
+procedure TfrmMachRollMain.bt_printmdClick(Sender: TObject);
+var
+ WSql: string;
+begin
+ if cds_3.IsEmpty then
+ Exit;
+
+ WSql := '';
+ cds_3.DisableControls;
+ with cds_3 do
+ begin
+ First;
+ while not Eof do
+ begin
+
+ if WSql <> '' then
+ begin
+ WSql := WSql + ',' + Trim(cds_3.fieldbyname('CIID').AsString);
+ end
+ else
+ begin
+ WSql := Trim(cds_3.fieldbyname('CIID').AsString);
+ end;
+
+ Next;
+ end;
+ end;
+
+ cds_3.EnableControls;
+// try
+// frmMdPrint := TfrmMdPrint.Create(Application);
+// with frmMdPrint do
+// begin
+// FLMType := '뵥';
+// FFiltration1 := WSql;
+// FFiltration2 := WSql;
+// if ShowModal = 1 then
+// begin
+//// Self.InitGrid();
+// end;
+// end;
+// finally
+// frmMdPrint.Free;
+// end;
+ try
+ frmLabelPrint := TfrmLabelPrint.Create(Application);
+ with frmLabelPrint do
+ begin
+ FLMType := '뵥';
+ FFiltration1 := WSql;
+ if ShowModal = 1 then
+ begin
+// Self.InitGrid();
+ end;
+ end;
+ finally
+ frmLabelPrint.Free;
+ end;
+end;
+
+procedure TfrmMachRollMain.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ if fIsCommopen then
+ begin
+ CloseCom(DZCDYDllName);
+ CloseCom(MBDYDllName);
+ end;
+ Action := caFree;
+end;
+
+procedure TfrmMachRollMain.FormCreate(Sender: TObject);
+begin
+ inherited;
+ fIsCommopen := false;
+ cds_params.Close;
+ cds_params.CreateDataSet;
+ Panel_right.Align := alClient;
+ frameBads1.CIFBeg.OnEnter := edtScanEnter;
+ frameBads1.CIFEnd.OnEnter := edtScanEnter;
+ frameBads1.CIFNumber.OnEnter := edtScanEnter;
+ frameBads1.SubtractQty.OnEnter := edtScanEnter;
+ frameBads1.CIFQty.OnEnter := edtScanEnter;
+
+end;
+
+procedure TfrmMachRollMain.FormDestroy(Sender: TObject);
+begin
+ inherited;
+ frmMachRollMain := nil;
+end;
+
+procedure TfrmMachRollMain.FormShow(Sender: TObject);
+var
+ i: Integer;
+begin
+ inherited;
+ gIsCanDesign := gIsCanDesign; //IsHasDesignRight(ADOQueryBaseTemp, PWideChar(dCode));
+ gGridNativeSet := true;
+ if gIsCanDesign then
+ begin
+ cxGridPopupMenu1.Grid := cxGrid3;
+ end;
+ TgridLiSet.Visible := gIsCanDesign;
+ InitDevCombobox(ADOQueryBaseTemp, grade, 'CPGRADE');
+ ReadCxGrid(trim(Self.Caption) + 'Tv1', TV1, gDllFileCaption);
+ ReadCxGrid(trim(Self.Caption) + 'Tv2', Tv2, gDllFileCaption);
+ ReadCxGrid(trim(Self.Caption) + 'Tv3', Tv3, gDllFileCaption);
+ // fDllFileName + '|' + Self.Name + '|' + dxLayoutControl_pack.Name+ '.ini'
+ readLayOut(dxLayoutControl_pack, ADOQueryBaseTemp, PWideChar(fDllFileName + '|' + self.name + '|' + dxLayoutControl_pack.Name + '.ini'));
+ frameBads1.fBadBtnSize := gBcSpeedSize;
+ frameBads1.InitBadPanel;
+ with frameBads1.cxScrollBox1 do
+ begin
+ for i := 0 to ControlCount - 1 do
+ begin
+ if Controls[i] is TSpeedButton then
+ begin
+ TSpeedButton(Controls[i]).OnClick := BadSpeedButtonClick;
+ end;
+ end;
+ end;
+ InitCDGrid(FCIID);
+
+ if IsINIFile() then
+ ReadINIFile()
+ else
+ WriteINIFile;
+
+ GetINIFile();
+ setFormCtrol();
+ if trim(fmanage) <> 'Ȩ' then
+ begin
+ if trim(DZCDYDllName) <> '' then
+ OpenCom(DZCDYDllName);
+ if trim(MBDYDllName) <> '' then
+ OpenCom(MBDYDllName);
+
+ end;
+ if trim(fCanInputFs) = '1' then
+ begin
+ cxGroupBox_keys.ClientHeight := round(cxGrid3.ClientHeight * 0.6);
+ frameKeyBoard1.SpeedButton10.Visible := true;
+ end
+ else
+ begin
+ cxGroupBox_keys.ClientHeight := round(cxGrid3.ClientHeight * 0.55);
+ frameKeyBoard1.SpeedButton10.Visible := false;
+ end;
+end;
+
+procedure TfrmMachRollMain.frameBads1CIFBegDblClick(Sender: TObject);
+begin
+ inherited;
+ if strTofloatDef(trim(frameBads1.CIFBeg.text), 0) = 0 then
+ frameBads1.CIFBeg.text := inputLen.Text;
+end;
+
+procedure TfrmMachRollMain.frameBads1cxButton3Click(Sender: TObject);
+begin
+ inherited;
+ frameBads1.Visible := false;
+
+end;
+
+procedure TfrmMachRollMain.frameBads1cxCheckBox_readLenPropertiesChange(Sender: TObject);
+begin
+ inherited;
+ frameBads1.CIFBeg.Text := '';
+// if trim(TcxTextEdit(Sender).Text) = '' then
+// begin
+// frameBads1.CIFBeg.Text := '';
+// end
+// else
+// begin
+// frameBads1.CIFBeg.Text := '';
+// end;
+end;
+
+procedure TfrmMachRollMain.frameBads1cxCheck_lenPropertiesChange(Sender: TObject);
+begin
+ inherited;
+ if frameBads1.cxCheck_len.Checked and (trim(InputLen.Text) <> '') then
+ begin
+ frameBads1.CIFBeg.Text := trim(InputLen.Text);
+ frameBads1.CIFEnd.SetFocus;
+ end
+ else
+ begin
+ frameBads1.CIFBeg.Text := ''
+ end;
+end;
+
+procedure TfrmMachRollMain.FrameKeyBoard1SpeedButton1Click(Sender: TObject);
+var
+ fsj: string;
+ mComponent: TComponent;
+ mkey: Char;
+begin
+ fsj := trim(TSpeedButton(Sender).Hint);
+ if trim(fsj) = '' then
+ exit;
+ mComponent := FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ mComponent := frameBads1.FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ exit;
+ if TcxTextEdit(mComponent).Name = 'KuangHao' then
+ exit;
+ if (TcxTextEdit(mComponent).Name = 'edtScan') and (trim(TSpeedButton(Sender).Caption) = 'س') then
+ begin
+ mkey := #13;
+ edtScanKeyPress(edtScan, mkey);
+ exit;
+ end;
+ fsj := trim(TcxTextEdit(mComponent).Text);
+ if mComponent is TcxCurrencyEdit then
+ begin
+ TcxCurrencyEdit(mComponent).text := fsj + trim(TSpeedButton(Sender).Caption);
+ TcxCurrencyEdit(mComponent).SelectAll;
+ end
+ else
+ begin
+ TcxTextEdit(mComponent).Text := fsj + trim(TSpeedButton(Sender).Caption);
+ TcxTextEdit(mComponent).SelectAll;
+ end;
+
+end;
+
+procedure TfrmMachRollMain.FrameKeyBoard1SpeedButton_backClick(Sender: TObject);
+var
+ fsj: string;
+ mComponent: TComponent;
+begin
+ mComponent := FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ mComponent := frameBads1.FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ exit;
+ fsj := trim(TcxTextEdit(mComponent).Text);
+ if trim(fsj) = '' then
+ exit;
+ TcxTextEdit(mComponent).Text := copy(fsj, 1, Length(fsj) - 1);
+ TcxTextEdit(mComponent).SelectAll;
+
+end;
+
+procedure TfrmMachRollMain.FrameKeyBoard1SpeedButton_ycClick(Sender: TObject);
+begin
+ inherited;
+ cxGroupBox_keys.Visible := false;
+end;
+
+function TfrmMachRollMain.CheckData(CKType: string): Boolean;
+var
+ mvalue: double;
+ mCurPieceNo: Integer;
+begin
+ Result := false;
+ mCurPieceNo := strtointdef(trim(Pieceno.Text), 0);
+ try
+ if trim(FBCIOID) = '' then
+ raise Exception.create('ɨ̿');
+
+ if trim(CKType) = 'ύ' then
+ begin
+ if (cds_params.fieldbyName('BeginPieceNo').AsInteger > cds_params.fieldbyName('endPieceNo').AsInteger) then
+ begin
+ if (mCurPieceNo > 0) and not ((mCurPieceNo <= cds_params.fieldbyName('BeginPieceNo').AsInteger) and (mCurPieceNo >= cds_params.fieldbyName('endPieceNo').AsInteger)) then
+ begin
+ Application.MessageBox('ֶŲõķΧ!', 'ʾϢ', 0);
+ Exit;
+ end;
+ end;
+ if (cds_params.fieldbyName('BeginPieceNo').AsInteger < cds_params.fieldbyName('endPieceNo').AsInteger) then
+ begin
+ if (mCurPieceNo > 0) and not ((mCurPieceNo >= cds_params.fieldbyName('BeginPieceNo').AsInteger) and (mCurPieceNo <= cds_params.fieldbyName('endPieceNo').AsInteger)) then
+ begin
+ Application.MessageBox('ֶŲõķΧ!', 'ʾϢ', 0);
+ Exit;
+ end;
+ end;
+
+ if trim(cds_params.fieldbyName('dabao').AsString) = '' then
+ begin
+ if strtointdef(edtPacketNo.Text, 0) = 0 then
+ raise Exception.create('ŲΪ!');
+ if cds_params.fieldbyName('packRolls').AsInteger = 0 then
+ raise Exception.create('ÿδ!');
+
+ end;
+
+ if (strtointdef(PieceNo.Text, 0) = 0) and (trim(cds_params.fieldbyName('rollNoMake').AsString) = 'ֶ') then
+ raise Exception.create('ŲΪ!');
+
+ if trim(lblLenUnit.CaptionOptions.Hint) = '' then
+ raise Exception.create('ȵλΪ!');
+
+ if trim(InputWeight.Text) <> '' then
+ begin
+ if TryStrToFloat(InputWeight.Text, mvalue) = false then
+ raise Exception.create('¼!');
+ if strtofloatdef(trim(InputWeight.Text), 0) < cds_params.fieldbyName('minWeight').AsInteger then
+ raise Exception.create('С' + cds_params.fieldbyName('minWeight').AsString + '!');
+ if strtofloatdef(trim(InputWeight.Text), 0) > cds_params.fieldbyName('maxWeight').AsInteger then
+ raise Exception.create('ܴ' + cds_params.fieldbyName('maxWeight').AsString + '!');
+ end;
+
+ if trim(InputLen.Text) <> '' then
+ begin
+ if TryStrToFloat(InputLen.Text, mvalue) = false then
+ raise Exception.create('¼!');
+ if strtofloatdef(trim(InputLen.Text), 0) < cds_params.fieldbyName('minLen').AsInteger then
+ raise Exception.create('ȲС' + cds_params.fieldbyName('minLen').AsString + '!');
+ if strtofloatdef(trim(InputLen.Text), 0) > cds_params.fieldbyName('maxLen').AsInteger then
+ raise Exception.create('Ȳܴ' + cds_params.fieldbyName('maxLen').AsString + '!');
+ end;
+
+ if (strtofloatdef(trim(InputLen.Text), 0) = 0) and (strtofloatdef(trim(InputWeight.Text), 0) = 0) and (strtofloatdef(trim(Edit_fixLen.Text), 0) = 0) then
+ raise Exception.create('ȺܶΪ0!!');
+ end;
+ Result := true;
+ except
+ Application.MessageBox(pchar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+end;
+
+procedure TfrmMachRollMain.ClearGlobal();
+begin
+ FBCIOID := '';
+ FOrderNo := '';
+ FConNo := '';
+ FConMId := '';
+ FConSId := '';
+ FQtyUnit := '';
+ FMainId := '';
+ FSubId := '';
+ FPCId := '';
+ FC_CustPattern := '';
+ FC_ColorDepth := '';
+ FFtyPCId := '';
+ FGangNo := '';
+ FC_Code := '';
+ FC_Name := '';
+ FBatchNO := '';
+ FC_Spec := '';
+ FC_Color := '';
+ FC_ColorNo := '';
+ FC_EColor := '';
+ FC_StyleNo := '';
+ FC_Composition := '';
+ FC_Width := '';
+ FC_GramWeight := '';
+ FC_Pattern := '';
+ FCIID := '';
+ FWorkshop := '';
+ InputLen.Text := '';
+ Coefficient.Text := '';
+ AOrdDefNote1.Text := '';
+ Tare.Text := '';
+ InputWeight.Text := '';
+ FLenUnit := '';
+ BatchNO.Text := '';
+ Faddwet := 0;
+ faddlen := 0;
+ FPacketCIID := '';
+ FPacketCount := 0;
+
+end;
+
+procedure TfrmMachRollMain.QuantityConversion();
+begin
+ // if trim(OrderNo.Text)='' then exit;
+
+ if cds_params.fieldbyName('weightRule').AsInteger = 0 then
+ // InputWeight ë OutPutWeight
+ begin
+ if lblRuleConversion.Text <> 'ת' then
+ begin
+ if lblRuleConversion.Text = 'ת' then
+ begin
+ InputWeight.Text := floattostr(strtofloatdef(trim(InputLen.Text), 0) * strtofloatdef(trim(Coefficient.Text), 0) + strtofloatdef(trim(Tare.Text), 0));
+ end;
+ if lblRuleConversion.Text = 'ëת' then
+ begin
+ InputLen.Text := floattostr(strtofloatdef(trim(InputWeight.Text), 0) * strtofloatdef(trim(Coefficient.Text), 0));
+ end;
+ if lblRuleConversion.Text = 'ת' then
+ begin
+ InputLen.Text := floattostr((RoundFloat(strtofloatdef(trim(InputWeight.Text), 0), 1) - strtofloatdef(trim(Tare.Text), 0)) * strtofloatdef(trim(Coefficient.Text), 0));
+ end;
+ end;
+ if strtofloatdef(trim(InputWeight.Text), 0) > 0 then
+ begin
+ OutPutWeight.Text := floattostr((strtofloatdef(trim(InputWeight.Text), 0) - strtofloatdef(trim(Tare.Text), 0))); //
+ end;
+ end;
+
+ if cds_params.fieldbyName('weightRule').AsInteger = 1 then
+ // InputWeight OutPutWeight ë
+ begin
+ if lblRuleConversion.Text <> 'ת' then
+ begin
+ if lblRuleConversion.Text = 'ת' then
+ begin
+ InputWeight.Text := floattostr(strtofloatdef(trim(InputLen.Text), 0) * strtofloatdef(trim(Coefficient.Text), 0));
+ end;
+ if lblRuleConversion.Text = 'ëת' then
+ begin
+ InputLen.Text := floattostr((strtofloatdef(trim(InputWeight.Text), 0) + strtofloatdef(trim(Tare.Text), 0)) * strtofloatdef(trim(Coefficient.Text), 0));
+ end;
+ if lblRuleConversion.Text = 'ת' then
+ begin
+ InputLen.Text := floattostr(RoundFloat(strtofloatdef(trim(InputWeight.Text), 0), 1) * strtofloatdef(trim(Coefficient.Text), 0));
+ end;
+ end;
+ if strtofloatdef(trim(InputWeight.Text), 0) > 0 then
+ begin
+ OutPutWeight.Text := floattostr((strtofloatdef(trim(InputWeight.Text), 0) + strtofloatdef(trim(Tare.Text), 0))); // ë
+ end;
+ end;
+
+end;
+
+procedure TfrmMachRollMain.InitPlan(MSubID: string);
+begin
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('EXEC P_Trade_Insp_Get_plan @BCIOID=''' + trim(MSubID) + '''');
+ Open;
+
+ if not IsEmpty then
+ begin
+ getPlanImage(trim(MSubID));
+
+ FLenUnit := trim(ADOQueryBaseTemp.fieldbyName('ruleLenUnit').AsString);
+ if FLenUnit = '' then
+ begin
+ FLenUnit := 'M';
+ end;
+ fLabPackage := trim(ADOQueryBaseTemp.fieldbyName('LabPackage').AsString);
+ fLabVolume := trim(ADOQueryBaseTemp.fieldbyName('LabVolume').AsString);
+ if (FLenUnit = '') then
+ begin
+ ShowMessage('ƻװδóȵλ!');
+ end;
+
+ SetUnit(FLenUnit);
+
+ FCDUnit := lblLenUnit.CaptionOptions.Hint;
+
+ FBCIOID := trim(fieldbyName('BCIOID').AsString);
+ FConMId := trim(fieldbyName('ConMId').AsString);
+ FConSId := trim(fieldbyName('ConSId').AsString);
+ FQtyUnit := trim(fieldbyName('OrdUnit').AsString);
+ FConNo := trim(fieldbyName('ConNo').AsString);
+ FOrderNo := trim(fieldbyName('OrderNo').AsString);
+ fBuyConNo := trim(fieldbyName('BuyConNo').AsString);
+ FMainId := trim(fieldbyName('MainId').AsString);
+ FSubId := trim(fieldbyName('SubId').AsString);
+ // FPCId := Trim(ADOTmp.fieldbyname('ToPCId').AsString);
+ // FC_CustPattern := Trim(ADOTmp.fieldbyname('C_CustPattern').AsString);
+ // FC_ColorDepth := Trim(ADOTmp.fieldbyname('C_ColorDepth').AsString);
+ // FWorkshop := Trim(ADOTmp.fieldbyname('Workshop').AsString);
+ FC_StyleNo := trim(fieldbyName('C_StyleNo').AsString);
+ FC_Composition := trim(fieldbyName('C_Composition').AsString);
+ FC_Code := trim(fieldbyName('C_Code').AsString);
+ FC_Name := trim(fieldbyName('C_Name').AsString);
+ FC_EName := trim(fieldbyName('C_EName').AsString);
+ FBatchNO := Trim(fieldbyname('BatchNO').AsString);
+ FC_Spec := trim(fieldbyName('C_Spec').AsString);
+ FC_Color := trim(fieldbyName('C_Color').AsString);
+ FC_ColorNo := trim(fieldbyName('C_ColorNo').AsString);
+ FC_EColor := trim(fieldbyName('C_EColor').AsString);
+ FC_Width := trim(fieldbyName('C_Width').AsString);
+ FC_GramWeight := trim(fieldbyName('C_GramWeight').AsString);
+ C_width.Text := FC_Width;
+ C_GramWeight.Text := FC_GramWeight;
+ FC_Pattern := trim(fieldbyName('C_Pattern').AsString);
+ C_Pattern.Text := trim(fieldbyName('C_Pattern').AsString);
+ FFtyPCId := trim(fieldbyName('FtyPCId').AsString);
+ FRulePieceNo := trim(fieldbyName('RulePieceNo').AsString);
+ //
+ Faddwet := fieldbyName('RuleAddwet').AsFloat;
+ //ӳ
+ faddlen := fieldbyName('RuleAddLen').AsFloat;
+
+ addwet.text := floatTostr(Faddwet);
+ addLen.text := floatTostr(fAddLen);
+
+ fAddwetVirtual := fieldbyName('RuleAddwetVirtual').AsFloat;
+ fAddLenVirtual := fieldbyName('RuleAddLenVirtual').AsFloat;
+ // ɹ
+ if (FRulePieceNo = 'ֶ') or (FRulePieceNo = 'ֶ') then
+ begin
+ cds_params.edit;
+ cds_params.fieldbyName('rollNoMake').value := 'ֶ';
+ cds_params.Post;
+ dxLayoutItem_roll.Visible := true;
+ PieceNo.Text := '';
+ end;
+ // ɹ
+ if (trim(fieldbyName('RulePackNo').AsString) = 'ֶ') or (trim(fieldbyName('RulePackNo').AsString) = 'ֶ') then
+ begin
+ cds_params.edit;
+ cds_params.fieldbyName('packNoMake').value := 'ֶ';
+ cds_params.Post;
+ dxLayoutItem_packno.Visible := true;
+ edtPacketNo.Text := '';
+ end;
+ // ÿ
+ cds_params.edit;
+ cds_params.fieldbyName('packRolls').value := fieldbyName('packRolls').AsInteger;
+ cds_params.fieldbyName('packlabnumber').value := fieldbyName('packlabnumber').AsInteger;
+ cds_params.fieldbyName('packPostAction').value := trim(fieldbyName('packPostAction').AsString);
+ if (fieldbyName('packRolls').AsInteger > 0) and (trim(fieldbyName('RulePackNo').AsString) <> '') then
+ begin
+ cds_params.fieldbyName('dabao').value := '';
+ end
+ else
+ begin
+ cds_params.fieldbyName('dabao').value := '';
+ end;
+ if fieldbyName('DecimalY').AsInteger > 0 then
+ cds_params.fieldbyName('Yplace').value := fieldbyName('DecimalY').AsInteger;
+ if fieldbyName('DecimalM').AsInteger > 0 then
+ cds_params.fieldbyName('MPlace').value := fieldbyName('DecimalM').AsInteger;
+ if fieldbyName('DecimalKg').AsInteger > 0 then
+ cds_params.fieldbyName('kgPlace').value := fieldbyName('DecimalKg').AsInteger;
+
+ //
+ cds_params.fieldbyName('outPage').value := '';
+
+ cds_params.Post;
+ //
+// BatchNO.Text := trim(fieldbyName('batchNo').AsString);
+
+ Coefficient.Text := trim(fieldbyName('Coefficient').AsString);
+
+ // תϵ
+ lblRuleConversion.ItemIndex := lblRuleConversion.Properties.Items.IndexOf(fieldbyName('RuleConversion').AsString);
+
+ OrderNo.Text := FOrderNo;
+ CodeName.Text := FC_Name;
+ ColorNo.Text := FC_ColorNo;
+ Color.Text := FC_Color;
+ FtyPCId.Text := FFtyPCId;
+ BCIOID.Text := FBCIOID;
+ Piece.Text := trim(fieldbyName('ordPiece').AsString);
+ Qty.Text := trim(fieldbyName('ordQty').AsString) + trim(fieldbyName('ordUnit').AsString);
+ //
+ Tare.Text := trim(fieldbyName('RuleLaterTare').AsString);
+
+ fTareType := '';
+
+ if fieldbyName('RuleYardstick').AsInteger > 0 then
+ RuleYardstick.Text := trim(fieldbyName('RuleYardstick').AsString)
+ else
+ RuleYardstick.Text := '100';
+ packnote.Lines.Clear;
+// packnote.Lines.Add('װҪ');
+// packnote.Lines.Add(trim(fieldbyName('packnote').AsString));
+// packnote.Lines.Add('ע');
+// packnote.Lines.Add(trim(fieldbyName('ordnote').AsString));
+ // dxLayoutItem_pieceorder
+ if StrToFloatDef(fieldbyName('FixedLength').AsString, 0) > 0 then
+ begin
+ dxLayoutItem_fixlen.Visible := true;
+ // Edit_fixLen.Text := '';
+ Edit_fixLen.Text := trim(fieldbyName('FixedLength').AsString);
+ end
+ else
+ begin
+ dxLayoutItem_fixlen.Visible := false;
+ Edit_fixLen.Text := '';
+ end;
+
+ InputLen.SetFocus;
+ setFocusCtrol(InputLen.Name);
+ SetDdetails();
+ end
+ else
+ begin
+ // ClearGlobal();
+ application.MessageBox('쳣,Ϣʹ!', 'Ϣ');
+ end;
+ end;
+ InitJYGrid();
+ InitCDGrid(FCIID);
+ edtScan.Text := '';
+
+ // ʾ
+ setFormCtrol();
+
+end;
+
+procedure TfrmMachRollMain.InputLenKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ Key := #0;
+ SelectNext(ActiveControl as TWinControl, true, true);
+ end;
+
+end;
+
+procedure TfrmMachRollMain.InputLenPropertiesChange(Sender: TObject);
+begin
+
+ // if StrToIntDef(trim(InputWeight.Text), 0) = 0 then
+ // begin
+ // exit;
+ // end;
+ QuantityConversion();
+end;
+
+procedure TfrmMachRollMain.lblRuleConversionPropertiesChange(Sender: TObject);
+begin
+ inherited;
+ if lblRuleConversion.Text = 'ת' then
+ begin
+ OutPutWeight.Text := '';
+ InputLen.Text := '';
+ InputWeight.Text := '';
+ end;
+ QuantityConversion();
+end;
+
+procedure TfrmMachRollMain.SetUnit(MUnit: string);
+begin
+ // lblLenUnit.Caption := MUnit;
+ lblLenUnit.CaptionOptions.Hint := MUnit;
+ lblLenUnit.CaptionOptions.Text := '[B][SIZE=16]' + MUnit + '[/SIZE][/B]';
+ // lblLenUnit1.Caption := MUnit;
+ frameBads1.lblLenUnit1.Caption := MUnit;
+end;
+
+procedure TfrmMachRollMain.SpeedButton1Click(Sender: TObject);
+var
+ fsj: string;
+ mComponent: TComponent;
+begin
+ fsj := trim(TSpeedButton(Sender).Hint);
+ if trim(fsj) = '' then
+ exit;
+ mComponent := FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ mComponent := frameBads1.FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ exit;
+ if TcxTextEdit(mComponent).Name = 'KuangHao' then
+ exit;
+ fsj := trim(TcxTextEdit(mComponent).Text);
+ TcxTextEdit(mComponent).Text := fsj + trim(TSpeedButton(Sender).Caption);
+ TcxTextEdit(mComponent).SelectAll;
+
+end;
+
+procedure TfrmMachRollMain.SpeedButton_backClick(Sender: TObject);
+var
+ fsj: string;
+ mComponent: TComponent;
+begin
+ mComponent := FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ mComponent := frameBads1.FindComponent(trim(TSpeedButton(Sender).Hint));
+ if mComponent = nil then
+ exit;
+ fsj := trim(TcxTextEdit(mComponent).Text);
+ if trim(fsj) = '' then
+ exit;
+ TcxTextEdit(mComponent).Text := copy(fsj, 1, Length(fsj) - 1);
+ TcxTextEdit(mComponent).SelectAll;
+
+end;
+
+procedure TfrmMachRollMain.ToolButton1Click(Sender: TObject);
+begin
+
+ frmParamSet := TfrmParamSet.create(Self);
+ with frmParamSet do
+ begin
+ cds_params.Data := Self.cds_params.Data;
+ if ShowModal = 1 then
+ begin
+ Self.cds_params.Data := cds_params.Data;
+ setFormCtrol();
+ end;
+ free;
+ end;
+ SetINIFile();
+ if trim(fmanage) <> 'Ȩ' then
+ begin
+ if (trim(MBDYDllName) <> '') and not fIsCommopen then
+ OpenCom(MBDYDllName);
+
+ // edtScan.SetFocus;
+
+ end;
+end;
+
+procedure TfrmMachRollMain.ToolButton3Click(Sender: TObject);
+begin
+ if cds_3.IsEmpty then
+ exit;
+ PrtData(cds_3.fieldbyName('CIID').AsString);
+
+end;
+
+procedure TfrmMachRollMain.ToolButton4Click(Sender: TObject);
+begin
+ try
+ frmZDYHelp := TfrmZDYHelp.create(Application);
+ with frmZDYHelp do
+ begin
+ ToolButton1.Visible := false;
+ DConString := Self.ADOQueryBaseCmd.Connection.ConnectionString;
+ flag := 'WFBCD';
+ flagname := 'õ';
+ fnote := true;
+ V1Note.Caption := 'Ӣ';
+ if ShowModal = 1 then
+ begin
+ Self.frameBads1.InitBadPanel();
+ end;
+ end;
+ finally
+ frmZDYHelp.free;
+ end;
+
+end;
+
+procedure TfrmMachRollMain.TrolldelClick(Sender: TObject);
+var
+ mCiid: string;
+begin
+ if cds_3.IsEmpty then
+ exit;
+ if Trim(cds_3.FieldByName('packetid').AsString) <> '' then
+ begin
+ if Application.MessageBox(pchar('ȷҪɾѡ' + Trim(cds_3.FieldByName('packetNo').AsString) + 'ľ'), 'ʾ', 32 + 4) <> IDYES then
+ exit;
+ deletePack(Trim(cds_3.FieldByName('packetid').AsString));
+ exit;
+ end
+ else
+ begin
+ if Application.MessageBox('ȷҪɾѡľ', 'ʾ', 32 + 4) <> IDYES then
+ exit;
+ end;
+ ADOQueryBaseCmd.Connection.BeginTrans;
+ try
+ mCiid := trim(cds_3.fieldbyName('CIID').AsString);
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from BS_Cloth_IO where StkId=''' + trim(mCiid) + ''' and IOFlag=''''');
+ Open;
+
+ if not IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ exit;
+ end;
+ end;
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('insert into Trade_Need_Up(UType,UOperation,UDataId,uoperator) values('''',''ɾ'',' + QuotedStr(mCiid) + ',' + QuotedStr(DName) + ') ');
+ ExecSQL;
+ end;
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_Del ');
+ SQL.Add('@CIIDS=' + QuotedStr(mCiid));
+ SQL.Add(',@DCode=' + QuotedStr(DCode));
+ SQL.Add(',@DName=' + QuotedStr(DName));
+ Open;
+ end;
+ if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
+ end;
+ ADOQueryBaseCmd.Connection.CommitTrans;
+ if (FPacketCount > 0) and (ansipos(mCiid, FPacketCIID) > 0) then
+ begin
+ FPacketCount := FPacketCount - 1;
+ FPacketCIID := FPacketCIID.Replace(mCiid, '');
+ if FPacketCIID = ',' then
+ FPacketCIID := '';
+
+ end;
+
+ cds_3.Delete;
+ Application.MessageBox('ɾɹ', 'ʾϢ');
+ except
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ Application.MessageBox(pchar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+
+end;
+
+procedure TfrmMachRollMain.Tv2DblClick(Sender: TObject);
+begin
+ inherited;
+ if Application.MessageBox('ȷҪɾǰü¼', 'Ϣ', 1) = 2 then
+ exit;
+ CDS_2.Delete;
+end;
+
+procedure TfrmMachRollMain.Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
+begin
+ if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('Grade').Index] = 'Ʒ' then
+ ACanvas.Brush.Color := clRed;
+end;
+
+procedure TfrmMachRollMain.Tv3FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
+begin
+ inherited;
+
+ InitCDGridCX(cds_3.fieldbyName('CIID').AsString);
+end;
+
+procedure TfrmMachRollMain.TlogClick(Sender: TObject);
+begin
+ frmSysLogList := TfrmSysLogList.create(Self);
+ with frmSysLogList do
+ begin
+ fModel := Self.Caption;
+ FMainId := trim(Self.FMainId);
+ ShowModal;
+ free;
+ end;
+
+end;
+
+procedure TfrmMachRollMain.ToolButton7Click(Sender: TObject);
+begin
+ WriteCxGrid(trim(Self.Caption) + 'Tv1', TV1, gDllFileCaption);
+ WriteCxGrid(trim(Self.Caption) + 'Tv2', Tv2, gDllFileCaption);
+ WriteCxGrid(trim(Self.Caption) + 'Tv3', Tv3, gDllFileCaption);
+ if gIsCanDesign then
+ begin
+ saveLayOut(application, dxLayoutControl_pack, ADOQueryBaseCmd, PWideChar(fDllFileName + '|' + Self.Name + '|' + dxLayoutControl_pack.Name + '.ini'));
+ end;
+end;
+
+procedure TfrmMachRollMain.ToolButton8Click(Sender: TObject);
+begin
+ inherited;
+ Close;
+end;
+
+procedure TfrmMachRollMain.TprintPackClick(Sender: TObject);
+begin
+ if cds_3.IsEmpty or (trim(cds_3.fieldbyName('PacketId').AsString) = '') then
+ exit;
+ PrintBao(trim(cds_3.fieldbyName('PacketId').AsString));
+end;
+
+procedure TfrmMachRollMain.setFocusCtrol(controlName: string);
+var
+ i: Integer;
+begin
+ with FrameKeyBoard1.dxPanel1 do
+ begin
+ for i := 0 to ControlCount - 1 do
+ begin
+ if Controls[i] is TSpeedButton then
+ begin
+ TSpeedButton(Controls[i]).Hint := trim(controlName);
+ if (trim(controlName) = 'edtScan') and (TSpeedButton(Controls[i]).Name = 'SpeedButton_dot') then
+ begin
+ TSpeedButton(Controls[i]).Caption := 'س';
+ end
+ else if (TSpeedButton(Controls[i]).Name = 'SpeedButton_dot') then
+ begin
+ TSpeedButton(Controls[i]).Caption := '.';
+ end;
+ end;
+ end;
+ end;
+ cxGroupBox_keys.Left := Panel_right.Left + 5;
+ cxGroupBox_keys.Visible := true;
+end;
+
+procedure TfrmMachRollMain.CIFEndChange(Sender: TObject);
+var
+ mvalue: double;
+begin
+ if trim(frameBads1.CIFBeg.Text) <> '' then
+ begin
+ if TryStrToFloat(frameBads1.CIFBeg.Text, mvalue) = false then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ exit;
+ end;
+ end
+ else
+ begin
+ exit;
+ end;
+ if trim(frameBads1.CIFEnd.Text) <> '' then
+ begin
+ if TryStrToFloat(frameBads1.CIFEnd.Text, mvalue) = false then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ exit;
+ end;
+ end
+ else
+ begin
+ exit;
+ end;
+ frameBads1.CIFQty.Text := floattostr(StrToFloat(frameBads1.CIFEnd.Text) - StrToFloat(frameBads1.CIFBeg.Text));
+end;
+
+procedure TfrmMachRollMain.SetDdetails();
+begin
+ AOrdDefNote1.Text := '';
+ if fBuyConNo <> '' then
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'ͻ:' + fBuyConNo + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FBCIOID + #13;
+ if FC_EName <> '' then
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'Ʒ:' + FC_Name + '(' + FC_EName + ')' + #13
+ else
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'Ʒ:' + FC_Name + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'ŷ:' + FC_Width + ' :' + FC_GramWeight + #13;
+ // AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_GramWeight + #13;
+ // AOrdDefNote1.Text := AOrdDefNote1.Text + 'ɫ:' + FC_Color + ' ɫ:' + FC_ColorNo + #13;
+ // AOrdDefNote1.Text := AOrdDefNote1.Text + 'ɫ:' + FC_ColorNo + #13;
+ if FC_StyleNo <> '' then
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_StyleNo + #13;
+ if abs(Faddwet) > 0 then
+ begin
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_Pattern + ' :' + floattostr(Faddwet) + #13;
+ end
+ else if abs(faddlen) > 0 then
+ begin
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_Pattern + ' ӳ:' + floattostr(faddlen) + #13;
+ end
+ else
+ begin
+ if FC_Pattern <> '' then
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_Pattern + #13;
+ end;
+
+ if FRulePieceNo <> '' then
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'Ź:' + FRulePieceNo + #13;
+
+ if gMachOperators <> '' then
+ AOrdDefNote1.Text := AOrdDefNote1.Text + '̨Ա:' + gMachOperators + #13;
+
+end;
+
+procedure TfrmMachRollMain.SetINIFile();
+begin
+ IsDZCDYDll := trim(cds_params.fieldbyName('chen').AsString);
+ IsMBDYDll := trim(cds_params.fieldbyName('mabiao').AsString);
+ IsMBDYDllUnit := trim(cds_params.fieldbyName('mbunit').AsString);
+
+ LabQty := trim(cds_params.fieldbyName('labNumber').AsString);
+ FMinLen := trim(cds_params.fieldbyName('minLen').AsString);
+ FMaxLen := trim(cds_params.fieldbyName('maxLen').AsString);
+ FMinWeight := trim(cds_params.fieldbyName('minweight').AsString);
+ FMaxWeight := trim(cds_params.fieldbyName('maxweight').AsString);
+
+ FMPlace := trim(cds_params.fieldbyName('mplace').AsString);
+ FYPlace := trim(cds_params.fieldbyName('yplace').AsString);
+ FKgPlace := trim(cds_params.fieldbyName('kgplace').AsString);
+
+ WriteINIFile();
+
+end;
+
+//
+procedure TfrmMachRollMain.setFormCtrol();
+begin
+ if cds_params.fieldbyName('dabao').AsString = '' then
+ begin
+ dxLayoutItem_packno.Visible := true;
+ Tv3PacketNo.Visible := true;
+ //
+ if (trim(cds_params.fieldbyName('packPostAction').AsString) <> 'Զ') then
+ begin
+ dxLayoutItem_packpost.Visible := true;
+ end
+ else
+ dxLayoutItem_packpost.Visible := false;
+ //
+ if cds_3.IsEmpty then
+ edtPacketNo.Text := '1'
+ else
+ GetPacketNo();
+ end
+ else
+ begin
+ dxLayoutItem_packno.Visible := false;
+ Tv3PacketNo.Visible := false;
+ dxLayoutItem_packpost.Visible := false;
+ edtPacketNo.Text := '';
+ end;
+ //
+ if cds_params.fieldbyName('weightRule').AsInteger = 0 then
+ dxLayoutItem_outweight.Caption := '[COLOR=Red][SIZE=18][/COLOR][/SIZE]'
+ else
+ dxLayoutItem_outweight.Caption := '[COLOR=Red][SIZE=18]ë[/COLOR][/SIZE]';
+
+ if cds_params.fieldbyName('rollnoMake').AsString = 'ֶ' then
+ begin
+ // PieceNo.Enabled:=true;
+ PieceNo.Properties.ReadOnly := false;
+
+ if cds_params.fieldbyName('BeginPieceNo').AsInteger > 0 then
+ begin
+ PieceNo.Text := cds_params.fieldbyName('BeginPieceNo').AsString;
+ end;
+ //
+ if (cds_params.fieldbyName('EndPieceNo').AsInteger > 0) and (cds_params.fieldbyName('BeginPieceNo').AsInteger > cds_params.fieldbyName('EndPieceNo').AsInteger) then
+ begin
+ dxLayoutItem_pieceorder.Visible := true;
+ Edit_pieceOrder.Text := '';
+ end;
+
+ end
+ else
+ begin
+ PieceNo.Properties.ReadOnly := true;
+ // PieceNo.Enabled:=False;
+ end;
+
+ FrameKeyBoard1.SpeedButton_zdykey1.Caption := gZdyKey1;
+ // FrameKeyBoard1.SpeedButton_zdykey2.Caption := gZdyKey2;
+ FrameKeyBoard1.SpeedButton_zdykey2.Caption := gZdyKey2;
+
+ //
+ presentlen.text := trim(cds_params.fieldbyName('AddLenPresent').AsString);
+ presentWeight.text := trim(cds_params.fieldbyName('AddwetPresent').AsString);
+end;
+
+procedure TfrmMachRollMain.GetINIFile();
+begin
+ with cds_params do
+ begin
+ if IsEmpty then
+ Append
+ else
+ edit;
+ fieldbyName('chen').value := IsDZCDYDll;
+ fieldbyName('mabiao').value := IsMBDYDll;
+ fieldbyName('mbunit').value := IsMBDYDllUnit;
+
+ fieldbyName('MinLen').value := strtointdef(FMinLen, 0);
+ fieldbyName('MaxLen').value := strtointdef(FMaxLen, 100);
+ fieldbyName('MinWeight').value := strtointdef(FMinWeight, 0);
+ fieldbyName('MaxWeight').value := strtointdef(FMaxWeight, 50);
+
+ fieldbyName('MPlace').value := strtointdef(FMPlace, 1);
+ fieldbyName('YPlace').value := strtointdef(FYPlace, 1);
+ fieldbyName('KgPlace').value := strtointdef(FKgPlace, 1);
+
+ fieldbyName('labNumber').value := strtointdef(trim(LabQty), 1);
+ Post;
+ end;
+
+end;
+
+procedure TfrmMachRollMain.InitCDGrid(MCIID: string);
+begin
+ cxPageControl1.ActivePageIndex := 0;
+ try
+ CDS_2.DisableControls;
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect_Flaw where CIID=' + QuotedStr(trim(MCIID)));
+ Open;
+ end;
+ SCreateCDS(ADOQueryBaseTemp, CDS_2);
+ SInitCDSData(ADOQueryBaseTemp, CDS_2);
+ finally
+ CDS_2.EnableControls;
+ end;
+end;
+
+procedure TfrmMachRollMain.InitCDGridCX(MCIID: string);
+begin
+ cxPageControl1.ActivePageIndex := 1;
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect_Flaw where CIID=' + QuotedStr(trim(MCIID)));
+ Open;
+ end;
+ SCreateCDS(ADOQueryBaseTemp, cds_1);
+ SInitCDSData(ADOQueryBaseTemp, cds_1);
+end;
+
+procedure TfrmMachRollMain.InitJYGrid();
+var
+ MNetWeight, MJYLen: double;
+begin
+ try
+ cds_3.DisableControls;
+ with ADOQueryMain do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select A.*');
+ SQL.Add('from Trade_Cloth_Inspect A where BCIOID=''' + trim(FBCIOID) + '''');
+ SQL.Add('order by filltime desc');
+ Open;
+ end;
+ SCreateCDS(ADOQueryMain, cds_3);
+ SInitCDSData(ADOQueryMain, cds_3);
+// if not cds_3.IsEmpty then
+// begin
+// cds_3.First;
+// PieceNo.Text := trim(cds_3.FieldByName('PieceNo').AsString); //
+// end
+// else
+// PieceNo.Text := '';
+
+ finally
+ cds_3.EnableControls;
+ end;
+
+end;
+
+procedure TfrmMachRollMain.OpenCom(DllName: string);
+type
+ TMyFunc = function(fhandle: hwnd; sCommName: PAnsiChar; IntTime: Integer; IsMessage: Integer): hwnd; stdcall;
+var
+ Tf: TMyFunc;
+ Tp: TFarProc;
+ Th: Thandle;
+begin
+ Th := LoadLibrary(pchar(trim(DllName)));
+ if Th > 0 then
+ begin
+ try
+ Tp := GetProcAddress(Th, 'CommOpen');
+ if Tp <> nil then
+ begin
+ Tf := TMyFunc(Tp);
+ newh := Tf(Self.Handle, 'Comm1', 500, 1);
+ if newh < 1 then
+ begin
+ Application.MessageBox(pchar('ʧܣ'), 'ʾ');
+ end
+ else
+ fIsCommopen := true;
+ end
+ else
+ begin
+ fIsCommopen := false;
+ end;
+ finally
+ // FreeLibrary(Th);
+ end;
+ end
+ else
+ begin
+ fIsCommopen := false;
+ Application.MessageBox(pchar('Ҳ ' + trim(DllName) + ' ļ'), 'ʾ');
+ end;
+end;
+
+procedure TfrmMachRollMain.CloseCom(DllName: string);
+type
+ TMyFunc = function(sCommName: PAnsiChar): hwnd; stdcall;
+var
+ Tf1: TMyFunc;
+ Tp1: TFarProc;
+ Th1: Thandle;
+begin
+ Th1 := LoadLibrary(pchar(trim(DllName)));
+ if Th1 > 0 then
+ begin
+ try
+ Tp1 := GetProcAddress(Th1, 'CommClose');
+ if Tp1 <> nil then
+ begin
+ Tf1 := TMyFunc(Tp1);
+ newh1 := Tf1('Comm1');
+ end
+ else
+ begin
+
+ end;
+ finally
+ // FreeLibrary(Th1);
+ end;
+ end
+ else
+ begin
+ Application.MessageBox(pchar('Ҳ ' + trim(DllName) + ' ļ'), 'ʾ');
+ end;
+end;
+
+procedure TfrmMachRollMain.dxLayoutControl_packDblClick(Sender: TObject);
+begin
+ if gIsCanDesign then
+ layoutDesign(TdxLayoutControl(Sender), ADOQueryBaseCmd, PWideChar(dcode));
+end;
+
+procedure TfrmMachRollMain.dxLayoutItem1CaptionClick(Sender: TObject);
+var
+ mkey: Char;
+begin
+ inherited;
+// frmProductListHelp := TfrmProductListHelp.create(Self);
+// with frmProductListHelp do
+// begin
+// fType := '10';
+// if ShowModal = 1 then
+// begin
+// edtScan.Text := trim(order_main.fieldbyName('Subid').AsString);
+// mkey := #13;
+// edtScanKeyPress(edtScan, mkey);
+// end;
+// free;
+// end;
+
+ frmTradeClothTotalOutSel := TfrmTradeClothTotalOutSel.create(Self);
+ with frmTradeClothTotalOutSel do
+ begin
+
+ if ShowModal = 1 then
+ begin
+ edtScan.Text := trim(CDS_Main.fieldbyName('BCIOID').AsString);
+ end;
+ free;
+ end;
+
+ mkey := #13;
+ edtScanKeyPress(edtScan, mkey);
+end;
+
+procedure TfrmMachRollMain.Edit_fixLenClick(Sender: TObject);
+begin
+ inherited;
+ // if trim(Edit_fixLen.Text) = '' then
+ // begin
+ // Edit_fixLen.Text := '';
+ // end
+ // else
+ // begin
+ // Edit_fixLen.Text := '';
+ // end;
+end;
+
+procedure TfrmMachRollMain.Edit_pieceOrderClick(Sender: TObject);
+begin
+ inherited;
+ if trim(Edit_pieceOrder.Text) = '' then
+ begin
+ Edit_pieceOrder.Text := '';
+ end
+ else
+ begin
+ Edit_pieceOrder.Text := '';
+ end;
+end;
+
+procedure TfrmMachRollMain.edtScanDblClick(Sender: TObject);
+begin
+ inherited;
+ edtScan.Text := '';
+end;
+
+procedure TfrmMachRollMain.edtScanEnter(Sender: TObject);
+begin
+ inherited;
+ setFocusCtrol(TWinControl(Sender).Name);
+end;
+
+procedure TfrmMachRollMain.edtScanKeyPress(Sender: TObject; var Key: Char);
+begin
+ inherited;
+ if Key = #13 then
+ begin
+ if trim(edtScan.Text) = '' then
+ exit;
+ if trim(edtScan.Text) = FBCIOID then
+ exit;
+ ClearGlobal();
+
+ if cbbJYLX.Text = '' then
+ begin
+ FOperationStatus := '';
+ InitPlan(edtScan.Text);
+ end
+ else
+ begin
+
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from BS_Cloth_IO where StkId=''' + trim(edtScan.Text) + ''' and IOFlag=''''');
+ Open;
+
+ if not IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ exit;
+ end;
+ end;
+
+ with ADO_CJ do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect where CIID=''' + trim(edtScan.Text) + '''');
+ Open;
+ if not ADO_CJ.IsEmpty then
+ begin
+ InitPlan(ADO_CJ.fieldbyName('BCIOID').AsString);
+
+ FCIID := trim(fieldbyName('CIID').AsString);
+ InputLen.Text := fieldbyName('InputLen').AsString;
+ InputWeight.Text := fieldbyName('InputWeight').AsString;
+ Tare.Text := fieldbyName('Tare').AsString;
+ grade.ItemIndex := grade.Properties.Items.IndexOf(trim(fieldbyName('grade').AsString));
+ InitCDGrid(FCIID);
+ BTPrint.Caption := 'ύ';
+ FOperationStatus := '';
+ edtPacketNo.Enabled := False;
+ end;
+ end;
+
+ end;
+
+ frameBads1cxCheckBox_readLenPropertiesChange(frameBads1.IsSubtract);
+ // Ƿȹѡ
+
+ if trim(OrderNo.Text) <> '' then
+ InputLen.SetFocus;
+ cxGroupBox_keys.Visible := false;
+ end;
+end;
+
+function TfrmMachRollMain.SaveData(): Boolean;
+var
+ maxno, MCIID, BZID, strsql: string;
+ MInputLen, MMeter, MYardage: double;
+ MInputWeight, MGrossWeight, MNetWeight, MTare, Maddwet, maddLen: double;
+ mYardStick: double;
+ mPresentLen, mpresentWeight: double;
+begin
+ Result := false;
+ Maddwet := strTofloatDef(trim(addwet.text), 0); // Faddwet;
+ maddLen := strTofloatDef(trim(addlen.text), 0); // faddlen;
+ mYardStick := strtofloatdef(trim(RuleYardstick.Text), 100);
+ mPresentLen := strTofloatDef(trim(presentlen.text), 0);
+ mpresentWeight := strTofloatDef(trim(presentWeight.text), 0);
+ if (strtoIntdef(Trim(unitPieces.Text), 0) > 0) and (strtoIntdef(trim(InputLen.Text), 0) > 0) then
+ begin
+ if strtoIntdef(trim(InputLen.Text), 0) > strtoIntdef(Trim(unitPieces.Text), 0) then
+ funitPiecesStr := intTostr((strtoIntdef(trim(InputLen.Text), 0)) - strtoIntdef(Trim(unitPieces.Text), 0)) + '+' + Trim(unitPieces.Text);
+ end;
+ //0:䣻1ȥ
+ if gPresentNumFlag = 1 then
+ begin
+ mPresentLen := -1 * mPresentLen;
+ mpresentWeight := -1 * mpresentWeight;
+ end;
+
+ if FOperationStatus = '' then
+ begin
+ MCIID := FCIID;
+ end
+ else
+ begin
+ MCIID := '';
+ end;
+ try
+ ADOQueryBaseCmd.Connection.BeginTrans;
+ if Trim(cbbJYLX.Text) = 'γ' then
+ begin
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_recheck ');
+ SQL.Add(' @CIIDS=' + QuotedStr(trim(FCIID)));
+ SQL.Add(',@DCode=' + QuotedStr(DCode));
+ SQL.Add(',@DName=' + QuotedStr(DName));
+ Open;
+ end;
+ if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
+ end;
+
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('update Bs_Cloth_IO set MaxRechecktime=getdate() where BCIOID=''' + trim(FBCIOID) + '''');
+ ExecSQL;
+ end;
+
+ end;
+
+ ///
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect where CIID=''' + trim(MCIID) + '''');
+ Open;
+ end;
+ with ADOQueryBaseCmd do
+ begin
+ if trim(MCIID) = '' then
+ begin
+ if not GetLSNo(ADOQueryBaseTemp, maxno, trim(SCXFlag), 'Trade_Cloth_Inspect', 4, 1) then
+ raise Exception.create('ȡʧܣ');
+ Append;
+ fieldbyName('Filler').value := trim(DName);
+ fieldbyName('CIID').value := trim(maxno);
+ end
+ else
+ begin
+ maxno := trim(MCIID);
+ edit;
+ fieldbyName('Editer').value := trim(DName);
+ fieldbyName('EditTime').value := SGetServerDateTime(ADOQueryBaseTemp);
+ end;
+
+ fieldbyName('QtyUnit').value := Trim(FQtyUnit);
+ // ϵ
+ fieldbyName('Coefficient').value := strtofloatdef(trim(Coefficient.Text), 0); // ϵ
+ /// ////////////////////// /////////////////////////
+ if cds_params.fieldbyName('weightRule').AsInteger = 0 then
+ // InputWeight ë OutPutWeight
+ begin
+ MTare := strtofloatdef(trim(Tare.Text), 0); // Ƥ
+ MInputWeight := RoundFloat(strtofloatdef(trim(InputWeight.Text), 0), cds_params.fieldbyName('KgPlace').AsInteger); //Ϊ ë
+ MGrossWeight := MInputWeight + Maddwet + mpresentWeight; // ë +
+ MNetWeight := MInputWeight + Maddwet - MTare + mpresentWeight; // +
+ fieldbyName('InputWeight').value := MInputWeight;
+
+ //
+ if MInputWeight > 0 then
+ begin
+ fieldbyName('NetWeight').value := MNetWeight;
+ // ë
+ fieldbyName('GrossWeight').value := MGrossWeight;
+ end
+ else
+ begin
+ fieldbyName('NetWeight').value := 0;
+ fieldbyName('GrossWeight').value := 0;
+ end;
+ fieldbyName('Tare').value := MTare;
+ fieldbyName('addwet').value := Maddwet;
+
+ end;
+
+ if cds_params.fieldbyName('weightRule').AsInteger = 1 then
+ // InputWeight OutPutWeight ë
+ begin
+ MTare := strtofloatdef(trim(Tare.Text), 0); // Ƥ
+ MInputWeight := RoundFloat(strtofloatdef(trim(InputWeight.Text), 0), cds_params.fieldbyName('KgPlace').AsInteger); //
+ MGrossWeight := MInputWeight + MTare + Maddwet + mpresentWeight; // ë
+ MNetWeight := MInputWeight + Maddwet + mpresentWeight; // +
+ fieldbyName('InputWeight').value := MInputWeight;
+
+ if MInputWeight > 0 then
+ begin
+ fieldbyName('NetWeight').value := MNetWeight;
+ fieldbyName('GrossWeight').value := MGrossWeight;
+ end
+ else
+ begin
+ fieldbyName('NetWeight').value := 0;
+ fieldbyName('GrossWeight').value := 0;
+ end;
+ // Ƥ
+ fieldbyName('Tare').value := MTare;
+ fieldbyName('addwet').value := Maddwet;
+ end;
+ /// ////////////////////// /////////////////////////
+ ///
+ /// ////////////////////// 泤 /////////////////////////
+ /// = ''
+ if strtofloatdef(trim(Edit_fixLen.Text), 0) > 0 then
+ MInputLen := strtofloatdef(trim(Edit_fixLen.Text), 0)
+ else
+ MInputLen := RoundFloat(strtofloatdef(trim(InputLen.Text), 0), 4);
+ // +mAddLen
+ if (uppercase(lblLenUnit.CaptionOptions.Hint) = 'M') or (lblLenUnit.CaptionOptions.Hint = '') then
+ begin
+ MMeter := RoundFloat((MInputLen + maddLen + mPresentLen) / (mYardStick / 100), cds_params.fieldbyName('MPlace').AsInteger);
+ MYardage := RoundFloat(MMeter / 0.9144, cds_params.fieldbyName('YPlace').AsInteger);
+ end
+ else
+ begin
+ MYardage := RoundFloat((MInputLen + maddLen + mPresentLen) / (mYardStick / 100), cds_params.fieldbyName('YPlace').AsInteger);
+ MMeter := RoundFloat(MYardage * 0.9144, cds_params.fieldbyName('MPlace').AsInteger);
+ end;
+
+ fieldbyName('InputLen').value := RoundFloat(strtofloatdef(trim(InputLen.Text), 0), 2);
+ fieldbyName('Meter').value := MMeter;
+ fieldbyName('Yardage').value := MYardage;
+ fieldbyName('LenUnit').value := trim(lblLenUnit.CaptionOptions.Hint);
+ fieldbyName('AddLen').value := maddLen;
+ fieldbyName('YardStick').value := mYardStick;
+
+ /// ////////////////////// 泤 /////////////////////////
+ // if Trim(Edit_zp.Text) <> '' then
+ // begin
+ fieldbyName('Grade').value := trim(grade.Text);
+ // end;
+ // if Trim(Edit_cp.Text) <> '' then
+ // begin
+ // FieldByName('Grade').Value := 'Ʒ';
+ // end;
+ if FOperationStatus <> '' then
+ begin
+ fieldbyName('PieceNo').value := 0;
+ end;
+
+ // ֶ
+ if (FRulePieceNo = 'ֶ') or (FRulePieceNo = 'ֶ') or (cds_params.fieldbyName('rollnoMake').AsString = 'ֶ') then
+ begin
+ fieldbyName('PieceNo').value := strtoint(trim(PieceNo.Text));
+ end;
+
+ fieldbyName('status').value := '0';
+ fieldbyName('OrderNo').value := trim(FOrderNo);
+ fieldbyName('MainId').value := trim(FMainId);
+ fieldbyName('SubId').value := trim(FSubId);
+ fieldbyName('ConNo').value := trim(FConNo);
+ fieldbyName('ConMId').value := trim(FConMId);
+ fieldbyName('ConSId').value := trim(FConSId);
+ fieldbyName('BCIOID').value := trim(FBCIOID);
+ fieldbyName('Workshop').value := trim(FWorkshop);
+ if dxLayoutItem_rk.Visible then
+ fieldbyName('CIIOFlag').value := 'δ'
+ else
+ fieldbyName('CIIOFlag').value := '';
+ fieldbyName('C_Code').value := FC_Code;
+ fieldbyName('C_Name').value := FC_Name;
+ fieldbyName('C_EName').value := FC_EName;
+ fieldbyName('BatchNO').value := BatchNO.Text;
+ fieldbyName('FtyPCId').value := FtyPCId.Text; // ԭ
+ fieldbyName('C_Spec').value := FC_Spec;
+ fieldbyName('C_Color').value := FC_Color;
+ fieldbyName('C_EColor').value := FC_EColor;
+ fieldbyName('C_ColorNo').value := FC_ColorNo;
+ fieldbyName('C_StyleNo').value := FC_StyleNo;
+ fieldbyName('C_Composition').value := FC_Composition;
+ if dxLayoutItem_width.ActuallyVisible then
+ fieldbyName('C_Width').value := trim(C_width.Text)
+ else
+ fieldbyName('C_Width').value := FC_Width;
+
+ if dxLayoutItem_gram.ActuallyVisible then
+ fieldbyName('C_GramWeight').value := trim(C_GramWeight.Text)
+ else
+ fieldbyName('C_GramWeight').value := FC_GramWeight;
+
+ fieldbyName('C_Pattern').value := FC_Pattern;
+ fieldbyName('C_CustPattern').value := FC_CustPattern;
+ fieldbyName('C_ColorDepth').value := FC_ColorDepth;
+ fieldbyName('CIMachNo').value := trim(SCXFlag);
+
+ //
+
+ fieldbyName('AddwetVirtual').value := fAddwetVirtual;
+ fieldbyName('AddLenVirtual').value := fAddLenVirtual;
+
+ fieldbyName('AddwetPresent').value := abs(mpresentWeight);
+ // cds_params.fieldbyName('AddwetPresent').AsFloat;
+ fieldbyName('AddLenPresent').value := abs(mPresentLen);
+ // cds_params.fieldbyName('AddLenPresent').AsFloat;
+ //Զ1
+ fieldbyName('customStrField1').value := trim(customStrField1.Text);
+ fieldbyName('customStrField2').value := trim(customStrField2.Text);
+
+ //ƴƥ
+ if FieldList.FieldByName('unitPieces') <> nil then
+ fieldbyName('unitPieces').value := funitPiecesStr;
+ //̨Ա
+ if FieldList.FieldByName('operators') <> nil then
+ fieldbyName('operators').value := gMachOperators;
+
+ Post;
+ end;
+
+ MCIID := trim(maxno);
+ FCIID := trim(maxno);
+
+ /// /////////////// õϢ //////////////////
+ with CDS_2 do
+ begin
+ First;
+ while not eof do
+ begin
+ if trim(CDS_2.fieldbyName('CIFID').AsString) = '' then
+ begin
+ if not GetLSNo(ADOQueryBaseTemp, maxno, 'JC', 'Trade_Cloth_Inspect_Flaw', 5, 1) then
+ raise Exception.create('ȡõʧܣ');
+ end
+ else
+ begin
+ maxno := trim(CDS_2.fieldbyName('CIFID').AsString);
+ end;
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect_Flaw ');
+ SQL.Add(' where CIFID=''' + trim(maxno) + '''');
+ Open;
+ end;
+ with ADOQueryBaseCmd do
+ begin
+ if trim(CDS_2.fieldbyName('CIFID').AsString) = '' then
+ Append
+ else
+ edit;
+ RTSetSaveDataCDS(ADOQueryBaseCmd, Tv2, CDS_2, 'Trade_Cloth_Inspect_Flaw', 0);
+ fieldbyName('CIID').value := trim(MCIID);
+ fieldbyName('CIFID').value := trim(maxno);
+ Post;
+ end;
+ CDS_2.edit;
+ CDS_2.fieldbyName('CIID').value := trim(MCIID);
+ CDS_2.fieldbyName('CIFID').value := trim(maxno);
+ next;
+ end;
+ end;
+ /// /////////////// õϢ //////////////////
+ ///
+ /// /////////////// ¾ŴõϢ //////////////////
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_Up_pack @CIID=''' + trim(MCIID) + '''');
+ if FOperationStatus = '' then
+ SQL.Add(',@InspType=' + QuotedStr('첼'))
+ else
+ SQL.Add(',@InspType=' + QuotedStr(''));
+ if (cds_params.fieldbyName('rollnoMake').AsString = 'ֶ') then
+ begin
+ SQL.Add(',@RulePieceNo=' + QuotedStr('ֶ')); // ɹ
+ end
+ else
+ begin
+ SQL.Add(',@RulePieceNo=' + QuotedStr(FRulePieceNo)); // ɹ
+ end;
+ ExecSQL;
+ end;
+
+ //жǷظ
+ if not checkPicecNo() then
+ begin
+
+ exit;
+ end;
+
+ /// /////////////// ¾ŴõϢ //////////////////
+ ///
+ /// /////////////// ¿ //////////////////
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('insert into Trade_Need_Up(UOperation,UType,UDataId,uoperator) values('''',''̨'',' + QuotedStr(maxno) + ',' + QuotedStr(DName) + ') ');
+ ExecSQL;
+ end;
+ /// /////////////// ¿ //////////////////
+ ///
+ ADOQueryBaseCmd.Connection.CommitTrans;
+ /// /////////////// ⼰ //////////////////
+// with ADOQueryBaseCmd do
+// begin
+// Close;
+// SQL.Clear;
+// SQL.Add('exec P_Trade_Insp_In_Stk @CIID=''' + trim(MCIID) + '''');
+// ExecSQL;
+// end;
+ // Open;
+ // end;
+ // if ADOCmd.FieldByName('intReturn').AsInteger = -1 then
+ // begin
+ // application.MessageBox(PChar(trim(ADOCmd.FieldByName('ShowMsg').AsString)), 'ʾϢ', 0);
+ // Result := False;
+ // end
+ // else
+ // begin
+ // Result := True;
+ // end;
+ /// /////////////// ⼰ //////////////////
+
+ Result := true;
+ except
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ Application.MessageBox(pchar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+
+ end;
+end;
+
+//
+procedure TfrmMachRollMain.PrtData(MCIID: string; againPring: Boolean = false);
+var
+ fPrintFile: string;
+ Txt, fImagePath, Txt2, fImagePath2: string;
+ Moudle: Thandle;
+ Makebar: TMakebar;
+ Mixtext: TMixtext;
+begin
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add(' EXEC P_Trade_Print_Lab ');
+ SQL.Add(' @CIID=''' + trim(MCIID) + '''');
+ Open;
+ end;
+ if ADOQueryPrint.IsEmpty then
+ begin
+ Application.MessageBox('ǩδҵ', 'ʾϢ', MB_ICONERROR);
+ exit;
+ end;
+
+ if trim(ADOQueryPrint.fieldbyName('SLabVolume').AsString) <> '' then
+ fLabVolume := trim(ADOQueryPrint.fieldbyName('SLabVolume').AsString)
+ else
+ fLabVolume := trim(ADOQueryPrint.fieldbyName('LabVolume').AsString);
+ if fLabVolume = '' then
+ begin
+ Application.MessageBox('δñǩ', 'ʾϢ', MB_ICONERROR);
+ exit;
+ end;
+
+ ExportFtErpFile(fLabVolume + '.rmf', ADOQueryBaseTemp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + fLabVolume + '.rmf';
+
+ if FileExists(fPrintFile) then
+ begin
+ RM1.LoadFromFile(fPrintFile);
+ // if trim(ADOQueryPrint.fieldbyName('LabVolume').AsString) <> 'Ʒǩ' then
+ RM1.DefaultCopies := cds_params.fieldbyName('labNumber').AsInteger;
+ // else
+ // RM1.DefaultCopies := 1;
+ RM1.PrintReport;
+
+ //
+ if againPring then
+ begin
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('insert into Trade_Need_Up(UType,UOperation,UDataId,uoperator) values('''',''شǩ'',' + QuotedStr(trim(cds_3.fieldbyName('CIID').AsString)) + ',' + QuotedStr(DName) + ') ');
+ ExecSQL;
+ end;
+ end;
+
+ end
+ else
+ begin
+ Application.MessageBox(pchar('û' + fPrintFile), 'ʾ', 0);
+ end;
+end;
+
+//
+
+procedure TfrmMachRollMain.PrintBao(PPacketId: string; againPring: Boolean = false);
+var
+ fPrintFile: string;
+ Txt, fImagePath: string;
+ Moudle: Thandle;
+ Makebar: TMakebar;
+ Mixtext: TMixtext;
+begin
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_Prt_PackLab ' + QuotedStr(PPacketId));
+ Open;
+ end;
+
+ if trim(ADOQueryPrint.fieldbyName('SLabPackage').AsString) <> '' then
+ fLabPackage := trim(ADOQueryPrint.fieldbyName('SLabPackage').AsString)
+ else
+ fLabPackage := ADOQueryPrint.fieldbyName('LabPackage').AsString;
+
+ ExportFtErpFile(trim(fLabPackage) + '.rmf', ADOQueryBaseTemp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + trim(fLabPackage) + '.rmf';
+ if not FileExists(fPrintFile) then
+ begin
+ Application.MessageBox(pchar('ûҰǩ' + fPrintFile), 'ʾ', 0);
+ exit;
+ end;
+ if FileExists(fPrintFile) then
+ begin
+ RM1.LoadFromFile(fPrintFile);
+ RM1.DefaultCopies := cds_params.fieldbyName('packlabnumber').AsInteger;
+ if cds_params.fieldByName('packPrintPreview').AsBoolean then
+ RM1.ShowReport
+ else
+ RM1.PrintReport;
+ end;
+
+ if againPring then
+ begin
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('insert into Trade_Need_Up(UType,UOperation,UDataId,uoperator) values('''',''شǩ'',' + QuotedStr(trim(cds_3.fieldbyName('CIID').AsString)) + ',' + QuotedStr(DName) + ') ');
+ ExecSQL;
+ end;
+ end;
+
+ if FileExists(fImagePath) then
+ DeleteFile(fImagePath);
+
+end;
+
+procedure TfrmMachRollMain.InitJTM(MCIID: string);
+begin
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from BS_Cloth_IO where StkId=''' + trim(MCIID) + ''' and IOFlag=''''');
+ Open;
+
+ if not IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ exit;
+ end;
+ end;
+ //
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from BS_Cloth_IO where StkId=''' + trim(MCIID) + ''' and IOFlag=''''');
+ Open;
+ end;
+ if not ADOQueryBaseTemp.IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ exit;
+ end;
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect where CIID=''' + trim(MCIID) + '''');
+ Open;
+ end;
+ if not ADOQueryBaseTemp.IsEmpty then
+ begin
+ FOperationStatus := '';
+ FCIID := MCIID;
+ InitCDGrid(MCIID);
+ end;
+
+end;
+
+//
+
+procedure TfrmMachRollMain.BadSpeedButtonClick(Sender: TObject);
+var
+ i: Integer;
+begin
+ inherited;
+ if CheckData('õ') = false then
+ exit;
+ frameBads1.dxPanel1.Visible := true;
+ FCIFName := trim(TSpeedButton(Sender).Hint);
+
+ frameBads1.lblCIFName.Caption := trim(TSpeedButton(Sender).Hint);
+
+ frameBads1.CIFNumber.SetFocus;
+
+ frameBads1cxCheckBox_readLenPropertiesChange(frameBads1.IsSubtract);
+
+end;
+
+procedure TfrmMachRollMain.On1301(var Message: Tmessage);
+var
+ i1, i2: Integer;
+ unitname: string;
+ fdata: double;
+begin
+ i1 := Message.WParam;
+ i2 := Message.LParam;
+
+ if (trim(cds_params.fieldbyName('mabiao').AsString) = '1') then
+ begin
+ InputLen.Text := format('%.2f', [i1 / 100000]);
+ if trim(cds_params.fieldbyName('mbunit').AsString) = '1' then
+ begin
+ if i2 = 0 then
+ begin
+ SetUnit('M');
+ end
+ else
+ begin
+ SetUnit('Y');
+ end;
+ end;
+ end;
+end;
+
+procedure TfrmMachRollMain.On1201(var Message: Tmessage);
+var
+ i1, i2: Integer;
+ unitname: string;
+ fdata: double;
+begin
+ i1 := Message.WParam;
+ i2 := Message.LParam;
+
+ if trim(cds_params.fieldbyName('chen').AsString) = '1' then
+ begin
+ InputWeight.Text := format('%.2f', [i1 / 100000]);
+ end;
+
+end;
+
+procedure TfrmMachRollMain.PrtMD(MInNo: string);
+var
+ fPrintFile, FLBName: string;
+begin
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add(' EXEC P_Trade_Cloth_In_Prt11 ');
+ SQL.Add(' @Filtration=''' + trim(MInNo) + '''');
+ Open;
+ end;
+
+ FLBName := '̨ⵥ';
+
+ ExportFtErpFile(FLBName + '.rmf', ADOQueryBaseTemp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLBName + '.rmf';
+
+ if FileExists(fPrintFile) then
+ begin
+ RM1.LoadFromFile(fPrintFile);
+ RM1.DefaultCopies := cds_params.fieldbyName('labNumber').AsInteger;
+ RM1.PrintReport;
+ end
+ else
+ begin
+ Application.MessageBox(pchar('û' + fPrintFile), 'ʾ', 0);
+ end;
+end;
+
+/// ////////////
+procedure TfrmMachRollMain.initEditPiece();
+begin
+ if BTPrint.Caption = ' ' then
+ begin
+ BTPrint.Caption := 'ύ';
+ with cds_3 do
+ begin
+ InputLen.Text := fieldbyName('InputLen').AsString;
+ InputWeight.Text := fieldbyName('InputWeight').AsString;
+ Tare.Text := fieldbyName('Tare').AsString;
+ grade.ItemIndex := grade.Properties.Items.IndexOf(trim(fieldbyName('grade').AsString));
+ // Coefficient.Text:=fieldByName('Coefficient').AsString;
+ end;
+
+ edtPacketNo.Enabled := False;
+ end
+ else
+ begin
+ BTPrint.Caption := ' ';
+ InputLen.Text := '';
+ InputWeight.Text := '';
+ OutPutWeight.Text := '';
+ edtPacketNo.Enabled := true;
+ grade.ItemIndex := 0;
+ cds_params.edit;
+ cds_params.fieldbyName('chen').value := '1';
+ cds_params.fieldbyName('mabiao').value := '1';
+ cds_params.Post;
+ end;
+
+end;
+
+procedure TfrmMachRollMain.GetPacketNo();
+var
+ mMaxPacketNo: string;
+begin
+ try
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select max(cast(isnull(PacketNo,''0'') as int) )+1 as MaxPacketNo from Bs_Cloth_IO ');
+ SQL.Add('where OrderNo=' + QuotedStr(trim(OrderNo.Text)));
+
+ Open;
+ end;
+ mMaxPacketNo := trim(ADOQueryBaseTemp.fieldbyName('MaxPacketNo').AsString);
+ if mMaxPacketNo = '' then
+ mMaxPacketNo := '1';
+
+ edtPacketNo.Text := mMaxPacketNo;
+ except
+
+ end;
+
+end;
+
+procedure TfrmMachRollMain.getPlanImage(MSubID: string);
+begin
+ with ADOQueryImage do
+ begin
+ close;
+ sql.Clear;
+ sql.Add('select top 1 * from TP_File A');
+ sql.Add('where WBID=' + quotedstr(MSubID));
+ open;
+ end;
+end;
+
+/////////////////////////////////////
+function TfrmMachRollMain.deletePack(packId: string): boolean;
+var
+ ccids: string;
+ packNo: integer;
+begin
+ try
+ ccids := '';
+ packNo := strtointdef(Trim(cds_3.FieldByName('packetNo').AsString), 0);
+ ADOQueryBaseCmd.Connection.BeginTrans;
+ cds_3.First;
+ while not cds_3.eof do
+ begin
+ if Trim(cds_3.FieldByName('packetid').AsString) = packId then
+ begin
+ ccids := ccids + ',' + Trim(cds_3.FieldByName('CIID').AsString);
+ end;
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('insert into Trade_Need_Up(UType,UOperation,UDataId,uoperator) values('''',''ɾ'',' + QuotedStr(Trim(cds_3.FieldByName('CIID').AsString)) + ',' + QuotedStr(DName) + ') ');
+ ExecSQL;
+ end;
+ cds_3.Next;
+ end;
+
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_Del ');
+ SQL.Add('@CIIDS=' + QuotedStr(ccids));
+ SQL.Add(',@DCode=' + QuotedStr(DCode));
+ SQL.Add(',@DName=' + QuotedStr(DName));
+ Open;
+ end;
+ if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
+ end;
+ ADOQueryBaseCmd.Connection.CommitTrans;
+ if inttostr(packNo + 1) = trim(edtPacketNo.Text) then
+ begin
+ edtPacketNo.Text := inttostr(packNo);
+ end;
+
+ InitJYGrid();
+ Application.MessageBox('ɾɹ', 'ʾϢ');
+ except
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ Application.MessageBox(pchar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+end;
+
+//////////////////////////////////////////////////////
+///
+function TfrmMachRollMain.checkPicecNo(): boolean;
+var
+ pieceNo: string;
+begin
+ result := false;
+ if FRulePieceNo = '' then
+ begin
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ showMessage('ƻδþɹ!');
+ exit;
+ end;
+ try
+ //////////////////ظж
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ sql.Clear;
+ if FRulePieceNo = '' then
+ begin
+ sql.Add('select Mainid,pieceNo from Trade_Cloth_Inspect X where X.mainID=' + quotedstr(Trim(FMainId)));
+ sql.Add(' Group by Mainid,pieceNo having count(*)>1');
+ end
+ else if FRulePieceNo = '' then
+ begin
+ sql.Add('select mainId,C_color,batchNo,pieceNo from Trade_Cloth_Inspect X ');
+ sql.Add('where X.mainID=''' + Trim(FMainId) + ''' and X.c_color=' + quotedstr(Trim(FC_Color)) + ' and isnull(X.BatchNO,'''')=' + quotedstr(Trim(BatchNO.Text)));
+ sql.Add(' Group by mainId,C_color,BatchNO,pieceNo having count(*)>1');
+ end
+ else if FRulePieceNo = 'ɫ' then
+ begin
+ sql.Add('select mainId,C_color,pieceNo from Trade_Cloth_Inspect X ');
+ sql.Add('where X.mainID=''' + Trim(FMainId) + ''' and X.c_color=' + quotedstr(Trim(FC_Color)));
+ sql.Add(' Group by mainId,C_color,pieceNo having count(*)>1');
+ end;
+
+ Open;
+ end;
+ if not ADOQueryBaseCmd.IsEmpty then
+ begin
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ pieceNo := Trim(ADOQueryBaseCmd.fieldbyname('pieceNo').AsString);
+ if fileexists(ExtractFilePath(Application.ExeName) + 'ظ.wav') then
+ PlaySound('ظ.wav', 0, SND_FILENAME or SND_ASYNC);
+ Application.MessageBox(Pchar(': ' + Trim(pieceNo) + ' ظ˶Դ!'), 'ʾ', 0);
+ Exit;
+ end;
+ //
+ result := true;
+ except
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ Application.MessageBox(Pchar('жϾǷظʱ!'), 'ʾ', 0);
+ end;
+
+end;
+
+/////////////////////////////////////////////////////////////////
+///
+function TfrmMachRollMain.getCurPieceNO(mCcid: string): string;
+begin
+ result := '';
+ try
+ with ADOQueryBaseTemp do
+ begin
+ close;
+ sql.Clear;
+ sql.Add('select PieceNo from Trade_Cloth_Inspect where CIID=' + quotedstr(mCcid));
+ open;
+ if ADOQueryBaseTemp.fieldByName('PieceNo').AsInteger > 0 then
+ result := intTostr(ADOQueryBaseTemp.fieldByName('PieceNo').AsInteger + 1);
+ end;
+ except
+ application.MessageBox('ȡǰʱ!', 'ʾϢ', 0);
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_ParamSet.dfm b/T03贸易布匹检验/U_ParamSet.dfm
new file mode 100644
index 0000000..6c65393
--- /dev/null
+++ b/T03贸易布匹检验/U_ParamSet.dfm
@@ -0,0 +1,231 @@
+object frmParamSet: TfrmParamSet
+ Left = 0
+ Top = 0
+ BorderIcons = [biSystemMenu, biMinimize]
+ Caption = #21442#25968#35774#32622
+ ClientHeight = 593
+ ClientWidth = 775
+ Color = clBtnFace
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ OldCreateOrder = False
+ Position = poDesktopCenter
+ OnClose = FormClose
+ OnCreate = FormCreate
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 21
+ object Label33: TLabel
+ Left = 13
+ Top = 69
+ Width = 60
+ Height = 20
+ Caption = #37325#37327#20445#30041
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ inline FrameParam1: TFrameParam
+ Left = 0
+ Top = 50
+ Width = 775
+ Height = 519
+ Align = alTop
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -19
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ TabOrder = 0
+ ExplicitTop = 50
+ ExplicitWidth = 775
+ ExplicitHeight = 519
+ inherited pnlSet: TPanel
+ Width = 775
+ Height = 519
+ ExplicitWidth = 775
+ ExplicitHeight = 519
+ inherited cxGroupBox1: TcxGroupBox
+ Style.Font.Charset = GB2312_CHARSET
+ Style.IsFontAssigned = True
+ ExplicitTop = 2
+ ExplicitWidth = 771
+ Width = 771
+ inherited Label34: TLabel
+ Visible = True
+ end
+ inherited edtMaBiao: TcxTextEdit
+ ExplicitHeight = 38
+ end
+ inherited edtMBDW: TcxTextEdit
+ ExplicitHeight = 38
+ end
+ inherited edtChen: TcxTextEdit
+ ExplicitHeight = 38
+ end
+ inherited outPage: TcxTextEdit
+ ExplicitHeight = 38
+ end
+ inherited AddwetPresent: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited AddLenPresent: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited presentNumFlag: TcxComboBox
+ ExplicitHeight = 31
+ end
+ end
+ inherited cxGroupBox2: TcxGroupBox
+ Style.Font.Charset = GB2312_CHARSET
+ Style.IsFontAssigned = True
+ ExplicitWidth = 771
+ Width = 771
+ inherited MinLen: TcxTextEdit
+ Left = 53
+ Top = 27
+ Touch.ParentTabletOptions = False
+ Touch.TabletOptions = []
+ ExplicitLeft = 53
+ ExplicitTop = 27
+ ExplicitHeight = 31
+ end
+ inherited MaxLen: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited MinWeight: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited MaxWeight: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited BeginPieceNo: TcxTextEdit
+ Top = 64
+ Properties.OnChange = FrameParam1BeginPieceNoPropertiesChange
+ ExplicitTop = 64
+ ExplicitHeight = 31
+ end
+ inherited EndPieceNo: TcxTextEdit
+ Properties.OnChange = FrameParam1EndPieceNoPropertiesChange
+ ExplicitHeight = 31
+ end
+ end
+ inherited cxGroupBox3: TcxGroupBox
+ ExplicitWidth = 771
+ Width = 771
+ inherited MPlace: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited YPlace: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited KgPlace: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ end
+ inherited cxGroupBox4: TcxGroupBox
+ ExplicitWidth = 771
+ ExplicitHeight = 133
+ Height = 133
+ Width = 771
+ inherited edtdabao: TcxTextEdit
+ Style.Font.Height = -16
+ Style.IsFontAssigned = True
+ ExplicitHeight = 34
+ end
+ inherited packRolls: TcxTextEdit
+ ExplicitHeight = 31
+ end
+ inherited rollnoMake: TcxComboBox
+ Properties.DropDownListStyle = lsEditFixedList
+ Style.Font.Charset = GB2312_CHARSET
+ Style.IsFontAssigned = True
+ ExplicitHeight = 31
+ end
+ inherited packNoMake: TcxComboBox
+ ExplicitHeight = 31
+ end
+ inherited packPrintPreview: TCheckBox
+ Top = 74
+ Width = 128
+ ExplicitTop = 74
+ ExplicitWidth = 128
+ end
+ inherited packlabNumber: TcxComboBox
+ Style.Font.Charset = GB2312_CHARSET
+ Style.IsFontAssigned = True
+ ExplicitHeight = 25
+ end
+ inherited packPrintAction: TcxComboBox
+ ExplicitHeight = 31
+ end
+ end
+ end
+ inherited weightRule: TcxComboBox
+ ExplicitHeight = 34
+ end
+ end
+ object dxPanel1: TdxPanel
+ Left = 0
+ Top = 0
+ Width = 775
+ Height = 50
+ Align = alTop
+ TabOrder = 1
+ object cxButton1: TcxButton
+ Left = 14
+ Top = 3
+ Width = 87
+ Height = 38
+ Caption = #30830#23450
+ TabOrder = 0
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = cxButton1Click
+ end
+ object cxButton2: TcxButton
+ Left = 107
+ Top = 3
+ Width = 83
+ Height = 38
+ Caption = #20851#38381
+ TabOrder = 1
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = cxButton2Click
+ end
+ end
+ object TouchKeyboard1: TTouchKeyboard
+ Left = 504
+ Top = 135
+ Width = 200
+ Height = 218
+ Color = clBtnFace
+ DrawingStyle = dsGradient
+ GradientEnd = clSilver
+ GradientStart = clGray
+ Layout = 'NumPad'
+ ParentColor = True
+ end
+ object cds_params: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 280
+ Top = 8
+ end
+end
diff --git a/T03贸易布匹检验/U_ParamSet.pas b/T03贸易布匹检验/U_ParamSet.pas
new file mode 100644
index 0000000..b92a744
--- /dev/null
+++ b/T03贸易布匹检验/U_ParamSet.pas
@@ -0,0 +1,231 @@
+unit U_ParamSet;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
+ System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, U_frameParam, cxGraphics, cxControls,
+ cxLookAndFeels, cxLookAndFeelPainters, cxGeometry,
+ dxFramedControl, Vcl.Menus, Vcl.StdCtrls, cxButtons, dxPanel,
+ Vcl.Touch.Keyboard, Vcl.ExtCtrls, Data.DB, Datasnap.DBClient;
+
+type
+ TfrmParamSet = class(TForm)
+ FrameParam1: TFrameParam;
+ dxPanel1: TdxPanel;
+ cxButton1: TcxButton;
+ cxButton2: TcxButton;
+ TouchKeyboard1: TTouchKeyboard;
+ cds_params: TClientDataSet;
+ Label33: TLabel;
+ procedure FormCreate(Sender: TObject);
+ procedure cxButton2Click(Sender: TObject);
+ procedure cxButton1Click(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FrameParam1BeginPieceNoPropertiesChange(Sender: TObject);
+ procedure FrameParam1EndPieceNoPropertiesChange(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ frmParamSet: TfrmParamSet;
+
+implementation
+uses
+ U_iniparam;
+{$R *.dfm}
+
+procedure TfrmParamSet.cxButton1Click(Sender: TObject);
+begin
+ if not cds_params.IsEmpty then
+ begin
+ cds_params.Edit;
+ with FrameParam1 do
+ begin
+ if Trim(edtChen.Text) = '' then
+ cds_params.fieldByName('chen').Value:='1'
+ else
+ cds_params.fieldByName('chen').Value:='0';
+
+ if Trim(edtMaBiao.Text) = '' then
+ cds_params.fieldByName('mabiao').Value:='1'
+ else
+ cds_params.fieldByName('mabiao').Value:='0';
+
+ if Trim(edtMBDW.Text) = '' then
+ cds_params.fieldByName('mbunit').Value:='1'
+ else
+ cds_params.fieldByName('mbunit').Value:='0';
+
+ //
+ cds_params.fieldByName('weightRule').Value:=weightRule.ItemIndex ;
+
+ // ֽ
+ cds_params.fieldByName('outPage').Value:=outPage.Text ;
+ cds_params.fieldByName('labNumber').Value:=StrToIntDef(labNumber.Text ,1);
+
+ //
+ cds_params.fieldByName('MinLen').Value:=StrToIntDef(Trim(MinLen.Text) ,0);
+ cds_params.fieldByName('MaxLen').Value:=StrToIntDef(Trim(MaxLen.Text) ,100);
+ cds_params.fieldByName('MinWeight').Value:=StrToIntDef(Trim(MinWeight.Text) ,0);
+ cds_params.fieldByName('MaxWeight').Value:=StrToIntDef(Trim(MaxWeight.Text) ,100);
+
+
+ cds_params.fieldByName('MPlace').Value:=StrToIntDef(Trim(MPlace.Text) ,1);
+ cds_params.fieldByName('YPlace').Value:=StrToIntDef(Trim(YPlace.Text) ,1);
+ cds_params.fieldByName('KgPlace').Value:=StrToIntDef(Trim(KgPlace.Text) ,1);
+
+ cds_params.fieldByName('BeginPieceNo').Value:=StrToIntDef(Trim(BeginPieceNo.Text) ,1);
+ cds_params.fieldByName('EndPieceNo').Value:=StrToIntDef(Trim(EndPieceNo.Text) ,1);
+
+
+ //
+ cds_params.fieldByName('dabao').Value:= trim(edtdabao.Text);
+ cds_params.fieldByName('packRolls').Value:=StrToIntDef(Trim(packRolls.Text) ,2);
+ cds_params.fieldByName('packnoMake').Value:= packnoMake.Text;
+ cds_params.fieldByName('packPostAction').Value:=trim( packPrintAction.Text);
+
+ cds_params.fieldByName('packlabNumber').Value:=StrToIntDef(packlabNumber.Text ,0);
+
+ cds_params.fieldByName('packPrintPreview').value:=packPrintPreview.checked;
+
+ //
+ cds_params.fieldByName('rollnoMake').Value:= rollnoMake.Text;
+
+ cds_params.fieldByName('AddwetPresent').Value:=StrToFloatDef(Trim(AddwetPresent.Text) ,0);
+ cds_params.fieldByName('AddLenPresent').Value:=StrToFloatDef(Trim(AddLenPresent.Text) ,0);
+ gPresentNumFlag:=presentNumFlag.itemIndex;
+
+ end;
+ cds_params.Post;
+ end;
+ ModalResult := 1;
+end;
+
+procedure TfrmParamSet.cxButton2Click(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TfrmParamSet.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ Action := cafree;
+end;
+
+procedure TfrmParamSet.FormCreate(Sender: TObject);
+begin
+ FrameParam1.Align := alClient;
+end;
+
+procedure TfrmParamSet.FormShow(Sender: TObject);
+begin
+ if not cds_params.IsEmpty then
+ begin
+ with FrameParam1 do
+ begin
+ if Trim(cds_params.fieldByName('chen').AsString) = '1' then
+ edtChen.Text := ''
+ else
+ edtChen.Text := '';
+ if Trim(cds_params.fieldByName('mabiao').AsString) = '1' then
+ edtMaBiao.Text := ''
+ else
+ edtMaBiao.Text := '';
+ if Trim(cds_params.fieldByName('mbunit').AsString) = '1' then
+ edtMBDW.Text := ''
+ else
+ edtMBDW.Text := '';
+
+ //
+ weightRule.ItemIndex :=cds_params.fieldByName('weightRule').AsInteger;
+
+ // ֽ
+ outPage.Text := Trim(cds_params.fieldByName('outPage').AsString);
+ labNumber.ItemIndex := labNumber.Items.IndexOf
+ (cds_params.fieldByName('labNumber').AsString);
+
+ //
+ MinLen.Text := cds_params.fieldByName('MinLen').AsString;
+ MaxLen.Text := cds_params.fieldByName('MaxLen').AsString;
+ MinWeight.Text := cds_params.fieldByName('MinWeight').AsString;
+ MaxWeight.Text := cds_params.fieldByName('MaxWeight').AsString;
+ if cds_params.fieldByName('BeginPieceNo').AsString<>'0' then
+ BeginPieceNo.Text := cds_params.fieldByName('BeginPieceNo').AsString;
+
+ if cds_params.fieldByName('EndPieceNo').AsString<>'0' then
+ EndPieceNo.Text := cds_params.fieldByName('EndPieceNo').AsString;
+
+ MPlace.Text := cds_params.fieldByName('MPlace').AsString;
+ YPlace.Text := cds_params.fieldByName('YPlace').AsString;
+ KgPlace.Text := cds_params.fieldByName('KgPlace').AsString;
+
+ AddwetPresent.Text :='';// cds_params.fieldByName('AddwetPresent').AsString;
+ AddLenPresent.Text :='';// cds_params.fieldByName('AddLenPresent').AsString;
+
+ //
+ edtdabao.Text := cds_params.fieldByName('dabao').AsString;
+ if cds_params.fieldByName('packRolls').AsInteger>0 then
+ packRolls.Text := cds_params.fieldByName('packRolls').AsString;
+ packPrintPreview.checked:= cds_params.fieldByName('packPrintPreview').AsBoolean;
+ packlabNumber.ItemIndex := packlabNumber.Properties.Items.IndexOf
+ (cds_params.fieldByName('packlabNumber').AsString);
+ //
+ packnoMake.ItemIndex := packnoMake.Properties.Items.IndexOf
+ (cds_params.fieldByName('packnoMake').AsString);
+
+ //ӡ
+ packPrintAction.ItemIndex := packPrintAction.Properties.Items.IndexOf
+ (cds_params.fieldByName('packPostAction').AsString);
+
+ if packPrintAction.ItemIndex=-1 then
+ packPrintAction.ItemIndex:=1;
+
+ if packnoMake.ItemIndex =-1 then
+ packnoMake.ItemIndex :=0;
+
+
+ //
+ rollnoMake.ItemIndex := rollnoMake.Properties.Items.IndexOf
+ (cds_params.fieldByName('rollnoMake').AsString);
+
+ if rollnoMake.ItemIndex =-1 then
+ rollnoMake.ItemIndex :=0;
+
+ //
+ presentNumFlag.itemIndex:=gPresentNumFlag;
+
+ end;
+ end;
+ FrameParam1.MinLen.SetFocus;
+end;
+
+procedure TfrmParamSet.FrameParam1BeginPieceNoPropertiesChange(Sender: TObject);
+begin
+ if (StrToIntDef(Trim(FrameParam1.BeginPieceNo.Text),0)>0) OR (StrToIntDef(Trim(FrameParam1.EndPieceNo.Text),0)>0) then
+ begin
+ FrameParam1.rollnoMake.ItemIndex:=1;
+ end
+ else
+ begin
+ FrameParam1.rollnoMake.ItemIndex:=0;
+ end;
+end;
+
+procedure TfrmParamSet.FrameParam1EndPieceNoPropertiesChange(Sender: TObject);
+begin
+ if ( StrToIntDef(Trim(FrameParam1.EndPieceNo.Text),0)>0) or (StrToIntDef(Trim(FrameParam1.BeginPieceNo.Text),0)>0) then
+ begin
+ FrameParam1.rollnoMake.ItemIndex:=1;
+ end
+ else
+ begin
+ FrameParam1.rollnoMake.ItemIndex:=0;
+ end;
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_ProductJYHZList.dfm b/T03贸易布匹检验/U_ProductJYHZList.dfm
new file mode 100644
index 0000000..8fb2d9b
--- /dev/null
+++ b/T03贸易布匹检验/U_ProductJYHZList.dfm
@@ -0,0 +1,663 @@
+inherited frmProductJYHZList: TfrmProductJYHZList
+ Caption = #25104#21697#26816#39564#27719#24635#20449#24687
+ ClientHeight = 449
+ ClientWidth = 1112
+ Color = clBtnFace
+ Font.Charset = ANSI_CHARSET
+ Font.Height = -16
+ FormStyle = fsMDIChild
+ Visible = True
+ ExplicitWidth = 1128
+ ExplicitHeight = 488
+ PixelsPerInch = 96
+ TextHeight = 21
+ object ToolBar1: TToolBar [0]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 1112
+ Height = 33
+ ButtonHeight = 30
+ ButtonWidth = 83
+ Caption = 'ToolBar1'
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = []
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ParentColor = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 3
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object TBFind: TToolButton
+ Left = 63
+ Top = 0
+ AutoSize = True
+ Caption = #36807#28388
+ ImageIndex = 0
+ Visible = False
+ OnClick = TBFindClick
+ end
+ object Tmx: TToolButton
+ Left = 126
+ Top = 0
+ AutoSize = True
+ Caption = #26597#30475#26126#32454
+ ImageIndex = 30
+ OnClick = TmxClick
+ end
+ object TBExport: TToolButton
+ Left = 213
+ Top = 0
+ AutoSize = True
+ Caption = #23548#20986
+ ImageIndex = 28
+ OnClick = TBExportClick
+ end
+ object ToolButton2: TToolButton
+ Left = 276
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton2Click
+ end
+ object TBClose: TToolButton
+ Left = 363
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object cxGrid1: TcxGrid [1]
+ Left = 8
+ Top = 210
+ Width = 833
+ Height = 174
+ TabOrder = 1
+ object Tv1: TcxGridDBTableView
+ OnDblClick = Tv1DblClick
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ Column = v1Column6
+ end
+ item
+ Kind = skSum
+ Column = v2grossWeight
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = v1netWeight
+ end
+ item
+ Kind = skSum
+ Column = v1meter
+ end
+ item
+ Kind = skSum
+ Column = Tv1kcMeter
+ end
+ item
+ Kind = skSum
+ Column = Tv1KCROLL
+ end
+ item
+ Kind = skSum
+ Column = Tv1CKMeter
+ end
+ item
+ Kind = skSum
+ Column = Tv1CKROLL
+ end
+ item
+ Kind = skSum
+ Column = Tv1AddLenPresent
+ end
+ item
+ Kind = skSum
+ Column = Tv1AddwetPresent
+ end
+ item
+ Kind = skSum
+ Column = Tv1kcnetWeight
+ end
+ item
+ Kind = skSum
+ Column = Tv1kcgrossWeight
+ end
+ item
+ Kind = skSum
+ Column = Tv1kcyardage
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsData.Editing = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object v1CRTime: TcxGridDBColumn
+ Caption = #20837#24211#26085#26399
+ DataBinding.FieldName = 'CRTime'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxDateEditProperties'
+ Properties.ShowTime = False
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 89
+ end
+ object v1orderNo: TcxGridDBColumn
+ Caption = #35746#21333#21495
+ DataBinding.FieldName = 'orderNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 72
+ end
+ object v1conNo: TcxGridDBColumn
+ Caption = #21512#21516#21495
+ DataBinding.FieldName = 'conNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 80
+ end
+ object v1buyconNo: TcxGridDBColumn
+ Caption = #23458#25143#21333#21495
+ DataBinding.FieldName = 'buyconNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 80
+ end
+ object v2C_Name: TcxGridDBColumn
+ Caption = #20013#25991#21517#31216
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 125
+ end
+ object v1C_color: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_color'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object v1C_ecolor: TcxGridDBColumn
+ Caption = #39068#33394'('#33521#25991')'
+ DataBinding.FieldName = 'C_ecolor'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 85
+ end
+ object Tv1C_StyleNo: TcxGridDBColumn
+ Caption = #27454#21495
+ DataBinding.FieldName = 'C_StyleNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object v1C_pattern: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_pattern'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object v1batchno: TcxGridDBColumn
+ Caption = #26412#21378#32568#21495
+ DataBinding.FieldName = 'batchno'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object v1ordUnit: TcxGridDBColumn
+ Caption = #25968#37327#21333#20301
+ DataBinding.FieldName = 'ordUnit'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Width = 72
+ end
+ object v1Column6: TcxGridDBColumn
+ Caption = #26816#39564#21367#25968
+ DataBinding.FieldName = 'JQty'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object v1meter: TcxGridDBColumn
+ Caption = #26816#39564#31859#25968
+ DataBinding.FieldName = 'meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 80
+ end
+ object Tv1yardage: TcxGridDBColumn
+ Caption = #30721#25968
+ DataBinding.FieldName = 'yardage'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 56
+ end
+ object v2grossWeight: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'grossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 80
+ end
+ object v1netWeight: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'netWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 80
+ end
+ object Tv1CKROLL: TcxGridDBColumn
+ Caption = #20986#24211#21305#25968
+ DataBinding.FieldName = 'CKROLL'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 74
+ end
+ object Tv1CKMeter: TcxGridDBColumn
+ Caption = #20986#24211#31859#25968
+ DataBinding.FieldName = 'CKMeter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object Tv1KCROLL: TcxGridDBColumn
+ Caption = #24211#23384#21305#25968
+ DataBinding.FieldName = 'KCROLL'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 67
+ end
+ object Tv1kcMeter: TcxGridDBColumn
+ Caption = #24211#23384#31859#25968
+ DataBinding.FieldName = 'kcMeter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 60
+ end
+ object Tv1kcyardage: TcxGridDBColumn
+ Caption = #24211#23384#30721#25968
+ DataBinding.FieldName = 'kcyardage'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1kcgrossWeight: TcxGridDBColumn
+ Caption = #24211#23384#27611#37325
+ DataBinding.FieldName = 'kcgrossWeight'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ end
+ object Tv1kcnetWeight: TcxGridDBColumn
+ Caption = #24211#23384#20928#37325
+ DataBinding.FieldName = 'kcnetWeight'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ end
+ object Tv1AddwetPresent: TcxGridDBColumn
+ Caption = #36192#36865#37325#37327
+ DataBinding.FieldName = 'AddwetPresent'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ end
+ object Tv1AddLenPresent: TcxGridDBColumn
+ Caption = #36192#36865#38271#24230
+ DataBinding.FieldName = 'AddLenPresent'
+ DataBinding.IsNullValueType = True
+ end
+ end
+ object cxGrid1Level1: TcxGridLevel
+ GridView = Tv1
+ end
+ end
+ object dxLayoutControl_query: TdxLayoutControl [2]
+ Left = 0
+ Top = 33
+ Width = 1112
+ Height = 80
+ Align = alTop
+ TabOrder = 2
+ AutoSize = True
+ LayoutLookAndFeel = DataLink_TradeInsp.dxLayoutSkinLookAndFeel1
+ OptionsItem.SizableHorz = True
+ OptionsItem.SizableVert = True
+ object C_name: TcxTextEdit
+ Tag = 2
+ Left = 846
+ Top = 11
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 4
+ Width = 108
+ end
+ object orderNo: TcxTextEdit
+ Tag = 2
+ Left = 462
+ Top = 11
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 2
+ Width = 124
+ end
+ object C_color: TcxTextEdit
+ Tag = 2
+ Left = 88
+ Top = 44
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 5
+ Width = 155
+ end
+ object batchNo: TcxTextEdit
+ Tag = 1
+ Left = 848
+ Top = 44
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 9
+ Width = 108
+ end
+ object conNo: TcxTextEdit
+ Tag = 2
+ Left = 651
+ Top = 11
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 3
+ Width = 114
+ end
+ object buyconNo: TcxTextEdit
+ Tag = 2
+ Left = 480
+ Top = 44
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 7
+ Width = 108
+ end
+ object C_styleNo: TcxTextEdit
+ Tag = 2
+ Left = 637
+ Top = 44
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 8
+ Width = 130
+ end
+ object enddate: TcxDateEdit
+ Left = 276
+ Top = 11
+ ParentFont = True
+ Properties.ImmediatePost = True
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 1
+ Width = 121
+ end
+ object begdate: TcxDateEdit
+ Left = 88
+ Top = 11
+ ParentFont = True
+ Properties.ImmediatePost = True
+ Properties.InputKind = ikRegExpr
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 0
+ Width = 157
+ end
+ object C_Pattern: TcxTextEdit
+ Tag = 2
+ Left = 292
+ Top = 44
+ AutoSize = False
+ ParentFont = True
+ Properties.OnChange = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 6
+ Height = 33
+ Width = 107
+ end
+ object dxLayoutControl_queryGroup_Root: TdxLayoutGroup
+ AlignHorz = ahParentManaged
+ AlignVert = avParentManaged
+ CaptionOptions.AlignVert = tavCenter
+ CaptionOptions.Text = #26597#35810#32452
+ CaptionOptions.Visible = False
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ Hidden = True
+ ItemIndex = 1
+ Padding.Top = -5
+ Padding.AssignedValues = [lpavTop]
+ ShowBorder = False
+ UseIndent = False
+ Index = -1
+ end
+ object dxLayoutItem_begdate: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 229
+ AllowRemove = False
+ CaptionOptions.Text = #26597#35810#26102#38388
+ Control = begdate
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 157
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem2: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 180
+ AllowRemove = False
+ CaptionOptions.Text = #35746#21333#21495
+ Control = orderNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 124
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem_color: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.Width = 227
+ CaptionOptions.Text = #39068#33394
+ Control = C_color
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 155
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem_pm: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 180
+ CaptionOptions.Text = #20013#25991#21517#31216
+ Control = C_name
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 108
+ ControlOptions.ShowBorder = False
+ Index = 4
+ end
+ object dxLayoutItem_end: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 143
+ CaptionOptions.Text = '--'
+ Control = enddate
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem_hth: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Width = 170
+ CaptionOptions.Text = #21512#21516#21495
+ Control = conNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 114
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem_khdh: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.Width = 180
+ CaptionOptions.Text = #23458#25143#21333#21495
+ Control = buyconNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 108
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem_Pattern: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ AlignVert = avClient
+ SizeOptions.Width = 147
+ CaptionOptions.Text = #33457#22411
+ Control = C_Pattern
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 107
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutGroup1: TdxLayoutGroup
+ Parent = dxLayoutControl_queryGroup_Root
+ CaptionOptions.Text = #32452'1'
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutGroup2: TdxLayoutGroup
+ Parent = dxLayoutControl_queryGroup_Root
+ CaptionOptions.Text = #32452'2'
+ Hidden = True
+ ItemIndex = 4
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem1: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.Width = 170
+ CaptionOptions.Text = #27454#21495
+ Control = C_styleNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 130
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem3: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.Width = 180
+ CaptionOptions.Text = #26412#21378#32568#21495
+ Control = batchNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 108
+ ControlOptions.ShowBorder = False
+ Index = 4
+ end
+ end
+ inherited cxProgressBar2: TcxProgressBar
+ Left = 296
+ Top = 128
+ ExplicitLeft = 296
+ ExplicitTop = 128
+ ExplicitHeight = 26
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 121
+ Top = 168
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 73
+ Top = 169
+ end
+ object DataSource1: TDataSource
+ DataSet = ADOQueryMain
+ Left = 544
+ Top = 296
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 200
+ Top = 192
+ end
+ object RMGridReport1: TRMGridReport
+ ThreadPrepareReport = True
+ InitialZoom = pzDefault
+ PreviewButtons = [rmpbZoom, rmpbLoad, rmpbSave, rmpbPrint, rmpbFind, rmpbPageSetup, rmpbExit, rmpbExport, rmpbNavigator]
+ DefaultCollate = False
+ SaveReportOptions.RegistryPath = 'Software\ReportMachine\ReportSettings\'
+ PreviewOptions.RulerUnit = rmutScreenPixels
+ PreviewOptions.RulerVisible = False
+ PreviewOptions.DrawBorder = False
+ PreviewOptions.BorderPen.Color = clGray
+ PreviewOptions.BorderPen.Style = psDash
+ CompressLevel = rmzcFastest
+ CompressThread = False
+ LaterBuildEvents = True
+ OnlyOwnerDataSet = False
+ Left = 320
+ Top = 320
+ ReportData = {}
+ end
+ object cxGridPopupMenu1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 581
+ Top = 304
+ end
+end
diff --git a/T03贸易布匹检验/U_ProductJYHZList.pas b/T03贸易布匹检验/U_ProductJYHZList.pas
new file mode 100644
index 0000000..f8cb5eb
--- /dev/null
+++ b/T03贸易布匹检验/U_ProductJYHZList.pas
@@ -0,0 +1,231 @@
+unit U_ProductJYHZList;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
+ System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics,
+ cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles, cxCustomData,
+ cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, dxDateRanges,
+ dxScrollbarAnnotations, Data.DB, cxDBData, cxCalendar, cxGridLevel,
+ cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
+ cxGridCustomView, cxGrid, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls,
+ Vcl.ToolWin, U_BaseList, Data.Win.ADODB, dxBarBuiltInMenu,
+ cxGridCustomPopupMenu, cxGridPopupMenu, RM_Common, RM_Class, RM_GridReport,
+ cxContainer, cxTextEdit, dxCore, cxDateUtils, dxLayoutcxEditAdapters,
+ dxLayoutContainer, cxMaskEdit, cxDropDownEdit, dxLayoutControl, cxProgressBar;
+
+type
+ TfrmProductJYHZList = class(TfrmBaseList)
+ ToolBar1: TToolBar;
+ TBRafresh: TToolButton;
+ TBFind: TToolButton;
+ Tmx: TToolButton;
+ TBExport: TToolButton;
+ TBClose: TToolButton;
+ C_name: TcxTextEdit;
+ orderNo: TcxTextEdit;
+ C_color: TcxTextEdit;
+ batchNo: TcxTextEdit;
+ conNo: TcxTextEdit;
+ buyconNo: TcxTextEdit;
+ cxGrid1: TcxGrid;
+ Tv1: TcxGridDBTableView;
+ v1CRTime: TcxGridDBColumn;
+ v1orderNo: TcxGridDBColumn;
+ v1conNo: TcxGridDBColumn;
+ v1buyconNo: TcxGridDBColumn;
+ v2C_Name: TcxGridDBColumn;
+ v1C_color: TcxGridDBColumn;
+ v1C_ecolor: TcxGridDBColumn;
+ v1C_pattern: TcxGridDBColumn;
+ v1batchno: TcxGridDBColumn;
+ v1Column6: TcxGridDBColumn;
+ v1meter: TcxGridDBColumn;
+ v1ordUnit: TcxGridDBColumn;
+ v2grossWeight: TcxGridDBColumn;
+ v1netWeight: TcxGridDBColumn;
+ Tv1CKROLL: TcxGridDBColumn;
+ Tv1CKMeter: TcxGridDBColumn;
+ Tv1KCROLL: TcxGridDBColumn;
+ Tv1kcMeter: TcxGridDBColumn;
+ cxGrid1Level1: TcxGridLevel;
+ DataSource1: TDataSource;
+ ADOQueryMain: TADOQuery;
+ RMGridReport1: TRMGridReport;
+ cxGridPopupMenu1: TcxGridPopupMenu;
+ Tv1yardage: TcxGridDBColumn;
+ Tv1kcyardage: TcxGridDBColumn;
+ Tv1kcgrossWeight: TcxGridDBColumn;
+ Tv1kcnetWeight: TcxGridDBColumn;
+ Tv1AddwetPresent: TcxGridDBColumn;
+ Tv1AddLenPresent: TcxGridDBColumn;
+ Tv1C_StyleNo: TcxGridDBColumn;
+ ToolButton2: TToolButton;
+ dxLayoutControl_query: TdxLayoutControl;
+ C_styleNo: TcxTextEdit;
+ enddate: TcxDateEdit;
+ begdate: TcxDateEdit;
+ C_Pattern: TcxTextEdit;
+ dxLayoutControl_queryGroup_Root: TdxLayoutGroup;
+ dxLayoutItem_begdate: TdxLayoutItem;
+ dxLayoutItem2: TdxLayoutItem;
+ dxLayoutItem_color: TdxLayoutItem;
+ dxLayoutItem_pm: TdxLayoutItem;
+ dxLayoutItem_end: TdxLayoutItem;
+ dxLayoutItem_hth: TdxLayoutItem;
+ dxLayoutItem_khdh: TdxLayoutItem;
+ dxLayoutItem_Pattern: TdxLayoutItem;
+ dxLayoutGroup1: TdxLayoutGroup;
+ dxLayoutGroup2: TdxLayoutGroup;
+ dxLayoutItem1: TdxLayoutItem;
+ dxLayoutItem3: TdxLayoutItem;
+ procedure TBCloseClick(Sender: TObject);
+ procedure TBExportClick(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormDestroy(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure ToolButton2Click(Sender: TObject);
+ procedure TmxClick(Sender: TObject);
+ procedure Tv1DblClick(Sender: TObject);
+ procedure TBFindClick(Sender: TObject);
+ private
+ procedure InitGrid();
+ public
+ { Public declarations }
+ end;
+
+var
+ frmProductJYHZList: TfrmProductJYHZList;
+
+implementation
+
+uses
+ U_DataLink, U_RtFun, U_ZDYHelp, U_globalVar, U_TradeClothInspList,
+ U_FormLayOutDesign;
+{$R *.dfm}
+
+procedure TfrmProductJYHZList.TBCloseClick(Sender: TObject);
+begin
+ inherited;
+ WriteCxGrid(self.Caption + tv1.Name, Tv1, 'Ʒֿ');
+ Close;
+end;
+
+procedure TfrmProductJYHZList.TBExportClick(Sender: TObject);
+begin
+ inherited;
+ if ADOQueryMain.IsEmpty then
+ exit;
+ TcxGridToExcel(self.Caption, cxGrid1);
+end;
+
+procedure TfrmProductJYHZList.TBFindClick(Sender: TObject);
+begin
+ inherited;
+ if ADOQueryMain.Active then
+ begin
+ SDofilter(ADOQueryMain, SLGetFilters(dxLayoutControl_query, 1, 2));
+ // SCreateCDS20(ADOQueryMain,CDS_Main);
+ // SInitCDSData20(ADOQueryMain,CDS_Main);
+ end;
+end;
+
+procedure TfrmProductJYHZList.TBRafreshClick(Sender: TObject);
+begin
+ inherited;
+ InitGrid();
+end;
+
+procedure TfrmProductJYHZList.TmxClick(Sender: TObject);
+begin
+ inherited;
+ if ADOQueryMain.IsEmpty then
+ Exit;
+ //frmTradeClothInspList:=TfrmTradeClothInspList.Create(Application);
+ with TfrmTradeClothInspList.Create(Application) do
+ begin
+ orderno.Text := trim(self.ADOQueryMain.fieldbyname('orderno').asstring);
+ batchNo.Text := trim(self.ADOQueryMain.fieldbyname('batchNo').asstring);
+ C_Color.Text := trim(self.ADOQueryMain.fieldbyname('C_Color').asstring);
+ if ShowModal = 1 then
+ begin
+ // InitGrid();
+ end;
+ free;
+ end;
+end;
+
+procedure TfrmProductJYHZList.ToolButton2Click(Sender: TObject);
+begin
+ inherited;
+ WriteCxGrid(self.Caption, Tv1, gDllFileCaption);
+ if gIsCanDesign then
+ begin
+ saveLayOut(application, dxLayoutControl_query, ADOQueryBaseCmd, PWideChar(fDllFileName + '|' + Self.Name + '|' + dxLayoutControl_query.Name + '.ini'));
+ end;
+end;
+
+procedure TfrmProductJYHZList.Tv1DblClick(Sender: TObject);
+begin
+ inherited;
+ Tmx.Click;
+end;
+
+//////////////////////////
+procedure TfrmProductJYHZList.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ Action := caFree;
+end;
+
+procedure TfrmProductJYHZList.FormCreate(Sender: TObject);
+begin
+ inherited;
+ BegDate.Date := SGetServerDateTime(ADOQueryBaseTemp);
+ EndDate.Date := BegDate.Date;
+ cxGrid1.Align := alClient;
+end;
+
+procedure TfrmProductJYHZList.FormDestroy(Sender: TObject);
+begin
+ inherited;
+ frmProductJYHZList := nil;
+end;
+
+procedure TfrmProductJYHZList.FormShow(Sender: TObject);
+begin
+ inherited;
+ readCxGrid(self.Caption + tv1.Name, Tv1, 'Ʒֿ');
+ InitGrid();
+end;
+
+procedure TfrmProductJYHZList.InitGrid();
+begin
+ try
+ ADOQueryMain.DisableControls;
+ with ADOQueryMain do
+ begin
+ Close;
+ sql.Clear;
+ Filtered := False;
+ sql.Add('exec p_select_pieceCheckHz_list');
+ sql.Add('@begdate=' + QuotedStr(FormatDateTime('yyyy-MM-dd', BegDate.Date)));
+ sql.Add(',@enddate=' + QuotedStr(FormatDateTime('yyyy-MM-dd', endDate.Date + 1)));
+ sql.Add(',@orderNo=' + QuotedStr(orderNo.Text));
+ sql.Add(',@groupBy=''1''');
+ Open;
+ //ShowMessage(SQL.Text);
+ end;
+ // SCreateCDS(ADOQueryMain,CDS_Main);
+ // SInitCDSData(ADOQueryMain,CDS_Main);
+ SDofilter(ADOQueryMain, SLGetFilters(dxLayoutControl_query, 1, 2));
+ finally
+ ADOQueryMain.EnableControls;
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_ProductListHelp.dfm b/T03贸易布匹检验/U_ProductListHelp.dfm
new file mode 100644
index 0000000..1f21bde
--- /dev/null
+++ b/T03贸易布匹检验/U_ProductListHelp.dfm
@@ -0,0 +1,514 @@
+inherited frmProductListHelp: TfrmProductListHelp
+ Caption = #25351#31034#21333#26126#32454#21015#34920
+ ClientHeight = 540
+ ClientWidth = 1143
+ Font.Charset = ANSI_CHARSET
+ Font.Height = -13
+ Font.Name = #24494#36719#38597#40657
+ Position = poDesktopCenter
+ WindowState = wsMaximized
+ ExplicitWidth = 1159
+ ExplicitHeight = 579
+ PixelsPerInch = 96
+ TextHeight = 19
+ object ToolBar1: TToolBar [0]
+ Tag = 999
+ Left = 0
+ Top = 0
+ Width = 1143
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 99
+ Caption = 'ToolBar1'
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ParentColor = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 0
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object TBFind: TToolButton
+ Left = 71
+ Top = 0
+ AutoSize = True
+ Caption = #36807#28388
+ ImageIndex = 0
+ OnClick = TBFindClick
+ end
+ object TselOk: TToolButton
+ Left = 142
+ Top = 0
+ AutoSize = True
+ Caption = #30830#23450
+ ImageIndex = 12
+ OnClick = TselOkClick
+ end
+ object ToolButton1: TToolButton
+ Left = 213
+ Top = 0
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 37
+ OnClick = ToolButton1Click
+ end
+ object TBClose: TToolButton
+ Left = 312
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object cxGrid2: TcxGrid [1]
+ Left = 0
+ Top = 151
+ Width = 1007
+ Height = 208
+ TabOrder = 1
+ object TV2: TcxGridDBTableView
+ OnDblClick = TV2DblClick
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <
+ item
+ Format = '0'
+ Position = spFooter
+ end>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = TV2OrdPiece
+ end
+ item
+ Kind = skSum
+ Column = V2OrdQty
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsBehavior.GoToNextCellOnEnter = True
+ OptionsCustomize.ColumnFiltering = False
+ OptionsData.Editing = False
+ OptionsSelection.CellSelect = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object V2filltime: TcxGridDBColumn
+ Caption = #21046#21333#26102#38388
+ DataBinding.FieldName = 'filltime'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxDateEditProperties'
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 79
+ end
+ object V2Subid: TcxGridDBColumn
+ Caption = #35746#21333#26465#30721
+ DataBinding.FieldName = 'Subid'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 73
+ end
+ object V2Column10: TcxGridDBColumn
+ Caption = #35746#21333#21495
+ DataBinding.FieldName = 'OrderNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 72
+ end
+ object V2CustomerNoName: TcxGridDBColumn
+ Caption = #23458#25143
+ DataBinding.FieldName = 'CustName'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object V2KHOrderNo: TcxGridDBColumn
+ Caption = #23458#25143#35746#21333#21495
+ DataBinding.FieldName = 'KHOrderNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 79
+ end
+ object V2Column14: TcxGridDBColumn
+ Caption = #21512#21516#21495
+ DataBinding.FieldName = 'conNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object V2C_Name: TcxGridDBColumn
+ Caption = #20135#21697#21517#31216
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 80
+ end
+ object V2C_Spec: TcxGridDBColumn
+ Caption = #22411#21495#35268#26684
+ DataBinding.FieldName = 'C_Spec'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Width = 80
+ end
+ object V2C_Color: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 77
+ end
+ object V2C_ColorNo: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_ColorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 73
+ end
+ object V2C_Pattern: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_Pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 71
+ end
+ object TV2OrdPiece: TcxGridDBColumn
+ Caption = #21305#25968
+ DataBinding.FieldName = 'OrdPiece'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ end
+ object V2OrdQty: TcxGridDBColumn
+ Caption = #25968#37327
+ DataBinding.FieldName = 'OrdQty'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 65
+ end
+ object V2OrderUnit: TcxGridDBColumn
+ Caption = #25968#37327#21333#20301
+ DataBinding.FieldName = 'OrdUnit'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 65
+ end
+ object V2OrdSNote: TcxGridDBColumn
+ Caption = #25968#37327#35201#27714
+ DataBinding.FieldName = 'OrdSNote'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 76
+ end
+ object V2packNote: TcxGridDBColumn
+ Caption = #21253#35013#35201#27714
+ DataBinding.FieldName = 'packNote'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 65
+ end
+ object TV2Column1: TcxGridDBColumn
+ Caption = #26412#21378#32568#21495
+ DataBinding.FieldName = 'batchno'
+ DataBinding.IsNullValueType = True
+ end
+ end
+ object cxGridLevel1: TcxGridLevel
+ GridView = TV2
+ end
+ end
+ object dxLayoutControl_query: TdxLayoutControl [2]
+ Left = 0
+ Top = 30
+ Width = 1143
+ Height = 59
+ Align = alTop
+ TabOrder = 2
+ LayoutLookAndFeel = DataLink_TradeInsp.dxLayoutSkinLookAndFeel1
+ OptionsItem.SizableHorz = True
+ OptionsItem.SizableVert = True
+ object custName: TcxTextEdit
+ Tag = 2
+ Left = 601
+ Top = 14
+ ParentFont = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 3
+ Width = 109
+ end
+ object conNo: TcxTextEdit
+ Tag = 2
+ Left = 764
+ Top = 14
+ ParentFont = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 4
+ Width = 105
+ end
+ object BuyConNo: TcxTextEdit
+ Tag = 2
+ Left = 10000
+ Top = 10000
+ ParentFont = True
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 6
+ Visible = False
+ Width = 121
+ end
+ object OrderNo: TcxTextEdit
+ Tag = 2
+ Left = 425
+ Top = 14
+ ParentFont = True
+ Properties.OnEditValueChanged = TBFindClick
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 2
+ Width = 109
+ end
+ object C_Color: TcxTextEdit
+ Tag = 2
+ Left = 10000
+ Top = 10000
+ ParentFont = True
+ Style.BorderColor = clWindowFrame
+ Style.BorderStyle = ebs3D
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 7
+ Visible = False
+ Width = 121
+ end
+ object C_Name: TcxTextEdit
+ Tag = 2
+ Left = 936
+ Top = 14
+ AutoSize = False
+ ParentFont = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 5
+ Height = 29
+ Width = 109
+ end
+ object enddate: TcxDateEdit
+ Left = 238
+ Top = 14
+ ParentFont = True
+ Properties.ImmediatePost = True
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 1
+ Width = 133
+ end
+ object begdate: TcxDateEdit
+ Left = 73
+ Top = 14
+ ParentFont = True
+ Properties.ImmediatePost = True
+ Properties.InputKind = ikRegExpr
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 0
+ Width = 138
+ end
+ object C_Pattern: TcxTextEdit
+ Tag = 2
+ Left = 10000
+ Top = 10000
+ ParentFont = True
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 8
+ Visible = False
+ Width = 121
+ end
+ object dxLayoutControl_queryGroup_Root: TdxLayoutGroup
+ AlignHorz = ahParentManaged
+ AlignVert = avParentManaged
+ CaptionOptions.AlignVert = tavCenter
+ CaptionOptions.Text = #26597#35810#32452
+ CaptionOptions.Visible = False
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ Hidden = True
+ ItemIndex = 5
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem1: TdxLayoutItem
+ Parent = dxLayoutControl_queryGroup_Root
+ AllowRemove = False
+ CaptionOptions.Text = #35746#21333#21495
+ Control = OrderNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 109
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem2: TdxLayoutItem
+ Parent = dxLayoutControl_queryGroup_Root
+ AllowRemove = False
+ CaptionOptions.Text = #23458#25143#21517#31216
+ Control = custName
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 109
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem_color: TdxLayoutItem
+ CaptionOptions.Text = #39068#33394
+ Control = C_Color
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_pm: TdxLayoutItem
+ Parent = dxLayoutControl_queryGroup_Root
+ SizeOptions.Width = 168
+ CaptionOptions.Text = #20135#21697#21517#31216
+ Control = C_Name
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 109
+ ControlOptions.ShowBorder = False
+ Index = 5
+ end
+ object dxLayoutItem_beg: TdxLayoutItem
+ Parent = dxLayoutControl_queryGroup_Root
+ SizeOptions.Width = 197
+ CaptionOptions.Text = #21046#21333#26085#26399
+ Control = begdate
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 133
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem_end: TdxLayoutItem
+ Parent = dxLayoutControl_queryGroup_Root
+ SizeOptions.Width = 152
+ CaptionOptions.Text = '--'
+ Control = enddate
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 117
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem_hth: TdxLayoutItem
+ Parent = dxLayoutControl_queryGroup_Root
+ CaptionOptions.Text = #21512#21516#21495
+ Control = conNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 105
+ ControlOptions.ShowBorder = False
+ Index = 4
+ end
+ object dxLayoutItem_khdh: TdxLayoutItem
+ CaptionOptions.Text = #23458#25143#21333#21495
+ Control = BuyConNo
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutItem_Pattern: TdxLayoutItem
+ CaptionOptions.Text = #33457#22411
+ Control = C_Pattern
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 121
+ ControlOptions.ShowBorder = False
+ Index = -1
+ end
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 385
+ Top = 336
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 289
+ Top = 345
+ end
+ object DataSource1: TDataSource
+ DataSet = Order_Main
+ Left = 680
+ Top = 328
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 616
+ Top = 328
+ end
+ object Order_Main: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 824
+ Top = 256
+ end
+ object cxGridPopupMenu1: TcxGridPopupMenu
+ Grid = cxGrid2
+ PopupMenus = <>
+ Left = 448
+ Top = 168
+ end
+end
diff --git a/T03贸易布匹检验/U_ProductListHelp.pas b/T03贸易布匹检验/U_ProductListHelp.pas
new file mode 100644
index 0000000..809ec39
--- /dev/null
+++ b/T03贸易布匹检验/U_ProductListHelp.pas
@@ -0,0 +1,193 @@
+unit U_ProductListHelp;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
+ cxLookAndFeelPainters, cxStyles, cxCustomData,
+ cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, dxDateRanges,
+ dxScrollbarAnnotations, Data.DB, cxDBData, cxCalendar, cxGridLevel,
+ cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
+ cxGridCustomView, cxGrid, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls,
+ Vcl.ToolWin, Data.Win.ADODB, U_BaseHelp, U_BaseList, System.ImageList,
+ Vcl.ImgList, Datasnap.DBClient, dxBarBuiltInMenu, cxGridCustomPopupMenu,
+ cxGridPopupMenu, dxLayoutContainer, dxLayoutControl, cxContainer, dxCore,
+ cxDateUtils, dxLayoutcxEditAdapters, cxMaskEdit, cxDropDownEdit, cxTextEdit;
+
+type
+ TfrmProductListHelp = class(TfrmBaseHelp)
+ ToolBar1: TToolBar;
+ TBRafresh: TToolButton;
+ TBFind: TToolButton;
+ TBClose: TToolButton;
+ cxGrid2: TcxGrid;
+ TV2: TcxGridDBTableView;
+ V2filltime: TcxGridDBColumn;
+ V2Subid: TcxGridDBColumn;
+ V2Column10: TcxGridDBColumn;
+ V2CustomerNoName: TcxGridDBColumn;
+ V2KHOrderNo: TcxGridDBColumn;
+ V2Column14: TcxGridDBColumn;
+ V2C_Name: TcxGridDBColumn;
+ V2C_Spec: TcxGridDBColumn;
+ V2C_Color: TcxGridDBColumn;
+ V2C_ColorNo: TcxGridDBColumn;
+ V2C_Pattern: TcxGridDBColumn;
+ V2OrdSNote: TcxGridDBColumn;
+ V2packNote: TcxGridDBColumn;
+ V2OrdQty: TcxGridDBColumn;
+ V2OrderUnit: TcxGridDBColumn;
+ cxGridLevel1: TcxGridLevel;
+ DataSource1: TDataSource;
+ ADOQueryMain: TADOQuery;
+ Order_Main: TClientDataSet;
+ TV2OrdPiece: TcxGridDBColumn;
+ cxGridPopupMenu1: TcxGridPopupMenu;
+ TselOk: TToolButton;
+ ToolButton1: TToolButton;
+ dxLayoutControl_query: TdxLayoutControl;
+ custName: TcxTextEdit;
+ conNo: TcxTextEdit;
+ BuyConNo: TcxTextEdit;
+ OrderNo: TcxTextEdit;
+ C_Color: TcxTextEdit;
+ C_Name: TcxTextEdit;
+ enddate: TcxDateEdit;
+ begdate: TcxDateEdit;
+ dxLayoutControl_queryGroup_Root: TdxLayoutGroup;
+ dxLayoutItem1: TdxLayoutItem;
+ dxLayoutItem2: TdxLayoutItem;
+ dxLayoutItem_color: TdxLayoutItem;
+ dxLayoutItem_pm: TdxLayoutItem;
+ dxLayoutItem_beg: TdxLayoutItem;
+ dxLayoutItem_end: TdxLayoutItem;
+ dxLayoutItem_hth: TdxLayoutItem;
+ dxLayoutItem_khdh: TdxLayoutItem;
+ dxLayoutItem_Pattern: TdxLayoutItem;
+ C_Pattern: TcxTextEdit;
+ TV2Column1: TcxGridDBColumn;
+ procedure TBCloseClick(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure TselOkClick(Sender: TObject);
+ procedure TV2DblClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure TBFindClick(Sender: TObject);
+ private
+ procedure InitForm();
+ procedure InitGrid();
+ public
+ fType:string;
+ end;
+
+var
+ frmProductListHelp: TfrmProductListHelp;
+
+implementation
+uses
+ U_DataLink,U_globalVar,U_RTFun,U_FormLayOutDesign;
+{$R *.dfm}
+
+procedure TfrmProductListHelp.FormCreate(Sender: TObject);
+begin
+ inherited;
+ cxGrid2.Align:=alClient;
+ BegDate.Date:=SGetServerDateTime(ADOQueryBaseTemp)-3;
+ endDate.Date:=SGetServerDateTime(ADOQueryBaseTemp)
+end;
+
+procedure TfrmProductListHelp.FormShow(Sender: TObject);
+begin
+ inherited;
+ InitForm();
+
+end;
+
+procedure TfrmProductListHelp.InitForm();
+begin
+ InitGrid();
+ ReadCxGrid(self.Caption+tv2.Name,Tv2,gDllFileCaption);
+
+
+end;
+
+procedure TfrmProductListHelp.TBFindClick(Sender: TObject);
+begin
+ if ADOQueryMain.Active=False then Exit;
+ SDofilter(ADOQueryMain, SLGetFilters(dxLayoutControl_query, 1, 2));
+ SCreateCDS(ADOQueryMain, Order_Main);
+ SInitCDSData(ADOQueryMain, Order_Main);
+end;
+procedure TfrmProductListHelp.TBRafreshClick(Sender: TObject);
+begin
+ OrderNo.SetFocus;
+ InitGrid();
+end;
+
+procedure TfrmProductListHelp.ToolButton1Click(Sender: TObject);
+begin
+ WriteCxGrid(trim(Self.Caption)+tv2.Name , Tv2, gDllFileCaption);
+ if gIsCanDesign then
+ begin
+ saveLayOut(application,dxLayoutControl_query, ADOQueryBaseCmd,
+ PWideChar( fDllFileName + '|' + Self.Name + '|' + dxLayoutControl_query.Name
+ + '.ini'));
+ end;
+
+end;
+
+procedure TfrmProductListHelp.TselOkClick(Sender: TObject);
+begin
+ inherited;
+ if Order_Main.IsEmpty then exit;
+
+ ModalResult:=1;
+end;
+
+procedure TfrmProductListHelp.TV2DblClick(Sender: TObject);
+begin
+ inherited;
+ TselOk.Click;
+end;
+
+procedure TfrmProductListHelp.TBCloseClick(Sender: TObject);
+begin
+ close;
+end;
+procedure TfrmProductListHelp.InitGrid();
+var
+ mBegDate:string;
+ mendDate:string;
+begin
+ if BegDate.Text<>'' then
+ mBegDate := FormatDateTime('yyyy-MM-dd', BegDate.Date);
+ if enddate.Text<>'' then
+ mendDate := FormatDateTime('yyyy-MM-dd', enddate.Date + 1);
+ try
+ Order_Main.DisableControls;
+ with ADOQueryMain do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select A.* ');
+ // sql.Add(',SumPiece=(select Sum(X.Piece) from BS_Cloth_IO X where X.IOFlag='''' and X.fromSubID=A.SubID and isnull(X.STKNAME,'''')=' + Quotedstr(Trim(FSTKNAME)) + ')');
+ //sql.Add(',SumQty=(select Sum(X.Qty) from BS_Cloth_IO X where X.IOFlag='''' and X.fromSubID=A.SubID and isnull(X.STKNAME,'''')=' + Quotedstr(Trim(FSTKNAME)) + ')');
+ sql.Add('from V_Trade_Plan_Fty A ');
+ sql.add('where Status=''9'' ');
+ if mBegDate<>'' then
+ sql.Add('and filltime>='+QuotedStr(mBegDate));
+ if mendDate<>'' then
+ sql.Add('and filltime<'+QuotedStr(mendDate));
+ Open;
+ end;
+ SDofilter(ADOQueryMain, SLGetFilters(dxLayoutControl_query, 1, 2));
+ SCreateCDS(ADOQueryMain, Order_Main);
+ SInitCDSData(ADOQueryMain, Order_Main);
+ finally
+ Order_Main.EnableControls;
+ end;
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_SysLogList.dfm b/T03贸易布匹检验/U_SysLogList.dfm
new file mode 100644
index 0000000..112ba89
--- /dev/null
+++ b/T03贸易布匹检验/U_SysLogList.dfm
@@ -0,0 +1,6110 @@
+object frmSysLogList: TfrmSysLogList
+ Left = 0
+ Top = 0
+ Caption = #25171#21367#26085#24535
+ ClientHeight = 676
+ ClientWidth = 1181
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ OldCreateOrder = False
+ Position = poDesktopCenter
+ WindowState = wsMaximized
+ OnCreate = FormCreate
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 21
+ object Panel1: TPanel
+ Left = 0
+ Top = 37
+ Width = 1181
+ Height = 66
+ Align = alTop
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ TabOrder = 0
+ object Label2: TLabel
+ Left = 210
+ Top = 22
+ Width = 14
+ Height = 21
+ Caption = '--'
+ end
+ object Label1: TLabel
+ Left = 8
+ Top = 22
+ Width = 64
+ Height = 21
+ Caption = #25805#20316#26085#26399
+ end
+ object Label4: TLabel
+ Left = 380
+ Top = 22
+ Width = 64
+ Height = 21
+ Caption = #25805#20316#20869#23481
+ end
+ object Label3: TLabel
+ Left = 617
+ Top = 22
+ Width = 48
+ Height = 21
+ Caption = #35746#21333#21495
+ end
+ object begdate: TcxDateEdit
+ Left = 78
+ Top = 16
+ TabOrder = 0
+ Width = 126
+ end
+ object enddate: TcxDateEdit
+ Left = 230
+ Top = 18
+ TabOrder = 1
+ Width = 123
+ end
+ object edt_nr: TcxTextEdit
+ Left = 450
+ Top = 16
+ Properties.OnChange = edt_nrPropertiesChange
+ TabOrder = 2
+ Width = 161
+ end
+ object orderNo: TcxTextEdit
+ Left = 671
+ Top = 18
+ Properties.OnChange = edt_nrPropertiesChange
+ TabOrder = 3
+ Width = 130
+ end
+ end
+ object cxGrid1: TcxGrid
+ Left = 0
+ Top = 184
+ Width = 1181
+ Height = 492
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ PopupMenu = PM_1
+ TabOrder = 1
+ LookAndFeel.Kind = lfStandard
+ object tv1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoGroupsAlwaysExpanded]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsData.Deleting = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object tv1orderNo: TcxGridDBColumn
+ Caption = #35746#21333#21495
+ DataBinding.FieldName = 'orderNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 82
+ end
+ object tv1C_name: TcxGridDBColumn
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1C_pattern: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1c_color: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'c_color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1C_colorNo: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'c_colorNo'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ end
+ object tv1FtyPCId: TcxGridDBColumn
+ Caption = #32568#21495
+ DataBinding.FieldName = 'FtyPCId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1batchNo: TcxGridDBColumn
+ Caption = #26412#21378#32568#21495
+ DataBinding.FieldName = 'batchNo'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ Width = 87
+ end
+ object tv1pieceNo: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'pieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1CIID: TcxGridDBColumn
+ Caption = #21367#26465#30721
+ DataBinding.FieldName = 'CIID'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ Width = 73
+ end
+ object tv1Meter: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1GrossWeight: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'GrossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1NetWeight: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object tv1UOperator: TcxGridDBColumn
+ Caption = #25805#20316#20154
+ DataBinding.FieldName = 'UOperator'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Focusing = False
+ Width = 92
+ end
+ object tv1utime: TcxGridDBColumn
+ Caption = #25805#20316#26102#38388
+ DataBinding.FieldName = 'utime'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 144
+ end
+ object tv1Utype: TcxGridDBColumn
+ Caption = #25152#23646#27169#22359
+ DataBinding.FieldName = 'UOperation'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 122
+ end
+ object tv1UOperation: TcxGridDBColumn
+ Caption = #25805#20316#31867#22411
+ DataBinding.FieldName = 'Utype'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 103
+ end
+ object tv1UDetails: TcxGridDBColumn
+ Caption = #25805#20316#20869#23481
+ DataBinding.FieldName = 'UDetails'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ Width = 100
+ end
+ object tv1ssel: TcxGridDBColumn
+ Caption = #36873#25321
+ DataBinding.FieldName = 'ssel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.NullStyle = nssUnchecked
+ end
+ end
+ object cxGridLevel1: TcxGridLevel
+ GridView = tv1
+ end
+ end
+ object ToolBar1: TToolBar
+ Left = 0
+ Top = 0
+ Width = 1181
+ Height = 37
+ ButtonHeight = 30
+ ButtonWidth = 99
+ Caption = 'ToolBar1'
+ Images = cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 2
+ object TQry: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #26597#35810
+ ImageIndex = 8
+ OnClick = TQryClick
+ end
+ object ToolButton1: TToolButton
+ Left = 71
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 37
+ OnClick = ToolButton1Click
+ end
+ object Tundo: TToolButton
+ Left = 174
+ Top = 0
+ AutoSize = True
+ Caption = #25764#22238#21024#38500
+ ImageIndex = 11
+ OnClick = TundoClick
+ end
+ object Tclose: TToolButton
+ Left = 277
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TcloseClick
+ end
+ end
+ object cxImageList_bar: TcxImageList
+ SourceDPI = 96
+ Height = 24
+ Width = 24
+ FormatVersion = 1
+ Left = 480
+ Top = 97
+ Bitmap = {
+ 494C010135003800040018001800FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600
+ 00000000000036000000280000006000000050010000010020000000000000F8
+ 0100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000D070140361E0480361E
+ 0480291D10801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C80291D
+ 1080361E0480361E04800D070140000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF1C1C1C801C1C1C801C1C1C80717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F9F1FFB1DCA6FF92CE82FF8FAB
+ 46FFB07E0DFFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFADDAA1FF2FA211FF229C02FF229C02FF229C
+ 02FF229C02FF509306FF2D200380000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFAFDBA3FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF197002D80000000D0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDC
+ DCFFFFFFFFFFF4FAF3FF31A313FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF092801830000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9
+ B9FFFFFFFFFFB6DEABFF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF197402DC0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF99D18AFF229C02FFE1F2DDFF79C366FF229C02FFE1F2DDFF79C3
+ 66FF229C02FFE1F2DDFF79C366FF229A02FE0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDC
+ DCFFFFFFFFFFA3D695FF229C02FF70BF5BFF40A924FF229C02FF70BF5BFF40A9
+ 24FF229C02FF70BF5BFF40A924FF1F8D02F30000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9
+ B9FFFFFFFFFFD9EED3FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF114C01B30000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF66BB50FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229A02FD0108003B0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000D070140361E0480361E
+ 04803B2F22804040408040404080404040804040408040404080404040804040
+ 40804040408040404080373C3680176602CE229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229902FD061B006C000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000807210077176A02D2209102F61D85
+ 02EC104901AF0107003800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000401090D3A031E2C6B052F
+ 4484052F458503202F6E010A0F3E000000060000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000201060035051900660825
+ 007E0825007E0519006801070037000000030000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000111052F45851194D4E914B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF129ADEEE06354E8D00010116000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000D0825007E1B7E02E5229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF1C8002E7092801820000000F000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000030525108B
+ C8E2108FCDE50004072B00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000545454DC717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF1111116300000000229C02FF229C
+ 02FF229C02FF0000000000000000000000000000000000000000000000000000
+ 000000000000010E14491192D3E814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF129ADEEE02131C550000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000020A00421B7C02E4229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF1C8002E7020B00470000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000001090D3A052C
+ 4080052C4080010A0F3E00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF404040C01C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C800707074000000000229C02FF229C
+ 02FF229C02FF0000000000000000000000000000000000000000000000000000
+ 0000031A256214ADFBFD14B1FFFF14B1FFFF14B1FFFF14B1FFFF0B638FBF0426
+ 3878042638780A5A83B714B1FFFF14B1FFFF14B1FFFF14B1FFFF14AFFDFE0423
+ 3272000000000000000000000000000000000000000000000000000000000000
+ 000004130059219602FB229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229802FC0416
+ 0061000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000229C02FF229C
+ 02FF229C02FF000000000000000000000000000000000000000000000000010D
+ 134614ADF9FC14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14AF
+ FDFE02131C550000000000000000000000000000000000000000000000000209
+ 0040219602FA229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF2298
+ 02FC020B00470000000000000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 408000000000000000000000000000000000717171FF1C1C1C8000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF361E048000000000229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF00000000000000000000000D108F
+ CDE514B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF129ADEEE00010116000000000000000000000000000000000000000C1B7A
+ 02E2229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF1C8002E70000000F00000000000000000000000000000000000000000000
+ 00000217225E14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0217
+ 225E00000000000000000000000000000000717171FF1C1C1C8000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF361E048000000000229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF000000000000000004283A7A14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0C6C9BC70531
+ 4787053147870C6490C014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF06354E8D000000000000000000000000000000000823007A229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF0928018200000000000000000000000000000000000000000000
+ 00000000000004293C7C14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF04293C7C0000
+ 000000000000000000000000000000000000717171FF1C1C1C8000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF361E048000000000229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF00000000000000010F89C6E114B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF129ADEEE000000060000000000000000000000011B7A02E1229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF1C8002E700000003000000000000000000000000000000000000
+ 0000000000000000000004293C7C14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF04293C7C000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C8000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF361E048000000000000000000000000000000000229C02FF229C
+ 02FF229C02FF000000000000000000000000000000000005072D14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF010A0F3F00000000000000000105002F229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF01070037000000000000000000000000000000000000
+ 00000000000000000000000000000843629E14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0843629E00000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C8000000000361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E04800D070140000000001C1C1C800707074000000000229C02FF229C
+ 02FF229C02FF000000000000000000000000000000000217215C14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0B638FBF0426
+ 3878042638780A5A83B714B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF03202F6E000000000000000004160060229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF05190068000000000000000000000000000000000000
+ 0000000000000000000000000000052C408014B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C408000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000229C02FF229C
+ 02FF229C02FF000000000000000000000000000000000424347414B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF052F4585000000000000000007210077229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0825007E000000000000000000000000000000000000
+ 0000000000000000000000000000052C408014B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C408000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000003F3F
+ 3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F
+ 3FBF3F3F3FBF1010106000000000717171FF1C1C1C8000000000000000000000
+ 000000000000000000000000000000000000000000000423337314B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF052F4484000000000000000007210076229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0825007E000000000000000000000000000000000000
+ 0000000000000000000000000000052C408014B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C408000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000001010
+ 1060101010601010106010101060101010601010106010101060101010601010
+ 1060101010600404043000000000717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000002151F5A14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF031F2D6C00000000000000000415005F229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF05190067000000000000000000000000000000000000
+ 0000000000000000000000000000052C408014B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C408000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000000000
+ 000000000000000000000000000000000000000000000004062914B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF01090D3A00000000000000000104002D229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF01060035000000000000000000000000000000000000
+ 00000000000000000000000000000322317114B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0427397900000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000003F3F
+ 3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F
+ 3FBF3F3F3FBF1010106000000000717171FF1C1C1C8000000000000000000000
+ 00000000000000000000000000000000000000000000000000000F84BDDC14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF1194D4E9000000040000000000000000000000011A7602DE229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF1B7E02E500000002000000000000000000000000000000000000
+ 000000000000000000000000000001080C3814B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF01090E3C00000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000001010
+ 1060101010601010106010101060101010601010106010101060101010601010
+ 1060101010600404043000000000717171FF1C1C1C8000000000000000000000
+ 00000000000000000000000000000000000000000000000000000423327214B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF052F45850000000000000000000000000000000007210076229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF0825007E00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000A5A83B714B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF0A5982B60000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000A0F86
+ C1DE14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF1192D3E800000111000000000000000000000000000000000000000A1B77
+ 02DF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF1B7C02E40000000D00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000001110A5E87BA14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF0A5A83B70000000F0000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000003F3F
+ 3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F3FBF3F3F
+ 3FBF3F3F3FBF1010106000000000717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000109
+ 0D3B13A9F3F914B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF053147870000
+ 0000000000000426387814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14AD
+ FBFD010E14490000000000000000000000000000000000000000000000000108
+ 003B219402F9229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF2196
+ 02FB020A00420000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000006354D8C14B1
+ FFFF14B1FFFF0638529100000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000001010
+ 1060101010601010106010101060101010601010106010101060101010601010
+ 1060101010600404043000000000717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000002121A5313A9F3F914B1FFFF14B1FFFF14B1FFFF14B1FFFF0C6C9BC70531
+ 4787053147870C6490C014B1FFFF14B1FFFF14B1FFFF14B1FFFF14ADF9FC031A
+ 2562000000000000000000000000000000000000000000000000000000000000
+ 000003100052219402F9229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF219602FA0413
+ 0059000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000304220F81
+ BADA0F84BFDD0004052700000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001090D3B0F86C1DE14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF108FCDE5010D13460000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000108003B1B7702DF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF1B7A02E2020900400000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006F6F6FFC717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF1C1C1C7F00000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000A042332720F84BDDC14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF1089C6E104283A7A0000000D000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000A072100761A7602DE229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF1B7A02E10823007A0000000C000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000D0D0D591C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801B1B1B7D0101012000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000004062802151E590423
+ 3272042333730217215C0005072C000000010000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000010104002D0415005E0721
+ 007607210076041600600105002F000000010000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000020804003322130266341D
+ 037E341D037E2313026709050036000000030000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001E10
+ 0260170C01540000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000C311B037BAB5D0DE3D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFAD5F0DE5341D037E0000000E000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000391F0484D776
+ 10FFC66D0FF50000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000C07003EA85C0DE2D77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFAD5F0DE50E0801430000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000319246114B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF031C
+ 2866000000000000000000000000000000000000000000000000000000000000
+ 000011111164717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF707070FE1111116500000000391F0484D77610FFD776
+ 10FF311B037A0000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000180D0257CF7210FAD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD07210FB1C0F
+ 025D000000000000000000000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C800B0B0B5200000000391F0484D77610FFD77610FF321C
+ 037C000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000C06
+ 003DCE7110FAD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD072
+ 10FB0E0801430000000000000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000391F0484D77610FFD77610FF321C037C0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000000000000000000BA65B
+ 0DE0D77610FFD77610FFD77610FFD77610FFD77610FF00000000000000000000
+ 0000000000000000000000000000D77610FFD77610FFD77610FFD77610FFD776
+ 10FFAD5F0DE50000000E00000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF095479B00000
+ 000000000000094C6EA814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF000000000000000000000000000000000E0801438448
+ 0AC8D27410FCBD680EEF774209BED77610FFD77610FF321C037C000000000000
+ 0014000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000000000002E190376D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF361E04800D0701400000
+ 0000000000000D070140361E0480D77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF341D037E00000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF13A7F1F80000
+ 01100000000B13A2E9F414B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF0000000000000000000000000D070141D07210FBD776
+ 10FFD77610FFD77610FFD77610FFD77610FF331C037D00000000111111651B1B
+ 1B7F000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF000000000000
+ 0000000000000000000000000000000000000000000000000001A45A0DDFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFAD5F0DE500000003000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0319
+ 246002141E5814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF0000000000000000000000007D4509C3D77610FFD776
+ 10FFC36B0FF3D77610FFD77610FFD77610FF140A014E00000000707070FE1C1C
+ 1C80000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF000000000000
+ 000000000000000000000000000000000000000000000703002ED77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF09050036000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0F82BCDB0002
+ 031E0002021B0F7DB5D714B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF000000000000000000000000C66D0FF5C56C0FF40F08
+ 014500000002643708AED77610FFD77610FF341D047E00000000717171FF1C1C
+ 1C8000000000000000000000000000000000000000000201001E361E0480361E
+ 0480361E0480361E0480D77610FFD77610FFD77610FFD77610FF7A4309C0361E
+ 0480361E04807A4309C0D77610FFD77610FFD77610FFD77610FF361E0480361E
+ 0480361E0480361E04800201001E00000000000000001E100260D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF23130268000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF05344C8B0000
+ 000000000000052F448414B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000098530BD60D07003F0000
+ 000000000000391F0484D77610FFD77610FF2615026D00000000717171FF1C1C
+ 1C80000000000000000000000000000000000000000000000000321C037CD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF321C037C0000000000000000000000002E190377D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF341D047E000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0F85BFDD0003
+ 0525000304220F7FB7D814B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000001000012000000000000
+ 00000D07003FC56C0FF4D77610FFC76E0FF50201001B00000000717171FF1C1C
+ 1C8000000000000000000000000000000000000000000000000000000000321C
+ 037CD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF321C037C000000000000000000000000000000002D190376D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF341D047E000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000D07
+ 003FC56C0FF4D77610FFC56C0FF4160C01520000000000000000717171FF1C1C
+ 1C80000000000000000000000000000000000000000000000000000000000000
+ 0000321C037CD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF321C
+ 037C00000000000000000000000000000000000000001D10025FD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF361E04800D0701400000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF22130267000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000905
+ 00362C1803742213026601010018000000000000000000000000717171FF1C1C
+ 1C80000000000000000000000000000000000000000000000000000000000000
+ 000000000000321C037CD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF321C037C0000
+ 000000000000000000000000000000000000000000000603002CD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF00000000000000000000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF08040034000000000000000000000000000000000000
+ 00000217215D14ADFBFD14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14ADFBFD031A
+ 2562000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000717171FF1C1C
+ 1C80000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000321C037CD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF321C037C000000000000
+ 0000000000000000000000000000000000000000000000000001A1580CDDD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFAA5D0DE300000002000000000000000000000000000000000000
+ 0000000000000000000000000000052C408014B1FFFF00000000000000000000
+ 000000000000000000000000000014B1FFFF052C408000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 00000000000011111164717171FF717171FF717171FF717171FF717171FF1818
+ 1877000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000321C037CD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF321C037C00000000000000000000
+ 00000000000000000000000000000000000000000000000000002B170373D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD57510FE512C
+ 069D4D2B0599D37410FDD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF311B037B00000000000000000000000000000000000000000000
+ 000000000000000000000000000005293C7C14B1FFFF00000005000000000000
+ 000000000000000000000000000114B1FFFF052C408000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000001C1C1C80717171FF717171FF717171FF717171FF383838B40000
+ 0007000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000321C037CD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF321C037C0000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000009A058
+ 0CDCD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF562F06A10000
+ 0000000000004E2B0599D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFA85C0DE20000000C00000000000000000000000000000000000000000000
+ 00000000000000000000000000000216205B14B1FFFF00070B36000000000000
+ 000000000000000000000005082E14B1FFFF031A266300000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000001C1C1C80717171FF717171FF717171FF383838B4000000070000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000321C037CD77610FFD776
+ 10FFD77610FFD77610FF321C037C000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000A05
+ 0038CB700FF8D77610FFD77610FFD77610FFD77610FFD77610FF593107A40000
+ 000000000000512C069DD77610FFD77610FFD77610FFD77610FFD77610FFCF72
+ 10FA0C07003E0000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000F1299DCED0C6C9BC70000000E0000
+ 0000000000000000000C0C6592C1129EE3F10000011300000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000001C1C1C80717171FF717171FF383838B400000007000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000321C037CD776
+ 10FFD77610FF321C037C00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000150B0150CB7010F8D77610FFD77610FFD77610FFD77610FFD57610FE5A31
+ 07A5562F06A2D57510FED77610FFD77610FFD77610FFD77610FFCE7110FA180D
+ 0257000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000210184F14A9F5FA108FCDE5063A
+ 549306395392108BC8E214ABF7FB02141C560000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C80404040C0717171FF383838B40000000700000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000321C
+ 037C321C037C0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000A050038A0580CDCD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFA65B0DE00C06003D0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000070B360A577FB4129C
+ E1F0129EE3F10A5A83B701090D3A000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000F0F0F606F6F6FFD717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF383838B4000000070000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000092B180373A1580CDDD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFA45A0DDF2E1903760000000B000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000010603002B1D10025E2D19
+ 03762D1903761D10025F0603002D000000010000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E04800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000002514
+ 026B0000000D0000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000001D10025E361E
+ 04801F1102620000000000000000000000000000000000000000000000000000
+ 000003020023351D037F361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480351D037F0402
+ 0023000000000000000000000000000000000000000000000000000000000000
+ 000003020023351D037F361E0480361E0480361E0480351D037F040200260000
+ 00000000000003010020351D037F361E0480361E0480361E0480351D037F0402
+ 002300000000000000000000000000000000000000000000000000000000C96E
+ 0FF7D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD57510FE000000000000000000000000000000000000000000000000D776
+ 10FFAB5D0DE3160C015300000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000D37410FDD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000341D047ED77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000341D047ED77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000341D047ED77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 048000000000000000000000000000000000000000000000000000000000A35A
+ 0DDED77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFAC5F0DE4000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF6C3B08B5030200210000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000004929
+ 0596D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF4F2C069B000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFC76E0FF5301B037A00000006000000000000
+ 0000000000000000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000101
+ 00189F570CDBD77610FFD77610FFD77610FFD77610FFD77610FFCD7010F94D2A
+ 05994A290596CB7010F8D77610FFD77610FFD77610FFD77610FFD77610FFA359
+ 0DDE02010019000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF96530BD50D07003F0000
+ 0000000000000000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 00000000000D2F1A03789A550BD8D77610FFD77610FFD37410FD1109014A0000
+ 0000000000000E080143D07210FBD77610FFD77610FFA3590DDE311B037B0000
+ 000E00000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD57610FE532D
+ 069F010000150000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000D07014097530BD645260591000000000000
+ 000000000000000000003E2204899F580CDC1109014A00000001000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFB9650EED2012026400000002000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000001000015010000120201001D2B18
+ 03732C180374030100200000000E0201001A0000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF7F4609C40603002D0000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000009050036BF690FF0D776
+ 10FFD77610FFC56C0FF40D070140000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFCF7210FB160C015200000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000049B550BD9D77610FFD776
+ 10FFD77610FFD77610FFAB5E0DE4000000090000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD17310FC4124048D0000000C00000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000130A014DD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF1B0E025B0000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF864A0ACA07040031000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000890500BD1D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFA35A0DDE0000000B00000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFC069
+ 0FF12615026C0000000300000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000009050037D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF0D07014000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF603507AA0201
+ 001A000000000000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001E110261D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF1A0E025900000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFA45A0DDF120A014A000000000000
+ 0000000000000000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001109014AD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF150B015100000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFCF7210FA3D2204890000000B00000000000000000000
+ 0000000000000000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000341D047ED77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 0000341D047ED77610FFD77610FFD77610FFD77610FFD77610FF361E04800000
+ 000000000000341D047ED77610FFD77610FFD77610FFD77610FFD77610FF361E
+ 0480000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000029160370D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF321C047C00000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FF81460AC50603002E000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000D77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 000003020022331C037D361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480331C037D0302
+ 0023000000000000000000000000000000000000000000000000000000000000
+ 000003020022331C037D361E0480361E0480361E0480341D037E040200250000
+ 0000000000000301001F331C037D361E0480361E0480361E0480331C037D0302
+ 0023000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002615026DD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF180D025600000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AB5E
+ 0DE4231302670000000200000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009B550BD9D776
+ 10FFA45A0DDF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000008040033D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD57610FE100801460000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000044250590D77610FFD77610FFD776
+ 10FFD77610FFCF7210FA2C190375000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000009050035291603702E19
+ 03771C0F025D0201001A00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000D070140361E0480361E
+ 0480291D10801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C80291D
+ 1080361E0480361E04800D070140000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000051B0F025C000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E048000000000000000000000000000000000031E
+ 2C6B052C4080052C4080052C4080052C4080052C4080052C4080052C4080052C
+ 4080052C4080052C4080052C4080052C4080052C4080052C4080021119510000
+ 0000000000000000000000000000000000000000000000000000000000001F11
+ 0262361E04802212026600000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00072615026C0000000700000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000B06003C93510BD3D77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E048000000000000000000005082F00000003031E
+ 2B6A14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14ADF9FC0004
+ 072B00000000000000000000000000000000000000000000000000000000D374
+ 10FDD77610FFD77610FF00000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000F0801449B55
+ 0BD9D77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001000013512C069DD57510FED77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF000000000000000000000000717171FFA574
+ 41FFD77610FFD77610FF361E04800000000000000000010B104001080C390000
+ 00040F7CB3D614B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0A57
+ 7DB300000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000020100195B3207A7D77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00011F110261B6640EEBD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF1C1C1C801C1C1C801C1C1C80717171FFA574
+ 41FFD77610FFD77610FF361E04800000000000000000010B1040042536760000
+ 0009010F154B14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF010B1041000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 00000000000000000000000000032715026DBF690FF0D77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000603002B7C44
+ 09C2D77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFA57441FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FFA574
+ 41FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F010C
+ 1245000000000A5F89BB14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF0D71A3CC000000020000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 000000000000090500368B4C0BCDD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000A3C210487CE7110FAD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F0428
+ 3B7B000001100006082F14ADFBFD14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF0216205B0000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 001149290596D37410FDD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000120A014BA45A0DDFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F02121A52000000000742609D14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF0F87C3DF0000000800000000000000000000000000000000D776
+ 10FFD77610FFD77610FF000000000000000000000000000000011C0F025CB261
+ 0EE8D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000201001C633608ADD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F042B3E7E0001021A0001021A13A2E9F414B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF0319246100000000000000000000000000000000D776
+ 10FFD77610FFD77610FF000000000000000005030029784209BFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 00000F080145C36B0FF3D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F042B3F7F0218225E00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000120A014BCD7010F9D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000114E2B069AD57510FED77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F042B3F7F042B3F7F02151F5A010B1040010B1040010B1040010B1040010B
+ 1040010B1040010B1040010B1040000000000209004009270180092701800209
+ 004000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF000000000000000A3C210488CF7210FAD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 000000000000000000000B06003A91500BD1D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B
+ 3F7F042B3F7F042B3F7F042B3F7F0000000009270180229C02FF229C02FF0927
+ 018000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF0000000000000000000000000603002C7E4509C3D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000052C180374C46C0FF4D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B
+ 3F7F042B3F7F042B3F7F042B3F7F0000000009270180229C02FF229C02FF0927
+ 018000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000012011
+ 0263B8650EECD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000201001E663808B0D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDC
+ DCFFDCDCDCFFDCDCDCFFDCDCDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F010B1040010B1040010B
+ 1040010B1040010B1040010B10400000000009270180229C02FF229C02FF0927
+ 018000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 000001000015552E06A0D57610FED77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000140A
+ 014EA65B0DE0D77610FFD77610FFD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9
+ B9FFB9B9B9FFB9B9B9FFB9B9B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E04800000000000000000010B1040042B3F7F042B
+ 3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F00000000000000000000
+ 00000000000000000000000000000000000009270180229C02FF229C02FF0927
+ 018000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 000000000000000000000D07014098530BD6D77610FFD77610FFD77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000B3E220489CF7210FAD77610FFD77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E04800000000000000000010A0F3F042B3F7F042B
+ 3F7F042B3F7F042B3F7F042B3F7F042B3F7F042B3F7F00000000000000000000
+ 0000000000000002001E197502DD229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF197502DD0002001E00000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000006321C037CC86E0FF6D77610FFD776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000603002D7F4509C4D77610FFD77610FF000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDC
+ DCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFDCDCDCFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E0480000000000000000000000110010A0F3E010B
+ 1040010B1040010B1040010B1040010B10400006093100000000000000000000
+ 000000000000000000000002001E197502DD229C02FF229C02FF229C02FF229C
+ 02FF197502DD0002001E0000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000004020023703D08B8D776
+ 10FFD77610FF0101001800000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000120110263AB5D0DE3000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9
+ B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000002001E197502DD229C02FF229C02FF1975
+ 02DD0002001E000000000000000000000000000000000000000000000000A058
+ 0CDCD77610FFA95D0DE200000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000190D
+ 0257AB5D0DE30100001300000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFEBBB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBBB
+ 88FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000002001E197502DD197502DD0002
+ 001E000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000D070140361E0480361E
+ 04803B2F22804040408040404080404040804040408040404080404040804040
+ 4080404040804040408040404080404040804040408040404080404040803B2F
+ 2280361E0480361E04800D070140000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000002001E0002001E0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF717171FF5E5E5EE80000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000201010833040421660606
+ 327E0606327E0404226701010936000000030000000000000000000000000000
+ 000000000000000000000000000000000000717171FF717171FF717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000C0606307B1616A5E31B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1616A9E50606327E0000000E000000000000
+ 000000000000000000000000000000000000717171FF717171FF717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001010C3E1616A4E21B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1616A8E501010E430000
+ 000000000000000000000000000000000000717171FF717171FF717171FF0000
+ 0000031B28660005072B00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000603002D0000
+ 0006000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000030318571A1AC9FA1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BCAFB0303
+ 1B5D00000000000000000000000000000000717171FF717171FF717171FF0000
+ 0000052C4080129BE0EF010F154B000000000000000000000000000000000000
+ 0000000304220218235F042A3D7D042A3E7E031C296701080C38000000050000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001B0E025B000000070000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E04808F4E
+ 0BD00603002D0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000101
+ 0B3D1A1AC8FA1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ CAFB01010E43000000000000000000000000717171FF717171FF717171FF0000
+ 0000052C408014B1FFFF14AFFDFE073F5C990002042100010115031924610C6C
+ 9BC714B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF129BE0EF0741
+ 5E9B000609300000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FF9A550BD80E07014200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFCB7010F82E19037600000003000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000B1515
+ A1E01B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF141499DA0000
+ 021D0000021A131391D51B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1616A8E50000000E0000000000000000717171FF717171FF717171FF0000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF0A567CB20004062A000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FF593107A4010100180000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FFD77610FF7E4509C3030200220000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000005052C761B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF08083E8B0000
+ 000000000000070738841B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF0606337E0000000000000000717171FF717171FF717171FF0000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF0F87C3DF0844639F052F4484052C4080053248880C67
+ 95C314AEFBFD14B1FFFF14ABF7FB053248880000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFBD680EEF2514
+ 026B000000030000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FFD77610FFD77610FFC36B0FF32213026600000001000000000000
+ 00000000000000000000000000000000000000000000000000011515A0DF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF14149DDD0000
+ 042500000322141496D81B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1616A9E50000000300000000717171FF717171FF717171FF0000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF0A567DB300000003000000000000000000000000000000000000
+ 00000002031D052D41811089C6E10F89C6E10000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF884B0BCB0804003400000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF6C3C08B5020100190000
+ 000000000000000000000000000000000000000000000000062E1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0101093600000000717171FF717171FF717171FF0000
+ 000000000001000609300A557BB114B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF0F87C3DF000000000F08
+ 01450E0801430000000200000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD27410FC482705940000000F0000000000000000000000000000
+ 000000000000000000000000000000000000000000000D070140361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E04807A4309C0D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFB8650EEC180D
+ 0256000000000000000000000000000000000000000004041D601B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF0F0F76C00707
+ 3480070734800F0F76C01B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF04042268000000001C1C1C801C1C1C80111111630000
+ 00000000000000000000000000000427387814AFFDFE14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14AFFDFE0E7AB0D4052D4282000000004C29
+ 0597D77610FFA85C0DE2140B014F000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFB0610DE71A0E025A00000001000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF5B3107A60100001200000000000000000000000006062D771B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF070734800000
+ 000000000000070734801B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0606327E000000000000000000000000000000000000
+ 000000000000000000000000000000000000010B11420C6896C413A4EDF61089
+ C6E10A5980B5052D4282010F154A0000011200000000000000000C07003EC76D
+ 0FF5D77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF744009BC050200270000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFAB5E0DE40603002D000000000000000005052C761B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF070734800000
+ 000000000000070734801B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0606327E000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000001040200261D10025E4A29059690500BD1D57610FED776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFCB7010F81A0E
+ 02590000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFC76E0FF62715036E00000001000000000000000003031C5F1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF070734800000
+ 000000000000070734801B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF04042167000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000633608AD3D2204884D2A
+ 05997B4309C1BE690FF0D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF603507AB0201
+ 001A0000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF864A
+ 0ACA05020028000000000000000000000000000000000000062C1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF070734800000
+ 000000000000070734801B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF01010834000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF9F580CDC11090148000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFCF7210FA341D037E0000
+ 000400000000000000000000000000000000000000000000000114149DDD1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF070734800000
+ 000000000000070734801B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1616A5E300000002000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFCB7010F8371E04820000000900000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FFD77610FFD77610FFD77610FF96530BD508040033000000000000
+ 000000000000000000000000000000000000000000000000000005052A731B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF070734800000
+ 000000000000070734801B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF0606307B00000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF743F08BB04020026000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FFD77610FFD47410FD4224048E0000000800000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000091414
+ 9CDC1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF070734800000
+ 000000000000070734801B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1616A4E20000000C00000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD77610FFD77610FFAF60
+ 0DE61A0E02590000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FFA65B0DE00D070140000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000101
+ 0A381A1AC5F81B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1A
+ C9FA01010C3E0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FFD77610FFD17410FC462605920000
+ 000F000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FF522D069E0000000E00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000020214501A1AC5F81B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1AC8FA0303
+ 1857000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E04800D070140000000000000000000000000000000000000
+ 00000000000000000000D77610FFD77610FF86490AC908040032000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000024140269140B
+ 014E000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001010A3814149CDC1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515A1E001010B3D0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000A85C0DE2241402690000000200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000905052A7314149DDD1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1414A0DF05052C760000000B000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D27410FCD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF351D047F000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000010000062B03031C5E0505
+ 2C7605052C7603031C5F0000062D000000010000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001A0E0259361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480331C037D03010020000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000020110264D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF24140269000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000010101201C1C1C7F1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C80101010620000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FF361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480D77610FF361E0480000000000000000000000000000000000F0F
+ 0F5E1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C80101010620000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001B1B1B7E717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000010000140000000B00000000000000000000
+ 000000000000D77610FF361E0480000000000000000000000000000000006F6F
+ 6FFD717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000361E0480D77610FF000000000B06003CCF7210FB160C0154CB700FF82011
+ 0263653808AF623508AC4A29059798530BD729160370C96E0FF7D77610FF361E
+ 048000000000D77610FF361E0480000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C80717171FF0000000000000000000000000000
+ 000000000000000000000000032210107AC30000032200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000518006509270180092701800000
+ 0000361E0480D77610FF0000000000000000743F09BBC56C0FF4472705931009
+ 0148653808AFAB5D0DE36B3B08B498530BD729160370C96E0FF70704002F0000
+ 000400000000D77610FF361E048000000000111111651C1C1C801C1C1C807171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C80717171FF0000000000000000000000000000
+ 000000000000000003221515A3E11B1BD1FF1515A3E100000322000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF000000000000000000000000229A02FD229C02FF229C02FF0000
+ 0000361E0480D77610FF0000000000000000371E0482D77610FF1C0F025D1009
+ 01488B4C0BCD9F580CDC5F3407AA9F580CDC29160370C96E0FF7050200280000
+ 000000000000D77610FF361E0480000000006F6F6FFD717171FF717171FF7171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C80717171FF0000000000000000000000000000
+ 0000000003221515A3E11B1BD1FF1B1BD1FF1B1BD1FF1515A3E1000003220000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF000000000000000000000000229C02FF09270180000000000000
+ 0000361E0480D77610FF0000000000000009B4630DE9663808B08B4C0BCD1109
+ 0149CF7210FA5B3107A6311B037BD17310FC29160370C96E0FF7050200280000
+ 000000000000D77610FF361E048000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C80717171FF0000000000000000000000000000
+ 03221515A3E11B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515A3E10000
+ 0322000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF000000000000000000000000229C02FF09270180000000000000
+ 0000361E0480D77610FF0000000004020026361E048001010018361E04800A05
+ 0038361E04800D07003F03020022231302680603002E321C037C010000140000
+ 000000000000D77610FF361E048000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000070707400707074007070740070707400707
+ 074007070740000000001C1C1C80717171FF0000000000000000000003221515
+ A3E11B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515
+ A3E1000003220000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF000000000000000000000000229C02FF09270180000000000000
+ 0000361E0480D77610FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D77610FF361E048000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F000000001C1C1C80717171FF00000000000003221515A3E11B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1515A3E10000032200000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001B7A
+ 02E2229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF061A006900000000229C02FF09270180000000000000
+ 0000341D047ED77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E048000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001C1C1C7F0707074000000000000000000707
+ 07401C1C1C7F000000001C1C1C80717171FF000000000000021E14149DDD1B1B
+ D1FF1B1BD1FF1B1BD1FF14149DDD01010B3C14149DDD1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1515A3E100000322000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000229C
+ 02FF229C02FF104601AC0D3C019F229C02FF166202CB0A2E018B229B02FE1766
+ 02CF09270180092701800B310190209002F50B330192092701800F4501AA229C
+ 02FF229C02FF229C02FF0927018000000000229C02FF09270180000000000000
+ 000003020022331C037D361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480341D037E0402002500000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000007070740070707400707074007070740070707400707
+ 07400707074001010120000000001C1C1C7F0707074000000000000000000707
+ 07401C1C1C7F000000001C1C1C80717171FF00000000000000000000021E1414
+ 9DDD1B1BD1FF14149DDD0000021E000000000000021E14149DDD1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1515A3E1000003220000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000229C
+ 02FF229C02FF145C01C500000004196E02D7020900400825007E229C02FF0D3C
+ 019F0000000F0416006007200074197002D8041100560825007E0000000C0D3E
+ 01A1229C02FF229C02FF0927018000000000229C02FF09270180000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C80000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F07070740000000001C1C1C7F0707074000000000000000000707
+ 07401C1C1C7F000000001C1C1C80717171FF0000000000000000000000000000
+ 021E0F0F71BB0000021E0000000000000000000000000000021E14149DDD1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1515A3E10000032200000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000229C
+ 02FF229C02FF229C02FF0413005901060035000100181F8C02F2229C02FF0D3C
+ 019F00030028229C02FF229C02FF229C02FF229C02FF176B02D3000100180823
+ 007A229C02FF229C02FF0927018000000000229C02FF09270180000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000009270180229C02FF000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F000000001C1C1C80717171FF0000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000021E1414
+ 9DDD1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515A3E100000322000000000000
+ 000000000000000000000000000000000000000000000000000000000000229C
+ 02FF229C02FF229C02FF145E01C700000000071F0072229C02FF229C02FF0D3C
+ 019F00030028229C02FF229C02FF229C02FF061D006E00000007051700631F8C
+ 02F1229C02FF229C02FF0927018000000000229C02FF145702C0092701800927
+ 0180092701800927018009270180092701800927018009270180092701800927
+ 018009270180092701800927018009270180145702C0229C02FF000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000070707400707074007070740070707400707
+ 074007070740000000001C1C1C80717171FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 021E14149DDD1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515A3E1000003220000
+ 000000000000000000000000000000000000000000000000000000000000229C
+ 02FF229C02FF229C02FF0416006201060033000100151E8A02F0229C02FF0D3C
+ 019F00030028229C02FF229C02FF1A7602DE00000000114F01B6229C02FF229A
+ 02FE229C02FF229C02FF0927018000000000197402DC229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF1B7A02E2000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C80000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C80717171FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000021E14149DDD1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515A3E10000
+ 032200000000000000000000000000000000000000000000000000000000229C
+ 02FF229C02FF196F02D700000004135601BE020B004408220079229C02FF0D3C
+ 019F00030028229C02FF229C02FF209202F70002002000030024010700371251
+ 01B9229C02FF229C02FF09270180000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C8000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000021E14149DDD1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515
+ A3E100000322000000000000000000000000000000000000000000000000229C
+ 02FF229C02FF125301BB0A2C0188229C02FF166402CD0A2C0189229A02FE1766
+ 02CF0B340194229C02FF229C02FF229C02FF1E8A02F0104A01B0114D01B51F8E
+ 02F3229C02FF229C02FF09270180000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000050000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C8000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000021E14149DDD1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1515A3E10000032200000000000000000000000000000000000000001974
+ 02DC229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229A02FD05180065000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000020D004A0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000717171FF1C1C1C8000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000021E14149DDD1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1515A3E100000322000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000B3201910928018200000010000000000000000000000000145B01C3020B
+ 004400000000000000000000000000000000717171FF1C1C1C8000000000D374
+ 10FDD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000021E14149DDD1B1BD1FF1B1B
+ D1FF1B1BD1FF14149DDD0000021E000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000104002C229802FC209202F7135701C00C3701980A2C0188229C02FF229C
+ 02FF145B01C3020B00440000000000000000717171FF1C1C1C80000000001D10
+ 025F361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E04806642
+ 1BC0A57441FF361E0480361E0480201102630000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000021E14149DDD1B1B
+ D1FF14149DDD0000021E00000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000009270181229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF145B01C3020B0044717171FF1C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000021E0F0F
+ 71BB0000021E0000000000000000000000000000000000000000000000000000
+ 00001B1B1B7D717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FE0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000001071F00731F8E02F3229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF125401BB0108003C6F6F6FFD717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000101011C1B1B1B7D1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C800E0E0E5D0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000F0310005307200075229C02FF229C
+ 02FF125401BB0108003C00000000000000000F0F0F5F1C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C80111111630000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000125401BB0108
+ 003C000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000F080144361E
+ 0480361E04801009014700000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000201010833040421660606
+ 327E0606327E0404226701010936000000030000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000010101201C1C1C7F1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C80101010620000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005F3407A9D776
+ 10FFD77610FF633608AD00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000C0606307B1616A5E31B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1616A9E50606327E0000000E000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001B1B1B7E717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF0000000000000000000000000000000E00000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000704002F0000000400000000000000000000000098530BD7D776
+ 10FFD77610FF96520BD50000000000000000000000000000000C0B06003C0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001010C3E1616A4E21B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1616A8E501010E430000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF000000000000000000000000130A014E00000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000A0500380000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000120A014BCB7010F881470AC6030200220000000000000010D17310FCD776
+ 10FFD77610FFCE7110FA0100001700000000080400339D560CDACF7210FA150C
+ 0151000000000000000000000000000000000000000000000000000000000000
+ 0000030318571A1AC9FA1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BCAFB0303
+ 1B5D000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF000000000000000000000000512C069C05020028000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D37410FD492805950000000F000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000905
+ 0036CB7010F8D77610FFD77610FFC0690FF1532D069FC36B0FF3D77610FFD776
+ 10FFD77610FFD77610FFCF7210FB6A3A08B3CD7010F9D77610FFD77610FFCF72
+ 10FA070400310000000000000000000000000000000000000000000000000101
+ 0B3D1A1AC8FA1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ CAFB01010E430000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000002715026DAF600DE60A0600390000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D77610FFD77610FFAF600DE6180D02560000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000A95510BD4D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF7D44
+ 09C20000000300000000000000000000000000000000000000000000000B1515
+ A1E01B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1919C3F61919C3F61B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1919C3F61919C3F61B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1616A8E50000000E00000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000201001ED47410FDD27410FC512C
+ 069D0603002B0000000000000000000000000000000000000000000000000000
+ 0000D77610FFD77610FFD77610FFD77610FF6C3C08B503010020000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000603002EC96E0FF7D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFBB670EEE0201
+ 001E00000000000000000000000000000000000000000000000005052C761B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1919C3F602020F4502020F451919C3F61B1B
+ D1FF1B1BD1FF1919C3F602020F4502020F451919C3F61B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF0606337E00000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF000000000000000000000000000000006B3B08B4D77610FFD776
+ 10FFD77610FF92500BD24325058F1C0F025C0A0500370201001E0000000D0000
+ 0008D77610FFD77610FFD77610FFD77610FFD77610FFC66D0FF52D1903760000
+ 0005000000000000000000000000000000000000000000000000000000000000
+ 000000000000603507ABD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF542E069F0000
+ 00000000000000000000000000000000000000000000000000011515A0DF1B1B
+ D1FF1B1BD1FF1B1BD1FF1919C3F602020F45000000000000000002020F451919
+ C3F61919C3F602020F45000000000000000002020F451919C3F61B1BD1FF1B1B
+ D1FF1B1BD1FF1616A9E500000003000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000009050036D47410FDD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF904F
+ 0BD10A0500380000000000000000000000000000000000000000000000000000
+ 000001000012CB700FF8D77610FFD77610FFD77610FFCB7010F82615026C0000
+ 000C0000000B23130267C76E0FF6D77610FFD77610FFD77610FFC66D0FF50100
+ 001600000000000000000000000000000000000000000000062E1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1A1AC5F80202114B0000000000000000000000000202
+ 0F4502020F450000000000000000000000000202114B1A1AC5F81B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0101093600000000000000000000000000000000A95D
+ 0DE2D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF2414026900000000000000000000000046260592D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD37410FD492805950000000F000000000000000010090147623507AC9551
+ 0BD4CD7010F9D77610FFD77610FFD77610FFD77610FF2816036F000000000000
+ 0000000000000000000023130267D77610FFD77610FFD77610FFD77610FFD576
+ 10FEA45A0DDF683908B211090148000000000000000004041D601B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1AC5F80202114B00000000000000000000
+ 00000000000000000000000000000202114B1A1AC5F81B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0404226800000000000000000000000000000000D776
+ 10FFD77610FFD77610FFB3630EE94325058F371E04827A4309C0D37410FD4E2B
+ 069A361E04815C3207A7D57510FED77610FFD07210FB44250590884B0BCBD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000067742
+ 09BED77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFAF600DE6180D025600000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF01000013000000000000
+ 000000000000000000000000000BD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000006062D771B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1AC5F80202114B000000000000
+ 000000000000000000000202114B1A1AC5F81B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0606327E00000000000000000000000000000000D776
+ 10FFD77610FFC16A0FF203010020040200251C0F025D29160370C96E0FF7120A
+ 014B361E0480010000123E22048AD77610FF7A4309C000000001140B014FD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 000B643708AED77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFA75C0DE1140A014E00000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF01000014000000000000
+ 000000000000000000000000000CD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000005052C761B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1919C3F602020F45000000000000
+ 0000000000000000000002020F451919C3F61B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0606327E00000000000000000000000000000000D776
+ 10FFD77610FF5B3107A60000000FBA660EEDD77610FFD77610FFD77610FFD776
+ 10FF9A550BD80301001F10090148D77610FF2B180373130A014D0000000AC56C
+ 0FF4D77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000011D10025EA65B0DE0D77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD17310FC4124048D0000000C00000000000000000F0801445E3407A99853
+ 0BD7D27410FCD77610FFD77610FFD77610FFD77610FF2B180374000000000000
+ 000000000000000000002615026CD77610FFD77610FFD77610FFD77610FFC56C
+ 0FF48B4C0BCD5A3107A50F080144000000000000000003031C5F1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1919C3F602020F4500000000000000000000
+ 000000000000000000000000000002020F451919C3F61B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0404216700000000000000000000000000000000D776
+ 10FFD77610FF4727059309050037D77610FFD77610FFD77610FFD77610FF381F
+ 04830000000411090148A35A0DDED77610FF04020026613508AB0603002E6035
+ 07ABD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 00000000000000000000000000041109014A4827059484480AC8B2610EE8C96E
+ 0FF7D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF874A
+ 0BCA080400310000000000000000000000000000000000000000000000000000
+ 000001000016CB700FF8D77610FFD77610FFD77610FFCF7210FA2B1803740100
+ 0014010000132816036FCB7010F8D77610FFD77610FFD77610FFCF7210FA0100
+ 001500000000000000000000000000000000000000000000062C1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1919C3F602020F450000000000000000000000000202
+ 114B0202114B00000000000000000000000002020F451919C3F61B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0101083400000000000000000000000000000000D776
+ 10FFD77610FF83480AC70000000DAB5E0DE4D77610FFD77610FFD17310FC0000
+ 0005381F0483D77610FFD57610FE99540BD700000003BB670EEE2B1803731B0E
+ 025BD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D77610FFD77610FFD77610FFD77610FFD77610FFC16A0FF22715036E0000
+ 0003000000000000000000000000000000000000000000000000000000000000
+ 0000000000005F3407A9D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF6A3A08B30000
+ 000000000000000000000000000000000000000000000000000114149DDD1B1B
+ D1FF1B1BD1FF1B1BD1FF1A1AC5F80202114B00000000000000000202114B1A1A
+ C5F81A1AC5F80202114B00000000000000000202114B1A1AC5F81B1BD1FF1B1B
+ D1FF1B1BD1FF1616A5E30000000200000000000000000000000000000000D776
+ 10FFD77610FFD77610FF1F11026102010019170D01552514026BD77610FF0905
+ 0035010000160D07003F512C069C3E22048A0A050038D77610FF703D08B80000
+ 0010CE7110FAD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D77610FFD77610FFD77610FFD77610FF633608AD0201001B000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000005020028C66D0FF5D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFCF7210FB0A05
+ 003800000000000000000000000000000000000000000000000005052A731B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1AC5F80202114B0202114B1A1AC5F81B1B
+ D1FF1B1BD1FF1A1AC5F80202114B0202114B1A1AC5F81B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF0606307B0000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD37410FD5F3407A93D2204887A4309C0D77610FFC66D
+ 0FF56B3B08B4673908B1B8650EEC5D3307A86D3C08B6D77610FFC76E0FF6361E
+ 0480AF610DE7D77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D77610FFD77610FFA75C0DE1140A014E0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00078E4E0BCFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFA258
+ 0CDD0000000F0000000000000000000000000000000000000000000000091414
+ 9CDC1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1AC5F81A1AC5F81B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1A1AC5F81A1AC5F81B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1616A4E20000000C0000000000000000000000000000000000000000A058
+ 0CDCD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD37410FD21120265000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D17310FC4124048D0000000C000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000B06
+ 003BD07210FBD77610FFD77610FFCB7010F85F3407AAC96E0FF7D77610FFD776
+ 10FFD77610FFD77610FFC0690FF14A290597B4630EEAD77610FFD77610FFCB70
+ 10F80B06003A0000000000000000000000000000000000000000000000000101
+ 0A381A1AC5F81B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1A
+ C9FA01010C3E0000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000080400310000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000190D0257D07210FB92500BD20703002E000000000000000FC36C0FF3D776
+ 10FFD77610FFD57510FE01000012000000000201001A743F08BBCB7010F8120A
+ 014B000000000000000000000000000000000000000000000000000000000000
+ 0000020214501A1AC5F81B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1A1AC8FA0303
+ 1857000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000B06003B00000008000000000000000000000000894B0BCCD776
+ 10FFD77610FFA35A0DDE000000000000000000000000000000020503002A0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001010A3814149CDC1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1515A1E001010B3D0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C80717171FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000583007A3D776
+ 10FFD77610FF673808B000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000905052A7314149DDD1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1414A0DF05052C760000000B000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001B1B1B7D717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FE0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000E080143361E
+ 0480361E04801009014700000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000010000062B03031C5E0505
+ 2C7605052C7603031C5F0000062D000000010000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000101011C1B1B1B7D1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C800E0E0E5D0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000E101010611C1C1C7F0D0D0D570000000600000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000204040433121212661B1B
+ 1B7E1B1B1B7E1212126705050536000000030000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000404
+ 04335B5B5BE5717171FF717171FE717171FF4E4E4ED40101011E000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000C1A1A1A7B5A5A5AE3717171FF717171FF7171
+ 71FF717171FF717171FF717171FF5C5C5CE51B1B1B7E0000000E000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF000000000000
+ 0000000000000000000000000000000000000000000000000000040404316363
+ 63EF555555DD04040432000000030C0C0C54676767F4555555DD0101011E0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000606063E595959E2717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF5B5B5BE5070707430000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000002101010621C1C
+ 1C801C1C1C801C1C1C80717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF1C1C1C801C1C
+ 1C801C1C1C801111116600000003000000000000000000000008575757DF5555
+ 55DE0101011E0000000000000000000000000606063F676767F4555555DD0101
+ 011E000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000D0D0D576D6D6DFA717171FF717171FF717171FF5E5E5EE92F2F2FA51D1D
+ 1D831D1D1D822E2E2EA35C5C5CE7717171FF717171FF717171FF6D6D6DFB0F0F
+ 0F5D000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000F0F0F5E717171FF7171
+ 71FF717171FF717171FF717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF717171FF7171
+ 71FF717171FF717171FF1111116600000000000000000A0A0A4D717171FF0808
+ 084500000000000000000000000000000000000000000606063F676767F45555
+ 55DD0101011E0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000606
+ 063D6D6D6DFA717171FF717171FF5E5E5EE90F0F0F5F00000005000000000000
+ 00000000000000000000000000040E0E0E5B5C5C5CE6717171FF717171FF6D6D
+ 6DFB070707430000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF717171FF717171FF717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000011111165717171FF0101
+ 011F0000000000000000000000000000000000000000000000000606063F6767
+ 67F4484848CB0000000100000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000B5757
+ 57E0717171FF717171FF4E4E4ED40101011B0000000000000000000000000000
+ 000000000000000000000000000000000000000000184B4B4BD0717171FF7171
+ 71FF5B5B5BE50000000E00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF717171FF717171FF717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000004040433717171FF1C1C
+ 1C7F000000000000000000000000010101221212126700000001000000001616
+ 1671717171FF0404043500000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000181818767171
+ 71FF717171FF5F5F5FEA0101011C0000000000000000000000000606063C1919
+ 1978191919790606063F000000010000000000000000010101185C5C5CE67171
+ 71FF717171FF1B1B1B7E00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF717171FF717171FF717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000000000000333333AC7171
+ 71FE1414146C00000000000000000E0E0E5B717171FF25252593000000010707
+ 0741717171FF0A0A0A4F00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000001575757DF7171
+ 71FF717171FF111111630000000000000000000000103A3A3AB8717171FF7171
+ 71FF717171FF717171FF3E3E3EBD0000001300000000000000000E0E0E5B7171
+ 71FF717171FF5B5B5BE500000003000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000000000000000000093C3C
+ 3CBA717171FE1414146C00000000000000001E1E1E84717171FF252525930505
+ 053B6B6B6BF90202022400000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000303032E717171FF7171
+ 71FF616161EC000000060000000000000000393939B5717171FF717171FF7171
+ 71FF717171FF717171FF717171FF3E3E3EBD0000000100000000000000045C5C
+ 5CE7717171FF717171FF05050536000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000000000000000000000000
+ 00093C3C3CBA717171FE1414146C00000000000000001E1E1E84717171FF2525
+ 25930303033000000000000000160606063D0101012100000000000000000000
+ 0000000000000000000000000000000000000000000010101060717171FF7171
+ 71FF333333AB000000000000000005050538717171FF717171FF707070FE2A2A
+ 2A9D292929996F6F6FFD717171FF717171FF0707074000000000000000002E2E
+ 2EA3717171FF717171FF12121268000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000093C3C3CBA717171FE2929299A0E0E0E5B0F0F0F5D1E1E1E847171
+ 71FF25252593030303306B6B6BF9717171FF717171FF3A3A3AB8000000150000
+ 0000000000000000000000000000000000000000000018181877717171FF7171
+ 71FF2121218A000000000000000016161672717171FF717171FF2D2D2DA10000
+ 00000000000029292999717171FF717171FF1919197A00000000000000001D1D
+ 1D82717171FF717171FF1B1B1B7E000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000000000000000000000000
+ 000000000000000000092B2B2B9E6F6F6FFC717171FF6F6F6FFC090909481E1E
+ 1E84717171FF25252593090909490C0C0C541E1E1E846B6B6BF84E4E4ED40000
+ 0017000000000000000000000000000000000000000017171776717171FF7171
+ 71FF2121218A000000000000000016161671717171FF717171FF2F2F2FA40000
+ 0000000000002A2A2A9D717171FF717171FF1919197900000000000000001E1E
+ 1E83717171FF717171FF1B1B1B7E000000000000000000000000000000000000
+ 00000201001E361E0480361E0480361E0480361E0480361E04807A4309C0D776
+ 10FFD77610FF7A4309C0361E0480361E0480361E0480361E0480361E04800201
+ 001E00000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF525252DA1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C805050
+ 50D6717171FF717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000140404043500000015000000000404
+ 04341E1E1E84717171FF2525259300000001000000000909094B6B6B6BF84E4E
+ 4ED400000017000000000000000000000000000000000F0F0F5F717171FF7171
+ 71FF333333AC000000000000000004040435717171FF717171FF717171FE2F2F
+ 2FA52D2D2DA2707070FE717171FF717171FF0606063D00000000000000002F2F
+ 2FA4717171FF717171FF12121267000000000000000000000000000000000000
+ 000000000000321C037CD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF321C037C0000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF7171
+ 71FF1D1D1D820000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001C1C
+ 1C80717171FF717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000106B6B
+ 6BF90B0B0B531E1E1E84717171FF2525259300000001000000000909094B6B6B
+ 6BF84E4E4ED4000000170000000000000000000000000303032C717171FF7171
+ 71FF626262EE000000070000000000000000363636B0717171FF717171FF7171
+ 71FF717171FF717171FF717171FF3A3A3AB70000000000000000000000055E5E
+ 5EE9717171FF717171FF04040434000000000000000000000000000000000000
+ 00000000000000000000321C037CD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF321C037C000000000000
+ 000000000000000000000000000000000000000000000E0E0E5B717171FF7171
+ 71FF1C1C1C8000000000717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF000000001C1C
+ 1C80717171FF717171FF11111163000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000040404357171
+ 71FF0E0E0E5C000000001E1E1E84717171FF1212126700000000000000000909
+ 094B6B6B6BF8464646C800000004000000000000000000000001555555DD7171
+ 71FF717171FF1212126700000000000000000000000D363636B0717171FF7171
+ 71FF717171FF717171FF393939B5000000100000000000000000101010607171
+ 71FF717171FF595959E300000002000000000000000000000000000000000000
+ 0000000000000000000000000000321C037CD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF321C037C00000000000000000000
+ 00000000000000000000000000000000000000000000000000010E0E0E5A1C1C
+ 1C800707074000000000717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF000000000707
+ 07401C1C1C800F0F0F5D00000002000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000010101187070
+ 70FE2424249000000000000000000E0E0E5B0101012200000000000000000000
+ 00000E0E0E5C717171FF0A0A0A50000000000000000000000000161616737171
+ 71FF717171FF626262ED0101011F000000000000000000000000040404341515
+ 157016161671050505370000000000000000000000000101011B5E5E5EE97171
+ 71FF717171FF1A1A1A7B00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000321C037CD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF321C037C0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000003232
+ 32AB6E6E6EFC0D0D0D5700000000000000000000000000000000000000000000
+ 000000000004717171FF1B1B1B7E000000000000000000000000000000095555
+ 55DC717171FF717171FF525252D90101011F0000000000000000000000000000
+ 0000000000000000000000000000000000000101011C4E4E4ED4717171FF7171
+ 71FF595959E20000000C00000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000321C037CD77610FFD776
+ 10FFD77610FFD77610FF321C037C000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000E434343C56D6D6DFB0D0D0D57000000000000000000000000000000000000
+ 00000303032D717171FF12121269000000000000000000000000000000000505
+ 05386B6B6BF8717171FF717171FF626262ED1212126700000007000000000000
+ 0000000000000000000000000006111111635F5F5FEA717171FF717171FF6D6D
+ 6DFA0606063E0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000321C037CD776
+ 10FFD77610FF321C037C00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000E434343C56D6D6DFB0D0D0D570000000000000000000000000000
+ 00144C4C4CD1626262ED00000014000000000000000000000000000000000000
+ 00000B0B0B506B6B6BF8717171FF717171FF717171FF626262EE343434AD2121
+ 218B2121218A323232AB616161EC717171FF717171FF717171FF6D6D6DFA0D0D
+ 0D57000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000321C
+ 037C321C037C0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000717171FF1C1C1C800000000000000000000000000000
+ 0000000000000000000000000000000000001C1C1C80717171FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000E434343C56D6D6DFB1414146D0000000E0303032E4B4B
+ 4BD1676767F40606063F00000000000000000000000000000000000000000000
+ 00000000000005050538555555DC717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF575757E00606063D0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000E3E3E3EBD717171FF717171FF717171FF6060
+ 60EB0606063E0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000916161673555555DD717171FF717171FF7171
+ 71FF717171FF717171FF717171FF575757DF181818760000000B000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C80000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000020808084618181876101010600000
+ 0010000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000010303032B0F0F0F5E1818
+ 1876181818760F0F0F5F0303032D000000010000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000010101201C1C1C7F1C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C7F02020223000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001B1B1B7E717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000391F
+ 0484391F04840000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000070707400707074007070740070707400707074007070740070707400101
+ 012000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000391F0484D776
+ 10FFD77610FF391F048400000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000030200220000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000302002200000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000391F0484D77610FFD776
+ 10FFD77610FFD77610FF391F0484000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000391F0484361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480391F0484000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C7F07070740000000000000000000000000000000001C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 000000000000000000000000000000000000391F0484D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF391F04840000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000391F0484D77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FF391F04840000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000010101200707074007070740070707400707074007070740010101200000
+ 00001C1C1C7F10101060070707400707074007070740070707401C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000391F0484D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF391F048400000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000391F0484D77610FFD77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FFD77610FF391F048400000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000070707401C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F070707400000
+ 00001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 00000000000000000000391F0484D77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF391F0484000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000391F0484D77610FFD77610FFD77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FFD77610FFD77610FF391F0484000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 000000000000391F0484D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF391F04840000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000391F0484D77610FFD77610FFD77610FFD77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF391F04840000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000070707400707074007070740070707400707074007070740070707400101
+ 012000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 000003020022361E0480361E0480361E0480361E0480361E04807A4309C0D776
+ 10FFD77610FF7A4309C0361E0480361E0480361E0480361E0480361E04800302
+ 0022000000000000000000000000000000000000000000000000000000000000
+ 0000391F0484D77610FFD77610FFD77610FFD77610FFD77610FF7A4309C0361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480000000000000000000000000000000000000000000000000361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E04807A4309C0D77610FFD77610FFD77610FFD77610FFD77610FF391F
+ 048400000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000391F
+ 0484D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF391F0484000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00001C1C1C7F07070740000000000000000000000000000000001C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000321C
+ 037CD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF321C037C000000000000000000000000000000001C1C1C80717171FF0000
+ 0000010101200707074007070740070707400707074007070740010101200000
+ 00001C1C1C7F10101060070707400707074007070740070707401C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000321C037CD77610FFD77610FFD77610FFD77610FFD77610FF7A4309C0361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480000000000000000000000000000000000000000000000000361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E04807A4309C0D77610FFD77610FFD77610FFD77610FFD77610FF321C
+ 037C00000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000070707401C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F070707400000
+ 00001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F0707
+ 074000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000321C037CD77610FFD77610FFD77610FFD77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FFD77610FFD77610FFD77610FF321C037C0000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000321C037CD77610FFD77610FFD77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FFD77610FFD77610FF321C037C000000000000
+ 00000000000000000000000000000000000000000000291D1080A57441FF361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480A57441FF291D1080000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000321C037CD77610FFD77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FFD77610FF321C037C00000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000321C037CD77610FF361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480D77610FF321C037C0000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000321C037C361E04800000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000361E0480321C037C000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000361E0480D77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000201001E0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000201001E00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001A0E0259D27410FCD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD37410FD1D10025F000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000361E0480D776
+ 10FFD77610FF361E048000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000E0E0E5D717171FE7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF11111163000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000F0F
+ 0F5E1C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C7F0202022300000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000005280505246B070734800505256D0000052B0000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF1C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C80717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000006F6F
+ 6FFD717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000001160C0C62AF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF0E0E
+ 68B400000119000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000001200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0115141499DA1919C3F60606307C0000021E000000000000021B06062D771919
+ BDF314149EDE000001190000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000092901841B7A02E100020022000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000C0C
+ 5EAB1B1BD1FF1A1AC9FA02021451000000000000000000000000000000000101
+ 08321919BDF30D0D67B30000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000009290184229C02FF229C02FF1B7A02E1000200220000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000004241B1B
+ CFFE09094896141497D91A1AC9FA020214510000000000000000000000000000
+ 000006062D771B1BD1FF0000052B00000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 00000000000009290184229C02FF229C02FF229C02FF229C02FF1B7A02E10002
+ 0022000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF717171FF717171FF717171FF7171
+ 71FF585858E10000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000040420651B1B
+ D1FF000003230000021A141497D91A1AC9FA0202145100000000000000000000
+ 00000000021C1B1BD1FF0505256D00000000000000001C1C1C80717171FF0000
+ 00000000000000000000CB6F0FF8D77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD57510FE000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 000009290184229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF1B7A
+ 02E1000200220000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF404040C01C1C1C801C1C1C804040
+ 40C0717171FF0000000000000000000000000000000000000000010101201414
+ 146B00000003000000000000000000000000000000000000000006062D781B1B
+ D1FF00000008000000000000021A141497D91A1AC9FA02021451000000000000
+ 0000000000001B1BD1FF0707348000000000000000001C1C1C80717171FF0000
+ 0000000000000000000091500BD1D77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF9D560BDA000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000929
+ 0184229C02FF229C02FF229C02FF197502DD0A2E018C229C02FF229C02FF229C
+ 02FF1B7A02E10002002200000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000001C1C
+ 1C80717171FF000000000000000000000000000000000101011F585858E17171
+ 71FF2D2D2DA1000000030000000000000000000000000000000004041F641B1B
+ D1FF0000042600000000000000000000021A141497D91A1AC9FA020214510000
+ 00000000021E1B1BD1FF0505256C00000000000000001C1C1C80717171FF0000
+ 00000000000000000000130A014DC96E0FF7D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFCE7110FA170D0155000000000000
+ 000000000000717171FF1C1C1C8000000000000000000000000009290184229C
+ 02FF229C02FF229C02FF197502DD0002001E000000000824007C229C02FF229C
+ 02FF229C02FF1B7A02E100020022000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000010101061717171FF7171
+ 71FF717171FF2D2D2DA100000003000000000000000000000000000003211B1B
+ CFFE070736830000000000000000000000000000021A141497D91A1AC9FA0202
+ 14510606307C1B1BD1FF0000052800000000000000001C1C1C80717171FF0000
+ 00000000000000000000000000000201001B351D047FBA660EED784209BF0502
+ 0027040200246E3C08B7BB670EEE3A2004850302002100000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000002090040229C02FF229C
+ 02FF229C02FF197502DD0002001E0000000000000000000000000824007C229C
+ 02FF229C02FF229C02FF1B7A02E1000200220000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000001252525937171
+ 71FF717171FF717171FF2D2D2DA1000000030000000000000000000000000B0B
+ 5AA71A1AC5F801010B3D0000000000000000000000000000021A141497D91A1A
+ C9FA1919C3F60C0C61AE0000000000000000000000001C1C1C80717171FF0000
+ 00000000000000000000000000000000000000000000030200230301001F2615
+ 026C2816036F0201001B03010020000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C800000000000000000000000000824007C229C
+ 02FF197502DD0002001E00000000000000000000000000000000000000000824
+ 007C229C02FF229C02FF229C02FF1B7A02E10002002200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C800000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000717171FF1C1C1C8000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000012525
+ 2593717171FF717171FF717171FF2D2D2DA10000000300000002010101200000
+ 0112131392D51A1AC5F8070736830000042500000008000003230A0A49971B1B
+ D1FF141499DA000001160000000000000000000000001C1C1C80717171FF0000
+ 00000000000000000000000000000000000000000000000000006F3D08B7D776
+ 10FFD77610FF85490AC900000003000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C8000000000000000000000000000000000061B
+ 006C0002001E0000000000000000000000000000000000000000000000000000
+ 00000824007C229C02FF229C02FF229C02FF1B7A02E100020022000000000000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C8000000000000000000000000000000000000000000E0E0E5D7171
+ 71FE717171FF717171FF717171FF717171FF1818187700000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 000125252593717171FF717171FF717171FF2D2D2DA12929299A575757E10101
+ 011A000001120B0B5AA71B1BCFFE1B1BD1FF1B1BD1FF1B1BD1FF1B1BCFFE0C0C
+ 5EAB00000115000000000000000000000000000000001C1C1C80717171FF0000
+ 000000000000000000000000000000000000000000000B06003CD77610FFD776
+ 10FFD77610FFD77610FF150C0151000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000824007C229C02FF229C02FF229C02FF1B7A02E1000200220000
+ 0000000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C8000000000000000000000000000000000000000001C1C1C807171
+ 71FF717171FF717171FF717171FF383838B40000000700000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 00000000000125252593717171FF717171FF717171FF717171FF717171FF5757
+ 57E101010120000000000000032104041F6306062D7804042065000003230000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 000000000000000000000000000000000000000000007C4409C2D77610FFD776
+ 10FFD77610FFD77610FF874A0ACA000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000824007C229C02FF229C02FF229C02FF1B7A02E10002
+ 0022000000000000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C8000000000000000000000000000000000000000001C1C1C807171
+ 71FF717171FF717171FF383838B4000000070000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000125252593717171FF717171FF717171FF717171FF2929
+ 299A000000020000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 00000000000000000000000000000000000000000000A45A0DDFD77610FFD776
+ 10FFD77610FFD77610FFA65B0DE0000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000824007C229C02FF229C02FF229C02FF1B7A
+ 02E1000200220000000000000000000000000000000000000000000000007171
+ 71FF1C1C1C8000000000000000000000000000000000000000001C1C1C807171
+ 71FF717171FF383838B400000007000000000000000000000000000000001C1C
+ 1C80717171FF0000000000000000000000000000000000000000000000000000
+ 000000000000000000022929299A717171FF717171FF717171FF717171FF2D2D
+ 2DA1000000030000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 00000000000000000000000000000000000000000000C36B0FF3D77610FFD776
+ 10FFD77610FFD77610FFD07210FB000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000824007C229C02FF229C02FF229C
+ 02FF1B7A02E10002002200000000000000000000000000000000000000007171
+ 71FF404040C01C1C1C801C1C1C801C1C1C801C1C1C801C1C1C80404040C07171
+ 71FF383838B400000007000000000F0F0F5E1C1C1C801C1C1C801C1C1C804040
+ 40C0717171FF0000000000000000000000000000000000000000000000000000
+ 0000000000022929299A717171FF717171FF717171FF717171FF717171FF7171
+ 71FF2D2D2DA10000000300000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 00000000000000000000000000000000000000000000A1580CDDD77610FFD776
+ 10FFD77610FFD77610FF321C037C000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000824007C229C02FF229C
+ 02FF229C02FF1B7A02E100020022000000000000000000000000000000004F4F
+ 4FD6717171FF717171FF717171FF717171FF717171FF717171FF717171FF3838
+ 38B40000000700000000000000006F6F6FFD717171FF717171FF717171FF7171
+ 71FF383838B40000000000000000000000000000000000000000000000000000
+ 00022929299A717171FF717171FF717171FF2929299A25252593717171FF7171
+ 71FF717171FF2D2D2DA100000003000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 000000000000000000000000000000000000000000000F0801459B550CD9C96E
+ 0FF7A45A0DDF2D19037600000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000824007C229C
+ 02FF229C02FF197502DD0002001E000000000000000000000000000000000000
+ 00000000000000000000000000001C1C1C80717171FF00000000000000000000
+ 0000000000000000000000000000717171FF717171FF717171FF717171FF3838
+ 38B4000000070000000000000000000000000000000000000000000000022929
+ 299A717171FF717171FF717171FF2929299A0000000200000001252525937171
+ 71FF717171FF717171FF2D2D2DA1000000030000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000824
+ 007C197502DD0002001E00000000000000000000000000000000000000000000
+ 00000000000000000000000000001C1C1C80717171FF00000000000000000000
+ 0000000000000000000000000000717171FF717171FF717171FF383838B40000
+ 00070000000000000000000000000000000000000000000000022929299A7171
+ 71FF717171FF717171FF2929299A000000020000000000000000000000012525
+ 2593717171FF717171FF717171FF2D2D2DA10000000300000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000E0000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001C1C1C80717171FF00000000000000000000
+ 0000000000000000000000000000717171FF717171FF383838B4000000070000
+ 0000000000000000000000000000000000000000000011111163717171FF7171
+ 71FF717171FF2929299A00000002000000000000000000000000000000000000
+ 000125252593717171FF717171FF717171FF1414146B00000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000001B1B1B7D717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF383838B400000007000000000000
+ 000000000000000000000000000000000000000000000101011A525252D97171
+ 71FF2929299A0000000200000000000000000000000000000000000000000000
+ 00000000000125252593717171FF555555DD0101011E00000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000101011C1B1B1B7D1C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C80181818770000000700000000000000000000
+ 00000000000000000000000000000000000000000000000000000101011A1111
+ 1163000000020000000000000000000000000000000000000000000000000000
+ 00000000000000000001101010600101011D0000000000000000000000000000
+ 000000000000000000000000000000000000000000001C1C1C80717171FF1C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C1C801C1C
+ 1C801C1C1C80717171FF1C1C1C80000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000D0D0D596F6F6FFC7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF717171FF717171FF717171FF717171FF717171FF717171FF7171
+ 71FF717171FF6F6F6FFD0F0F0F5F000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 004D0000004D0000004D0000004D0000004D0000004D0000004D0000004D0000
+ 004D0000004D0000004D0000004D0000004D0000004D0000004D0000004D0000
+ 004D0000004D0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000002020E4400000000000000000000
+ 0000000000000000000002020E44000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0003000000000000000000000000000000000000000000000000000000000000
+ 0099000000990000009900000099000000990000009900000099000000990000
+ 0099000000990000009900000099000000990000009900000099000000990000
+ 0099000000990000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000070737841B1BD1FF07073784000000000000
+ 000000000000070737841B1BD1FF070737840000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000111111656767
+ 67F40909094B0000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000606307C1B1BD1FF1B1BD1FF070737840000
+ 0000070737841B1BD1FF1B1BD1FF0606307C0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000011111165707070FE7171
+ 71FF636363EF0000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000606307C1B1BD1FF1B1BD1FF1010
+ 7AC31B1BD1FF1B1BD1FF0606307C000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000020000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000011111165707070FE717171FF6D6D
+ 6DFA0B0B0B510000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000606307C1B1BD1FF1B1B
+ D1FF1B1BD1FF0606307C00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000050200280000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000011111165707070FE717171FF6D6D6DFB0D0D
+ 0D57000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F1C1C1C7F00000000070707401C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F07070740000000000000000000000000070737841B1BD1FF1B1B
+ D1FF1B1BD1FF0707378400000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000201001E6839
+ 08B1000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000361E04800000000000000000000000000000
+ 000000000000000000000000000001010121111111641C1C1C7F181818770808
+ 0847000000060000000011111165707070FE717171FF6D6D6DFB0D0D0D570000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F1C1C1C7F00000000070707401C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F070707400000000000000000070737841B1BD1FF1B1BD1FF0F0F
+ 71BB1B1BD1FF1B1BD1FF07073784000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000042A170372C36B0FF3D776
+ 10FF000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000013B2004864A2905960000000000000000000000000000
+ 0000000000000101011A333333AC707070FE717171FF717171FF717171FF7171
+ 71FF5C5C5CE628282897707070FE717171FF6F6F6FFD0E0E0E5C000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F1C1C1C7F00000000070707401C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F0707074000000000070737841B1BD1FF1B1BD1FF0606307C0000
+ 00000606307C1B1BD1FF1B1BD1FF070737840000000000000000000000000000
+ 0000000000000000000000000000090500358C4D0BCED77610FFD77610FFD776
+ 10FF000000000000000000000000000000000000000000000000000000000000
+ 00000301001F663808B0D77610FF140B01500000000000000000000000000000
+ 0000020202255A5A5AE4676767F41C1C1C8002020225000000020000000B0909
+ 0948404040C0717171FF717171FF6F6F6FFD0F0F0F5E00000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F1C1C1C7F00000000070707401C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F07070740000000000606307C1B1BD1FF0606307C000000000000
+ 0000000000000606307C1B1BD1FF0606307C0000000000000000000000000000
+ 0000000000000000000E45260591D27410FCD77610FFD77610FFD77610FFD776
+ 10FF00000000000000000000000000000000000000000000000F150C01515C32
+ 07A7CD7010F9D77610FFB6640EEB000000070000000000000000000000000000
+ 00074E4E4ED45E5E5EE90303032B000000000000000000000000000000000000
+ 0000000000012121218C717171FF262626950000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000000707074007070740070707400707
+ 0740070707400707074000000000010101200707074007070740070707400707
+ 07400707074001010120000000000000000001010B3C00000000000000000000
+ 0000000000000000000001010B3C000000000000000000000000000000000000
+ 0000160C0152AB5E0DE4D77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF3C2104874023048C512C069D6D3C08B69E570CDBD47410FDD77610FFD776
+ 10FFD77610FFD77610FF361E0480000000000000000000000000000000001212
+ 1268717171FF0909094A00000000000000000000000000000000000000000000
+ 00000000000000000001404040C05F5F5FEA0000000800000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC000000990000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000201001E6839
+ 08B1D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFA95D0DE20000000D000000000000000000000000000000004040
+ 40C04B4B4BD00000000000000000000000000000000000000000000000000000
+ 0000000000000000000009090949717171FF0909094B00000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC00000099000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F000000000000000000000000000000042A170372C36B0FF3D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFCF7210FA0D07003F00000000000000000000000000000000000000006363
+ 63EF252525920000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000B717171FF1818187800000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC00000099000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F00000000000000000000000049290596D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFCD70
+ 10F9180D02570000000000000000000000000000000000000000000000006969
+ 69F6202020880000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000002717171FF1C1C1C7F00000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC00000099000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F000000000000000000000000000000022414026ABE690FF0D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FF9F570CDB0B06
+ 003B000000000000000000000000000000000000000000000000000000005353
+ 53DB333333AC0000000000000000000000000000000000000000000000000000
+ 0000000000000000000002020225717171FF1111116400000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666
+ 66CC00000099000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F0000000000000000000000000000000000000000020100195F34
+ 07A9D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD57610FE894B0BCC23130268000000070000
+ 0000000000000000000000000000000000000000000000000000000000002727
+ 2797676767F40000001400000000000000000000000000000000000000000000
+ 000000000000000000001C1C1C80707070FE0101012100000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFADADADE6666666CC666666CC666666CC666666CC666666CC2C2C
+ 2CB3000000990000000000000000000000000927018009270180092701800927
+ 0180092701800927018000000000020900400927018009270180092701800927
+ 0180092701800209004000000000070707400707074007070740070707400707
+ 0740070707400000000000000000000000000000000000000000000000000000
+ 00001109014AA45A0DDFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FF2F1A03782414026A110A014A010000170000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000202
+ 02296D6D6DFA313131A800000001000000000000000000000000000000000000
+ 0000000000000303032B676767F4333333AC0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF666666CC00000099000000990000009900000099000000990000
+ 0099000000990000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000B3E220489CF7210FBD77610FFD77610FFD77610FFD776
+ 10FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000018181876717171FF313131A8000000140000000000000000000000000000
+ 00000909094A5E5E5EE95A5A5AE40101011A0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF666666CC00000099FFFFFFFFFFFFFFFFFFFFFFFFD0D0D0F11313
+ 13A500000094000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F0000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000703002E83480AC7D77610FFD77610FFD776
+ 10FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000181818766D6D6DFA676767F4333333AC20202089252525934B4B
+ 4BD0717171FF4E4E4ED402020225000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF666666CC00000099FFFFFFFFFFFFFFFFD0D0D0F1131313A50000
+ 009400000029000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000022414026ABE690FF0D776
+ 10FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000202022927272797535353DB696969F6636363EF4040
+ 40C1121212680000000700000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF666666CC00000099FFFFFFFFD0D0D0F1131313A5000000940000
+ 002900000000000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000020100195F34
+ 07A9000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099666666CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF666666CC00000099D0D0D0F1131313A500000094000000290000
+ 000000000000000000000000000000000000229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF0000000009270180229C02FF229C02FF229C02FF229C
+ 02FF229C02FF09270180000000001C1C1C7F1C1C1C7F1C1C1C7F1C1C1C7F1C1C
+ 1C7F1C1C1C7F0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00992C2C2CB3666666CC666666CC666666CC666666CC666666CC666666CC6666
+ 66CC666666CC2C2C2CB300000099131313A50000009400000029000000000000
+ 0000000000000000000000000000000000000927018009270180092701800927
+ 0180092701800927018000000000020900400927018009270180092701800927
+ 0180092701800209004000000000070707400707074007070740070707400707
+ 0740070707400000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0099000000990000009900000099000000990000009900000099000000990000
+ 0099000000990000009900000099000000940000002900000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021120265361E0480361E
+ 0480361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480241402690000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D37410FDD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000000000030202104700000003000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000202020F460000
+ 0004000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000001020211490B0B58A51515A1E01B1B
+ CDFD1B1BCDFD1616A4E20B0B5AA80202124D0000000200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 00030B0B53A11B1BD1FF0B0B53A1000000030000000000000000000000000000
+ 000000000000000000000000000000000000000000020A0A4B9A1B1BD1FF0B0B
+ 5AA8000000040000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000052811117FC71B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF111184CB0000062C000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000101
+ 0C3E1B1BD1FF1B1BD1FF1B1BD1FF0B0B53A10000000300000000000000000000
+ 0000000000000000000000000000000000020A0A4B9A1B1BD1FF1B1BD1FF1B1B
+ D1FF020210470000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001010C3F1818BBF11B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1919BFF402020F450000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0001090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B53A100000003000000000000
+ 00000000000000000000000000020A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A
+ 4B9A000000020000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000004271818BAF11B1BD1FF1B1BD1FF1A1AC3F708083E8C000007300000
+ 0005000000040000062E08083B891919C1F51B1BD1FF1B1BD1FF1919BDF30000
+ 062D000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 000000000001090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B53A1000000030000
+ 000000000000000000020A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A0000
+ 0002000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000110107CC41B1BD1FF1B1BD1FF1616A7E40000062E00000000000000000000
+ 0000000000000000000000000000000005291515A1E01B1BD1FF1B1BD1FF1111
+ 84CB000000020000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 00000000000000000001090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B53A10000
+ 0003000000020A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A000000020000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000202
+ 0F451B1BD1FF1B1BD1FF1A1AC5F80000062F0000000000000000000000000000
+ 000000000000000000000000000000000000000005291919C1F51B1BD1FF1B1B
+ D1FF0202124D0000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000001090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B
+ 53A10A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A00000002000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000B0B
+ 519F1B1BD1FF1B1BD1FF09094391000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000008083B891B1BD1FF1B1B
+ D1FF0B0B5AA70000000000000000000000000000000000000000000000002112
+ 0265361E0480361E0480361E0480361E0480361E0480D77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000001090944931B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A0000000200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000404
+ 1E62070734800707348007073480070734800707348007073480070734800707
+ 3480070734800707348007073480070734800707348007073480070734800707
+ 348004041F620000000000000000000000000000000000000000000000001414
+ 99DA1B1BD1FF1B1BD1FF01010936000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000062E1B1BD1FF1B1B
+ D1FF1616A4E2000000000000000000000000000000000000000000000000D374
+ 10FDD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000001090944931B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0A0A4B9A000000020000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001B1B
+ CDFD1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF0000000000000000000000000000000000000000000000001919
+ C1F51B1BD1FF1B1BD1FF0000000C000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000041B1BD1FF1B1B
+ D1FF1B1BCDFD000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FF0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000020A0A4B9A1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF0B0B53A1000000030000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001B1B
+ CDFD1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF0000000000000000000000000000000000000000000000001919
+ C0F51B1BD1FF1B1BD1FF0000000D000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000051B1BD1FF1B1B
+ D1FF1B1BCDFD000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF361E0480361E0480361E0480361E0480361E
+ 0480201102630000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000020A0A4B9A1B1BD1FF1B1BD1FF1B1B
+ D1FF1B1BD1FF1B1BD1FF1B1BD1FF0B0B53A10000000300000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000303
+ 1C5F070734800707348007073480070734800707348007073480070734800707
+ 3480070734800707348007073480070734800707348007073480070734800707
+ 348004041D600000000000000000000000000000000000000000000000001414
+ 97D91B1BD1FF1B1BD1FF01010937000000000000000000000000000004250606
+ 337F0707348000000529000000000000000000000000010108321B1BD1FF1B1B
+ D1FF1515A2E1000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000020A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A
+ 4B9A090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B53A100000003000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000A0A
+ 519F1B1BD1FF1B1BD1FF090945930000000000000000000000000606327E1B1B
+ D1FF1B1BD1FF070734800000000000000000000000000808418F1B1BD1FF1B1B
+ D1FF0B0B5AA7000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000020A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A0000
+ 000200000001090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B53A1000000030000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000202
+ 0F451B1BD1FF1B1BD1FF1A1AC7F9010108330000000000000000070734801B1B
+ D1FF1B1BD1FF0707348000000000000000000000072F1A1AC5F81B1BD1FF1B1B
+ D1FF0202124D000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000020A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A000000020000
+ 00000000000000000001090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B53A10000
+ 0003000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00010F0F7AC31B1BD1FF1B1BD1FF1717ADE80101093500000000070734801B1B
+ D1FF1B1BD1FF0707348000000000000007311616A9E51B1BD1FF1B1BD1FF1111
+ 83CA00000002000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00020A0A4B9A1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A00000002000000000000
+ 0000000000000000000000000001090944931B1BD1FF1B1BD1FF1B1BD1FF0B0B
+ 53A1000000030000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000004261818BAF11B1BD1FF1B1BD1FF1B1BC9FB00000000070734801B1B
+ D1FF1B1BD1FF07073480000000001A1AC7F91B1BD1FF1B1BD1FF1919BDF30000
+ 052B00000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000101
+ 0C3F1B1BD1FF1B1BD1FF1B1BD1FF0A0A4B9A0000000200000000000000000000
+ 000000000000000000000000000000000001090944931B1BD1FF1B1BD1FF1B1B
+ D1FF020210470000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000001010C3F1818B9F01B1BD1FF1B1BD1FF00000000070734801B1B
+ D1FF1B1BD1FF07073480000000001B1BD1FF1B1BD1FF1919BDF302020E440000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00020A0A4B9A1B1BD1FF0A0A4B9A000000020000000000000000000000000000
+ 00000000000000000000000000000000000000000001090944931B1BD1FF0B0B
+ 53A1000000030000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000004260F0F79C21B1BD1FF00000000070734801B1B
+ D1FF1B1BD1FF07073480000000001B1BD1FF11117EC600000529000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000201010C3E00000002000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000101010C3E0000
+ 0003000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000001010D4200000000070734801B1B
+ D1FF1B1BD1FF070734800000000002020F450000000100000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D374
+ 10FDD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000606327E1B1B
+ D1FF1B1BD1FF0707348000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001D10
+ 025F361E0480361E0480361E0480361E0480361E0480361E0480361E0480361E
+ 0480361E0480361E048020110263000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000003220606
+ 327D0606327E0000042500000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000391F
+ 0484000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000391F0484D776
+ 10FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000391F0484D77610FFD776
+ 10FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000031A25620003
+ 0422000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000391F0484D77610FFD77610FFD776
+ 10FFD37410FDA95D0DE25D3307A8130A014D0000000200000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000414005D229B
+ 02FE229C02FF0517006300000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFD77610FFA1580CDD0201001E0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C40801089
+ C6E1000304220000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000D070140D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF884B0BCB0603002C000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFD77610FFA1580CDD0201001E0201001E743F09BB0201001E000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C408014B1
+ FFFF1089C6E10003042200000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000C07003E1B0F025C00000000321C037CD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FFC56C0FF40F0801450000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D776
+ 10FFA1580CDD0201001E0201001EA1580CDDD77610FFA1580CDD0201001E0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C408014B1
+ FFFF14B1FFFF052C408000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000004020026BE690FF0D37410FD1D10025E00000000321C037CD77610FFD776
+ 10FF000000040703002E3E220489C76E0FF5D77610FFD77610FFC36C0FF30603
+ 002D000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000A158
+ 0CDD0201001E0201001EA1580CDDD77610FFD77610FFD77610FFA1580CDD0201
+ 001E000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C408014B1
+ FFFF14B1FFFF052C408000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00017D4509C3D77610FFD77610FF9E570CDB0000000900000000321C037CD776
+ 10FF00000000000000000000000005030029A65B0DE0D77610FFD77610FF884B
+ 0BCB000000020000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000201
+ 001E0201001EA1580CDDD77610FFD77610FFD77610FFD77610FFD77610FFA158
+ 0CDD0201001E0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C408014B1
+ FFFF14B1FFFF052C408000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000F08
+ 0145D77610FFD77610FFC56C0FF405020027000000000000000000000000321C
+ 037C0000000000000000000000000000000005030029C76D0FF5D77610FFD776
+ 10FF130A014D0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000046260592D77610FFD77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFA1580CDD0201001E00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C408014B1
+ FFFF14B1FFFF052C408000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000532D
+ 069FD77610FFD77610FF381F0483000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003E220489D77610FFD776
+ 10FF5C3207A70000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000005643708AED77610FFD77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFA1580CDD0201001E000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C408014B1
+ FFFF14B1FFFF052C408000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009D56
+ 0BDAD77610FFD77610FF04020026000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000703002ED77610FFD776
+ 10FFA85C0DE20000000000000000000000000000000000000000000000000415
+ 005E092701800927018009270180092701800927018009270180145702C0229C
+ 02FF229C02FF145702C009270180092701800927018009270180092701800927
+ 0180051600620000000000000000000000000000000000000000000000000000
+ 00000000000000000005643708AED77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFA1580CDD0201001E0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000052C408014B1
+ FFFF14B1FFFF052C408000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C76D
+ 0FF5D77610FFC86E0FF600000001000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000004D77610FFD776
+ 10FFD37410FD000000000000000000000000000000000000000000000000229A
+ 02FD229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000005643708AED77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFA1580CDD0201001E00000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000304221089C6E114B1
+ FFFF14B1FFFF1089C6E100030422000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C66D
+ 0FF5D77610FFC96E0FF700000001000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000005D77610FFD776
+ 10FFD37410FD0000000000000000000000000000000000000000000000002298
+ 02FC229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C02FF229C
+ 02FF229B02FE0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000005643708AED77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFA1580CDD0201001E000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000304221089C6E114B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF1089C6E1000304220000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009B55
+ 0BD9D77610FFD77610FF04020026000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000008040033D77610FFD776
+ 10FFA65B0DE00000000000000000000000000000000000000000000000000412
+ 0059092701800927018009270180092701800927018009270180145702C0229C
+ 02FF229C02FF145702C009270180092701800927018009270180092701800927
+ 01800414005D0000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000005643708AED77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FFD77610FF4124048D000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000304221089C6E114B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF1089C6E10003042200000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000522D
+ 069DD77610FFD77610FF371E0482000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000045260591D77610FFD776
+ 10FF5A3107A50000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000005643708AED776
+ 10FFD77610FFD77610FFD77610FFD77610FF5D3307A800000004080400320201
+ 001A000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000304221089C6E114B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF1089C6E100030422000000000000
+ 0000000000000000000000000000000000000000000000000000000000000E07
+ 0142D77610FFD77610FFC36C0FF3040200270000000000000000000000000000
+ 00102E19037600000000000000000000000008040033CD7010F9D77610FFD776
+ 10FF1109014A0000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000056437
+ 08AED77610FFD77610FFD77610FF5D3307A80000000408040034BC670EEF9B55
+ 0BD90201001A0000000000000000000000000000000000000000000000000000
+ 000000000000000304221089C6E114B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF1089C6E1000304220000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007A4309C0D77610FFD77610FFA35A0DDE0503002900000000000000000000
+ 0010D77610FF321C037C000000000000000DAF600DE6D77610FFD77610FF8147
+ 0AC6000000010000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0005643708AED77610FF5D3307A80000000408040034BC670EEFD77610FFD776
+ 10FF93500BD30000000000000000000000000000000000000000000000000000
+ 0000000304221089C6E114B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF1089C6E10003
+ 0422000000000000000000000000000000000000000000000000000000000000
+ 000003020023BB670EEED77610FFD77610FFC76E0FF63F23048B080400330201
+ 001BD77610FFD77610FF351D037F000000001A0E025AD07210FBC0690FF10502
+ 0027000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000005291603700000000408040034BC670EEFD77610FFD77610FFD776
+ 10FFA35A0DDE0000000000000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 0000000000000B06003ABB670EEED77610FFD77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FF391F048400000000150C01510C07003E0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000503002ABC670EEFD77610FFD77610FFD77610FFAD5F
+ 0DE5040200260000000000000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000030200237A4309C0D77610FFD77610FFD77610FFD776
+ 10FFD77610FFD77610FFD77610FFD77610FF0D07014000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000009270180229C
+ 02FF229C02FF0927018000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000076B3B08B4D77610FFD77610FFAD5F0DE50402
+ 0026000000000000000000000000000000000000000000000000000000000000
+ 0000052C408014B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1
+ FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF14B1FFFF052C
+ 4080000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000E070142522C069D9B550BD9C66D
+ 0FF5D77610FFD77610FFD77610FF321C037C0000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000041200592298
+ 02FC229902FD0415005F00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000007633608AD9B550BD9040200260000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D77610FFD77610FF321C037C000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D77610FF321C037C00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000321C037C0000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000424D3E000000000000003E000000
+ 2800000060000000500100000100010000000000C00F00000000000000000000
+ 000000000000000000000000FFFFFF0000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000}
+ DesignInfo = 6357472
+ ImageInfo = <
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E59656C6C6F77
+ 7B66696C6C3A234646423131353B7D3C2F7374796C653E0D0A3C706F6C79676F
+ 6E20636C6173733D2259656C6C6F772220706F696E74733D22362C342032362C
+ 342032362C382031382C31362031382C32342031342C32382031342C31362036
+ 2C3820222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D32322C366C2D362D36763443392E342C342C
+ 342C392E342C342C313663302C332E362C312E362C362E382C342E312C396C32
+ 2E382D322E38632D312E382D312E352D332D332E372D332D362E3263302D342E
+ 342C332E362D382C382D3876344C32322C367A222F3E0D0A3C7061746820636C
+ 6173733D22426C75652220643D224D32332E392C374C32312C392E3863312E38
+ 2C312E352C332C332E372C332C362E3263302C342E342D332E362C382D382C38
+ 762D346C2D362C366C362C36762D3463362E362C302C31322D352E342C31322D
+ 313220202623393B4332382C31322E342C32362E342C392E322C32332E392C37
+ 7A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2241
+ 6464223E0D0A09093C7061746820636C6173733D22477265656E2220643D224D
+ 32372C3134682D39563563302D302E352D302E352D312D312D31682D32632D30
+ 2E352C302D312C302E352D312C3176394835632D302E352C302D312C302E352D
+ 312C31763263302C302E352C302E352C312C312C316839763920202623393B26
+ 23393B63302C302E352C302E352C312C312C31683263302E352C302C312D302E
+ 352C312D31762D39683963302E352C302C312D302E352C312D31762D32433238
+ 2C31342E352C32372E352C31342C32372C31347A222F3E0D0A093C2F673E0D0A
+ 3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D32372E362C382E326C2D332E382D332E3863
+ 2D302E352D302E352D312E342D302E352D312E392C306C2D322E352C322E356C
+ 352E382C352E386C322E352D322E354332382E312C392E362C32382E312C382E
+ 382C32372E362C382E327A222F3E0D0A3C706F6C79676F6E20636C6173733D22
+ 426C75652220706F696E74733D22342C32382031302C323820342C323220222F
+ 3E0D0A3C7265637420783D22352E382220793D2231332E3422207472616E7366
+ 6F726D3D226D617472697828302E373037202D302E3730373220302E37303732
+ 20302E373037202D382E3035372031352E343537292220636C6173733D22426C
+ 7565222077696474683D2231372E3622206865696768743D22382E32222F3E0D
+ 0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D32372C3134682D37563363302D302E362D30
+ 2E342D312D312D31483543342E342C322C342C322E342C342C3376313463302C
+ 302E362C302E342C312C312C31683776313163302C302E362C302E342C312C31
+ 2C3168313463302E362C302C312D302E342C312D3120202623393B5631354332
+ 382C31342E342C32372E362C31342C32372C31347A222F3E0D0A3C2F7376673E
+ 0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E5265647B6669
+ 6C6C3A234431314331433B7D3C2F7374796C653E0D0A3C7061746820636C6173
+ 733D225265642220643D224D31382E382C31366C382D3863302E342D302E342C
+ 302E342D312C302D312E346C2D312E342D312E34632D302E342D302E342D312D
+ 302E342D312E342C306C2D382C386C2D382D38632D302E342D302E342D312D30
+ 2E342D312E342C304C352E322C362E3620202623393B43342E382C372C342E38
+ 2C372E362C352E322C386C382C386C2D382C38632D302E342C302E342D302E34
+ 2C312C302C312E346C312E342C312E3463302E342C302E342C312C302E342C31
+ 2E342C306C382D386C382C3863302E342C302E342C312C302E342C312E342C30
+ 6C312E342D312E3420202623393B63302E342D302E342C302E342D312C302D31
+ 2E344C31382E382C31367A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2252
+ 656D6F7665223E0D0A09093C7061746820636C6173733D225265642220643D22
+ 4D32372C31384835632D302E362C302D312D302E352D312D31762D3263302D30
+ 2E362C302E342D312C312D3168323263302E352C302C312C302E342C312C3176
+ 324332382C31372E352C32372E352C31382C32372C31387A222F3E0D0A093C2F
+ 673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E5265647B6669
+ 6C6C3A234431314331433B7D3C2F7374796C653E0D0A3C7061746820636C6173
+ 733D225265642220643D224D32302C342E3776342E3463322E342C312E342C34
+ 2C342C342C362E3963302C342E342D332E362C382D382C38732D382D332E362D
+ 382D3863302D332C312E362D352E352C342D362E3956342E3743372E332C362E
+ 332C342C31302E382C342C313620202623393B63302C362E362C352E342C3132
+ 2C31322C313263362E362C302C31322D352E342C31322D31324332382C31302E
+ 382C32342E372C362E332C32302C342E377A222F3E0D0A3C7061746820636C61
+ 73733D225265642220643D224D31372C3134682D32632D302E362C302D312D30
+ 2E342D312D31563363302D302E362C302E342D312C312D31683263302E362C30
+ 2C312C302E342C312C317631304331382C31332E362C31372E362C31342C3137
+ 2C31347A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D225A
+ 6F6F6D223E0D0A09093C7061746820636C6173733D22426C61636B2220643D22
+ 4D32372E372C32352E334C32302E352C313863312D312E342C312E352D332E32
+ 2C312E352D3563302D352D342D392D392D39732D392C342D392C3963302C352C
+ 342C392C392C3963312E392C302C332E362D302E362C352D312E356C372E332C
+ 372E3320202623393B2623393B63302E332C302E332C302E392C302E332C312E
+ 322C306C312E322D312E324332382E312C32362E322C32382E312C32352E362C
+ 32372E372C32352E337A204D362C313363302D332E392C332E312D372C372D37
+ 73372C332E312C372C3763302C332E392D332E312C372D372C3753362C31362E
+ 392C362C31337A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D223020302033322033322220656E61626C65
+ 2D6261636B67726F756E643D226E6577203020302033322033322220786D6C3A
+ 73706163653D227072657365727665223E262331333B262331303B3C706F6C79
+ 676F6E206F7061636974793D22302E362220706F696E74733D22342C3020342C
+ 33302032382C33302032382C372032312C3020222F3E0D0A3C706F6C79676F6E
+ 2066696C6C3D22234646464646462220706F696E74733D22362C3220362C3238
+ 2032362C32382032362C31302031382C31302031382C3220222F3E0D0A3C706F
+ 6C79676F6E2066696C6C3D22234646464646462220706F696E74733D2232302C
+ 322032302C382032362C3820222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E59656C6C6F777B66696C6C3A2346464231
+ 31353B7D262331333B262331303B2623393B2E5265647B66696C6C3A23443131
+ 4331433B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A23
+ 3732373237323B7D262331333B262331303B2623393B2E426C75657B66696C6C
+ 3A233131373744373B7D262331333B262331303B2623393B2E57686974657B66
+ 696C6C3A234646464646463B7D262331333B262331303B2623393B2E47726565
+ 6E7B66696C6C3A233033394332333B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374317B6F7061636974793A302E353B7D262331333B262331303B2623393B2E
+ 7374327B6F7061636974793A302E32353B7D262331333B262331303B2623393B
+ 2E7374337B66696C6C3A234646423131353B7D3C2F7374796C653E0D0A3C672F
+ 3E0D0A3C672069643D2244656C6574655175657279223E0D0A09093C70617468
+ 20636C6173733D22477265656E2220643D224D382C3130483076366838563130
+ 7A204D382C3248307636683856327A204D31382C32682D387636683856327A20
+ 4D31382C3130682D38763668385631307A222F3E0D0A09093C6720636C617373
+ 3D22737431223E0D0A0909093C7061746820636C6173733D22426C61636B2220
+ 643D224D32382C3136682D38762D3668385631367A204D32382C32682D387636
+ 683856327A204D302C32346838762D3648305632347A204D31302C3234683876
+ 2D36682D385632347A222F3E0D0A09093C2F673E0D0A09093C706F6C79676F6E
+ 20636C6173733D225265642220706F696E74733D2233322C32302033302C3138
+ 2032362C32322032322C31382032302C32302032342C32342032302C32382032
+ 322C33302032362C32362033302C33302033322C32382032382C323420262339
+ 3B222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D2255
+ 6E646F2220786D6C6E733D22687474703A2F2F7777772E77332E6F72672F3230
+ 30302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F7777772E
+ 77332E6F72672F313939392F786C696E6B2220783D223070782220793D223070
+ 78222076696577426F783D2230203020333220333222207374796C653D22656E
+ 61626C652D6261636B67726F756E643A6E6577203020302033322033323B2220
+ 786D6C3A73706163653D227072657365727665223E262331333B262331303B3C
+ 7374796C6520747970653D22746578742F637373223E2E426C75657B66696C6C
+ 3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C6173733D
+ 22426C75652220643D224D33322C323663302C302C302D382D31362D3876364C
+ 302C31344C31362C3476364333322C31302C33322C32362C33322C32367A222F
+ 3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2243
+ 6865636B223E0D0A09093C706F6C79676F6E20636C6173733D22477265656E22
+ 20706F696E74733D2232372C352031312C323120352C313520322C3138203131
+ 2C32372033302C38202623393B222F3E0D0A093C2F673E0D0A3C2F7376673E0D
+ 0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C61636B7B
+ 66696C6C3A233732373237323B7D3C2F7374796C653E0D0A3C7061746820636C
+ 6173733D22426C61636B2220643D224D32312C32483131632D302E352C302D31
+ 2C302E352D312C317635483543342E352C382C342C382E352C342C3976323063
+ 302C302E352C302E352C312C312C3168313663302E352C302C312D302E352C31
+ 2D31762D35683563302E352C302C312D302E352C312D3120202623393B56394C
+ 32312C327A204D32302C323848365631306838763563302C302E352C302E352C
+ 312C312C3168355632387A204D32362C3232682D34762D376C2D372D37682D33
+ 56346838763563302C302E352C302E352C312C312C3168355632327A222F3E0D
+ 0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C61636B7B66696C6C3A233732373237
+ 323B7D262331333B262331303B2623393B2E5265647B66696C6C3A2344313143
+ 31433B7D3C2F7374796C653E0D0A3C7061746820636C6173733D225265642220
+ 643D224D32322C3134632D342E342C302D382C332E362D382C3873332E362C38
+ 2C382C3873382D332E362C382D385332362E342C31342C32322C31347A204D32
+ 322C313663312E312C302C322E322C302E332C332E312C302E396C2D382E322C
+ 382E3220202623393B632D302E362D302E392D302E392D322D302E392D332E31
+ 4331362C31382E372C31382E372C31362C32322C31367A204D32322C3238632D
+ 312E342C302D322E372D302E352D332E372D312E336C382E342D382E3463302E
+ 382C312C312E332C322E332C312E332C332E3720202623393B4332382C32352E
+ 332C32352E332C32382C32322C32387A222F3E0D0A3C7061746820636C617373
+ 3D22426C61636B2220643D224D31362E352C31332E374C31342E382C31326C36
+ 2E392D362E3963302E342D302E342C302E342D312C302D312E346C2D312E342D
+ 312E34632D302E342D302E342D312D302E342D312E342C304C31322C392E324C
+ 352E312C322E3320202623393B632D302E342D302E342D312D302E342D312E34
+ 2C304C322E332C332E37632D302E342C302E342D302E342C312C302C312E344C
+ 392E322C31326C2D362E392C362E39632D302E342C302E342D302E342C312C30
+ 2C312E346C312E342C312E3463302E342C302E342C312C302E342C312E342C30
+ 6C362E392D362E3920202623393B6C312E372C312E374331342E342C31352E34
+ 2C31352E342C31342E342C31362E352C31332E377A222F3E0D0A3C2F7376673E
+ 0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E59656C6C6F777B66696C6C3A2346464231
+ 31353B7D262331333B262331303B2623393B2E5265647B66696C6C3A23443131
+ 4331433B7D262331333B262331303B2623393B2E426C75657B66696C6C3A2331
+ 31373744373B7D262331333B262331303B2623393B2E477265656E7B66696C6C
+ 3A233033394332333B7D262331333B262331303B2623393B2E426C61636B7B66
+ 696C6C3A233732373237323B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B646973706C61793A6E6F6E653B7D262331333B262331303B2623393B2E
+ 7374327B646973706C61793A696E6C696E653B66696C6C3A233033394332333B
+ 7D262331333B262331303B2623393B2E7374337B646973706C61793A696E6C69
+ 6E653B66696C6C3A234431314331433B7D262331333B262331303B2623393B2E
+ 7374347B646973706C61793A696E6C696E653B66696C6C3A233732373237323B
+ 7D3C2F7374796C653E0D0A3C672069643D22456D706C6F79656550726F66696C
+ 65223E0D0A09093C7061746820636C6173733D22426C61636B2220643D224D32
+ 392C30483343322E352C302C322C302E352C322C3176333063302C302E352C30
+ 2E352C312C312C3168323663302E352C302C312D302E352C312D315631433330
+ 2C302E352C32392E352C302C32392C307A204D32382C33304834563268323456
+ 33307A222F3E0D0A09093C7061746820636C6173733D22426C75652220643D22
+ 4D31322E332C31332E38632D302E312D302E332D302E332D302E362D302E332D
+ 302E3963302E312D302E312C302E332D302E322C302E332D302E324331312E36
+ 2C31302E352C31322C382C31352E322C3863332E352C302C332E372C312E392C
+ 332E372C312E3920202623393B2623393B73312E392D302E312C302E372C322E
+ 3963302E312D302E312C302E332D302E312C302E332C302E3263302E312C302E
+ 332D302E312C302E362D302E322C302E39632D302E322C302E332C302E312C31
+ 2E312D302E362C3176302E314331382E382C31362E342C31372E382C31382C31
+ 362C313820202623393B2623393B732D322E372D312E362D332E312D332E3163
+ 302D302E312C302D302E312C302D302E314331322E322C31342E392C31322E34
+ 2C31342E312C31322E332C31332E387A204D31382E372C3138632D302E352C31
+ 2D312E342C312E392D322E372C312E39632D312E332C302D322E322D302E392D
+ 322E372D3220202623393B2623393B4331312E372C32302E332C382C31382E37
+ 2C382C32332E37563234683136762D302E334332342C31382E372C32302E332C
+ 32302E322C31382E372C31387A222F3E0D0A093C2F673E0D0A3C2F7376673E0D
+ 0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C61636B7B66696C6C3A233732373237
+ 323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A23313137
+ 3744373B7D262331333B262331303B2623393B2E7374307B6F7061636974793A
+ 302E353B7D3C2F7374796C653E0D0A3C672069643D2257696E646F77223E0D0A
+ 09093C7061746820636C6173733D22426C61636B2220643D224D32382C387632
+ 3048345638483276323163302C302E352C302E352C312C312C3168323663302E
+ 352C302C312D302E352C312D3156384832387A222F3E0D0A09093C7061746820
+ 636C6173733D22426C75652220643D224D33302C3130563563302D302E352D30
+ 2E352D312D312D31483343322E352C342C322C342E352C322C3576354833307A
+ 222F3E0D0A093C2F673E0D0A3C6720636C6173733D22737430223E0D0A09093C
+ 7265637420783D22362220793D2231322220636C6173733D22426C61636B2220
+ 77696474683D223822206865696768743D2232222F3E0D0A09093C7061746820
+ 636C6173733D22426C61636B2220643D224D31362C31327636683130762D3648
+ 31367A204D32342C3136682D36762D3268365631367A222F3E0D0A09093C7061
+ 746820636C6173733D22426C61636B2220643D224D31362C3230763668313076
+ 2D364831367A204D32342C3234682D36762D3268365632347A222F3E0D0A0909
+ 3C7265637420783D22362220793D2232302220636C6173733D22426C61636B22
+ 2077696474683D223822206865696768743D2232222F3E0D0A093C2F673E0D0A
+ 3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2241
+ 72726F7731446F776E223E0D0A09093C706174682069643D2247726F75705F53
+ 656C656374696F6E5F325F2220636C6173733D22426C75652220643D224D3134
+ 2C34763134682D302E3748366C31302C31306C31302D3130682D372E33483138
+ 56344831347A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2241
+ 72726F77314C656674223E0D0A09093C706F6C79676F6E20636C6173733D2242
+ 6C75652220706F696E74733D2232382C31342031342C31342031342C31332E33
+ 2031342C3620342C31362031342C32362031342C31382E372031342C31382032
+ 382C3138202623393B222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2241
+ 72726F773152696768745F315F223E0D0A09093C7061746820636C6173733D22
+ 426C75652220643D224D342C3134683134762D302E3756366C31302C31304C31
+ 382C3236762D372E3356313848345631347A222F3E0D0A093C2F673E0D0A3C2F
+ 7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2241
+ 72726F77315570223E0D0A09093C706174682069643D2247726F75705F53656C
+ 656374696F6E5F335F2220636C6173733D22426C75652220643D224D31342C32
+ 38563134682D302E3748364C31362C346C31302C3130682D372E334831387631
+ 344831347A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E5265647B66696C6C3A234431314331433B
+ 7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A2337323732
+ 37323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A233131
+ 373744373B7D262331333B262331303B2623393B2E477265656E7B66696C6C3A
+ 233033394332333B7D262331333B262331303B2623393B2E59656C6C6F777B66
+ 696C6C3A234646423131353B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374327B6F7061636974793A302E32353B7D3C2F7374796C653E0D0A3C672069
+ 643D225072696E745F315F223E0D0A09093C7061746820636C6173733D22426C
+ 61636B2220643D224D31302C346831327638683256324838763130683256347A
+ 204D32382C3130682D32763363302C302E362D302E342C312D312C314837632D
+ 302E362C302D312D302E342D312D31762D334834632D312E312C302D322C302E
+ 392D322C3276313220202623393B2623393B63302C312E312C302E392C322C32
+ 2C3268347634683136762D34683463312E312C302C322D302E392C322D325631
+ 324333302C31302E392C32392E312C31302C32382C31307A204D32322C323476
+ 327632483130762D32762D32762D346831325632347A222F3E0D0A093C2F673E
+ 0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C61636B7B
+ 66696C6C3A233732373237323B7D3C2F7374796C653E0D0A3C672069643D2248
+ 797065726C696E6B223E0D0A09093C673E0D0A0909093C7061746820636C6173
+ 733D22426C61636B2220643D224D31302E332C32312E3763302E342C302E342C
+ 312C302E342C312E342C306C31302D313063302E342D302E342C302E342D312C
+ 302D312E34732D312D302E342D312E342C306C2D31302C313020202623393B26
+ 23393B2623393B43392E392C32302E372C392E392C32312E332C31302E332C32
+ 312E377A222F3E0D0A0909093C7061746820636C6173733D22426C61636B2220
+ 643D224D31352E342C31392E3563302E352C312E312C302E332C322E352D302E
+ 362C332E346C2D342E322C342E32632D312E322C312E322D332E312C312E322D
+ 342E322C304C352C32352E37632D312E322D312E322D312E322D332E312C302D
+ 342E3220202623393B2623393B2623393B6C342E322D342E3263302E392D302E
+ 392C322E332D312E312C332E342D302E366C312E352D312E35632D312E392D31
+ 2E332D342E362D312E312D362E332C302E364C332E362C3230632D322C322D32
+ 2C352E312C302C372E314C352C32382E3563322C322C352E312C322C372E312C
+ 306C342E322D342E3220202623393B2623393B2623393B63312E372D312E372C
+ 312E392D342E332C302E362D362E334C31352E342C31392E357A222F3E0D0A09
+ 09093C7061746820636C6173733D22426C61636B2220643D224D32382E352C34
+ 2E396C2D312E342D312E34632D322D322D352E312D322D372E312C306C2D342E
+ 322C342E32632D312E372C312E372D312E392C342E332D302E362C362E336C31
+ 2E352D312E35632D302E352D312E312D302E332D322E352C302E362D332E3420
+ 202623393B2623393B2623393B6C342E322D342E3263312E322D312E322C332E
+ 312D312E322C342E322C306C312E342C312E3463312E322C312E322C312E322C
+ 332E312C302C342E326C2D342E322C342E32632D302E392C302E392D322E332C
+ 312E312D332E342C302E364C31382C31362E3820202623393B2623393B262339
+ 3B63312E392C312E332C342E362C312E312C362E332D302E366C342E322D342E
+ 324333302E352C31302C33302E352C362E382C32382E352C342E397A222F3E0D
+ 0A09093C2F673E0D0A09093C673E0D0A0909093C7061746820636C6173733D22
+ 426C61636B2220643D224D31302E332C32312E3763302E342C302E342C312C30
+ 2E342C312E342C306C31302D313063302E342D302E342C302E342D312C302D31
+ 2E34732D312D302E342D312E342C306C2D31302C313020202623393B2623393B
+ 2623393B43392E392C32302E372C392E392C32312E332C31302E332C32312E37
+ 7A222F3E0D0A0909093C7061746820636C6173733D22426C61636B2220643D22
+ 4D31352E342C31392E3563302E352C312E312C302E332C322E352D302E362C33
+ 2E346C2D342E322C342E32632D312E322C312E322D332E312C312E322D342E32
+ 2C304C352C32352E37632D312E322D312E322D312E322D332E312C302D342E32
+ 20202623393B2623393B2623393B6C342E322D342E3263302E392D302E392C32
+ 2E332D312E312C332E342D302E366C312E352D312E35632D312E392D312E332D
+ 342E362D312E312D362E332C302E364C332E362C3230632D322C322D322C352E
+ 312C302C372E314C352C32382E3563322C322C352E312C322C372E312C306C34
+ 2E322D342E3220202623393B2623393B2623393B63312E372D312E372C312E39
+ 2D342E332C302E362D362E334C31352E342C31392E357A222F3E0D0A0909093C
+ 7061746820636C6173733D22426C61636B2220643D224D32382E352C342E396C
+ 2D312E342D312E34632D322D322D352E312D322D372E312C306C2D342E322C34
+ 2E32632D312E372C312E372D312E392C342E332D302E362C362E336C312E352D
+ 312E35632D302E352D312E312D302E332D322E352C302E362D332E3420202623
+ 393B2623393B2623393B6C342E322D342E3263312E322D312E322C332E312D31
+ 2E322C342E322C306C312E342C312E3463312E322C312E322C312E322C332E31
+ 2C302C342E326C2D342E322C342E32632D302E392C302E392D322E332C312E31
+ 2D332E342C302E364C31382C31362E3820202623393B2623393B2623393B6331
+ 2E392C312E332C342E362C312E312C362E332D302E366C342E322D342E324333
+ 302E352C31302C33302E352C362E382C32382E352C342E397A222F3E0D0A0909
+ 3C2F673E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E477265656E7B66696C6C3A23303339
+ 4332333B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A
+ 234646423131353B7D262331333B262331303B2623393B2E426C61636B7B6669
+ 6C6C3A233732373237323B7D262331333B262331303B2623393B2E5768697465
+ 7B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E5265
+ 647B66696C6C3A234431314331433B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E37353B7D3C2F7374796C653E0D0A3C67206964
+ 3D22546172676574223E0D0A09093C7061746820636C6173733D22426C61636B
+ 2220643D224D31362C3130632D332E332C302D362C322E372D362C3673322E37
+ 2C362C362C3673362D322E372C362D365331392E332C31302C31362C31307A20
+ 4D31362C3138632D312E312C302D322D302E392D322D3263302D312E312C302E
+ 392D322C322D3220202623393B2623393B73322C302E392C322C324331382C31
+ 372E312C31372E312C31382C31362C31387A222F3E0D0A09093C706174682063
+ 6C6173733D22426C61636B2220643D224D31362C3243382E332C322C322C382E
+ 332C322C313673362E332C31342C31342C31347331342D362E332C31342D3134
+ 5332332E372C322C31362C327A204D31362C3236632D352E352C302D31302D34
+ 2E352D31302D313020202623393B2623393B63302D352E352C342E352D31302C
+ 31302D31307331302C342E352C31302C31304332362C32312E352C32312E352C
+ 32362C31362C32367A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D31362C313256366C31362C31304C31362C32
+ 36762D3643302C32302C302C32382C302C323853302C31322C31362C31327A22
+ 2F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D33302C3138762D346C2D342E342D302E3763
+ 2D302E322D302E382D302E352D312E352D302E392D322E316C322E362D332E36
+ 6C2D322E382D322E386C2D332E362C322E36632D302E372D302E342D312E342D
+ 302E372D322E312D302E394C31382C32682D3420202623393B6C2D302E372C34
+ 2E34632D302E382C302E322D312E352C302E352D322E312C302E394C372E352C
+ 342E374C342E372C372E356C322E362C332E36632D302E342C302E372D302E37
+ 2C312E342D302E392C322E314C322C313476346C342E342C302E3763302E322C
+ 302E382C302E352C312E352C302E392C322E3120202623393B6C2D322E362C33
+ 2E366C322E382C322E386C332E362D322E3663302E372C302E342C312E342C30
+ 2E372C322E312C302E394C31342C333068346C302E372D342E3463302E382D30
+ 2E322C312E352D302E352C322E312D302E396C332E362C322E366C322E382D32
+ 2E386C2D322E362D332E3620202623393B63302E342D302E372C302E372D312E
+ 342C302E392D322E314C33302C31387A204D31362C3230632D322E322C302D34
+ 2D312E382D342D3473312E382D342C342D3473342C312E382C342C345331382E
+ 322C32302C31362C32307A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E5265647B6669
+ 6C6C3A234431314331433B7D3C2F7374796C653E0D0A3C7061746820636C6173
+ 733D225265642220643D224D31362C3243382E332C322C322C382E332C322C31
+ 3673362E332C31342C31342C31347331342D362E332C31342D31345332332E37
+ 2C322C31362C327A204D32332C32306C2D332C336C2D342D346C2D342C346C2D
+ 332D336C342D346C2D342D346C332D336C342C3420202623393B6C342D346C33
+ 2C336C2D342C344C32332C32307A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C61636B7B66696C6C3A233732373237
+ 323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A23313137
+ 3744373B7D3C2F7374796C653E0D0A3C7061746820636C6173733D22426C6163
+ 6B2220643D224D382C3468313876366832563363302D302E352D302E352D312D
+ 312D31483743362E352C322C362C322E352C362C337637683256347A222F3E0D
+ 0A3C7061746820636C6173733D22426C61636B2220643D224D32362C32384838
+ 563138483676313163302C302E352C302E352C312C312C3168323063302E352C
+ 302C312D302E352C312D31563138682D325632387A222F3E0D0A3C7061746820
+ 636C6173733D22426C75652220643D224D32392C38682D31682D324838483648
+ 3543342E342C382C342C382E342C342C3976313063302C302E362C302E342C31
+ 2C312C31683168326831386832683163302E362C302C312D302E342C312D3156
+ 394333302C382E342C32392E362C382C32392C387A20202623393B204D31322E
+ 392C3132632D302E352D302E332D312D302E352D312E362D302E35632D302E37
+ 2C302D312E322C302E322D312E362C302E3743392E322C31322E362C392C3133
+ 2E332C392C313463302C302E372C302E322C312E332C302E362C312E3873302E
+ 392C302E372C312E362C302E3720202623393B63302E362C302C312E322D302E
+ 322C312E372D302E3576312E36632D302E352C302E332D312E322C302E342D32
+ 2C302E34632D312E312C302D322D302E332D322E362D31632D302E312D302E31
+ 2D302E322D302E322D302E322D302E33632D302E352D302E362D302E372D312E
+ 352D302E372D322E3420202623393B63302D312C302E322D312E382C302E372D
+ 322E3563302E312D302E322C302E322D302E332C302E342D302E3543392E312C
+ 31302E342C31302C31302C31312E312C313063302E372C302C312E332C302E31
+ 2C312E382C302E335631327A204D31392E322C31362E3820202623393B632D30
+ 2E322C302E332D302E342C302E352D302E362C302E37632D302E332C302E322D
+ 302E362C302E332D302E392C302E344331372E342C31372E392C31372C31382C
+ 31362E362C3138632D302E342C302D302E382C302D312E312D302E31632D302E
+ 342D302E312D302E372D302E322D302E392D302E33762D312E3720202623393B
+ 63302E332C302E332C302E362C302E352C302E392C302E3663302E332C302E31
+ 2C302E372C302E322C312C302E3263302E322C302C302E342C302C302E352D30
+ 2E3163302E322C302C302E332D302E312C302E342D302E3263302E312D302E31
+ 2C302E322D302E322C302E322D302E3220202623393B63302E312D302E312C30
+ 2E312D302E322C302E312D302E3363302D302E322C302D302E332D302E312D30
+ 2E34732D302E322D302E322D302E332D302E33732D302E332D302E322D302E35
+ 2D302E33732D302E342D302E322D302E362D302E33632D302E362D302E332D31
+ 2D302E362D312E322D302E3920202623393B732D302E342D302E382D302E342D
+ 312E3363302D302E342C302E312D302E372C302E322D3163302E312D302E332C
+ 302E342D302E352C302E362D302E3773302E362D302E332C302E392D302E3463
+ 302E332D302E312C302E372D302E312C312E312D302E3163302E342C302C302E
+ 372C302C312C302E3120202623393B63302E332C302C302E362C302E312C302E
+ 382C302E3276312E36632D302E312D302E312D302E332D302E322D302E342D30
+ 2E32632D302E312D302E312D302E332D302E312D302E342D302E32632D302E31
+ 2C302D302E332D302E312D302E342D302E31632D302E312C302D302E332C302D
+ 302E342C3020202623393B632D302E322C302D302E332C302D302E352C302E31
+ 632D302E312C302D302E332C302E312D302E342C302E32632D302E312C302E31
+ 2D302E322C302E312D302E322C302E32632D302E312C302E312D302E312C302E
+ 322D302E312C302E3363302C302E312C302C302E322C302E312C302E33202026
+ 23393B63302E312C302E312C302E322C302E322C302E332C302E3363302E312C
+ 302E312C302E332C302E322C302E342C302E3363302E322C302E312C302E342C
+ 302E322C302E362C302E3363302E332C302E312C302E352C302E332C302E382C
+ 302E3463302E322C302E312C302E342C302E332C302E362C302E352020262339
+ 3B63302E322C302E322C302E332C302E342C302E342C302E3663302E312C302E
+ 322C302E312C302E352C302E312C302E384331392E352C31362E312C31392E34
+ 2C31362E352C31392E322C31362E387A204D32362C31332E326C2D312E352C34
+ 2E37682D312E384C32302E332C31304832326C312E352C352E3520202623393B
+ 63302E312C302E332C302E312C302E352C302E312C302E38683063302D302E32
+ 2C302E312D302E352C302E322D302E386C312E352D352E3548323668314C3236
+ 2C31332E327A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E477265656E7B66696C6C3A233033394332
+ 333B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A233732
+ 373237323B7D3C2F7374796C653E0D0A3C7061746820636C6173733D22426C61
+ 636B2220643D224D382C3468313876366832563363302D302E352D302E352D31
+ 2D312D31483743362E352C322C362C322E352C362C337637683256347A222F3E
+ 0D0A3C7061746820636C6173733D22426C61636B2220643D224D32362C323848
+ 38762D392E32483656323963302C302E352C302E352C312C312C316832306330
+ 2E352C302C312D302E352C312D315631382E38682D325632387A222F3E0D0A3C
+ 7061746820636C6173733D22477265656E2220643D224D32392C38483543342E
+ 342C382C342C382E342C342C3976313063302C302E362C302E342C312C312C31
+ 68323463302E362C302C312D302E342C312D3156394333302C382E342C32392E
+ 362C382C32392C387A204D31312E362C31386C2D312E322D322E362020262339
+ 3B63302D302E312D302E312D302E332D302E312D302E356C302C3063302C302E
+ 312D302E312C302E332D302E322C302E364C382E382C313848362E396C322E33
+ 2D346C2D322E312D3468326C312C322E3463302E312C302E322C302E322C302E
+ 342C302E322C302E376C302C3020202623393B63302D302E322C302E312D302E
+ 342C302E322D302E376C312E312D322E3468312E386C2D322E322C346C322E32
+ 2C344831312E367A204D31392E382C3138682D342E33762D3868312E3676362E
+ 3568322E375631387A204D32352E382C31362E38632D302E322C302E332D302E
+ 342C302E352D302E362C302E3720202623393B732D302E362C302E332D302E39
+ 2C302E344332332E392C31382C32332E352C31382C32332E312C3138732D302E
+ 382C302D312E312D302E31632D302E342D302E312D302E372D302E322D302E39
+ 2D302E33762D312E3763302E332C302E332C302E362C302E352C312C302E3620
+ 202623393B63302E332C302E312C302E372C302E322C312C302E3263302E322C
+ 302C302E342C302C302E352D302E3163302E322C302C302E332D302E312C302E
+ 342D302E3273302E322D302E322C302E322D302E3263302D302E312C302E312D
+ 302E322C302E312D302E3363302D302E322C302D302E332D302E312D302E3420
+ 202623393B632D302E312D302E312D302E322D302E322D302E332D302E33732D
+ 302E332D302E322D302E352D302E33732D302E342D302E322D302E362D302E33
+ 632D302E362D302E332D312D302E362D312E332D302E39632D302E332D302E34
+ 2D302E342D302E382D302E342D312E3363302D302E342C302E312D302E372C30
+ 2E322D3120202623393B63302E322D302E332C302E342D302E352C302E362D30
+ 2E3763302E332D302E322C302E362D302E332C302E392D302E3473302E372D30
+ 2E312C312E312D302E3173302E372C302C312C302E3163302E332C302C302E36
+ 2C302E312C302E382C302E3276312E36632D302E312D302E312D302E332D302E
+ 322D302E342D302E3220202623393B732D302E332D302E312D302E342D302E32
+ 632D302E322C302D302E332D302E312D302E352D302E31632D302E312C302D30
+ 2E332C302D302E342C30632D302E322C302D302E342C302D302E352C302E3163
+ 2D302E322C302D302E332C302E312D302E342C302E3220202623393B632D302E
+ 312C302E312D302E322C302E322D302E322C302E32632D302E312C302E312D30
+ 2E312C302E322D302E312C302E3373302C302E322C302E312C302E3373302E32
+ 2C302E322C302E332C302E3363302E312C302E312C302E332C302E322C302E34
+ 2C302E3320202623393B63302E322C302E312C302E342C302E322C302E362C30
+ 2E3363302E332C302E312C302E352C302E332C302E382C302E3463302E322C30
+ 2E312C302E342C302E332C302E362C302E3573302E332C302E342C302E342C30
+ 2E3663302E312C302E322C302E312C302E352C302E312C302E3820202623393B
+ 4332362C31362E312C32352E392C31362E352C32352E382C31362E387A222F3E
+ 0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E477265656E7B66696C6C3A233033394332
+ 333B7D262331333B262331303B2623393B2E426C75657B66696C6C3A23313137
+ 3744373B7D3C2F7374796C653E0D0A3C7061746820636C6173733D22426C7565
+ 2220643D224D32392C31384837632D302E362C302D312C302E342D312C317631
+ 3263302C302E362C302E342C312C312C3168323263302E362C302C312D302E34
+ 2C312D315631394333302C31382E342C32392E362C31382C32392C31387A204D
+ 32382C3330483856323068323020202623393B5633307A222F3E0D0A3C706174
+ 6820636C6173733D22426C75652220643D224D31332E332C32386C2D302E362D
+ 312E3663302D302E312D302E312D302E322D302E312D302E3373302D302E322C
+ 302D302E32683063302C302E312C302C302E322C302C302E3363302C302E312C
+ 302C302E322D302E312C302E334C31312E382C323848313020202623393B6C31
+ 2E352D336C2D312E342D334831326C302E352C312E3663302C302E312C302E31
+ 2C302E332C302E312C302E36683063302D302E332C302E312D302E352C302E31
+ 2D302E366C302E362D312E364831356C2D312E342C336C312E352C334831332E
+ 337A222F3E0D0A3C7061746820636C6173733D22426C75652220643D224D3230
+ 2E322C3238762D332E3363302D302E332C302D302E362C302D316C302D302E33
+ 6830632D302E312C302E352D302E312C302E382D302E322C314C31392E332C32
+ 38682D312E346C2D302E382D332E3663302D302E312D302E312D302E342D302E
+ 322D31683020202623393B63302C302E392C302C312E352C302C312E38563238
+ 682D312E33762D3668322E336C302E372C332E3363302C302E312C302C302E32
+ 2C302E312C302E3463302C302E322C302C302E342C302E312C302E3568306330
+ 2D302E332C302E312D302E362C302E312D302E396C302E372D332E3268322E33
+ 76364832302E327A222F3E0D0A3C7061746820636C6173733D22426C75652220
+ 643D224D32322E372C3238762D3668312E3576342E364832365632384832322E
+ 377A222F3E0D0A3C7061746820636C6173733D22426C75652220643D224D3239
+ 2C31384837632D302E362C302D312C302E342D312C3176313263302C302E362C
+ 302E342C312C312C3168323263302E362C302C312D302E342C312D3156313943
+ 33302C31382E342C32392E362C31382C32392C31387A204D32382C3330483856
+ 323068323020202623393B5633307A222F3E0D0A3C7061746820636C6173733D
+ 22477265656E2220643D224D322C323456313468323076326832762D3363302D
+ 302E362D302E342D312D312D314831632D302E362C302D312C302E342D312C31
+ 76313263302C302E362C302E342C312C312C316833762D3248327A222F3E0D0A
+ 3C7061746820636C6173733D22477265656E2220643D224D31362C313063302C
+ 302C302E322D342C382D3476326C382D346C2D382D3476324331362E322C322C
+ 31362C31302C31362C31307A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C61636B7B66696C6C3A233732373237
+ 323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A23313137
+ 3744373B7D262331333B262331303B2623393B2E7374307B6F7061636974793A
+ 302E353B7D3C2F7374796C653E0D0A3C7061746820636C6173733D22426C6163
+ 6B2220643D224D33302C31307631384836762D32762D32563130483476313448
+ 32563468323476366832563363302D302E362D302E342D312D312D3148314330
+ 2E342C322C302C322E342C302C3376323263302C302E362C302E342C312C312C
+ 316833763320202623393B63302C302E352C302E352C312C312C316832366330
+ 2E352C302C312D302E352C312D315631304833307A222F3E0D0A3C7061746820
+ 636C6173733D22426C75652220643D224D33322C3763302D302E362D302E342D
+ 312D312D31483543342E342C362C342C362E342C342C37763276317632683238
+ 56377A222F3E0D0A3C6720636C6173733D22737430223E0D0A09093C72656374
+ 20783D22382220793D2231362220636C6173733D22426C61636B222077696474
+ 683D22313022206865696768743D2232222F3E0D0A09093C7061746820636C61
+ 73733D22426C61636B2220643D224D32302C313476386838762D384832307A20
+ 4D32362C3230682D34762D3468345632307A222F3E0D0A093C2F673E0D0A3C2F
+ 7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E5265647B6669
+ 6C6C3A234431314331433B7D3C2F7374796C653E0D0A3C706F6C79676F6E2063
+ 6C6173733D225265642220706F696E74733D2232362C342031302C323020362C
+ 313620322C323020362C32342031302C32382031342C32342033302C3820222F
+ 3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D2247
+ 726F75705F53656C656374696F6E2220786D6C6E733D22687474703A2F2F7777
+ 772E77332E6F72672F323030302F7376672220786D6C6E733A786C696E6B3D22
+ 687474703A2F2F7777772E77332E6F72672F313939392F786C696E6B2220783D
+ 223070782220793D22307078222076696577426F783D22302030203332203332
+ 22207374796C653D22656E61626C652D6261636B67726F756E643A6E65772030
+ 20302033322033323B2220786D6C3A73706163653D227072657365727665223E
+ 262331333B262331303B3C7374796C6520747970653D22746578742F63737322
+ 3E2E426C75657B66696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C
+ 7061746820636C6173733D22426C75652220643D224D322C313868313276386C
+ 31362D31314C31342C34763848325631387A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E59656C6C6F777B66696C6C3A2346464231
+ 31353B7D262331333B262331303B2623393B2E5265647B66696C6C3A23443131
+ 4331433B7D262331333B262331303B2623393B2E426C75657B66696C6C3A2331
+ 31373744373B7D262331333B262331303B2623393B2E477265656E7B66696C6C
+ 3A233033394332333B7D262331333B262331303B2623393B2E426C61636B7B66
+ 696C6C3A233732373237323B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B646973706C61793A6E6F6E653B7D262331333B262331303B2623393B2E
+ 7374327B646973706C61793A696E6C696E653B66696C6C3A233033394332333B
+ 7D262331333B262331303B2623393B2E7374337B646973706C61793A696E6C69
+ 6E653B66696C6C3A234431314331433B7D262331333B262331303B2623393B2E
+ 7374347B646973706C61793A696E6C696E653B66696C6C3A233732373237323B
+ 7D3C2F7374796C653E0D0A3C672069643D2248696768496D706F7274616E6365
+ 223E0D0A09093C7061746820636C6173733D225265642220643D224D31362C32
+ 43382E332C322C322C382E332C322C313673362E332C31342C31342C31347331
+ 342D362E332C31342D31345332332E372C322C31362C327A204D31362C323463
+ 2D312E312C302D322D302E392D322D3273302E392D322C322D3273322C302E39
+ 2C322C3220202623393B2623393B5331372E312C32342C31362C32347A204D31
+ 382C3138682D34563868345631387A222F3E0D0A093C2F673E0D0A3C2F737667
+ 3E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C61636B7B66696C6C3A233732373237
+ 323B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A2346
+ 46423131353B7D262331333B262331303B2623393B2E426C75657B66696C6C3A
+ 233131373744373B7D262331333B262331303B2623393B2E5265647B66696C6C
+ 3A234431314331433B7D262331333B262331303B2623393B2E57686974657B66
+ 696C6C3A234646464646463B7D262331333B262331303B2623393B2E47726565
+ 6E7B66696C6C3A233033394332333B7D262331333B262331303B2623393B2E73
+ 74307B66696C6C3A233732373237323B7D262331333B262331303B2623393B2E
+ 7374317B6F7061636974793A302E353B7D262331333B262331303B2623393B2E
+ 7374327B6F7061636974793A302E37353B7D3C2F7374796C653E0D0A3C672069
+ 643D2250726F64756374517569636B53686970706D656E7473223E0D0A09093C
+ 7061746820636C6173733D22426C61636B2220643D224D332C31384830763134
+ 683363302E362C302C312D302E342C312D3156313943342C31382E342C332E36
+ 2C31382C332C31387A222F3E0D0A09093C7061746820636C6173733D22426C75
+ 652220643D224D31322C36563363302D302E352C302E352D312C312D31683136
+ 63302E352C302C312C302E352C312C3176334831327A204D31342C313463312E
+ 372C302C362E312C312C392E362C312E3863312E342C302E332C322E342C312E
+ 362C322E342C3320202623393B2623393B63302C302E322C302C302E352D302E
+ 312C302E374332362E352C31392E332C33302C31382C33302C31385638483132
+ 76362E344331322E362C31342E322C31332E332C31342C31342C31347A222F3E
+ 0D0A09093C7061746820636C6173733D2259656C6C6F772220643D224D362C32
+ 3063322C302C342D322C342D3273322D322C342D3263312E362C302C372C312E
+ 332C392E312C312E3863302E352C302E312C302E392C302E362C302E392C312E
+ 31763063302C302E362D302E352C312E312D312E312C312E3120202623393B26
+ 23393B63302C302D322E392C302D342E392C3063302C322C342C322C362C3273
+ 352E312D312E372C362E342D3263302E342D302E312C312E322C302C312E352C
+ 302E356C302C3063302E332C302E362C302E312C312E322D302E352C312E3543
+ 32392E342C32332E322C32352C32362C32302C323620202623393B2623393B63
+ 2D342C302D362D322D382D32732D362C342D362C3453362C32332C362C32307A
+ 222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224E
+ 6578742220786D6C6E733D22687474703A2F2F7777772E77332E6F72672F3230
+ 30302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F7777772E
+ 77332E6F72672F313939392F786C696E6B2220783D223070782220793D223070
+ 78222076696577426F783D2230203020333220333222207374796C653D22656E
+ 61626C652D6261636B67726F756E643A6E6577203020302033322033323B2220
+ 786D6C3A73706163653D227072657365727665223E262331333B262331303B3C
+ 7374796C6520747970653D22746578742F637373223E2E426C75657B66696C6C
+ 3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C6173733D
+ 22426C75652220643D224D382E392C342E3143382E342C332E382C382C342E31
+ 2C382C342E367632302E3763302C302E362C302E342C302E382C302E392C302E
+ 356C31362E382D31302E3363302E352D302E332C302E352D302E382C302D312E
+ 314C382E392C342E317A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D2250
+ 7265762220786D6C6E733D22687474703A2F2F7777772E77332E6F72672F3230
+ 30302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F7777772E
+ 77332E6F72672F313939392F786C696E6B2220783D223070782220793D223070
+ 78222076696577426F783D2230203020333220333222207374796C653D22656E
+ 61626C652D6261636B67726F756E643A6E6577203020302033322033323B2220
+ 786D6C3A73706163653D227072657365727665223E262331333B262331303B3C
+ 7374796C6520747970653D22746578742F637373223E2E426C75657B66696C6C
+ 3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C6173733D
+ 22426C75652220643D224D32332E312C342E314332332E362C332E382C32342C
+ 342E312C32342C342E367632302E3763302C302E362D302E342C302E382D302E
+ 392C302E354C362E342C31352E35632D302E352D302E332D302E352D302E382C
+ 302D312E314C32332E312C342E317A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E57686974657B66696C6C3A234646464646
+ 463B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A233732
+ 373237323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A23
+ 3131373744373B7D262331333B262331303B2623393B2E7374307B6F70616369
+ 74793A302E353B7D3C2F7374796C653E0D0A3C672069643D224C617965725F32
+ 223E0D0A09093C672069643D2253617665223E0D0A0909093C706F6C79676F6E
+ 20636C6173733D22426C75652220706F696E74733D2233302C3220322C322032
+ 2C333020322C333020362C333020362C32302032362C32302032362C33302033
+ 302C3330202623393B2623393B222F3E0D0A0909093C7265637420783D223622
+ 20793D22322220636C6173733D225768697465222077696474683D2232302220
+ 6865696768743D223134222F3E0D0A0909093C7061746820636C6173733D2242
+ 6C61636B2220643D224D362C323076313068323056323048367A204D32342C32
+ 38682D34762D3668345632387A222F3E0D0A0909093C6720636C6173733D2273
+ 7430223E0D0A090909093C7265637420783D22382220793D22342220636C6173
+ 733D22426C61636B222077696474683D22313622206865696768743D2232222F
+ 3E0D0A090909093C7265637420783D22382220793D22382220636C6173733D22
+ 426C61636B222077696474683D22313222206865696768743D2232222F3E0D0A
+ 0909093C2F673E0D0A09093C2F673E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ FileName = 'DevAV\Actions\Save.svg'
+ Keywords = 'Actions;Save'
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E477265656E7B66696C6C3A233033394332
+ 333B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A2346
+ 46423131353B7D262331333B262331303B2623393B2E7374307B6F7061636974
+ 793A302E353B7D3C2F7374796C653E0D0A3C6720636C6173733D22737430223E
+ 0D0A09093C7061746820636C6173733D2259656C6C6F772220643D224D322E32
+ 2C32352E326C352E352D313043382C31342E352C382E372C31342C392E352C31
+ 34483230762D34682D38563763302D302E362D302E342D312D312D3148334332
+ 2E342C362C322C362E352C322C3776313820202623393B2623393B63302C302E
+ 322C302C302E332C302E312C302E3443322E312C32352E342C322E322C32352E
+ 332C322E322C32352E327A222F3E0D0A093C2F673E0D0A3C7061746820636C61
+ 73733D2259656C6C6F772220643D224D32392E332C313648392E364C342C3236
+ 6831392E3863302E352C302C312E312D302E322C312E332D302E366C342E392D
+ 382E394333302E312C31362E322C32392E382C31362C32392E332C31367A222F
+ 3E0D0A3C706F6C79676F6E20636C6173733D22477265656E2220706F696E7473
+ 3D2232342C322031382C382032322C382032322C31342032362C31342032362C
+ 382033302C3820222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D31302E342C31342E35632D302E352C302E33
+ 2D302E352C302E382C302C312E316C31362E382C31302E3363302E352C302E33
+ 2C302E392C302E312C302E392D302E3556342E3663302D302E362D302E342D30
+ 2E382D302E392D302E354C31302E342C31342E357A20202623393B204D342C32
+ 35563563302D302E362C302E342D312C312D31683263302E362C302C312C302E
+ 342C312C3176323063302C302E352D302E342C312D312C31483543342E342C32
+ 362C342C32352E352C342C32357A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 6173742220786D6C6E733D22687474703A2F2F7777772E77332E6F72672F3230
+ 30302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F7777772E
+ 77332E6F72672F313939392F786C696E6B2220783D223070782220793D223070
+ 78222076696577426F783D2230203020333220333222207374796C653D22656E
+ 61626C652D6261636B67726F756E643A6E6577203020302033322033323B2220
+ 786D6C3A73706163653D227072657365727665223E262331333B262331303B3C
+ 7374796C6520747970653D22746578742F637373223E2E426C75657B66696C6C
+ 3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C6173733D
+ 22426C75652220643D224D32312E362C31342E3563302E352C302E332C302E35
+ 2C302E382C302C312E314C342E392C32352E3943342E342C32362E322C342C32
+ 352E392C342C32352E3456342E3663302D302E362C302E342D302E382C302E39
+ 2D302E354C32312E362C31342E357A20202623393B204D32382C323556356330
+ 2D302E362D302E352D312D312D31682D32632D302E352C302D312C302E342D31
+ 2C3176323063302C302E352C302E352C312C312C3168324332372E352C32362C
+ 32382C32352E352C32382C32357A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D32352C32364837632D302E362C302D312D30
+ 2E352D312D31563763302D302E362C302E342D312C312D3168313863302E352C
+ 302C312C302E342C312C317631384332362C32352E352C32352E352C32362C32
+ 352C32367A222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F637373223E2E426C75657B66
+ 696C6C3A233131373744373B7D3C2F7374796C653E0D0A3C7061746820636C61
+ 73733D22426C75652220643D224D31332C32364837632D302E362C302D312D30
+ 2E352D312D31563763302D302E362C302E342D312C312D31683663302E362C30
+ 2C312C302E342C312C317631384331342C32352E352C31332E362C32362C3133
+ 2C32367A222F3E0D0A3C7061746820636C6173733D22426C75652220643D224D
+ 32352C3236682D36632D302E352C302D312D302E352D312D31563763302D302E
+ 362C302E352D312C312D31683663302E352C302C312C302E342C312C31763138
+ 4332362C32352E352C32352E352C32362C32352C32367A222F3E0D0A3C2F7376
+ 673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E5265647B66696C6C3A2344
+ 31314331433B7D262331333B262331303B2623393B2E477265656E7B66696C6C
+ 3A233033394332333B7D262331333B262331303B2623393B2E426C61636B7B66
+ 696C6C3A233732373237323B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374327B646973706C61793A6E6F6E653B7D262331333B262331303B2623393B
+ 2E7374337B646973706C61793A696E6C696E653B66696C6C3A23464642313135
+ 3B7D262331333B262331303B2623393B2E7374347B646973706C61793A696E6C
+ 696E653B7D262331333B262331303B2623393B2E7374357B646973706C61793A
+ 696E6C696E653B6F7061636974793A302E37353B7D262331333B262331303B26
+ 23393B2E7374367B646973706C61793A696E6C696E653B6F7061636974793A30
+ 2E353B7D262331333B262331303B2623393B2E7374377B646973706C61793A69
+ 6E6C696E653B66696C6C3A233033394332333B7D262331333B262331303B2623
+ 393B2E7374387B646973706C61793A696E6C696E653B66696C6C3A2344313143
+ 31433B7D262331333B262331303B2623393B2E7374397B646973706C61793A69
+ 6E6C696E653B66696C6C3A233131373744373B7D262331333B262331303B2623
+ 393B2E737431307B646973706C61793A696E6C696E653B66696C6C3A23464646
+ 4646463B7D3C2F7374796C653E0D0A3C672069643D22437573746F6D65725F31
+ 5F223E0D0A09093C7061746820636C6173733D22426C75652220643D224D3130
+ 2C392E39632D302E312C302E352C302E322C302E392C302E342C312E34732D30
+ 2E312C312E372C302E392C312E3663302C302C302C302E312C302C302E326330
+ 2E362C322E332C322C342E392C342E372C342E3973342E322D322E362C342E37
+ 2D342E3920202623393B2623393B56313363312C302E312C302E362D312E312C
+ 302E392D312E3663302E322D302E352C302E342D302E392C302E332D312E3463
+ 2D302E312D302E342D302E342D302E342D302E352D302E334332332E322C342E
+ 382C32302E332C352C32302E332C355332302C322C31342E382C322020262339
+ 3B2623393B4331302C322C392E342C362C31302E352C392E364331302E342C39
+ 2E362C31302E312C392E372C31302C392E397A204D32302C3138632D302E382C
+ 312E352D322E312C342D342C34732D332E322D322E352D342D34632D322E332C
+ 332E352D382C312D382C382E35563330683234762D332E3520202623393B2623
+ 393B4332382C31392E312C32322E332C32312E342C32302C31387A222F3E0D0A
+ 093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E5265647B66696C6C3A2344
+ 31314331433B7D262331333B262331303B2623393B2E477265656E7B66696C6C
+ 3A233033394332333B7D262331333B262331303B2623393B2E426C61636B7B66
+ 696C6C3A233732373237323B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374327B646973706C61793A6E6F6E653B7D262331333B262331303B2623393B
+ 2E7374337B646973706C61793A696E6C696E653B66696C6C3A23464642313135
+ 3B7D262331333B262331303B2623393B2E7374347B646973706C61793A696E6C
+ 696E653B7D262331333B262331303B2623393B2E7374357B646973706C61793A
+ 696E6C696E653B6F7061636974793A302E37353B7D262331333B262331303B26
+ 23393B2E7374367B646973706C61793A696E6C696E653B6F7061636974793A30
+ 2E353B7D262331333B262331303B2623393B2E7374377B646973706C61793A69
+ 6E6C696E653B66696C6C3A233033394332333B7D262331333B262331303B2623
+ 393B2E7374387B646973706C61793A696E6C696E653B66696C6C3A2344313143
+ 31433B7D262331333B262331303B2623393B2E7374397B646973706C61793A69
+ 6E6C696E653B66696C6C3A233131373744373B7D262331333B262331303B2623
+ 393B2E737431307B646973706C61793A696E6C696E653B66696C6C3A23464646
+ 4646463B7D3C2F7374796C653E0D0A3C672069643D2241646472657373223E0D
+ 0A09093C706F6C79676F6E20636C6173733D22426C75652220706F696E74733D
+ 22382C323820382C313820322C31382031362C342033302C31382032342C3138
+ 2032342C32382031382C32382031382C31382031342C31382031342C32382026
+ 23393B222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C75657B66696C6C3A23313137374437
+ 3B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A234646
+ 423131353B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A
+ 233732373237323B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E7374307B
+ 6F7061636974793A302E37353B7D262331333B262331303B2623393B2E737431
+ 7B6F7061636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D2249
+ 6E666F223E0D0A09093C7061746820636C6173733D22426C75652220643D224D
+ 31362C3243382E332C322C322C382E332C322C313673362E332C31342C31342C
+ 31347331342D362E332C31342D31345332332E372C322C31362C327A204D3136
+ 2C3663312E312C302C322C302E392C322C3263302C312E312D302E392C322D32
+ 2C3220202623393B2623393B732D322D302E392D322D324331342C362E392C31
+ 342E392C362C31362C367A204D32302C3234682D38762D326832762D38682D32
+ 762D326832683476313068325632347A222F3E0D0A093C2F673E0D0A3C2F7376
+ 673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E5265647B66696C6C3A234431314331433B
+ 7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A2337323732
+ 37323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A233131
+ 373744373B7D262331333B262331303B2623393B2E477265656E7B66696C6C3A
+ 233033394332333B7D262331333B262331303B2623393B2E59656C6C6F777B66
+ 696C6C3A234646423131353B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374327B6F7061636974793A302E32353B7D3C2F7374796C653E0D0A3C672069
+ 643D2250726976617465223E0D0A09093C7061746820636C6173733D2259656C
+ 6C6F772220643D224D32352C3132682D33762D3263302D332E332D322E372D36
+ 2D362D36732D362C322E372D362C3676324837632D302E362C302D312C302E35
+ 2D312C3176313463302C302E352C302E342C312C312C3168313863302E362C30
+ 2C312D302E352C312D3156313320202623393B2623393B4332362C31322E352C
+ 32352E362C31322C32352C31327A204D31382C3234682D346C312E342D342E31
+ 632D302E382D302E332D312E342D312D312E342D312E3963302D312E312C302E
+ 392D322C322D3273322C302E392C322C3263302C302E392D302E362C312E362D
+ 312E342C312E394C31382C32347A204D31322C313220202623393B2623393B76
+ 2D3263302D322E322C312E382D342C342D3473342C312E382C342C3476324831
+ 327A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E5265647B66696C6C3A234431314331433B
+ 7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A2337323732
+ 37323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A233131
+ 373744373B7D262331333B262331303B2623393B2E477265656E7B66696C6C3A
+ 233033394332333B7D262331333B262331303B2623393B2E59656C6C6F777B66
+ 696C6C3A234646423131353B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374327B6F7061636974793A302E32353B7D3C2F7374796C653E0D0A3C672069
+ 643D22506167655365747570223E0D0A09093C7061746820636C6173733D2242
+ 6C61636B2220643D224D31392E322C323648385636683130763563302C302E36
+ 2C302E342C312C312C31683576392E326C322C325631316C2D372D3748374336
+ 2E342C342C362C342E342C362C3576323263302C302E362C302E342C312C312C
+ 316831342E324C31392E322C32367A222F3E0D0A09093C7061746820636C6173
+ 733D22426C75652220643D224D32372E362C32372E366C2D362E322D362E3263
+ 302E342D302E372C302E362D312E352C302E362D322E3463302D322E382D322E
+ 322D352D352D35632D302E382C302D312E352C302E322D322E312C302E356C32
+ 2E372C322E3720202623393B2623393B63302E362C302E362C302E362C312E37
+ 2C302C322E34732D312E372C302E362D322E342C306C2D322E372D322E374331
+ 322E322C31372E352C31322C31382E322C31322C313963302C322E382C322E32
+ 2C352C352C3563302E392C302C312E372D302E322C322E342D302E366C362E32
+ 2C362E3220202623393B2623393B63302E362C302E362C312E342C302E362C32
+ 2C306C302C304332382E312C32392C32382E312C32382E312C32372E362C3237
+ 2E367A222F3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E5265647B66696C6C3A234431314331433B
+ 7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A2337323732
+ 37323B7D262331333B262331303B2623393B2E426C75657B66696C6C3A233131
+ 373744373B7D262331333B262331303B2623393B2E477265656E7B66696C6C3A
+ 233033394332333B7D262331333B262331303B2623393B2E59656C6C6F777B66
+ 696C6C3A234646423131353B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E353B7D262331333B262331303B2623393B2E73
+ 74317B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374327B6F7061636974793A302E32353B7D3C2F7374796C653E0D0A3C672069
+ 643D2252656D696E6465727357696E646F77223E0D0A09093C7061746820636C
+ 6173733D2259656C6C6F772220643D224D32322C3138762D3663302D322E362D
+ 312E372D342E382D342D352E3763302D302E312C302D302E322C302D302E3363
+ 302D312E312D302E392D322D322D32732D322C302E392D322C3263302C302E31
+ 2C302C302E322C302C302E3320202623393B2623393B632D322E332C302E382D
+ 342C332D342C352E3776366C2D342C347632683230762D324C32322C31387A20
+ 4D31362C323863312E312C302C322D302E392C322D32682D344331342C32372E
+ 312C31342E392C32382C31362C32387A222F3E0D0A093C2F673E0D0A3C2F7376
+ 673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E426C61636B7B66696C6C3A233732373237
+ 323B7D262331333B262331303B2623393B2E59656C6C6F777B66696C6C3A2346
+ 46423131353B7D262331333B262331303B2623393B2E426C75657B66696C6C3A
+ 233131373744373B7D262331333B262331303B2623393B2E477265656E7B6669
+ 6C6C3A233033394332333B7D262331333B262331303B2623393B2E5265647B66
+ 696C6C3A234431314331433B7D262331333B262331303B2623393B2E57686974
+ 657B66696C6C3A234646464646463B7D262331333B262331303B2623393B2E73
+ 74307B6F7061636974793A302E37353B7D262331333B262331303B2623393B2E
+ 7374317B6F7061636974793A302E353B7D262331333B262331303B2623393B2E
+ 7374327B6F7061636974793A302E32353B7D3C2F7374796C653E0D0A3C672069
+ 643D2241646447726F7570466F6F7465725F315F223E0D0A09093C7265637420
+ 783D22342220793D2231382220636C6173733D22426C7565222077696474683D
+ 22313422206865696768743D2236222F3E0D0A09093C6720636C6173733D2273
+ 7430223E0D0A0909093C7061746820636C6173733D22426C61636B2220643D22
+ 4D31382C384834563668313456387A204D31382C313048347632683134563130
+ 7A204D31382C3134483476326831345631347A222F3E0D0A09093C2F673E0D0A
+ 09093C7061746820636C6173733D22426C61636B2220643D224D32322C323668
+ 2D32682D32483256346831387631346832762D34563363302D302E352D302E35
+ 2D312D312D31483143302E352C322C302C322E352C302C3376323463302C302E
+ 352C302E352C312C312C3168323063302E352C302C312D302E352C312D315632
+ 3620202623393B2623393B7A222F3E0D0A09093C706F6C79676F6E20636C6173
+ 733D22477265656E2220706F696E74733D2233322C32302032382C3230203238
+ 2C31362032342C31362032342C32302032302C32302032302C32342032342C32
+ 342032342C32382032382C32382032382C32342033322C3234202623393B222F
+ 3E0D0A093C2F673E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D225F
+ 7833335F5F53796D626F6C735F436972636C65642220783D223070782220793D
+ 22307078222076696577426F783D223020302031362031362220786D6C6E733D
+ 22687474703A2F2F7777772E77332E6F72672F323030302F737667223E0D0A09
+ 3C7374796C6520747970653D22746578742F637373223E2E59656C6C6F777B66
+ 696C6C3A234646423131353B7D3C2F7374796C653E0D0A093C7061746820636C
+ 6173733D2259656C6C6F772220643D224D20382E30313220312E303132204320
+ 342E31313220312E30313220312E30313220342E31313220312E30313220382E
+ 303132204320312E3031322031312E39313220342E3131322031352E30313220
+ 382E3031322031352E30313220432031312E3931322031352E3031322031352E
+ 3031322031312E3931322031352E30313220382E30313220432031352E303132
+ 20342E3131322031312E39313220312E30313220382E30313220312E30313220
+ 5A204D20392E3031322031332E303132204C20372E3031322031332E30313220
+ 4C20372E3031322031312E303132204C20392E3031322031312E303132204C20
+ 392E3031322031332E303132205A204D20392E30313220392E303132204C2037
+ 2E30313220392E303132204C20372E30313220332E303132204C20392E303132
+ 20332E303132204C20392E30313220392E303132205A222F3E0D0A3C2F737667
+ 3E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D225F
+ 7833345F5F547261666669635F4C69676874732220786D6C6E733D2268747470
+ 3A2F2F7777772E77332E6F72672F323030302F7376672220786D6C6E733A786C
+ 696E6B3D22687474703A2F2F7777772E77332E6F72672F313939392F786C696E
+ 6B2220783D223070782220793D22307078222076696577426F783D2230203020
+ 31362031362220786D6C3A73706163653D227072657365727665223E26233133
+ 3B262331303B3C7374796C6520747970653D22746578742F637373223E2E4772
+ 65656E7B66696C6C3A233033394332333B7D3C2F7374796C653E0D0A3C636972
+ 636C6520636C6173733D22477265656E222063783D2238222063793D22382220
+ 723D2237222F3E0D0A3C2F7376673E0D0A}
+ end
+ item
+ ImageClass = 'TdxSmartImage'
+ Image.Data = {
+ 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554
+ 462D38223F3E0D0A3C7376672076657273696F6E3D22312E31222069643D224C
+ 617965725F312220786D6C6E733D22687474703A2F2F7777772E77332E6F7267
+ 2F323030302F7376672220786D6C6E733A786C696E6B3D22687474703A2F2F77
+ 77772E77332E6F72672F313939392F786C696E6B2220783D223070782220793D
+ 22307078222076696577426F783D2230203020333220333222207374796C653D
+ 22656E61626C652D6261636B67726F756E643A6E657720302030203332203332
+ 3B2220786D6C3A73706163653D227072657365727665223E262331333B262331
+ 303B3C7374796C6520747970653D22746578742F6373732220786D6C3A737061
+ 63653D227072657365727665223E2E57686974657B66696C6C3A234646464646
+ 463B7D262331333B262331303B2623393B2E426C61636B7B66696C6C3A233732
+ 373237323B7D262331333B262331303B2623393B2E477265656E7B66696C6C3A
+ 233033394332333B7D262331333B262331303B2623393B2E426C75657B66696C
+ 6C3A233131373744373B7D262331333B262331303B2623393B2E7374307B6F70
+ 61636974793A302E353B7D3C2F7374796C653E0D0A3C672069643D224C617965
+ 725F32223E0D0A09093C672069643D22536176655F6173223E0D0A0909093C70
+ 6F6C79676F6E20636C6173733D22426C75652220706F696E74733D2233302C32
+ 20322C3220322C333020322C333020362C333020362C32302032362C32302032
+ 362C33302033302C3330202623393B2623393B222F3E0D0A0909093C72656374
+ 20783D22362220793D22322220636C6173733D22576869746522207769647468
+ 3D22323022206865696768743D223134222F3E0D0A0909093C7061746820636C
+ 6173733D22426C61636B2220643D224D362C323076313068323056323048367A
+ 204D32342C3238682D34762D3668345632387A222F3E0D0A0909093C6720636C
+ 6173733D22737430223E0D0A090909093C7265637420783D22382220793D2234
+ 2220636C6173733D22426C61636B222077696474683D22382220686569676874
+ 3D2232222F3E0D0A090909093C7265637420783D22382220793D22382220636C
+ 6173733D22426C61636B222077696474683D223822206865696768743D223222
+ 2F3E0D0A0909093C2F673E0D0A0909093C7061746820636C6173733D22477265
+ 656E2220643D224D32352C3063332E392C302C372C332E312C372C37732D332E
+ 312C372D372C37632D332E392C302D372D332E312D372D375332312E312C302C
+ 32352C307A222F3E0D0A0909093C673E0D0A090909093C636972636C6520636C
+ 6173733D225768697465222063783D223231222063793D22372220723D223122
+ 2F3E0D0A090909093C636972636C6520636C6173733D22576869746522206378
+ 3D223235222063793D22372220723D2231222F3E0D0A090909093C636972636C
+ 6520636C6173733D225768697465222063783D223239222063793D2237222072
+ 3D2231222F3E0D0A0909093C2F673E0D0A09093C2F673E0D0A093C2F673E0D0A
+ 3C2F7376673E0D0A}
+ FileName = 'DevAV\Actions\SaveAs.svg'
+ Keywords = 'Actions;SaveAs'
+ end>
+ end
+ object ADOQueryLog: TADOQuery
+ Connection = ADOConnection1
+ CommandTimeout = 600
+ Parameters = <>
+ Left = 232
+ Top = 88
+ end
+ object DataSource1: TDataSource
+ DataSet = cds_loglist
+ Left = 328
+ Top = 160
+ end
+ object ADOConnection1: TADOConnection
+ LoginPrompt = False
+ Left = 368
+ Top = 80
+ end
+ object cxGridPopupMenu1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 832
+ Top = 48
+ end
+ object cds_loglist: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 608
+ Top = 320
+ end
+ object ADOQueryCmd: TADOQuery
+ Connection = ADOConnection1
+ Parameters = <>
+ Left = 256
+ Top = 144
+ end
+ object PM_1: TPopupMenu
+ Left = 748
+ Top = 324
+ object N2: TMenuItem
+ Caption = #20840#36873
+ OnClick = N2Click
+ end
+ object N3: TMenuItem
+ Caption = #20840#24323
+ OnClick = N3Click
+ end
+ object N1: TMenuItem
+ Caption = #22797#21046
+ OnClick = N1Click
+ end
+ end
+end
diff --git a/T03贸易布匹检验/U_SysLogList.pas b/T03贸易布匹检验/U_SysLogList.pas
new file mode 100644
index 0000000..2f1afbd
--- /dev/null
+++ b/T03贸易布匹检验/U_SysLogList.pas
@@ -0,0 +1,327 @@
+unit U_SysLogList;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
+ cxLookAndFeelPainters, cxStyles, cxCustomData,Vcl.Clipbrd,
+ cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, dxDateRanges,
+ dxScrollbarAnnotations, Data.DB, cxDBData, cxGridLevel, cxGridCustomTableView,
+ cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomView, cxGrid,
+ Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.ToolWin, cxContainer, dxCore,
+ cxDateUtils, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar,System.StrUtils ,
+ System.ImageList, Vcl.ImgList, cxImageList, Data.Win.ADODB, dxBarBuiltInMenu,
+ cxGridCustomPopupMenu, cxGridPopupMenu, Datasnap.DBClient, cxCheckBox,
+ Vcl.Menus;
+
+type
+ TfrmSysLogList = class(TForm)
+ Panel1: TPanel;
+ Label2: TLabel;
+ Label1: TLabel;
+ Label4: TLabel;
+ cxGrid1: TcxGrid;
+ tv1: TcxGridDBTableView;
+ tv1UOperator: TcxGridDBColumn;
+ tv1utime: TcxGridDBColumn;
+ tv1Utype: TcxGridDBColumn;
+ tv1UOperation: TcxGridDBColumn;
+ tv1UDetails: TcxGridDBColumn;
+ cxGridLevel1: TcxGridLevel;
+ begdate: TcxDateEdit;
+ enddate: TcxDateEdit;
+ edt_nr: TcxTextEdit;
+ cxImageList_bar: TcxImageList;
+ ADOQueryLog: TADOQuery;
+ DataSource1: TDataSource;
+ ADOConnection1: TADOConnection;
+ ToolBar1: TToolBar;
+ TQry: TToolButton;
+ Tclose: TToolButton;
+ tv1orderNo: TcxGridDBColumn;
+ tv1pieceNo: TcxGridDBColumn;
+ tv1Meter: TcxGridDBColumn;
+ tv1GrossWeight: TcxGridDBColumn;
+ tv1NetWeight: TcxGridDBColumn;
+ tv1C_name: TcxGridDBColumn;
+ tv1c_color: TcxGridDBColumn;
+ tv1FtyPCId: TcxGridDBColumn;
+ Label3: TLabel;
+ orderNo: TcxTextEdit;
+ cxGridPopupMenu1: TcxGridPopupMenu;
+ ToolButton1: TToolButton;
+ tv1batchNo: TcxGridDBColumn;
+ tv1CIID: TcxGridDBColumn;
+ tv1C_pattern: TcxGridDBColumn;
+ tv1C_colorNo: TcxGridDBColumn;
+ Tundo: TToolButton;
+ cds_loglist: TClientDataSet;
+ ADOQueryCmd: TADOQuery;
+ tv1ssel: TcxGridDBColumn;
+ PM_1: TPopupMenu;
+ N2: TMenuItem;
+ N3: TMenuItem;
+ N1: TMenuItem;
+ procedure TQryClick(Sender: TObject);
+ procedure TcloseClick(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure edt_nrPropertiesChange(Sender: TObject);
+ procedure TundoClick(Sender: TObject);
+ procedure N2Click(Sender: TObject);
+ procedure N3Click(Sender: TObject);
+ procedure N1Click(Sender: TObject);
+ private
+ procedure DoQuery();
+ procedure DoFilter();
+ function undoDel():Boolean;
+ public
+ FMainid:string;
+ FSubId:string;
+ fModel:string;
+ end;
+
+var
+ frmSysLogList: TfrmSysLogList;
+
+implementation
+uses
+ U_DataLink,U_globalVar,U_RTFun;
+{$R *.dfm}
+
+procedure TfrmSysLogList.FormCreate(Sender: TObject);
+begin
+ cxGrid1.Align:=alClient;
+ begDate.Date :=date-2;
+ endDate.Date :=date;
+ with ADOConnection1 do
+ begin
+ Connected:=false;
+ ConnectionString:=DConString;
+ Connected:=true;
+ end;
+end;
+
+procedure TfrmSysLogList.FormShow(Sender: TObject);
+begin
+ ReadCxGrid('װ־б' + 'Tv1', TV1, gDllFileCaption);
+ if FMainid<>'' then
+ TQry.Click;
+end;
+
+procedure TfrmSysLogList.N1Click(Sender: TObject);
+begin
+ Clipboard.SetTextBuf(PChar(Trim(cds_logList.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
+end;
+
+procedure TfrmSysLogList.N2Click(Sender: TObject);
+begin
+ SelOKNoFiler(Tv1, True); //ȫѡ
+end;
+
+procedure TfrmSysLogList.N3Click(Sender: TObject);
+begin
+ SelOKNoFiler(Tv1, false); //ȫѡ
+end;
+
+procedure TfrmSysLogList.TcloseClick(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TfrmSysLogList.ToolButton1Click(Sender: TObject);
+begin
+ WriteCxGrid(trim('װ־б') + 'Tv1', TV1, gDllFileCaption);
+end;
+
+procedure TfrmSysLogList.TQryClick(Sender: TObject);
+begin
+ DoQuery();
+end;
+
+procedure TfrmSysLogList.TundoClick(Sender: TObject);
+begin
+ try
+ begdate.SetFocus;
+ if not gIsCanDesign then
+ begin
+ application.MessageBox('ûвȨ!','ʾϢ',0) ;
+ exit;
+ end;
+
+ cds_logList.DisableControls;
+ if not cds_logList.Locate('ssel;Utype',vararrayOf([true,'ɾ']),[]) then
+ begin
+ application.MessageBox('ѡɾļ¼','ʾϢ',0) ;
+ exit;
+ end;
+ if undoDel() then
+ begin
+ tqry.Click;
+ end;
+ finally
+ cds_logList.EnableControls ;
+ end;
+end;
+
+procedure TfrmSysLogList.DoQuery();
+var
+ mbegdate,menddate:string;
+
+begin
+ mbegdate:=formatDatetime('yyyy-MM-dd',begDate.Date); //
+ menddate:=formatDatetime('yyyy-MM-dd',endDate.Date+1);
+ try
+ cds_logList.DisableControls;
+ with ADOQueryLog do
+ begin
+ close;
+ sql.clear;
+ filtered:=false;
+ sql.add('select B.*,A.utime,A.Utype,A.UOperation,A.UOperator,A.UDetails');
+ sql.add(' from Trade_Need_Up A');
+ sql.add(' inner join Trade_Cloth_Inspect B on A.udataId=B.ciid');
+
+ if FMainid<>'' then
+ begin
+ sql.Add('where B.mainId='''+Trim(FMainid)+''' ');
+ end
+ else
+ begin
+ sql.Add('where UTime>='+quotedStr(mbegdate));
+ sql.Add('and UTime<'+quotedStr(menddate));
+ end;
+ if FSubId<>'' then
+ sql.Add('and B.subId='''+Trim(FSubId)+''' ');
+
+ sql.add('union all');
+
+ sql.add('select B.*,A.utime,A.Utype,A.UOperation,A.UOperator,A.UDetails');
+ sql.add(' from Trade_Need_Up A');
+ sql.add(' inner join Trade_Cloth_Inspect_del B on A.udataId like ''%''+rtrim(B.ciid)+'',%''');
+
+ if FMainid<>'' then
+ begin
+ sql.Add('where B.mainId='''+Trim(FMainid)+''' ');
+ end
+ else
+ begin
+ sql.Add('where UTime>='+quotedStr(mbegdate));
+ sql.Add('and UTime<'+quotedStr(menddate));
+ end;
+
+ if FSubId<>'' then
+ sql.Add('and B.subId='''+Trim(FSubId)+''' ');
+ // sql.Add('order by UOperator,UTime');
+ Open;
+ end;
+ SCreateCDS(ADOQueryLog, cds_logList);
+ SInitCDSData(ADOQueryLog, cds_logList);
+ finally
+ cds_logList.EnableControls ;
+ end;
+end;
+
+procedure TfrmSysLogList.edt_nrPropertiesChange(Sender: TObject);
+begin
+ DoFilter();
+end;
+
+///////////////////////////////////////////////////////////
+ //
+///////////////////////////////////////////////////////////
+procedure TfrmSysLogList.DoFilter();
+var
+ filterStr:string;
+begin
+ if not ADOQueryLog.Active then exit;
+
+ filterStr:='';
+ //
+ if trim(orderNo.text)<>'' then
+ begin
+ filterStr:=' and orderNo like '+quotedStr('%'+trim(orderNo.text)+'%');
+ end;
+ if trim(edt_nr.text)<>'' then
+ begin
+ filterStr:=' and UDetails like '+quotedStr('%'+trim(edt_nr.text)+'%');
+ end;
+
+ try
+ cds_logList.DisableControls ;
+ if trim(filterStr)='' then
+ begin
+ ADOQueryLog.Filtered:=false;
+ exit;
+ end;
+ filterStr:=RightBStr(filterStr,length(filterStr)-4);
+ with ADOQueryLog do
+ begin
+ filtered:=false;
+ filter:=filterStr;
+ filtered:=true;
+ end;
+ cds_logList.EmptyDataSet;
+ SInitCDSData(ADOQueryLog, cds_logList);
+ finally
+ cds_logList.EnableControls;
+ end;
+
+end;
+
+//////////////////////////////////////////////////////////////////
+///
+function TfrmSysLogList.undoDel():Boolean;
+var
+ MCIIDS:string;
+begin
+ result:=false;
+ with cds_loglist do
+ begin
+ First;
+ while not Eof do
+ begin
+ if cds_loglist.FieldByName('SSel').AsBoolean = True then
+ begin
+ MCIIDS := MCIIDS + Trim(cds_loglist.fieldbyname('CIID').AsString) + ',';
+ end;
+ Next;
+ end;
+ end;
+ try
+ ADOQueryCmd.Connection.BeginTrans;
+
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('insert into Trade_Need_Up(UOperation,UType,UDataId) values('''',''ָɾ'',' + quotedstr(MCIIDS) + ') ');
+ ExecSQL;
+ end;
+ with ADOQueryCmd do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Trade_Insp_Del_undo ');
+ Sql.Add('@CIIDS=' + quotedstr(Trim(MCIIDS)));
+ Sql.Add(',@DCode=' + Quotedstr(DCode));
+ Sql.Add(',@DName=' + Quotedstr(DName));
+ Open;
+ end;
+ if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
+ end;
+
+
+ ADOQueryCmd.Connection.CommitTrans;
+ result:=true;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ application.MessageBox('ָɾ¼!','ʾϢ',0);
+ end;
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_TradeClothInspList.dfm b/T03贸易布匹检验/U_TradeClothInspList.dfm
new file mode 100644
index 0000000..bbfd46d
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothInspList.dfm
@@ -0,0 +1,1552 @@
+inherited frmTradeClothInspList: TfrmTradeClothInspList
+ Left = 160
+ Top = 87
+ Caption = #26816#39564#25253#21578
+ ClientHeight = 799
+ ClientWidth = 1921
+ Font.Height = -16
+ Position = poScreenCenter
+ ExplicitWidth = 1937
+ ExplicitHeight = 838
+ PixelsPerInch = 96
+ TextHeight = 21
+ object Panel6: TPanel [0]
+ Left = 0
+ Top = 156
+ Width = 1921
+ Height = 37
+ Align = alTop
+ AutoSize = True
+ BevelInner = bvLowered
+ BorderStyle = bsSingle
+ TabOrder = 2
+ ExplicitWidth = 1556
+ DesignSize = (
+ 1917
+ 33)
+ object Label31: TLabel
+ Left = 14
+ Top = 7
+ Width = 96
+ Height = 21
+ Alignment = taCenter
+ Anchors = [akLeft]
+ Caption = #27599#39029#35760#24405#26465#25968
+ Layout = tlCenter
+ ExplicitTop = 8
+ end
+ object LBCPAP: TLabel
+ Left = 478
+ Top = 6
+ Width = 100
+ Height = 20
+ Alignment = taCenter
+ Anchors = [akLeft]
+ AutoSize = False
+ Caption = #24403#21069#39029'/'#24635#39029#25968
+ Layout = tlCenter
+ ExplicitTop = 7
+ end
+ object BTLP: TButton
+ Left = 391
+ Top = 4
+ Width = 78
+ Height = 27
+ Anchors = [akLeft]
+ Caption = #19978#19968#39029
+ TabOrder = 0
+ OnClick = BTLPClick
+ end
+ object BTNP: TButton
+ Left = 585
+ Top = 3
+ Width = 78
+ Height = 28
+ Anchors = [akLeft]
+ Caption = #19979#19968#39029
+ TabOrder = 1
+ OnClick = BTNPClick
+ end
+ object TCBNOR: TcxComboBox
+ Tag = 2
+ Left = 122
+ Top = 2
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ '500'
+ '1000'
+ '5000'
+ '10000')
+ Properties.OnChange = TCBNORChange
+ TabOrder = 2
+ Text = '500'
+ Width = 94
+ end
+ end
+ object ToolBar1: TToolBar [1]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 1921
+ Height = 38
+ AutoSize = True
+ ButtonHeight = 38
+ ButtonWidth = 121
+ Caption = 'ToolBar1'
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 4
+ ExplicitWidth = 1556
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object btnJBQ: TToolButton
+ Left = 71
+ Top = 0
+ AutoSize = True
+ Caption = #25171#21360#21367#26631#31614
+ ImageIndex = 21
+ OnClick = btnJBQClick
+ end
+ object ToolButton3: TToolButton
+ Left = 190
+ Top = 0
+ AutoSize = True
+ Caption = #25171#21360#21253#26631#31614
+ ImageIndex = 21
+ OnClick = ToolButton3Click
+ end
+ object btnEdit: TToolButton
+ Left = 309
+ Top = 0
+ AutoSize = True
+ Caption = #32534#36753
+ ImageIndex = 3
+ OnClick = btnEditClick
+ end
+ object ToolButton2: TToolButton
+ Left = 380
+ Top = 0
+ AutoSize = True
+ Caption = #25209#37327#20462#25913
+ DropdownMenu = PopupMenu2
+ ImageIndex = 3
+ Style = tbsDropDown
+ Visible = False
+ end
+ object TBZF: TToolButton
+ Left = 500
+ Top = 0
+ AutoSize = True
+ Caption = #21024#38500
+ ImageIndex = 5
+ OnClick = TBZFClick
+ end
+ object Tout: TToolButton
+ Left = 571
+ Top = 0
+ AutoSize = True
+ Caption = #20837#24211
+ ImageIndex = 49
+ OnClick = ToolButton6Click
+ end
+ object Tunout: TToolButton
+ Left = 642
+ Top = 0
+ AutoSize = True
+ Caption = #25764#38144#20837#24211
+ ImageIndex = 11
+ OnClick = TunoutClick
+ end
+ object ToolButton4: TToolButton
+ Left = 745
+ Top = 0
+ AutoSize = True
+ Caption = #25171#21253
+ ImageIndex = 34
+ OnClick = ToolButton4Click
+ end
+ object btnJYBG: TToolButton
+ Left = 816
+ Top = 0
+ AutoSize = True
+ Caption = #26816#39564#25253#21578
+ ImageIndex = 21
+ OnClick = btnJYBGClick
+ end
+ object Tprintmd: TToolButton
+ Left = 919
+ Top = 0
+ AutoSize = True
+ Caption = #25171#21360#30721#21333
+ ImageIndex = 21
+ OnClick = TprintmdClick
+ end
+ object TBExport: TToolButton
+ Left = 1022
+ Top = 0
+ AutoSize = True
+ Caption = #23548#20986
+ ImageIndex = 20
+ OnClick = TBExportClick
+ end
+ object ToolButton5: TToolButton
+ Left = 1093
+ Top = 0
+ AutoSize = True
+ Caption = #26085#24535
+ ImageIndex = 9
+ OnClick = ToolButton5Click
+ end
+ object ToolButton1: TToolButton
+ Left = 1164
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton1Click
+ end
+ object TBClose: TToolButton
+ Left = 1251
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object MovePanel2: TMovePanel [2]
+ Left = 241
+ Top = 280
+ Width = 265
+ Height = 49
+ BevelInner = bvLowered
+ Caption = #27491#22312#26597#35810#25968#25454#65292#35831#31245#21518#12290#12290#12290
+ TabOrder = 5
+ Visible = False
+ end
+ object dxLayoutControl_query: TdxLayoutControl [3]
+ Left = 0
+ Top = 75
+ Width = 1921
+ Height = 81
+ Align = alTop
+ TabOrder = 3
+ AutoSize = True
+ LayoutLookAndFeel = DataLink_TradeInsp.dxLayoutSkinLookAndFeel1
+ ExplicitWidth = 1556
+ object OrderNo: TcxTextEdit
+ Tag = 2
+ Left = 88
+ Top = 6
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 0
+ OnKeyPress = OrderNoKeyPress
+ Width = 93
+ end
+ object conNO: TcxTextEdit
+ Tag = 2
+ Left = 246
+ Top = 6
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 1
+ OnKeyPress = conNOKeyPress
+ Width = 100
+ end
+ object CIID: TcxTextEdit
+ Tag = 2
+ Left = 615
+ Top = 36
+ Hint = '1'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 10
+ OnKeyPress = KHConNOKeyPress
+ Width = 85
+ end
+ object C_Name: TcxTextEdit
+ Tag = 2
+ Left = 259
+ Top = 36
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 8
+ OnKeyPress = conNOKeyPress
+ Width = 87
+ end
+ object C_Color: TcxTextEdit
+ Tag = 2
+ Left = 395
+ Top = 6
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 2
+ OnKeyPress = conNOKeyPress
+ Width = 150
+ end
+ object BCIOID: TcxTextEdit
+ Tag = 2
+ Left = 756
+ Top = 6
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 4
+ OnKeyPress = KHConNOKeyPress
+ Width = 85
+ end
+ object CIMachNo: TcxTextEdit
+ Tag = 1
+ Left = 781
+ Top = 36
+ Hint = '1'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 11
+ OnKeyPress = KHConNOKeyPress
+ Width = 67
+ end
+ object C_Pattern: TcxTextEdit
+ Tag = 2
+ Left = 395
+ Top = 36
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 9
+ OnKeyPress = KHConNOKeyPress
+ Width = 155
+ end
+ object C_Code: TcxTextEdit
+ Tag = 2
+ Left = 88
+ Top = 36
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 7
+ OnKeyPress = KHConNOKeyPress
+ Width = 90
+ end
+ object C_EColor: TcxTextEdit
+ Tag = 2
+ Left = 626
+ Top = 6
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 3
+ OnKeyPress = KHConNOKeyPress
+ Width = 65
+ end
+ object BatchNO: TcxTextEdit
+ Tag = 2
+ Left = 1017
+ Top = 6
+ Hint = '0'
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 6
+ OnKeyPress = KHConNOKeyPress
+ Width = 88
+ end
+ object grade: TcxComboBox
+ Tag = 1
+ Left = 897
+ Top = 36
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #27491#21697
+ #27425#21697)
+ Properties.OnChange = CIIOFlagChange
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 12
+ Width = 80
+ end
+ object CIIOFlag: TcxComboBox
+ Tag = 1
+ Left = 890
+ Top = 6
+ AutoSize = False
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #26410#20837#24211
+ #24050#20837#24211
+ #24050#20986#24211
+ '')
+ Properties.OnChange = CIIOFlagPropertiesChange
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 5
+ Height = 30
+ Width = 78
+ end
+ object custName: TcxTextEdit
+ Tag = 2
+ Left = 1026
+ Top = 36
+ Hint = '0'
+ AutoSize = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 13
+ OnKeyPress = KHConNOKeyPress
+ Height = 29
+ Width = 88
+ end
+ object dxLayoutControl_queryGroup_Root: TdxLayoutGroup
+ AlignHorz = ahLeft
+ AlignVert = avTop
+ Hidden = True
+ ItemIndex = 1
+ Padding.Top = -10
+ Padding.AssignedValues = [lpavTop]
+ ShowBorder = False
+ UseIndent = False
+ Index = -1
+ end
+ object dxLayoutGroup1: TdxLayoutGroup
+ Parent = dxLayoutControl_queryGroup_Root
+ CaptionOptions.Text = #32452'1'
+ Hidden = True
+ ItemIndex = 1
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutGroup2: TdxLayoutGroup
+ Parent = dxLayoutControl_queryGroup_Root
+ CaptionOptions.Text = #32452'2'
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ Hidden = True
+ ItemIndex = 5
+ LayoutDirection = ldHorizontal
+ Padding.AssignedValues = [lpavTop]
+ ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem2: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 165
+ CaptionOptions.Text = #35746#21333#21495
+ Control = OrderNo
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 93
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem4: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 162
+ CaptionOptions.Text = #20135#21697#32534#21495
+ Control = C_Code
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 90
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem5: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 159
+ CaptionOptions.Text = #21697#21517#20013#25991
+ Control = C_Name
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 87
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem6: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ CaptionOptions.Text = #21512#21516#21495
+ Control = conNO
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 100
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem7: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 190
+ CaptionOptions.Text = #39068#33394
+ Control = C_Color
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 150
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem8: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 195
+ CaptionOptions.Text = #33457#22411
+ Control = C_Pattern
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 155
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem9: TdxLayoutItem
+ Tag = 2
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 141
+ CaptionOptions.Text = #32568#26465#30721
+ Control = BCIOID
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 85
+ ControlOptions.ShowBorder = False
+ Index = 4
+ end
+ object dxLayoutItem10: TdxLayoutItem
+ Tag = 2
+ Parent = dxLayoutGroup2
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 141
+ CaptionOptions.Text = #21367#26465#30721
+ Control = CIID
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 85
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem11: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 137
+ CaptionOptions.Text = #39068#33394#33521#25991
+ Control = C_EColor
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 65
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem12: TdxLayoutItem
+ Tag = 1
+ Parent = dxLayoutGroup2
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 139
+ CaptionOptions.Text = #26816#39564#26426#21488
+ Control = CIMachNo
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 67
+ ControlOptions.ShowBorder = False
+ Index = 4
+ end
+ object dxLayoutItem13: TdxLayoutItem
+ Tag = 1
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 30
+ SizeOptions.Width = 118
+ CaptionOptions.Text = #29366#24577
+ Control = CIIOFlag
+ ControlOptions.OriginalHeight = 30
+ ControlOptions.OriginalWidth = 78
+ ControlOptions.ShowBorder = False
+ Index = 5
+ end
+ object dxLayoutItem14: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 120
+ CaptionOptions.Text = #31561#32423
+ Control = grade
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 80
+ ControlOptions.ShowBorder = False
+ Index = 5
+ end
+ object dxLayoutItem15: TdxLayoutItem
+ Tag = 2
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ CaptionOptions.Text = #32568#21495
+ Control = BatchNO
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 88
+ ControlOptions.ShowBorder = False
+ Index = 6
+ end
+ object dxLayoutItem17: TdxLayoutItem
+ Tag = 2
+ Parent = dxLayoutGroup2
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ CaptionOptions.Text = #23458#25143
+ Control = custName
+ ControlOptions.OriginalHeight = 29
+ ControlOptions.OriginalWidth = 88
+ ControlOptions.ShowBorder = False
+ Index = 6
+ end
+ end
+ inherited loadProcess: TPanel
+ Left = 684
+ Top = 493
+ ExplicitLeft = 684
+ ExplicitTop = 493
+ end
+ inherited cxProgressBar2: TcxProgressBar
+ Left = 357
+ Top = 257
+ ExplicitLeft = 357
+ ExplicitTop = 257
+ ExplicitHeight = 29
+ end
+ object cxPageControl1: TcxPageControl [6]
+ Left = 0
+ Top = 193
+ Width = 1921
+ Height = 606
+ Align = alClient
+ TabOrder = 6
+ Properties.ActivePage = cxTabSheet2
+ Properties.CustomButtons.Buttons = <>
+ Properties.Style = 5
+ ExplicitWidth = 1556
+ ClientRectBottom = 606
+ ClientRectRight = 1921
+ ClientRectTop = 32
+ object cxTabSheet1: TcxTabSheet
+ Caption = ' '#20135#21697#27719#24635#20449#24687' '
+ ImageIndex = 0
+ ExplicitWidth = 1556
+ object cxGrid2: TcxGrid
+ Left = 0
+ Top = 0
+ Width = 1921
+ Height = 574
+ Align = alClient
+ BorderStyle = cxcbsNone
+ PopupMenu = pm2
+ TabOrder = 0
+ ExplicitWidth = 1556
+ object TV2: TcxGridDBTableView
+ OnDblClick = TV2DblClick
+ OnMouseUp = Tv1MouseUp
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DS_2
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Format = #26816#39564#31995#25968'=#.##'
+ Kind = skAverage
+ end
+ item
+ Format = #25442#31639#31995#25968'=#.##'
+ Kind = skAverage
+ end
+ item
+ Kind = skCount
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = TV2Column4
+ end
+ item
+ Kind = skSum
+ Column = TV2Column5
+ end
+ item
+ Kind = skSum
+ Column = TV2Column6
+ end
+ item
+ Kind = skSum
+ Column = TV2Column7
+ end
+ item
+ Kind = skSum
+ Column = TV2Column8
+ end
+ item
+ Kind = skSum
+ Column = TV2Column9
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ OptionsView.IndicatorWidth = 30
+ object TV2Column1: TcxGridDBColumn
+ Caption = #35746#21333#21495
+ DataBinding.FieldName = 'OrderNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 112
+ end
+ object TV2Column10: TcxGridDBColumn
+ Caption = #32534#21495
+ DataBinding.FieldName = 'C_Code'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 94
+ end
+ object TV2Column11: TcxGridDBColumn
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 104
+ end
+ object TV2Column12: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 102
+ end
+ object TV2Column2: TcxGridDBColumn
+ Caption = #26579#21378#32568#21495
+ DataBinding.FieldName = 'FtyPCId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 145
+ end
+ object TV2Column3: TcxGridDBColumn
+ Caption = #31561#32423
+ DataBinding.FieldName = 'Grade'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 81
+ end
+ object TV2Column4: TcxGridDBColumn
+ Caption = #21305#25968
+ DataBinding.FieldName = 'ps'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 95
+ end
+ object TV2Column5: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'GrossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 93
+ end
+ object TV2Column6: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 77
+ end
+ object TV2Column7: TcxGridDBColumn
+ Caption = #30721#25968
+ DataBinding.FieldName = 'Yardage'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 77
+ end
+ object TV2Column8: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 77
+ end
+ object TV2Column9: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 103
+ end
+ end
+ object cxGridLevel1: TcxGridLevel
+ GridView = TV2
+ end
+ end
+ end
+ object cxTabSheet2: TcxTabSheet
+ Caption = ' '#20135#21697#26126#32454#20449#24687' '
+ ImageIndex = 1
+ ExplicitWidth = 1556
+ object cxGrid1: TcxGrid
+ Left = 0
+ Top = 0
+ Width = 1921
+ Height = 574
+ Align = alClient
+ BorderStyle = cxcbsNone
+ PopupMenu = PM_1
+ TabOrder = 0
+ ExplicitTop = 3
+ object Tv1: TcxGridDBTableView
+ OnMouseUp = Tv1MouseUp
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ OnCellDblClick = Tv1CellDblClick
+ DataController.DataSource = DS_1
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ Column = v1Column8
+ end
+ item
+ Kind = skSum
+ Column = v1Column9
+ end
+ item
+ Kind = skCount
+ Column = v1Column6
+ end
+ item
+ Kind = skSum
+ Column = v1Column10
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = v1Column27
+ end
+ item
+ Kind = skSum
+ Column = v1Column28
+ end
+ item
+ Kind = skSum
+ Column = v1Column14
+ end
+ item
+ Format = #26816#39564#31995#25968'=#.##'
+ Kind = skAverage
+ end
+ item
+ Format = #25442#31639#31995#25968'=#.##'
+ Kind = skAverage
+ Column = v1MKXS
+ end
+ item
+ Kind = skCount
+ Column = v1Column23
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = Tv1Column10
+ end
+ item
+ Kind = skSum
+ Column = Tv1AddwetPresent
+ end
+ item
+ Kind = skSum
+ Column = Tv1AddLenPresent
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ OptionsView.IndicatorWidth = 30
+ OnCustomDrawIndicatorCell = Tv1CustomDrawIndicatorCell
+ object v1Column22: TcxGridDBColumn
+ Caption = #36873#25321
+ DataBinding.FieldName = 'SSel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Width = 45
+ end
+ object v1Column21: TcxGridDBColumn
+ Caption = #25171#30721#26102#38388
+ DataBinding.FieldName = 'FillTime'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 77
+ end
+ object v1Column32: TcxGridDBColumn
+ Caption = #21512#21516#21495
+ DataBinding.FieldName = 'Conno'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1custName: TcxGridDBColumn
+ Caption = #23458#25143
+ DataBinding.FieldName = 'custName'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ end
+ object v1Column1: TcxGridDBColumn
+ Caption = #35746#21333#21495
+ DataBinding.FieldName = 'OrderNo'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column4: TcxGridDBColumn
+ Caption = #20135#21697#32534#21495
+ DataBinding.FieldName = 'C_Code'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column13: TcxGridDBColumn
+ Caption = #21697#21517#20013#25991
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column4: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column9: TcxGridDBColumn
+ Caption = #30133#28857#25968#37327
+ DataBinding.FieldName = 'CDQty'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column7: TcxGridDBColumn
+ Caption = #30133#28857#24773#20917
+ DataBinding.FieldName = 'FlawList'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 70
+ end
+ object v1Column17: TcxGridDBColumn
+ Caption = #29366#24577
+ DataBinding.FieldName = 'CIIOFlag'
+ DataBinding.IsNullValueType = True
+ FixedKind = fkLeftDynamic
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column18: TcxGridDBColumn
+ Caption = #26579#21378#32568#21495
+ DataBinding.FieldName = 'FtyPCId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 87
+ end
+ object v1Column23: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column8: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'GrossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column27: TcxGridDBColumn
+ Caption = #30382#37325
+ DataBinding.FieldName = 'Tare'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column28: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column10: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column10: TcxGridDBColumn
+ Caption = #30721#25968
+ DataBinding.FieldName = 'Yardage'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column20: TcxGridDBColumn
+ Caption = #25171#30721#20154
+ DataBinding.FieldName = 'Filler'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column14: TcxGridDBColumn
+ Caption = #25187#20998
+ DataBinding.FieldName = 'KouFenQty'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 66
+ end
+ object v1Column12: TcxGridDBColumn
+ Caption = #31561#32423
+ DataBinding.FieldName = 'Grade'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column42: TcxGridDBColumn
+ Caption = #24635#35760#24405#25968
+ DataBinding.FieldName = 'TotalCount'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column6: TcxGridDBColumn
+ Caption = #21367#26465#30721
+ DataBinding.FieldName = 'CIID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column7: TcxGridDBColumn
+ Caption = #23458#25143#33457#22411
+ DataBinding.FieldName = 'C_CustPattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column3: TcxGridDBColumn
+ Caption = #38376#24133
+ DataBinding.FieldName = 'C_Width'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column5: TcxGridDBColumn
+ Caption = #20811#37325
+ DataBinding.FieldName = 'C_GramWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1MKXS: TcxGridDBColumn
+ Caption = #25442#31639#31995#25968
+ DataBinding.FieldName = 'Coefficient'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column34: TcxGridDBColumn
+ Caption = #32568#26465#30721
+ DataBinding.FieldName = 'BCIOID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column40: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_Pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column46: TcxGridDBColumn
+ Caption = #26816#39564#26426#21488
+ DataBinding.FieldName = 'CIMachNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column12: TcxGridDBColumn
+ Caption = #21253#26465#30721
+ DataBinding.FieldName = 'PacketId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 71
+ end
+ object Tv1Column5: TcxGridDBColumn
+ Caption = #21253#21495
+ DataBinding.FieldName = 'PacketNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 70
+ end
+ object Tv1Column8: TcxGridDBColumn
+ Caption = #23458#25143#21333#21495
+ DataBinding.FieldName = 'BuyConNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column3: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_ColorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column1: TcxGridDBColumn
+ Caption = #27454#21495
+ DataBinding.FieldName = 'C_StyleNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column2: TcxGridDBColumn
+ Caption = #33521#25991#39068#33394
+ DataBinding.FieldName = 'C_EColor'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column6: TcxGridDBColumn
+ Caption = #32568#21495
+ DataBinding.FieldName = 'BatchNO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 59
+ end
+ object Tv1Column11: TcxGridDBColumn
+ Caption = #21152#37325
+ DataBinding.FieldName = 'addwet'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 57
+ end
+ object Tv1AddwetPresent: TcxGridDBColumn
+ Caption = #36192#36865#37325#37327
+ DataBinding.FieldName = 'AddwetPresent'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ end
+ object Tv1AddLenPresent: TcxGridDBColumn
+ Caption = #36192#36865#38271#24230
+ DataBinding.FieldName = 'AddLenPresent'
+ DataBinding.IsNullValueType = True
+ end
+ object Tv1lenUnit: TcxGridDBColumn
+ Caption = #38271#24230#21333#20301
+ DataBinding.FieldName = 'lenUnit'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ end
+ object Tv1unitPieces: TcxGridDBColumn
+ Caption = #25340#21305
+ DataBinding.FieldName = 'unitPieces'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ end
+ object Tv1operators: TcxGridDBColumn
+ Caption = #26426#21488#20154#21592
+ DataBinding.FieldName = 'operators'
+ DataBinding.IsNullValueType = True
+ end
+ end
+ object cxGrid1Level1: TcxGridLevel
+ GridView = Tv1
+ end
+ end
+ end
+ end
+ inline frmFrameDateSel1: TfrmFrameDateSel [7]
+ Left = 0
+ Top = 38
+ Width = 1921
+ Height = 37
+ Align = alTop
+ Color = clWhite
+ ParentBackground = False
+ ParentColor = False
+ TabOrder = 7
+ ExplicitTop = 38
+ ExplicitWidth = 1556
+ ExplicitHeight = 37
+ inherited lbl2: TLabel
+ Width = 16
+ Height = 21
+ ExplicitWidth = 16
+ ExplicitHeight = 21
+ end
+ inherited cxButton3: TcxButton
+ TabOrder = 5
+ end
+ inherited cbbType: TcxComboBox
+ TabOrder = 4
+ end
+ end
+ inherited ADOQueryBaseCmd: TADOQuery [8]
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 576
+ Top = 197
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 670
+ Top = 197
+ end
+ object GPM_1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 952
+ Top = 291
+ end
+ object ADOQueryCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 764
+ Top = 197
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 858
+ Top = 197
+ end
+ object ADOQueryTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 576
+ Top = 291
+ end
+ object DS_1: TDataSource
+ DataSet = Order_Main
+ Left = 670
+ Top = 385
+ end
+ object Order_Main: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 858
+ Top = 291
+ end
+ object RM1: TRMGridReport
+ ThreadPrepareReport = True
+ InitialZoom = pzDefault
+ PreviewButtons = [rmpbZoom, rmpbLoad, rmpbSave, rmpbPrint, rmpbFind, rmpbPageSetup, rmpbExit, rmpbSaveToXLS, rmpbExport, rmpbNavigator]
+ DefaultCollate = False
+ ShowPrintDialog = False
+ SaveReportOptions.RegistryPath = 'Software\ReportMachine\ReportSettings\'
+ PreviewOptions.RulerUnit = rmutScreenPixels
+ PreviewOptions.RulerVisible = False
+ PreviewOptions.DrawBorder = False
+ PreviewOptions.BorderPen.Color = clGray
+ PreviewOptions.BorderPen.Style = psDash
+ Dataset = RMDB_1
+ CompressLevel = rmzcFastest
+ CompressThread = False
+ LaterBuildEvents = True
+ OnlyOwnerDataSet = False
+ Left = 952
+ Top = 479
+ ReportData = {}
+ end
+ object RMDB_1: TRMDBDataSet
+ Visible = True
+ DataSet = ADOQueryPrint
+ Left = 858
+ Top = 479
+ end
+ object ADOQueryPrint: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 952
+ Top = 197
+ end
+ object PM_1: TPopupMenu
+ Left = 858
+ Top = 385
+ object N2: TMenuItem
+ Caption = #20840#36873
+ OnClick = N2Click
+ end
+ object N3: TMenuItem
+ Caption = #20840#24323
+ OnClick = N3Click
+ end
+ object N4: TMenuItem
+ Caption = #22797#21046
+ OnClick = N4Click
+ end
+ end
+ object PopupMenu1: TPopupMenu
+ Left = 952
+ Top = 385
+ object N1: TMenuItem
+ Caption = #25195#25551#20986#24211
+ end
+ end
+ object PopupMenu2: TPopupMenu
+ Left = 573
+ Top = 481
+ object N5: TMenuItem
+ Caption = #20462#25913#32568#21495
+ OnClick = N5Click
+ end
+ object N6: TMenuItem
+ Caption = #20462#25913#30382#37325
+ OnClick = N6Click
+ end
+ object N7: TMenuItem
+ Caption = #20462#25913#38271#24230#21333#20301
+ OnClick = N7Click
+ end
+ object N8: TMenuItem
+ Caption = #35843#25972#31859#25968
+ OnClick = N8Click
+ end
+ object N10: TMenuItem
+ Caption = #35843#25972#37325#37327
+ OnClick = N10Click
+ end
+ end
+ object RMRichObject1: TRMRichObject
+ Left = 670
+ Top = 573
+ end
+ object RMBarCodeObject1: TRMBarCodeObject
+ Left = 670
+ Top = 479
+ end
+ object RMXLSExport1: TRMXLSExport
+ ShowAfterExport = True
+ ExportPrecision = 1
+ PagesOfSheet = 1
+ ExportImages = True
+ ExportFrames = True
+ ExportImageFormat = ifBMP
+ JPEGQuality = 0
+ ScaleX = 1.000000000000000000
+ ScaleY = 1.000000000000000000
+ CompressFile = False
+ Left = 764
+ Top = 573
+ end
+ object RMCSVExport1: TRMCSVExport
+ ScaleX = 1.000000000000000000
+ ScaleY = 1.000000000000000000
+ Delimiter = ';'
+ Left = 764
+ Top = 479
+ end
+ object RMllPDFExport1: TRMllPDFExport
+ ShowDialog = False
+ ShowAfterExport = True
+ ShowBackPicture = True
+ Left = 576
+ Top = 573
+ end
+ object RMXLSExport2: TRMXLSExport
+ ShowAfterExport = True
+ ExportPrecision = 1
+ PagesOfSheet = 1
+ ExportImages = True
+ ExportFrames = True
+ ExportImageFormat = ifBMP
+ JPEGQuality = 0
+ ScaleX = 1.000000000000000000
+ ScaleY = 1.000000000000000000
+ CompressFile = False
+ Left = 858
+ Top = 573
+ end
+ object ADO_2: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 670
+ Top = 291
+ end
+ object CDS_2: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 764
+ Top = 291
+ end
+ object GPM_2: TcxGridPopupMenu
+ Grid = cxGrid2
+ PopupMenus = <>
+ Left = 576
+ Top = 385
+ end
+ object DS_2: TDataSource
+ DataSet = CDS_2
+ Left = 764
+ Top = 385
+ end
+ object pm2: TPopupMenu
+ Left = 982
+ Top = 586
+ object MenuItem3: TMenuItem
+ Caption = #22797#21046
+ OnClick = MenuItem3Click
+ end
+ end
+end
diff --git a/T03贸易布匹检验/U_TradeClothInspList.pas b/T03贸易布匹检验/U_TradeClothInspList.pas
new file mode 100644
index 0000000..e99b140
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothInspList.pas
@@ -0,0 +1,1477 @@
+unit U_TradeClothInspList;
+
+interface
+
+uses
+ Windows, MMSystem, Messages, SysUtils, Variants, Classes, Graphics, Controls,
+ Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData,
+ cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB,
+ cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls,
+ cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
+ cxGrid, DBClient, cxCheckBox, cxCalendar, cxSplitter, RM_Dataset, RM_System,
+ RM_Common, RM_Class, RM_GridReport, RM_e_Xls, Menus, MovePanel, cxTextEdit,
+ cxContainer, cxCurrencyEdit, BtnEdit, RM_e_main, RM_e_htm, RM_e_Graphic,
+ RM_e_Jpeg, RM_e_txt, RM_e_csv, Math, Clipbrd, cxPC, cxLookAndFeels,
+ cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxDateRanges, U_BaseList,
+ dxDateTimeWheelPicker, dxScrollbarAnnotations, cxMaskEdit, cxDropDownEdit,
+ dxCore, cxDateUtils, dxLayoutcxEditAdapters, dxLayoutContainer,
+ dxLayoutControl, cxGroupBox, RM_BarCode, RM_RichEdit, RM_E_llPDF,
+ dxX509Certificate, dxPDFCore, dxPDFBase, dxPDFText, dxPDFRecognizedObject,
+ dxPDFForm, dxPDFFormData, dxPDFDocument, dxPrintUtils, dxCustomPreview,
+ dxPDFDocumentViewer, dxPDFViewer, cxProgressBar, FrameDateSel, dxSkinsCore;
+
+type
+ TfrmTradeClothInspList = class(TfrmBaseList)
+ ToolBar1: TToolBar;
+ TBRafresh: TToolButton;
+ TBClose: TToolButton;
+ GPM_1: TcxGridPopupMenu;
+ ADOQueryCmd: TADOQuery;
+ ADOQueryMain: TADOQuery;
+ ADOQueryTemp: TADOQuery;
+ DS_1: TDataSource;
+ OrderNo: TcxTextEdit;
+ TBExport: TToolButton;
+ Order_Main: TClientDataSet;
+ conNO: TcxTextEdit;
+ C_Name: TcxTextEdit;
+ btnEdit: TToolButton;
+ TBZF: TToolButton;
+ btnJBQ: TToolButton;
+ RM1: TRMGridReport;
+ RMDB_1: TRMDBDataSet;
+ ADOQueryPrint: TADOQuery;
+ MovePanel2: TMovePanel;
+ C_Color: TcxTextEdit;
+ BCIOID: TcxTextEdit;
+ btnJYBG: TToolButton;
+ CIMachNo: TcxTextEdit;
+ C_Pattern: TcxTextEdit;
+ C_Code: TcxTextEdit;
+ C_EColor: TcxTextEdit;
+ ToolButton1: TToolButton;
+ PM_1: TPopupMenu;
+ Panel6: TPanel;
+ Label31: TLabel;
+ LBCPAP: TLabel;
+ BTLP: TButton;
+ BTNP: TButton;
+ N2: TMenuItem;
+ N3: TMenuItem;
+ N4: TMenuItem;
+ ToolButton2: TToolButton;
+ BatchNO: TcxTextEdit;
+ ToolButton3: TToolButton;
+ grade: TcxComboBox;
+ CIIOFlag: TcxComboBox;
+ TCBNOR: TcxComboBox;
+ ToolButton4: TToolButton;
+ ToolButton5: TToolButton;
+ Tunout: TToolButton;
+ dxLayoutControl_queryGroup_Root: TdxLayoutGroup;
+ dxLayoutControl_query: TdxLayoutControl;
+ dxLayoutGroup1: TdxLayoutGroup;
+ dxLayoutGroup2: TdxLayoutGroup;
+ dxLayoutItem2: TdxLayoutItem;
+ dxLayoutItem4: TdxLayoutItem;
+ dxLayoutItem5: TdxLayoutItem;
+ dxLayoutItem6: TdxLayoutItem;
+ dxLayoutItem7: TdxLayoutItem;
+ dxLayoutItem8: TdxLayoutItem;
+ dxLayoutItem9: TdxLayoutItem;
+ dxLayoutItem10: TdxLayoutItem;
+ dxLayoutItem11: TdxLayoutItem;
+ dxLayoutItem12: TdxLayoutItem;
+ dxLayoutItem13: TdxLayoutItem;
+ dxLayoutItem14: TdxLayoutItem;
+ dxLayoutItem15: TdxLayoutItem;
+ PopupMenu1: TPopupMenu;
+ N1: TMenuItem;
+ Tprintmd: TToolButton;
+ custName: TcxTextEdit;
+ dxLayoutItem17: TdxLayoutItem;
+ PopupMenu2: TPopupMenu;
+ N5: TMenuItem;
+ N6: TMenuItem;
+ N7: TMenuItem;
+ N8: TMenuItem;
+ RMRichObject1: TRMRichObject;
+ RMBarCodeObject1: TRMBarCodeObject;
+ RMXLSExport1: TRMXLSExport;
+ RMCSVExport1: TRMCSVExport;
+ N10: TMenuItem;
+ RMllPDFExport1: TRMllPDFExport;
+ RMXLSExport2: TRMXLSExport;
+ Tout: TToolButton;
+ cxPageControl1: TcxPageControl;
+ cxTabSheet1: TcxTabSheet;
+ cxTabSheet2: TcxTabSheet;
+ cxGrid1: TcxGrid;
+ Tv1: TcxGridDBTableView;
+ v1Column22: TcxGridDBColumn;
+ v1Column21: TcxGridDBColumn;
+ v1Column32: TcxGridDBColumn;
+ Tv1custName: TcxGridDBColumn;
+ v1Column1: TcxGridDBColumn;
+ Tv1Column4: TcxGridDBColumn;
+ v1Column13: TcxGridDBColumn;
+ v1Column4: TcxGridDBColumn;
+ v1Column9: TcxGridDBColumn;
+ v1Column7: TcxGridDBColumn;
+ v1Column17: TcxGridDBColumn;
+ v1Column18: TcxGridDBColumn;
+ v1Column23: TcxGridDBColumn;
+ v1Column8: TcxGridDBColumn;
+ v1Column27: TcxGridDBColumn;
+ v1Column28: TcxGridDBColumn;
+ v1Column10: TcxGridDBColumn;
+ Tv1Column10: TcxGridDBColumn;
+ v1Column20: TcxGridDBColumn;
+ v1Column14: TcxGridDBColumn;
+ v1Column12: TcxGridDBColumn;
+ v1Column42: TcxGridDBColumn;
+ v1Column6: TcxGridDBColumn;
+ Tv1Column7: TcxGridDBColumn;
+ v1Column3: TcxGridDBColumn;
+ v1Column5: TcxGridDBColumn;
+ v1MKXS: TcxGridDBColumn;
+ v1Column34: TcxGridDBColumn;
+ v1Column40: TcxGridDBColumn;
+ v1Column46: TcxGridDBColumn;
+ Tv1Column12: TcxGridDBColumn;
+ Tv1Column5: TcxGridDBColumn;
+ Tv1Column8: TcxGridDBColumn;
+ Tv1Column3: TcxGridDBColumn;
+ Tv1Column1: TcxGridDBColumn;
+ Tv1Column2: TcxGridDBColumn;
+ Tv1Column6: TcxGridDBColumn;
+ Tv1Column11: TcxGridDBColumn;
+ Tv1AddwetPresent: TcxGridDBColumn;
+ Tv1AddLenPresent: TcxGridDBColumn;
+ Tv1lenUnit: TcxGridDBColumn;
+ Tv1unitPieces: TcxGridDBColumn;
+ Tv1operators: TcxGridDBColumn;
+ cxGrid1Level1: TcxGridLevel;
+ cxGrid2: TcxGrid;
+ TV2: TcxGridDBTableView;
+ cxGridLevel1: TcxGridLevel;
+ frmFrameDateSel1: TfrmFrameDateSel;
+ TV2Column1: TcxGridDBColumn;
+ TV2Column2: TcxGridDBColumn;
+ TV2Column3: TcxGridDBColumn;
+ TV2Column4: TcxGridDBColumn;
+ TV2Column5: TcxGridDBColumn;
+ TV2Column6: TcxGridDBColumn;
+ TV2Column7: TcxGridDBColumn;
+ TV2Column8: TcxGridDBColumn;
+ ADO_2: TADOQuery;
+ CDS_2: TClientDataSet;
+ GPM_2: TcxGridPopupMenu;
+ DS_2: TDataSource;
+ TV2Column9: TcxGridDBColumn;
+ pm2: TPopupMenu;
+ MenuItem3: TMenuItem;
+ TV2Column10: TcxGridDBColumn;
+ TV2Column11: TcxGridDBColumn;
+ TV2Column12: TcxGridDBColumn;
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormCreate(Sender: TObject);
+ procedure TBCloseClick(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+ procedure btnEditClick(Sender: TObject);
+ procedure TBZFClick(Sender: TObject);
+ procedure btnJBQClick(Sender: TObject);
+ procedure OrderNoKeyPress(Sender: TObject; var Key: Char);
+ procedure BTLPClick(Sender: TObject);
+ procedure BTNPClick(Sender: TObject);
+ procedure TCBNORChange(Sender: TObject);
+ procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
+ procedure conNOKeyPress(Sender: TObject; var Key: Char);
+ procedure CIIOFlagChange(Sender: TObject);
+ procedure GradeChange(Sender: TObject);
+ procedure KHConNOKeyPress(Sender: TObject; var Key: Char);
+ procedure RKOrdIDKeyPress(Sender: TObject; var Key: Char);
+ procedure btnJYBGClick(Sender: TObject);
+ procedure Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
+ procedure cxPageControl1Change(Sender: TObject);
+ procedure chkZFClick(Sender: TObject);
+ procedure TBExportClick(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure N4Click(Sender: TObject);
+ procedure N2Click(Sender: TObject);
+ procedure N3Click(Sender: TObject);
+ procedure ToolButton3Click(Sender: TObject);
+ procedure ToolButton4Click(Sender: TObject);
+ procedure ToolButton5Click(Sender: TObject);
+ procedure TunoutClick(Sender: TObject);
+ procedure CIIOFlagPropertiesChange(Sender: TObject);
+ procedure TprintmdClick(Sender: TObject);
+ procedure N5Click(Sender: TObject);
+ procedure N8Click(Sender: TObject);
+ procedure N6Click(Sender: TObject);
+ procedure N7Click(Sender: TObject);
+ procedure N10Click(Sender: TObject);
+ procedure ToolButton6Click(Sender: TObject);
+ procedure TV2DblClick(Sender: TObject);
+ procedure MenuItem3Click(Sender: TObject);
+ private
+ DQdate: TDateTime;
+ FLeft, FTop: Integer;
+ CurrentPage, RecordsNumber: Integer;
+ procedure InitGrid(MWSql: string);
+ function Savedata(): Boolean;
+ procedure SetStatus();
+ procedure PrintCKMDG(MRKOrdID: string);
+ { Private declarations }
+ public
+ FFInt: Integer;
+ canshu1: string;
+ { Public declarations }
+ end;
+
+implementation
+
+uses
+ U_DataLink, U_TradePack, U_RTFun, U_CustomFun, U_globalVar, U_TradeInspEdit,
+ U_ZDYHelp, U_LabelPrint, U_SysLogList, U_ControlData, U_FormLayOutDesign,
+ U_BatchMdyData, U_iniparam;
+
+{$R *.dfm}
+
+procedure TfrmTradeClothInspList.SetStatus();
+begin
+// btnEdit.Enabled := False;
+// TBZF.Enabled := False;
+// btnHY.Enabled := False;
+// btnJBQ.Enabled := False;
+// btnJYBG.Enabled := False;
+//
+// btnEdit.Enabled := True;
+// TBZF.Enabled := True;
+// btnJBQ.Enabled := True;
+// btnJYBG.Enabled := True;
+
+end;
+
+procedure TfrmTradeClothInspList.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ Action := caFree;
+end;
+
+procedure TfrmTradeClothInspList.FormCreate(Sender: TObject);
+begin
+ inherited;
+ cxgrid1.Align := alClient;
+ DQdate := SGetServerDate(ADOQueryTemp);
+end;
+
+procedure TfrmTradeClothInspList.TBCloseClick(Sender: TObject);
+begin
+ inherited;
+ Close;
+end;
+
+procedure TfrmTradeClothInspList.TBExportClick(Sender: TObject);
+begin
+ if ADOQueryMain.IsEmpty then
+ Exit;
+ TcxGridToExcel(self.Caption, cxgrid1);
+end;
+
+procedure TfrmTradeClothInspList.PrintCKMDG(MRKOrdID: string);
+begin
+
+end;
+
+procedure TfrmTradeClothInspList.InitGrid(MWSql: string);
+var
+ WSql, WDateSql: string;
+ SqlStr: string;
+begin
+ MovePanel2.Left := (self.Width - MovePanel2.Width) div 2;
+ MovePanel2.Visible := True;
+ MovePanel2.Refresh;
+
+ WDateSql := ' and A.Filltime>' + quotedstr(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.BegDate.Date));
+ WDateSql := WDateSql + ' and A.Filltime<=' + quotedstr(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.enddate.Date + 1));
+
+ case cxPageControl1.ActivePageIndex of
+ 0:
+ begin
+ WSql := CommonFiltersByContainer(dxLayoutControl_query, ' {"EquTag": 1,"LikeTag": 2,"Fields": "OrderNo|FtyPCId|FtyPCId|C_Color|C_Code|C_Name"}');
+
+ if trim(WSql) <> '' then
+ begin
+ WSql := WDateSql + ' and ' + trim(WSql);
+ end
+ else
+ WSql := WDateSql;
+
+ SqlStr := ' select Grade,OrderNo,FtyPCId,FtyPCId,C_Color,C_Code,C_Name ';
+ SqlStr := SqlStr + ' ,ps=count(ciid),GrossWeight=sum(GrossWeight),NetWeight=sum(NetWeight) ,Yardage=sum(Yardage) ,Meter=sum(Meter) ';
+ SqlStr := SqlStr + ' from Trade_Cloth_Inspect A ';
+ SqlStr := SqlStr + ' where 1=1 ' + (WSql);
+ SqlStr := SqlStr + ' group by Grade,OrderNo,FtyPCId,FtyPCId,C_Color,C_Code,C_Name ';
+
+ InitCDSData(ADO_2, CDS_2, Tv2, SqlStr, '', '');
+ end;
+ 1:
+ begin
+ if MWSql = '' then
+ WSql := CommonFiltersByContainer(dxLayoutControl_query, ' {"EquTag": 1,"LikeTag": 2,"Fields": ""}')
+ else
+ WSql := MWSql;
+
+ if trim(WSql) <> '' then
+ begin
+ WSql := WDateSql + ' and ' + trim(WSql);
+ end
+ else
+ WSql := WDateSql;
+
+ SqlStr := 'exec P_Trade_Insp_Get_Page ';
+ SqlStr := SqlStr + ' @pageIndex=' + inttostr(CurrentPage);
+ SqlStr := SqlStr + ' ,@pageSize=' + inttostr(RecordsNumber);
+ SqlStr := SqlStr + ' ,@criteria= ' + quotedstr(WSql);
+
+ InitCDSData(ADOQueryMain, Order_Main, Tv1, SqlStr, '', '');
+ LBCPAP.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(Order_Main.FieldByName('TotalCount').AsInteger / RecordsNumber));
+ end;
+ end;
+
+end;
+
+procedure TfrmTradeClothInspList.TBRafreshClick(Sender: TObject);
+begin
+ OrderNo.SetFocus;
+ CurrentPage := 1;
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.FormShow(Sender: TObject);
+begin
+ inherited;
+// edit_CKMJID.Properties.MaxLength := gScanBarcodeMaxLen;
+ canshu1 := self.fParameters1;
+ CurrentPage := 1;
+ RecordsNumber := 500;
+ InitDevCombobox(ADOQueryTemp, grade, 'CPGRADE', false);
+ ReadCxGrid(Trim(self.Caption) + 'Tv1', Tv1, gDllFileCaption);
+ frmFrameDateSel1.EndDate.Date := SGetServerDate(ADOQueryTemp);
+ frmFrameDateSel1.BegDate.Date := frmFrameDateSel1.EndDate.Date;
+// fsj := 'select distinct(Filler) name from Trade_Cloth_Inspect ';
+// SInitComBoxBySql(ADOQueryCmd, Filler, False, fsj);
+// Filler.ItemIndex := Filler.Items.IndexOf(trim(DName));
+
+
+ InitGrid('');
+ SetStatus();
+
+end;
+
+procedure TfrmTradeClothInspList.Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+ FLeft := X;
+ FTop := Y;
+end;
+
+procedure TfrmTradeClothInspList.TV2DblClick(Sender: TObject);
+begin
+ cxPageControl1.ActivePageIndex := 1;
+ SetStatus();
+ InitGrid(CommonFiltersByTv(Tv2, '{"Fields":"OrderNo|FtyPCId|FtyPCId|C_Color|C_Code|C_Name|Grade"}'));
+end;
+
+procedure TfrmTradeClothInspList.btnEditClick(Sender: TObject);
+begin
+ if Order_Main.IsEmpty then
+ exit;
+
+ with ADOQueryTemp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select * from Trade_Cloth_IO where IOFlag='''' and stkid=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
+ Open;
+ end;
+ if ADOQueryTemp.IsEmpty = False then
+ begin
+ Order_Main.EnableControls;
+ Application.MessageBox('Ѳݲܱ༭!', 'ʾ', 0);
+ Exit;
+ end;
+ try
+ frmTradeInspEdit := TfrmTradeInspEdit.Create(Application);
+ with frmTradeInspEdit do
+ begin
+ CIID.Text := Trim(Self.Order_Main.fieldbyname('CIID').AsString);
+ if ShowModal = 1 then
+ begin
+ TBRafresh.Click;
+ end;
+ end;
+ finally
+ frmTradeInspEdit.Free;
+
+ end;
+end;
+
+procedure TfrmTradeClothInspList.TBZFClick(Sender: TObject);
+var
+ MCIIDS: string;
+begin
+ if Order_Main.Locate('ssel', True, []) = False then
+ begin
+ Application.MessageBox('ûѡ!', 'ʾ', 0);
+ Exit;
+ end;
+ if Application.MessageBox('ȷҪϺݲָܻ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ Order_Main.DisableControls;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean = True then
+ begin
+
+ MCIIDS := MCIIDS + Trim(Order_Main.fieldbyname('CIID').AsString) + ',';
+ Order_Main.Delete;
+ end
+ else
+ Next;
+ end;
+ end;
+ Order_Main.EnableControls;
+ try
+ ADOQueryCmd.Connection.BeginTrans;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('insert into Trade_Need_Up(UOperation,UType,UDataId) values('''',''ɾ'',' + quotedstr(MCIIDS) + ') ');
+ ExecSQL;
+ end;
+ with ADOQueryCmd do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Trade_Insp_Del ');
+ Sql.Add('@CIIDS=' + quotedstr(Trim(MCIIDS)));
+ Sql.Add(',@DCode=' + Quotedstr(DCode));
+ Sql.Add(',@DName=' + Quotedstr(DName));
+ Open;
+ end;
+ if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ CurrentPage := 1;
+ InitGrid('');
+ application.MessageBox('ɾɹ', 'ʾϢ');
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+
+end;
+
+procedure TfrmTradeClothInspList.btnJBQClick(Sender: TObject);
+var
+ fPrintFile, FLabVolume, MStrIn: string;
+ mCopys: Integer;
+begin
+ if Order_Main.IsEmpty then
+ Exit;
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ûѡ!', 'ʾ', 0);
+ Exit;
+ end;
+ MStrIn := '2';
+ if not InputQuery('ӡ', '', MStrIn) then
+ begin
+ Exit;
+ end;
+ mCopys := strToIntdef(trim(MStrIn), 2);
+ Order_Main.DisableControls;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean = True then
+ begin
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set PrtCount=PrtCount+1,PrtDate=getdate(),Prter=''' + Trim(DName) + '''');
+ sql.Add(' where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
+ ExecSQL;
+ end;
+
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add(' EXEC P_Trade_Print_Lab ');
+ SQL.Add(' @CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
+ Open;
+ end;
+ if ADOQueryPrint.IsEmpty then
+ begin
+ application.MessageBox('ǩδҵ', 'ʾϢ', MB_ICONERROR);
+ exit;
+ end;
+
+ if Trim(ADOQueryPrint.fieldbyname('SLabVolume').AsString) <> '' then
+ FLabVolume := Trim(ADOQueryPrint.fieldbyname('SLabVolume').AsString)
+ else
+ FLabVolume := Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString);
+
+ ExportFtErpFile(FLabVolume + '.rmf', ADOQueryTemp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLabVolume + '.rmf';
+
+ if FileExists(fPrintFile) then
+ begin
+ RM1.LoadFromFile(fPrintFile);
+ // if Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString) <> 'Ʒǩ' then
+ // Rm1.DefaultCopies := 2
+ // else
+ Rm1.DefaultCopies := mCopys;
+ // RM1.PrepareReport ;
+
+ RM1.ShowReport;
+ // RM1.ExportTo(RMllPDFExport1,'C:\test.pdf');
+ end
+ else
+ begin
+ Application.MessageBox(PChar('û' + fPrintFile), 'ʾ', 0);
+ end;
+ end;
+ Next;
+ end;
+ end;
+ Order_Main.EnableControls;
+end;
+
+function TfrmTradeClothInspList.Savedata(): Boolean;
+var
+ maxno, LLID: string;
+ HXPS: Integer;
+ HXQty, HXMQty: Double;
+begin
+ HXPS := 0;
+ HXQty := 0;
+ with ADOQueryTemp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select Top 1 * from Contract_Cloth_LL where OrdSubId=''' + Trim(Order_Main.fieldbyname('SubId').AsString) + '''');
+ sql.Add(' and FirstName=''' + Trim(Order_Main.fieldbyname('AOrddefstr4').AsString) + '''');
+ Open;
+ end;
+ LLID := Trim(ADOQueryTemp.fieldbyname('LLID').AsString);
+ if Trim(LLID) = '' then
+ begin
+ Result := False;
+ Application.MessageBox('ûӦļӹ!', 'ʾ', 0);
+ Exit;
+ end;
+ try
+ ADOQueryCmd.Connection.BeginTrans;
+ if GetLSNo(ADOQueryCmd, maxno, 'HX', 'Contract_Cloth_BefChkHX', 2, 1) = False then
+ begin
+ Result := False;
+ ADOQueryCmd.Connection.RollbackTrans;
+ Application.MessageBox('ȡʧ!', 'ʾ', 0);
+ Exit;
+ end;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean = True then
+ begin
+ HXPS := HXPS + 1;
+ HXQty := HXQty + Order_Main.FieldByName('MJLen').Value;
+ end;
+ Next;
+ end;
+ end;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('');
+ Open;
+ end;
+ except
+ end;
+end;
+
+procedure TfrmTradeClothInspList.OrderNoKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ CurrentPage := 1;
+ InitGrid('');
+ end;
+end;
+
+procedure TfrmTradeClothInspList.BTLPClick(Sender: TObject);
+begin
+ if CurrentPage > 1 then
+ CurrentPage := CurrentPage - 1;
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.BTNPClick(Sender: TObject);
+begin
+ if CurrentPage < Order_Main.FieldByName('TotalCount').AsInteger / RecordsNumber then
+ CurrentPage := CurrentPage + 1;
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.TCBNORChange(Sender: TObject);
+begin
+ RecordsNumber := StrToInt(TCBNOR.Text);
+ CurrentPage := 1;
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.ToolButton1Click(Sender: TObject);
+begin
+ WriteCxGrid(Trim(self.Caption) + 'Tv1', Tv1, gDllFileCaption);
+ if gIsCanDesign then
+ begin
+ saveLayOut(application, dxLayoutControl_query, ADOQueryBaseCmd, PWideChar(fDllFileName + '|' + Self.Name + '|' + dxLayoutControl_query.Name + '.ini'));
+ end;
+end;
+
+procedure TfrmTradeClothInspList.ToolButton3Click(Sender: TObject);
+var
+ FPrintFile, MPacketId, MLabPackage: string;
+begin
+
+ if Order_Main.IsEmpty then
+ Exit;
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ûѡ!', 'ʾ', 0);
+ Exit;
+ end;
+ Order_Main.DisableControls;
+ with Order_Main do
+ begin
+ filter := 'SSel=1 ';
+ filtered := true;
+ end;
+ with Order_Main do
+ begin
+ while not Order_Main.eof do
+ begin
+ MPacketId := Trim(Order_Main.fieldbyname('PacketId').AsString);
+ if MPacketId = '' then
+ begin
+ Order_Main.Next;
+ Continue;
+ end;
+ if trim(MPacketId) <> '' then
+ begin
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_Prt_djd_PackLab ' + quotedstr(MPacketId));
+ Open;
+ end;
+ //
+ if Trim(ADOQueryPrint.fieldbyname('SLabPackage').AsString) <> '' then
+ MLabPackage := trim(ADOQueryPrint.FieldByName('SLabPackage').AsString)
+ else
+ MLabPackage := trim(ADOQueryPrint.FieldByName('LabPackage').AsString);
+ ExportFtErpFile(Trim(MLabPackage) + '.rmf', ADOQueryTemp);
+
+ FPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(MLabPackage) + '.rmf';
+ if not FileExists(FPrintFile) then
+ begin
+ Application.MessageBox(PChar('û' + FPrintFile), 'ʾ', 0);
+ Exit;
+ end;
+ if FileExists(FPrintFile) then
+ begin
+ RM1.LoadFromFile(FPrintFile);
+ Rm1.DefaultCopies := 1;
+ RM1.PrintReport;
+ end
+ else
+ begin
+ Application.MessageBox(PChar('û' + FPrintFile), 'ʾ', 0);
+ end;
+ while Order_Main.Locate('SSel;PacketId', VarArrayOf([True, MPacketId]), []) do
+ begin
+ with Order_Main do
+ begin
+ Edit;
+ Order_Main.FieldByName('SSel').Value := False;
+ Post;
+ end;
+ end;
+ end;
+ Order_Main.Next;
+ end;
+ end;
+ Order_Main.filtered := false;
+ Order_Main.EnableControls;
+
+end;
+
+procedure TfrmTradeClothInspList.ToolButton4Click(Sender: TObject);
+begin
+ inherited;
+ with TfrmTradePack.Create(Application.MainForm, 'ƥ') do //
+ begin
+ show;
+ end;
+end;
+
+procedure TfrmTradeClothInspList.ToolButton5Click(Sender: TObject);
+begin
+ inherited;
+ frmSysLogList := TfrmSysLogList.create(self);
+ with frmSysLogList do
+ begin
+ fModel := self.caption;
+ FMainId := ''; // Trim(Self.Order_Main.FieldByName('mainId').AsString);
+ showmodal;
+ free;
+ end;
+end;
+
+procedure TfrmTradeClothInspList.ToolButton6Click(Sender: TObject);
+var
+ MINo, MCIIDS: string;
+begin
+ if Order_Main.Locate('ssel', True, []) = False then
+ begin
+ Application.MessageBox('ѡ!', 'ʾ', 0);
+ Exit;
+ end;
+ if Application.MessageBox('ȷҪ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ MCIIDS := SelCDSKey(Order_Main, ['ciid'])[0];
+ if GetLSNo(ADOQueryBaseCmd, MINo, '9', 'BS_Cloth_IO', 4, 1) = false then
+ begin
+ Application.MessageBox('ȡⵥʧ!', 'ʾ', 0);
+ exit;
+ end;
+
+ ADOQueryBaseCmd.Connection.BeginTrans;
+ try
+
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_BS_Cloth_In_Insp ');
+ SQL.Add(' @CIIDS=' + QuotedStr(trim(MCIIDS)));
+ SQL.Add(',@IOTime=' + QuotedStr(FormatDateTime('yyyy-MM-dd', SGetServerDate(ADOQueryBaseTemp))));
+ SQL.Add(',@IOType=' + QuotedStr(''));
+ SQL.Add(',@IONO=' + QuotedStr(MINo));
+ SQL.Add(',@FillId=' + QuotedStr(DCode));
+ SQL.Add(',@Filler=' + QuotedStr(DName));
+ Open;
+ end;
+ if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
+ end;
+ ADOQueryBaseCmd.Connection.CommitTrans;
+ Application.MessageBox('ɹ', 'ʾϢ');
+
+ except
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ Application.MessageBox(pchar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+ // ˢȫϢ
+ InitGrid('');
+
+end;
+
+procedure TfrmTradeClothInspList.TprintmdClick(Sender: TObject);
+var
+ WSql: string;
+begin
+ if Order_Main.IsEmpty then
+ Exit;
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ûѡ', 'ʾ', 0);
+ Exit;
+ end;
+ WSql := '';
+ Order_Main.DisableControls;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.fieldbyname('SSel').AsBoolean then
+ begin
+ if WSql <> '' then
+ begin
+ WSql := WSql + ',' + Trim(Order_Main.fieldbyname('CIID').AsString);
+ end
+ else
+ begin
+ WSql := Trim(Order_Main.fieldbyname('CIID').AsString);
+ end;
+ end;
+ Next;
+ end;
+ end;
+ Order_Main.Locate('SSel', True, []);
+ Order_Main.EnableControls;
+// try
+// frmMdPrint := TfrmMdPrint.Create(Application);
+// with frmMdPrint do
+// begin
+// FLMType := '뵥';
+// FFiltration1 := WSql;
+// FFiltration2 := WSql;
+// if ShowModal = 1 then
+// begin
+//// Self.InitGrid();
+// end;
+// end;
+// finally
+// frmMdPrint.Free;
+// end;
+
+ try
+ frmLabelPrint := TfrmLabelPrint.Create(Application);
+ with frmLabelPrint do
+ begin
+ FLMType := '뵥';
+ FFiltration1 := Trim(WSql);
+ if ShowModal = 1 then
+ begin
+// Self.InitGrid();
+ end;
+ end;
+ finally
+ frmLabelPrint.Free;
+ end;
+
+end;
+
+procedure TfrmTradeClothInspList.TunoutClick(Sender: TObject);
+var
+ MCIIDS: string;
+begin
+ if Order_Main.Locate('ssel', True, []) = False then
+ begin
+ Application.MessageBox('ѡ!', 'ʾ', 0);
+ Exit;
+ end;
+ if Application.MessageBox('ȷҪ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ MCIIDS := SelCDSKey(Order_Main, ['ciid'])[0];
+
+ ADOQueryBaseCmd.Connection.BeginTrans;
+ try
+ with ADOQueryBaseCmd do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_BS_Cloth_In_Del ');
+ SQL.Add(' @BCIOIDS=' + QuotedStr(trim(MCIIDS)));
+ SQL.Add(',@DCode=' + QuotedStr(DCode));
+ SQL.Add(',@DName=' + QuotedStr(DName));
+ Open;
+ end;
+ if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
+ end;
+ ADOQueryBaseCmd.Connection.CommitTrans;
+ Application.MessageBox('ɹ', 'ʾϢ');
+ except
+ ADOQueryBaseCmd.Connection.RollbackTrans;
+ Application.MessageBox(pchar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+ // ˢȫϢ
+ InitGrid('');
+
+end;
+
+procedure TfrmTradeClothInspList.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
+begin
+ Clipboard.SetTextBuf(PChar(Trim(Order_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
+end;
+
+procedure TfrmTradeClothInspList.chkZFClick(Sender: TObject);
+begin
+ inherited;
+ CurrentPage := 1;
+ SetStatus();
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.conNOKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ CurrentPage := 1;
+ InitGrid('');
+ end;
+end;
+
+procedure TfrmTradeClothInspList.cxPageControl1Change(Sender: TObject);
+begin
+ CurrentPage := 1;
+ SetStatus();
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.CIIOFlagChange(Sender: TObject);
+begin
+ CurrentPage := 1;
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.CIIOFlagPropertiesChange(Sender: TObject);
+begin
+ inherited;
+
+ CurrentPage := 1;
+ InitGrid('');
+
+end;
+
+procedure TfrmTradeClothInspList.GradeChange(Sender: TObject);
+begin
+ CurrentPage := 1;
+ InitGrid('');
+end;
+
+procedure TfrmTradeClothInspList.KHConNOKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ CurrentPage := 1;
+ InitGrid('');
+ end;
+end;
+
+procedure TfrmTradeClothInspList.MenuItem3Click(Sender: TObject);
+begin
+ CopyTVFocusValue(TV2);
+end;
+
+procedure TfrmTradeClothInspList.N10Click(Sender: TObject);
+var
+ isOk: boolean;
+ mtzfs: string;
+ mtzsl, mvalue: double;
+ decimalY: integer;
+ mfield: string;
+begin
+ if Order_Main.IsEmpty then
+ Exit;
+
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ѡݼ¼', 'ʾ', 0);
+ Exit;
+ end;
+ isOk := false;
+ frmBatchMdyData := TfrmBatchMdyData.create(self);
+ with frmBatchMdyData do
+ begin
+ fTabCaption := '';
+ if ShowModal = 1 then
+ begin
+ mtzfs := Trim(tzfs1.Text);
+ if Trim(tzfield.Text) = 'ë' then
+ begin
+ mfield := 'grossWeight';
+ end
+ else if Trim(tzfield.Text) = '' then
+ begin
+ mfield := 'netWeight';
+ end
+ else if Trim(tzfield.Text) = 'Ƥ' then
+ begin
+ mfield := 'tare';
+ end
+ else
+ begin
+ free;
+ exit;
+ end;
+ mtzsl := strTofloatdef(Trim(tzsl1.Text), 0);
+ isOk := true;
+ end;
+ free;
+ end;
+ if not isOk then
+ exit;
+
+ try
+ Order_Main.DisableControls;
+ ADOQueryCmd.Connection.BeginTrans;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean = True then
+ begin
+ if mtzfs = '' then
+ begin
+ mvalue := Order_Main.fieldbyname(mfield).AsFloat + mtzsl;
+ end;
+ if mtzfs = '' then
+ begin
+ mvalue := Order_Main.fieldbyname(mfield).AsFloat - mtzsl;
+ end;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set ' + mfield + '=' + floatTostr(mvalue));
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set Qty=CASE WHEN QtyUnit=''M'' THEN Meter WHEN QtyUnit=''Y'' THEN Yardage WHEN QtyUnit=''kg'' THEN GrossWeight ELSE 0 END ');
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+ ExecSQL;
+ end;
+
+ end;
+ Next;
+ end;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲɹ', 'ʾϢ');
+ TBRafresh.Click;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲʧܣ', 'ʾϢ', 0);
+ end;
+
+end;
+
+procedure TfrmTradeClothInspList.N2Click(Sender: TObject);
+begin
+ // SelOKNoFiler(Tv1, True); //ȫѡ
+ try
+ Order_Main.DisableControls;
+ Order_Main.First;
+ while not Order_Main.eof do
+ begin
+ Order_Main.Edit;
+ Order_Main.FieldByName('ssel').Value := true;
+ Order_Main.Post;
+
+ Order_Main.Next;
+ end;
+ finally
+ Order_Main.EnableControls;
+ end;
+end;
+
+procedure TfrmTradeClothInspList.N3Click(Sender: TObject);
+begin
+ //SelOKNoFiler(Tv1, False); //ȫ
+ try
+ Order_Main.DisableControls;
+ Order_Main.First;
+ while not Order_Main.eof do
+ begin
+ Order_Main.Edit;
+ Order_Main.FieldByName('ssel').Value := false;
+ Order_Main.Post;
+
+ Order_Main.Next;
+ end;
+ finally
+ Order_Main.EnableControls;
+ end;
+end;
+
+procedure TfrmTradeClothInspList.N4Click(Sender: TObject);
+begin
+ Clipboard.SetTextBuf(PChar(Trim(Order_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
+end;
+
+procedure TfrmTradeClothInspList.N5Click(Sender: TObject);
+var
+ MStrsql, MStrIn: string;
+begin
+
+ if Order_Main.IsEmpty then
+ Exit;
+
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ѡݼ¼', 'ʾ', 0);
+ Exit;
+ end;
+ if Application.MessageBox('ȷҪ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ MovePanel2.Visible := True;
+ MovePanel2.Refresh;
+ try
+ Order_Main.DisableControls;
+ with Order_Main do
+ begin
+ MStrsql := '';
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean then
+ begin
+ if MStrsql = '' then
+ MStrsql := Quotedstr(trim(Order_Main.FieldByName('CIID').AsString))
+ else
+ MStrsql := MStrsql + ',' + Quotedstr(trim(Order_Main.FieldByName('CIID').AsString));
+ end;
+ Next;
+ end;
+ end;
+ Order_Main.EnableControls;
+ MovePanel2.Visible := False;
+ except
+ MovePanel2.Visible := False;
+ Order_Main.EnableControls;
+ end;
+
+ if InputQuery('', '', MStrIn) then
+ begin
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set BatchNO=' + QuotedStr(MStrIn));
+ sql.Add(' where CIID in (' + MStrsql + ')');
+
+ sql.Add('Update Trade_Cloth_Stock Set BatchNO=' + QuotedStr(MStrIn));
+ sql.Add(' where CIID in (' + MStrsql + ')');
+ ExecSQL;
+ end;
+
+ end;
+ InitGrid('');
+
+end;
+
+procedure TfrmTradeClothInspList.N6Click(Sender: TObject);
+var
+ MStrIn: string;
+ mvalue: double;
+begin
+ if Order_Main.IsEmpty then
+ Exit;
+
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ѡݼ¼', 'ʾ', 0);
+ Exit;
+ end;
+
+ if not InputQuery('Ƥ(ëػƤ)', '', MStrIn) then
+ begin
+ Exit;
+ end;
+ mvalue := strTofloatdef(trim(MStrIn), 0);
+ try
+ Order_Main.DisableControls;
+ ADOQueryCmd.Connection.BeginTrans;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean = True then
+ begin
+
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set tare=' + floatTostr(mvalue));
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set GrossWeight=netWeight+tare');
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set Qty=CASE WHEN QtyUnit=''M'' THEN Meter WHEN QtyUnit=''Y'' THEN Yardage WHEN QtyUnit=''kg'' THEN GrossWeight ELSE 0 END ');
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+ ExecSQL;
+ end;
+ end;
+ Next;
+ end;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲɹ', 'ʾϢ');
+ TBRafresh.Click;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲʧܣ', 'ʾϢ', 0);
+ end;
+
+end;
+
+procedure TfrmTradeClothInspList.N7Click(Sender: TObject);
+var
+ isOk: boolean;
+ mlenUnit: string;
+begin
+ if Order_Main.IsEmpty then
+ Exit;
+
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ѡݼ¼', 'ʾ', 0);
+ Exit;
+ end;
+ isOk := false;
+ frmBatchMdyData := TfrmBatchMdyData.create(self);
+ with frmBatchMdyData do
+ begin
+ fTabCaption := 'ijȵλ';
+ if ShowModal = 1 then
+ begin
+ mlenUnit := Trim(lenunit.Text);
+ isOk := true;
+ end;
+ free;
+ end;
+ if not isOk then
+ exit;
+
+ try
+ Order_Main.DisableControls;
+ ADOQueryCmd.Connection.BeginTrans;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean = True then
+ begin
+
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set lenUnit=' + quotedstr(mlenUnit));
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+ ExecSQL;
+ end;
+
+ end;
+ Next;
+ end;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲɹ', 'ʾϢ');
+ TBRafresh.Click;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲʧܣ', 'ʾϢ', 0);
+ end;
+
+end;
+
+procedure TfrmTradeClothInspList.N8Click(Sender: TObject);
+var
+ isOk: boolean;
+ mtzfs: string;
+ mtzsl, mvalue: double;
+ decimalY: integer;
+begin
+ if Order_Main.IsEmpty then
+ Exit;
+
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ѡݼ¼', 'ʾ', 0);
+ Exit;
+ end;
+ isOk := false;
+ frmBatchMdyData := TfrmBatchMdyData.create(self);
+ with frmBatchMdyData do
+ begin
+ fTabCaption := '';
+ if ShowModal = 1 then
+ begin
+ mtzfs := Trim(tzfs.Text);
+ mtzsl := strTofloatdef(Trim(tzsl.Text), 0);
+ isOk := true;
+ end;
+ free;
+ end;
+ if not isOk then
+ exit;
+
+ with ADOQueryTemp do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add(' select * from Trade_Cloth_Inspect_Rule where RuleID=' + quotedstr(Trim(Order_Main.fieldbyname('mainId').AsString)));
+ Open;
+ if not IsEmpty then
+ begin
+ if fieldByname('decimalY').AsInteger > 0 then
+ decimalY := fieldByname('decimalY').AsInteger
+ else
+ decimalY := 1;
+ end;
+
+ end;
+ try
+ Order_Main.DisableControls;
+ ADOQueryCmd.Connection.BeginTrans;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.FieldByName('SSel').AsBoolean = True then
+ begin
+ if mtzfs = '' then
+ begin
+ mvalue := Order_Main.fieldbyname('Meter').AsFloat + mtzsl;
+ end;
+ if mtzfs = '' then
+ begin
+ mvalue := Order_Main.fieldbyname('Meter').AsFloat - mtzsl;
+ end;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set Meter=' + floatTostr(mvalue));
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set yardage=round(meter/0.9144,' + inttostr(decimalY) + ')');
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set Qty=CASE WHEN QtyUnit=''M'' THEN Meter WHEN QtyUnit=''Y'' THEN Yardage WHEN QtyUnit=''kg'' THEN GrossWeight ELSE 0 END ');
+ sql.Add('where cIId=''' + Trim(Order_Main.fieldbyname('cIId').AsString) + '''');
+ ExecSQL;
+ end;
+ end;
+ Next;
+ end;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲɹ', 'ʾϢ');
+ TBRafresh.Click;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ Order_Main.EnableControls;
+ application.MessageBox('ݲʧܣ', 'ʾϢ', 0);
+ end;
+end;
+
+procedure TfrmTradeClothInspList.RKOrdIDKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ CurrentPage := 1;
+ InitGrid('');
+ end;
+end;
+
+procedure TfrmTradeClothInspList.btnJYBGClick(Sender: TObject);
+var
+ WSql: string;
+begin
+ if Order_Main.IsEmpty then
+ Exit;
+ if Order_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ûѡ', 'ʾ', 0);
+ Exit;
+ end;
+ WSql := '';
+ Order_Main.DisableControls;
+ with Order_Main do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Order_Main.fieldbyname('SSel').AsBoolean then
+ begin
+ if WSql <> '' then
+ begin
+ WSql := WSql + ',' + Trim(Order_Main.fieldbyname('CIID').AsString);
+ end
+ else
+ begin
+ WSql := Trim(Order_Main.fieldbyname('CIID').AsString);
+ end;
+ end;
+ Next;
+ end;
+ end;
+ Order_Main.Locate('SSel', True, []);
+ Order_Main.EnableControls;
+ try
+ frmLabelPrint := TfrmLabelPrint.Create(Application);
+ with frmLabelPrint do
+ begin
+ FLMType := 'TradeInsp';
+ FFiltration1 := WSql;
+ FFiltration2 := WSql;
+ if ShowModal = 1 then
+ begin
+// Self.InitGrid();
+ end;
+ end;
+ finally
+ frmLabelPrint.Free;
+ end;
+
+end;
+
+procedure TfrmTradeClothInspList.Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
+var
+ FValue: string;
+ FBounds: TRect;
+begin
+ FBounds := AViewInfo.Bounds;
+ if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
+ begin
+ ACanvas.FillRect(FBounds);
+ ACanvas.DrawComplexFrame(FBounds, clBlack, clBlack, [bBottom, bLeft, bRight], 1);
+ FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1);
+ InflateRect(FBounds, -3, -2); //Platform specific. May not work on Linux.
+ ACanvas.Font.Color := clBlack;
+ ACanvas.Brush.Style := bsClear;
+ ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop);
+ ADone := True;
+ end;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_TradeClothTotalCXJYOutList.dfm b/T03贸易布匹检验/U_TradeClothTotalCXJYOutList.dfm
new file mode 100644
index 0000000..5f9bf6e
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothTotalCXJYOutList.dfm
@@ -0,0 +1,789 @@
+inherited frmTradeClothTotalCXJYOutList: TfrmTradeClothTotalCXJYOutList
+ Left = 65
+ Top = 98
+ Caption = #26816#39564#20986#24211#21015#34920
+ ClientHeight = 732
+ ClientWidth = 1844
+ Font.Height = -16
+ FormStyle = fsMDIChild
+ Position = poScreenCenter
+ Visible = True
+ ExplicitWidth = 1860
+ ExplicitHeight = 771
+ PixelsPerInch = 96
+ TextHeight = 21
+ object ToolBar1: TToolBar [0]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 1844
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 99
+ Caption = 'ToolBar1'
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 3
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object TBFind: TToolButton
+ Left = 71
+ Top = 0
+ AutoSize = True
+ Caption = #36807#28388
+ ImageIndex = 0
+ Visible = False
+ OnClick = TBFindClick
+ end
+ object btn3: TToolButton
+ Left = 142
+ Top = 0
+ AutoSize = True
+ Caption = #29983#25104#36180#27454
+ ImageIndex = 2
+ end
+ object TBExport: TToolButton
+ Left = 245
+ Top = 0
+ AutoSize = True
+ Caption = #23548#20986
+ ImageIndex = 20
+ OnClick = TBExportClick
+ end
+ object ToolButton1: TToolButton
+ Left = 316
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton1Click
+ end
+ object TBClose: TToolButton
+ Left = 419
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object Panel1: TPanel [1]
+ Left = 0
+ Top = 30
+ Width = 1844
+ Height = 118
+ Align = alTop
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ ParentBackground = False
+ TabOrder = 4
+ ExplicitTop = 27
+ ExplicitWidth = 1597
+ object Label3: TLabel
+ Left = 261
+ Top = 46
+ Width = 32
+ Height = 21
+ Caption = #21697#21517
+ end
+ object Label5: TLabel
+ Left = 23
+ Top = 46
+ Width = 64
+ Height = 21
+ Caption = #20986#24211#21333#21495
+ end
+ object Label8: TLabel
+ Left = 261
+ Top = 83
+ Width = 32
+ Height = 21
+ Caption = #35268#26684
+ end
+ object Label12: TLabel
+ Left = 24
+ Top = 83
+ Width = 64
+ Height = 21
+ Caption = #20986#24211#31867#22411
+ end
+ object Label4: TLabel
+ Left = 458
+ Top = 46
+ Width = 64
+ Height = 21
+ Caption = #26469#33258#21333#20301
+ end
+ object Label9: TLabel
+ Left = 458
+ Top = 83
+ Width = 64
+ Height = 21
+ Caption = #20986#21040#21333#20301
+ end
+ object Label6: TLabel
+ Left = 681
+ Top = 83
+ Width = 80
+ Height = 21
+ Caption = #20986#21040#35745#21010#21333
+ end
+ object Label7: TLabel
+ Left = 681
+ Top = 46
+ Width = 80
+ Height = 21
+ Caption = #26469#33258#35745#21010#21333
+ end
+ object Label1: TLabel
+ Left = 948
+ Top = 46
+ Width = 32
+ Height = 21
+ Caption = #24067#31181
+ end
+ object Label2: TLabel
+ Left = 932
+ Top = 83
+ Width = 48
+ Height = 21
+ Caption = #21152#24037#21035
+ end
+ object C_NAME: TcxTextEdit
+ Tag = 2
+ Left = 302
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 0
+ Width = 150
+ end
+ object BCIONO: TcxTextEdit
+ Tag = 2
+ Left = 93
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 1
+ Width = 150
+ end
+ object C_spec: TcxTextEdit
+ Tag = 2
+ Left = 302
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 2
+ Width = 150
+ end
+ object FromCoName: TcxTextEdit
+ Tag = 2
+ Left = 526
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 3
+ Width = 150
+ end
+ object ToCoName: TcxTextEdit
+ Tag = 2
+ Left = 526
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 4
+ Width = 150
+ end
+ object ToOrdNo: TcxTextEdit
+ Tag = 2
+ Left = 767
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 5
+ Width = 150
+ end
+ object FromOrdNo: TcxTextEdit
+ Tag = 2
+ Left = 767
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 6
+ Width = 150
+ end
+ inline frmFrameDateSel1: TfrmFrameDateSel
+ Left = 2
+ Top = 2
+ Width = 1840
+ Height = 36
+ Align = alTop
+ Color = clWhite
+ ParentBackground = False
+ ParentColor = False
+ TabOrder = 7
+ ExplicitLeft = 2
+ ExplicitTop = 2
+ ExplicitWidth = 1593
+ inherited lbl2: TLabel
+ Width = 16
+ Height = 21
+ ExplicitWidth = 16
+ ExplicitHeight = 21
+ end
+ end
+ object IOType: TcxComboBox
+ Left = 93
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 8
+ Width = 149
+ end
+ object GC_Name: TcxTextEdit
+ Tag = 2
+ Left = 984
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 9
+ Width = 150
+ end
+ object CraftCode: TcxTextEdit
+ Tag = 2
+ Left = 984
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 10
+ Width = 150
+ end
+ end
+ object cxGrid1: TcxGrid [2]
+ Left = 0
+ Top = 178
+ Width = 1408
+ Height = 554
+ Align = alClient
+ PopupMenu = PopupMenu1
+ TabOrder = 2
+ ExplicitLeft = 8
+ ExplicitTop = 184
+ object Tv1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ OnFocusedRecordChanged = Tv1FocusedRecordChanged
+ DataController.DataSource = DataSource1
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <
+ item
+ Kind = skSum
+ Position = spFooter
+ end
+ item
+ Kind = skSum
+ end>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skCount
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = Tv1Column33
+ end
+ item
+ Kind = skSum
+ Column = Tv1Column34
+ end
+ item
+ Kind = skSum
+ Column = Tv1Column35
+ end
+ item
+ Kind = skSum
+ Column = cxgrdbclmnTv1Column1
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ OptionsView.IndicatorWidth = 40
+ object Tv1Column5: TcxGridDBColumn
+ Caption = #36873#25321
+ DataBinding.FieldName = 'SSel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ HeaderAlignmentHorz = taCenter
+ Width = 66
+ end
+ object v1Column6: TcxGridDBColumn
+ Caption = #20986#24211#21333#21495
+ DataBinding.FieldName = 'BCIONO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 87
+ end
+ object v1Column2: TcxGridDBColumn
+ Tag = 2
+ Caption = #20986#24211#26102#38388
+ DataBinding.FieldName = 'IOTime'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxDateEditProperties'
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 92
+ end
+ object v1Column15: TcxGridDBColumn
+ Tag = 2
+ Caption = #25152#23646#31867#22411
+ DataBinding.FieldName = 'SSType'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.DropDownListStyle = lsFixedList
+ Properties.Items.Strings = (
+ #33258#24049
+ #23458#25143)
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 66
+ end
+ object v1Column1: TcxGridDBColumn
+ Caption = #37319#36141#21333#21495
+ DataBinding.FieldName = 'ConNo'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 66
+ end
+ object v1Column14: TcxGridDBColumn
+ Tag = 2
+ Caption = #26469#33258#21333#20301
+ DataBinding.FieldName = 'FromCoName'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxButtonEditProperties'
+ Properties.Alignment.Horz = taLeftJustify
+ Properties.Buttons = <
+ item
+ Default = True
+ Kind = bkEllipsis
+ end>
+ Properties.ReadOnly = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 102
+ end
+ object Tv1Column8: TcxGridDBColumn
+ Caption = #32534#21495
+ DataBinding.FieldName = 'C_Code'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v2Column1: TcxGridDBColumn
+ Tag = 2
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxButtonEditProperties'
+ Properties.Buttons = <
+ item
+ Default = True
+ Kind = bkEllipsis
+ end>
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column17: TcxGridDBColumn
+ Caption = #21697#29260
+ DataBinding.FieldName = 'SXPinPai'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 66
+ end
+ object v1Column20: TcxGridDBColumn
+ Caption = #32534#21495
+ DataBinding.FieldName = 'SPCode'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 66
+ end
+ object v1Column10: TcxGridDBColumn
+ Caption = #25209#21495
+ DataBinding.FieldName = 'BatchNo'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 66
+ end
+ object Tv1Column4: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column9: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_Pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column6: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_ColorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column7: TcxGridDBColumn
+ Caption = #32568#21495
+ DataBinding.FieldName = 'FtyPCId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column18: TcxGridDBColumn
+ Caption = #35745#21010#21333
+ DataBinding.FieldName = 'ToOrdNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 73
+ end
+ object Tv1Column30: TcxGridDBColumn
+ Caption = #21512#21516#21495
+ DataBinding.FieldName = 'fromConNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv1Column35: TcxGridDBColumn
+ Caption = #25277#26816#21305#25968
+ DataBinding.FieldName = 'Piece2'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 104
+ end
+ object Tv1Column33: TcxGridDBColumn
+ Caption = #25277#26816#25968#37327
+ DataBinding.FieldName = 'Qty2'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 100
+ end
+ object Tv1Column34: TcxGridDBColumn
+ Caption = #21407#25968#37327
+ DataBinding.FieldName = 'Qty1'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 94
+ end
+ object cxgrdbclmnTv1Column1: TcxGridDBColumn
+ Caption = #25968#37327#24046
+ DataBinding.FieldName = 'Qty3'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object cxgrdbclmnTv1Column2: TcxGridDBColumn
+ Caption = #25968#37327#21333#20301
+ DataBinding.FieldName = 'QtyUnit'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 113
+ end
+ end
+ object cxGrid1Level1: TcxGridLevel
+ GridView = Tv1
+ end
+ end
+ inherited loadProcess: TPanel
+ Left = 777
+ Top = 447
+ ExplicitLeft = 777
+ ExplicitTop = 447
+ end
+ inherited cxProgressBar2: TcxProgressBar
+ Left = 777
+ Top = 396
+ ExplicitLeft = 777
+ ExplicitTop = 396
+ ExplicitWidth = 169
+ ExplicitHeight = 29
+ Width = 169
+ end
+ object cxTabControl1: TcxTabControl [5]
+ Left = 0
+ Top = 148
+ Width = 1844
+ Height = 30
+ Align = alTop
+ TabOrder = 5
+ Visible = False
+ Properties.CustomButtons.Buttons = <>
+ Properties.Style = 9
+ Properties.TabIndex = 0
+ Properties.Tabs.Strings = (
+ ' '#24453#26816#39564' '
+ #13' '#24050#26816#39564' '
+ #13' '#20840#37096' ')
+ OnChange = cxTabControl1Change
+ ExplicitTop = 145
+ ExplicitWidth = 1597
+ ClientRectRight = 0
+ ClientRectTop = 0
+ end
+ object pnl1: TPanel [6]
+ Left = 1408
+ Top = 178
+ Width = 436
+ Height = 554
+ Align = alRight
+ Caption = 'pnl1'
+ TabOrder = 6
+ object cxGrid2: TcxGrid
+ Left = 1
+ Top = 31
+ Width = 434
+ Height = 522
+ Align = alClient
+ PopupMenu = PopupMenu1
+ TabOrder = 0
+ ExplicitLeft = 1286
+ ExplicitTop = 170
+ ExplicitWidth = 564
+ ExplicitHeight = 554
+ object TV2: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DS_2
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <
+ item
+ Kind = skSum
+ Position = spFooter
+ end
+ item
+ Kind = skSum
+ end>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ Column = cxgrdbclmnTV_2Column1
+ end
+ item
+ Kind = skSum
+ Column = cxgrdbclmnTV_2Column2
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ OptionsView.IndicatorWidth = 40
+ object cxgrdbclmn1: TcxGridDBColumn
+ Caption = #36873#25321
+ DataBinding.FieldName = 'SSel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ HeaderAlignmentHorz = taCenter
+ Width = 66
+ end
+ object cxgrdbclmnTV2Column1: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo1'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ end
+ object cxgrdbclmnTV_2Column2: TcxGridDBColumn
+ Caption = #24403#21069#25968#37327
+ DataBinding.FieldName = 'Qty1'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 83
+ end
+ object cxgrdbclmnTV_2Column1: TcxGridDBColumn
+ Caption = #21407#25968#37327
+ DataBinding.FieldName = 'Qty2'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 80
+ end
+ end
+ object cxGridLevel1: TcxGridLevel
+ GridView = TV2
+ end
+ end
+ object tlb1: TToolBar
+ Tag = 1
+ Left = 1
+ Top = 1
+ Width = 434
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 99
+ Caption = 'ToolBar1'
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 1
+ object btn1: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #20462#25913#31859#25968
+ ImageIndex = 3
+ OnClick = btn1Click
+ end
+ object btn2: TToolButton
+ Left = 103
+ Top = 0
+ AutoSize = True
+ Caption = #20462#25913#37325#37327
+ ImageIndex = 4
+ OnClick = btn2Click
+ end
+ end
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 260
+ Top = 246
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 92
+ Top = 230
+ end
+ object ADOQueryCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 560
+ Top = 300
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 637
+ Top = 529
+ end
+ object ADOQueryTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 707
+ Top = 306
+ end
+ object DataSource1: TDataSource
+ DataSet = CDS_Main
+ Left = 824
+ Top = 546
+ end
+ object GPM_1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 545
+ Top = 534
+ end
+ object CDS_Main: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 748
+ Top = 535
+ end
+ object PopupMenu1: TPopupMenu
+ Left = 524
+ Top = 412
+ object N1: TMenuItem
+ Caption = #20840#36873
+ OnClick = N1Click
+ end
+ object N2: TMenuItem
+ Caption = #20840#24323
+ OnClick = N2Click
+ end
+ object N3: TMenuItem
+ Caption = #22797#21046
+ OnClick = N3Click
+ end
+ end
+ object ADOQueryPrint: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 655
+ Top = 444
+ end
+ object DS_2: TDataSource
+ DataSet = CDS_2
+ Left = 832
+ Top = 626
+ end
+ object CDS_2: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 756
+ Top = 615
+ end
+ object ADO_2: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 645
+ Top = 609
+ end
+ object GPM_2: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 553
+ Top = 614
+ end
+end
diff --git a/T03贸易布匹检验/U_TradeClothTotalCXJYOutList.pas b/T03贸易布匹检验/U_TradeClothTotalCXJYOutList.pas
new file mode 100644
index 0000000..ee5168c
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothTotalCXJYOutList.pas
@@ -0,0 +1,518 @@
+unit U_TradeClothTotalCXJYOutList;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Vcl.Printers, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
+ cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
+ cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
+ cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
+ ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
+ cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset,
+ RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit, cxPC,
+ cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges,
+ dxBarBuiltInMenu, U_BaseList, Clipbrd, dxScrollbarAnnotations, FrameDateSel,
+ cxContainer, cxMaskEdit, cxProgressBar, cxButtons, dxSkinsCore,
+ dxSkinsDefaultPainters;
+
+type
+ TfrmTradeClothTotalCXJYOutList = class(TfrmBaseList)
+ ToolBar1: TToolBar;
+ TBRafresh: TToolButton;
+ TBFind: TToolButton;
+ TBExport: TToolButton;
+ TBClose: TToolButton;
+ Panel1: TPanel;
+ ADOQueryCmd: TADOQuery;
+ ADOQueryMain: TADOQuery;
+ ADOQueryTemp: TADOQuery;
+ DataSource1: TDataSource;
+ GPM_1: TcxGridPopupMenu;
+ CDS_Main: TClientDataSet;
+ PopupMenu1: TPopupMenu;
+ N1: TMenuItem;
+ N2: TMenuItem;
+ cxGrid1: TcxGrid;
+ Tv1: TcxGridDBTableView;
+ v1Column6: TcxGridDBColumn;
+ v1Column2: TcxGridDBColumn;
+ v1Column15: TcxGridDBColumn;
+ v1Column14: TcxGridDBColumn;
+ v2Column1: TcxGridDBColumn;
+ cxGrid1Level1: TcxGridLevel;
+ Label3: TLabel;
+ Label5: TLabel;
+ Label8: TLabel;
+ Label12: TLabel;
+ C_NAME: TcxTextEdit;
+ BCIONO: TcxTextEdit;
+ C_spec: TcxTextEdit;
+ v1Column20: TcxGridDBColumn;
+ v1Column1: TcxGridDBColumn;
+ v1Column10: TcxGridDBColumn;
+ v1Column17: TcxGridDBColumn;
+ v1Column18: TcxGridDBColumn;
+ ToolButton1: TToolButton;
+ Tv1Column4: TcxGridDBColumn;
+ Tv1Column5: TcxGridDBColumn;
+ Tv1Column6: TcxGridDBColumn;
+ Tv1Column7: TcxGridDBColumn;
+ Tv1Column8: TcxGridDBColumn;
+ Tv1Column9: TcxGridDBColumn;
+ N3: TMenuItem;
+ Label4: TLabel;
+ Label9: TLabel;
+ Label6: TLabel;
+ Label7: TLabel;
+ FromCoName: TcxTextEdit;
+ ToCoName: TcxTextEdit;
+ ToOrdNo: TcxTextEdit;
+ FromOrdNo: TcxTextEdit;
+ frmFrameDateSel1: TfrmFrameDateSel;
+ IOType: TcxComboBox;
+ Label1: TLabel;
+ Label2: TLabel;
+ GC_Name: TcxTextEdit;
+ CraftCode: TcxTextEdit;
+ Tv1Column30: TcxGridDBColumn;
+ ADOQueryPrint: TADOQuery;
+ cxTabControl1: TcxTabControl;
+ Tv1Column33: TcxGridDBColumn;
+ Tv1Column34: TcxGridDBColumn;
+ Tv1Column35: TcxGridDBColumn;
+ cxgrdbclmnTv1Column1: TcxGridDBColumn;
+ DS_2: TDataSource;
+ CDS_2: TClientDataSet;
+ ADO_2: TADOQuery;
+ GPM_2: TcxGridPopupMenu;
+ pnl1: TPanel;
+ cxGrid2: TcxGrid;
+ TV2: TcxGridDBTableView;
+ cxgrdbclmn1: TcxGridDBColumn;
+ cxgrdbclmnTV2Column1: TcxGridDBColumn;
+ cxgrdbclmnTV_2Column2: TcxGridDBColumn;
+ cxgrdbclmnTV_2Column1: TcxGridDBColumn;
+ cxGridLevel1: TcxGridLevel;
+ tlb1: TToolBar;
+ btn1: TToolButton;
+ btn2: TToolButton;
+ cxgrdbclmnTv1Column2: TcxGridDBColumn;
+ btn3: TToolButton;
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormCreate(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure ConNoMChange(Sender: TObject);
+ procedure TBCloseClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure TBExportClick(Sender: TObject);
+ procedure TBFindClick(Sender: TObject);
+ procedure SPNameChange(Sender: TObject);
+ procedure BCIOIDChange(Sender: TObject);
+ procedure N1Click(Sender: TObject);
+ procedure N2Click(Sender: TObject);
+ procedure C_specChange(Sender: TObject);
+ procedure cxTabControl1Change(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure N3Click(Sender: TObject);
+ procedure BCIOIDPropertiesChange(Sender: TObject);
+ procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
+ procedure btn1Click(Sender: TObject);
+ procedure btn2Click(Sender: TObject);
+ private
+ canshu1, FstkName, canshu3: string;
+ procedure InitGrid();
+ { Private declarations }
+ public
+ FFSPID, FC_Degree, FC_Pack: string;
+ { Public declarations }
+ end;
+
+//var
+ // frmPBOutList: TfrmPBOutList;
+
+implementation
+
+uses
+ U_DataLink, U_RTFun, U_LabelPrint, U_BatchMdyData;
+
+{$R *.dfm}
+
+procedure TfrmTradeClothTotalCXJYOutList.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ Action := caFree;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.FormCreate(Sender: TObject);
+begin
+ inherited;
+ canshu1 := Trim(self.fParameters1);
+ FSTKName := Trim(self.fParameters2);
+ canshu3 := Trim(self.fParameters3);
+ frmFrameDateSel1.EndDate.Date := SGetServerDate(ADOQueryTemp);
+ frmFrameDateSel1.BegDate.Date := frmFrameDateSel1.EndDate.Date - 90;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.InitGrid();
+var
+ SqlStr: string;
+begin
+
+ SqlStr := ' exec P_Trade_Insp_Recheck_View ';
+
+ SqlStr := SqlStr + ' @BegDate=''' + Trim(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.BegDate.Date)) + '''';
+ SqlStr := SqlStr + ' ,@Enddate=''' + Trim(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.enddate.Date + 1)) + '''';
+
+
+// case cxTabControl1.TabIndex of
+// 0:
+// begin
+// SqlStr := SqlStr + ' and NOT exists(select ciid from Trade_Cloth_Inspect X where X.BCIOID=A.BCIOID) ';
+// end;
+// 1:
+// begin
+// SqlStr := SqlStr + ' and exists(select ciid from Trade_Cloth_Inspect X where X.BCIOID=A.BCIOID) ';
+// end;
+// end;
+
+
+ InitCDSData(ADOQueryMain, CDS_Main, Tv1, SqlStr, SGetFilters(Panel1, 1, 2), 'BCIOID');
+
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.TBRafreshClick(Sender: TObject);
+begin
+ frmFrameDateSel1.BegDate.SetFocus;
+ InitGrid();
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.ToolButton1Click(Sender: TObject);
+begin
+ WriteCxGrid(trim(Self.Caption), Tv1, 'óֿܲ');
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
+var
+ SqlStr: string;
+begin
+
+ SqlStr := ' select A.BCIOID,A.MainID,A.CIID,A.GrossWeight,A.Tare,A.NetWeight,A.Meter,A.Yardage,PieceNo1=A.PieceNo,Qty1=A.Qty,Qty2= B.Qty ';
+
+ SqlStr := SqlStr + ' from Trade_Cloth_Inspect A left join Trade_Cloth_Inspect_recheck B on A.CIID=B.CIID ';
+ SqlStr := SqlStr + ' where A.BCIOID=''' + Trim(CDS_Main.FieldByName('BCIOID').AsString) + '''';
+
+ InitCDSData(ADO_2, CDS_2, Tv2, SqlStr, '', '');
+
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.BCIOIDPropertiesChange(Sender: TObject);
+begin
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.btn1Click(Sender: TObject);
+var
+ isOk: boolean;
+ mtzfs: string;
+ mtzsl, mvalue: double;
+ decimalY: integer;
+begin
+ if CDS_2.IsEmpty then
+ Exit;
+
+ if CDS_2.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ѡݼ¼', 'ʾ', 0);
+ Exit;
+ end;
+
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from BS_Cloth_IO A ');
+
+ sql.Add(' where EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + quotedstr(SelCDSKey(CDS_2, ['cIId'])[0]) + ','','') X where X.RTValue=A.StkId ) ');
+ Open;
+
+ if not IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ exit;
+ end;
+ end;
+
+ isOk := false;
+ frmBatchMdyData := TfrmBatchMdyData.create(self);
+ with frmBatchMdyData do
+ begin
+ fTabCaption := '';
+ if ShowModal = 1 then
+ begin
+ mtzfs := Trim(tzfs.Text);
+ mtzsl := strTofloatdef(Trim(tzsl.Text), 0);
+ isOk := true;
+ end;
+ free;
+ end;
+ if not isOk then
+ exit;
+
+ with ADOQueryTemp do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add(' select * from Trade_Cloth_Inspect_Rule where RuleID=' + quotedstr(Trim(CDS_2.fieldbyname('mainId').AsString)));
+ Open;
+ if not IsEmpty then
+ begin
+ if fieldByname('decimalY').AsInteger > 0 then
+ decimalY := fieldByname('decimalY').AsInteger
+ else
+ decimalY := 1;
+ end;
+
+ end;
+ try
+ CDS_2.DisableControls;
+ ADOQueryCmd.Connection.BeginTrans;
+ with CDS_2 do
+ begin
+ First;
+ while not Eof do
+ begin
+ if CDS_2.FieldByName('SSel').AsBoolean = True then
+ begin
+ if mtzfs = '' then
+ begin
+ mvalue := CDS_2.fieldbyname('Meter').AsFloat + mtzsl;
+ end;
+ if mtzfs = '' then
+ begin
+ mvalue := CDS_2.fieldbyname('Meter').AsFloat - mtzsl;
+ end;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set Meter=' + floatTostr(mvalue));
+ sql.Add('where cIId=''' + Trim(CDS_2.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set yardage=round(meter/0.9144,' + inttostr(decimalY) + ')');
+ sql.Add('where cIId=''' + Trim(CDS_2.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set Qty=CASE WHEN QtyUnit=''M'' THEN Meter WHEN QtyUnit=''Y'' THEN Yardage WHEN QtyUnit=''kg'' THEN GrossWeight ELSE 0 END ');
+ sql.Add('where cIId=''' + Trim(CDS_2.fieldbyname('cIId').AsString) + '''');
+ ExecSQL;
+ end;
+ end;
+ Next;
+ end;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ CDS_2.EnableControls;
+ application.MessageBox('ݲɹ', 'ʾϢ');
+ TBRafresh.Click;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ CDS_2.EnableControls;
+ application.MessageBox('ݲʧܣ', 'ʾϢ', 0);
+ end;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.btn2Click(Sender: TObject);
+var
+ isOk: boolean;
+ mtzfs: string;
+ mtzsl, mvalue: double;
+ decimalY: integer;
+ mfield: string;
+begin
+ if CDS_2.IsEmpty then
+ Exit;
+
+ if CDS_2.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ѡݼ¼', 'ʾ', 0);
+ Exit;
+ end;
+ with ADOQueryBaseTemp do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('select * from BS_Cloth_IO A ');
+
+ sql.Add(' where EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + quotedstr(SelCDSKey(CDS_2, ['cIId'])[0]) + ','','') X where X.RTValue=A.StkId ) ');
+ Open;
+
+ if not IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ exit;
+ end;
+ end;
+
+ isOk := false;
+ frmBatchMdyData := TfrmBatchMdyData.create(self);
+ with frmBatchMdyData do
+ begin
+ fTabCaption := '';
+ if ShowModal = 1 then
+ begin
+ mtzfs := Trim(tzfs1.Text);
+ if Trim(tzfield.Text) = 'ë' then
+ begin
+ mfield := 'grossWeight';
+ end
+ else if Trim(tzfield.Text) = '' then
+ begin
+ mfield := 'netWeight';
+ end
+ else if Trim(tzfield.Text) = 'Ƥ' then
+ begin
+ mfield := 'tare';
+ end
+ else
+ begin
+ free;
+ exit;
+ end;
+ mtzsl := strTofloatdef(Trim(tzsl1.Text), 0);
+ isOk := true;
+ end;
+ free;
+ end;
+ if not isOk then
+ exit;
+
+ try
+ CDS_2.DisableControls;
+ ADOQueryCmd.Connection.BeginTrans;
+ with CDS_2 do
+ begin
+ First;
+ while not Eof do
+ begin
+ if CDS_2.FieldByName('SSel').AsBoolean = True then
+ begin
+ if mtzfs = '' then
+ begin
+ mvalue := CDS_2.fieldbyname(mfield).AsFloat + mtzsl;
+ end;
+ if mtzfs = '' then
+ begin
+ mvalue := CDS_2.fieldbyname(mfield).AsFloat - mtzsl;
+ end;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set ' + mfield + '=' + floatTostr(mvalue));
+ sql.Add('where cIId=''' + Trim(CDS_2.fieldbyname('cIId').AsString) + '''');
+
+ sql.Add('Update Trade_Cloth_Inspect Set Qty=CASE WHEN QtyUnit=''M'' THEN Meter WHEN QtyUnit=''Y'' THEN Yardage WHEN QtyUnit=''kg'' THEN GrossWeight ELSE 0 END ');
+ sql.Add('where cIId=''' + Trim(CDS_2.fieldbyname('cIId').AsString) + '''');
+ ExecSQL;
+ end;
+
+ end;
+ Next;
+ end;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ CDS_2.EnableControls;
+ application.MessageBox('ݲɹ', 'ʾϢ');
+ TBRafresh.Click;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ CDS_2.EnableControls;
+ application.MessageBox('ݲʧܣ', 'ʾϢ', 0);
+ end;
+
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.ConNoMChange(Sender: TObject);
+begin
+ if ADOQueryMain.Active then
+ begin
+ SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
+ end;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.TBCloseClick(Sender: TObject);
+begin
+
+ Close;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.FormShow(Sender: TObject);
+var
+ mSql: string;
+begin
+ inherited;
+ mSql := 'select distinct name=A.IOType from BS_Cloth_IO A where IOFlag='''' and isnull(STKNAME,'''')=''' + Trim(FSTKNAME) + ''' ';
+ SInitTcxComBoxBySql(ADOQueryTemp, IOType, false, mSql);
+ ReadCxGrid(trim(Self.Caption), Tv1, 'óֿܲ');
+ InitGrid();
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.TBExportClick(Sender: TObject);
+begin
+ if ADOQueryMain.IsEmpty then
+ exit;
+ TcxGridToExcel(FstkName + 'б', cxGrid1);
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.TBFindClick(Sender: TObject);
+begin
+ if ADOQueryMain.Active then
+ begin
+ SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
+ SCreateCDS(ADOQueryMain, CDS_Main);
+ SInitCDSData(ADOQueryMain, CDS_Main);
+ end;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.SPNameChange(Sender: TObject);
+begin
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.BCIOIDChange(Sender: TObject);
+begin
+ if Length(Trim(BCIOno.Text)) < 4 then
+ begin
+ if Trim(BCIOno.Text) <> '' then
+ Exit;
+ end;
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.N1Click(Sender: TObject);
+begin
+ SelOKNo(CDS_Main, True);
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.N2Click(Sender: TObject);
+begin
+ SelOKNo(CDS_Main, False);
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.N3Click(Sender: TObject);
+begin
+ Clipboard.SetTextBuf(PChar(Trim(CDS_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.C_specChange(Sender: TObject);
+begin
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalCXJYOutList.cxTabControl1Change(Sender: TObject);
+begin
+ InitGrid();
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_TradeClothTotalOutSel.dfm b/T03贸易布匹检验/U_TradeClothTotalOutSel.dfm
new file mode 100644
index 0000000..39909f2
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothTotalOutSel.dfm
@@ -0,0 +1,810 @@
+inherited frmTradeClothTotalOutSel: TfrmTradeClothTotalOutSel
+ Left = 65
+ Top = 98
+ Caption = #36152#26131#24067#21305#20986#24211#21015#34920
+ ClientHeight = 564
+ ClientWidth = 1597
+ Font.Charset = ANSI_CHARSET
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Position = poScreenCenter
+ OnClose = FormClose
+ ExplicitWidth = 1613
+ ExplicitHeight = 603
+ PixelsPerInch = 96
+ TextHeight = 21
+ object ToolBar1: TToolBar [0]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 1597
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 99
+ Caption = 'ToolBar1'
+ Color = clBtnFace
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ParentColor = True
+ ShowCaptions = True
+ TabOrder = 0
+ object TBRafresh: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = TBRafreshClick
+ end
+ object TBFind: TToolButton
+ Left = 71
+ Top = 0
+ AutoSize = True
+ Caption = #36807#28388
+ ImageIndex = 0
+ Visible = False
+ OnClick = TBFindClick
+ end
+ object btnOK: TToolButton
+ Left = 142
+ Top = 0
+ AutoSize = True
+ Caption = #30830#35748
+ ImageIndex = 12
+ OnClick = btnOKClick
+ end
+ object ToolButton1: TToolButton
+ Left = 213
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton1Click
+ end
+ object TBClose: TToolButton
+ Left = 316
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object Panel1: TPanel [1]
+ Left = 0
+ Top = 30
+ Width = 1597
+ Height = 118
+ Align = alTop
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ ParentBackground = False
+ ParentColor = True
+ TabOrder = 1
+ object Label3: TLabel
+ Left = 261
+ Top = 46
+ Width = 32
+ Height = 21
+ Caption = #21697#21517
+ end
+ object Label5: TLabel
+ Left = 23
+ Top = 46
+ Width = 64
+ Height = 21
+ Caption = #20986#24211#21333#21495
+ end
+ object Label8: TLabel
+ Left = 261
+ Top = 83
+ Width = 32
+ Height = 21
+ Caption = #35268#26684
+ end
+ object Label12: TLabel
+ Left = 24
+ Top = 83
+ Width = 64
+ Height = 21
+ Caption = #20986#24211#31867#22411
+ end
+ object Label4: TLabel
+ Left = 458
+ Top = 46
+ Width = 64
+ Height = 21
+ Caption = #26469#33258#21333#20301
+ end
+ object Label9: TLabel
+ Left = 458
+ Top = 83
+ Width = 64
+ Height = 21
+ Caption = #20986#21040#21333#20301
+ end
+ object Label6: TLabel
+ Left = 681
+ Top = 83
+ Width = 80
+ Height = 21
+ Caption = #20986#21040#35745#21010#21333
+ end
+ object Label7: TLabel
+ Left = 681
+ Top = 46
+ Width = 80
+ Height = 21
+ Caption = #26469#33258#35745#21010#21333
+ end
+ object C_NAME: TcxTextEdit
+ Tag = 2
+ Left = 302
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 0
+ Width = 150
+ end
+ object BCIONO: TcxTextEdit
+ Tag = 2
+ Left = 93
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 1
+ Width = 150
+ end
+ object C_spec: TcxTextEdit
+ Tag = 2
+ Left = 302
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 2
+ Width = 150
+ end
+ object FromCoName: TcxTextEdit
+ Tag = 2
+ Left = 526
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 3
+ Width = 150
+ end
+ object ToCoName: TcxTextEdit
+ Tag = 2
+ Left = 526
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 4
+ Width = 150
+ end
+ object ToOrdNo: TcxTextEdit
+ Tag = 2
+ Left = 767
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 5
+ Width = 150
+ end
+ object FromOrdNo: TcxTextEdit
+ Tag = 2
+ Left = 767
+ Top = 40
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 6
+ Width = 150
+ end
+ inline frmFrameDateSel1: TfrmFrameDateSel
+ Left = 2
+ Top = 2
+ Width = 1593
+ Height = 36
+ Align = alTop
+ Color = clBtnFace
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentBackground = False
+ ParentColor = True
+ ParentFont = True
+ TabOrder = 7
+ ExplicitLeft = 2
+ ExplicitTop = 2
+ ExplicitWidth = 1593
+ inherited lbl2: TLabel
+ Width = 16
+ Height = 21
+ ExplicitWidth = 16
+ ExplicitHeight = 21
+ end
+ inherited cxButton2: TcxButton
+ Left = 611
+ ExplicitLeft = 611
+ end
+ end
+ object IOType: TcxComboBox
+ Left = 93
+ Top = 77
+ Properties.OnChange = BCIOIDPropertiesChange
+ TabOrder = 8
+ Width = 149
+ end
+ end
+ object cxGrid1: TcxGrid [2]
+ Left = 0
+ Top = 148
+ Width = 1597
+ Height = 416
+ Align = alClient
+ PopupMenu = PopupMenu1
+ TabOrder = 2
+ object Tv1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <
+ item
+ Kind = skSum
+ Position = spFooter
+ Column = v1Column19
+ end
+ item
+ Kind = skSum
+ Column = v1Column19
+ end>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skCount
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = v2Column6
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = v1Column19
+ end
+ item
+ Kind = skSum
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ OptionsView.IndicatorWidth = 40
+ object v1Column5: TcxGridDBColumn
+ Caption = #36710#38388
+ DataBinding.FieldName = 'Workshop'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column6: TcxGridDBColumn
+ Caption = #20986#24211#21333#21495
+ DataBinding.FieldName = 'BCIONO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column2: TcxGridDBColumn
+ Tag = 2
+ Caption = #20986#24211#26102#38388
+ DataBinding.FieldName = 'IOTime'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxDateEditProperties'
+ Properties.SaveTime = False
+ Properties.ShowTime = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column4: TcxGridDBColumn
+ Tag = 2
+ Caption = #20986#24211#31867#22411
+ DataBinding.FieldName = 'IOType'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.DropDownListStyle = lsFixedList
+ Properties.Items.Strings = (
+ #21152#24037#20986#24211
+ #24179#31227#20986#24211
+ #36864#36135)
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column15: TcxGridDBColumn
+ Tag = 2
+ Caption = #25152#23646#31867#22411
+ DataBinding.FieldName = 'SSType'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxComboBoxProperties'
+ Properties.DropDownListStyle = lsFixedList
+ Properties.Items.Strings = (
+ #33258#24049
+ #23458#25143)
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 111
+ end
+ object v1Column1: TcxGridDBColumn
+ Caption = #37319#36141#21333#21495
+ DataBinding.FieldName = 'ConNo'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 111
+ end
+ object v1Column14: TcxGridDBColumn
+ Tag = 2
+ Caption = #26469#33258#21333#20301
+ DataBinding.FieldName = 'FromCoName'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxButtonEditProperties'
+ Properties.Alignment.Horz = taLeftJustify
+ Properties.Buttons = <
+ item
+ Default = True
+ Kind = bkEllipsis
+ end>
+ Properties.ReadOnly = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column13: TcxGridDBColumn
+ Caption = #38376#24133
+ DataBinding.FieldName = 'C_Width'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column16: TcxGridDBColumn
+ Caption = #20811#37325
+ DataBinding.FieldName = 'C_GramWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column17: TcxGridDBColumn
+ Caption = #21697#29260
+ DataBinding.FieldName = 'SXPinPai'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 111
+ end
+ object v2Column1: TcxGridDBColumn
+ Tag = 2
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxButtonEditProperties'
+ Properties.Buttons = <
+ item
+ Default = True
+ Kind = bkEllipsis
+ end>
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column20: TcxGridDBColumn
+ Caption = #32534#21495
+ DataBinding.FieldName = 'SPCode'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 111
+ end
+ object v1Column8: TcxGridDBColumn
+ Tag = 2
+ Caption = #35268#26684
+ DataBinding.FieldName = 'C_Spec'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ HeaderGlyphAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column10: TcxGridDBColumn
+ Caption = #25209#21495
+ DataBinding.FieldName = 'BatchNo'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ VisibleForCustomization = False
+ Width = 111
+ end
+ object Tv1Column6: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_ColorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 111
+ end
+ object Tv1Column7: TcxGridDBColumn
+ Caption = #32568#21495
+ DataBinding.FieldName = 'FtyPCId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 111
+ end
+ object v1Column18: TcxGridDBColumn
+ Caption = #20986#21040#35745#21010#21333
+ DataBinding.FieldName = 'ToOrdNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column1: TcxGridDBColumn
+ Caption = #35745#21010#21333#21495
+ DataBinding.FieldName = 'FromOrdNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column18: TcxGridDBColumn
+ Caption = #20986#21040#21333#20301
+ DataBinding.FieldName = 'ToCoName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column19: TcxGridDBColumn
+ Caption = #23384#25918#21333#20301
+ DataBinding.FieldName = 'StkCoName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column19: TcxGridDBColumn
+ Caption = #21305#25968
+ DataBinding.FieldName = 'Piece'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v2Column6: TcxGridDBColumn
+ Tag = 2
+ Caption = #25968#37327
+ DataBinding.FieldName = 'Qty'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column3: TcxGridDBColumn
+ Tag = 2
+ Caption = #21333#20301
+ DataBinding.FieldName = 'QtyUnit'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column8: TcxGridDBColumn
+ Caption = #32534#21495
+ DataBinding.FieldName = 'C_Code'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 111
+ end
+ object Tv1Column2: TcxGridDBColumn
+ Caption = #21305#37325
+ DataBinding.FieldName = 'PieceWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column4: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column3: TcxGridDBColumn
+ Caption = #33394#21035
+ DataBinding.FieldName = 'C_ColorDepth'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column9: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_Pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column30: TcxGridDBColumn
+ Caption = #21512#21516#21495
+ DataBinding.FieldName = 'fromConNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 91
+ end
+ object Tv1Column31: TcxGridDBColumn
+ Caption = #20986#21040#21512#21516#21495
+ DataBinding.FieldName = 'ToConNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 110
+ end
+ object Tv1Column10: TcxGridDBColumn
+ Caption = #25104#20998
+ DataBinding.FieldName = 'C_Composition'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column11: TcxGridDBColumn
+ Caption = #27454#21495
+ DataBinding.FieldName = 'C_StyleNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column21: TcxGridDBColumn
+ Caption = #33521#25991#39068#33394
+ DataBinding.FieldName = 'C_EColor'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 111
+ end
+ object Tv1Column22: TcxGridDBColumn
+ Caption = #31867#22411
+ DataBinding.FieldName = 'C_Degree'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column13: TcxGridDBColumn
+ Caption = #25209#21495
+ DataBinding.FieldName = 'BatchNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column12: TcxGridDBColumn
+ Caption = #38468#20214
+ DataBinding.FieldName = 'FJFlag'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object v1Column12: TcxGridDBColumn
+ Tag = 2
+ Caption = #22791#27880
+ DataBinding.FieldName = 'Note'
+ DataBinding.IsNullValueType = True
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column14: TcxGridDBColumn
+ Caption = #30331#35760#20154
+ DataBinding.FieldName = 'Filler'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column15: TcxGridDBColumn
+ Caption = #30331#35760#26102#38388
+ DataBinding.FieldName = 'Filltime'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column20: TcxGridDBColumn
+ Caption = #33521#25991#21697#21517
+ DataBinding.FieldName = 'C_EName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 111
+ end
+ object Tv1Column16: TcxGridDBColumn
+ Caption = #20462#25913#20154
+ DataBinding.FieldName = 'Editer'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column17: TcxGridDBColumn
+ Caption = #20462#25913#26102#38388
+ DataBinding.FieldName = 'Edittime'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column23: TcxGridDBColumn
+ Caption = #22383#24067#20379#24212#21830
+ DataBinding.FieldName = 'GCFtyName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column32: TcxGridDBColumn
+ Caption = #35760#24405#21495
+ DataBinding.FieldName = 'BCIOID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 137
+ end
+ object Tv1Column24: TcxGridDBColumn
+ Caption = #21152#24037#21035
+ DataBinding.FieldName = 'CraftCode'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column25: TcxGridDBColumn
+ Caption = #24067#31181
+ DataBinding.FieldName = 'GC_Name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column26: TcxGridDBColumn
+ Caption = #21518#21152#24037#33521#25991
+ DataBinding.FieldName = 'CraftEName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column27: TcxGridDBColumn
+ Caption = #21518#21152#24037#20013#25991
+ DataBinding.FieldName = 'CraftName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 111
+ end
+ object Tv1Column33: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'GrossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 77
+ end
+ object Tv1Column34: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 82
+ end
+ object Tv1Column35: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 68
+ end
+ end
+ object cxGrid1Level1: TcxGridLevel
+ GridView = Tv1
+ end
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 260
+ Top = 246
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 92
+ Top = 230
+ end
+ object ADOQueryCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 527
+ Top = 233
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 821
+ Top = 329
+ end
+ object ADOQueryTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 523
+ Top = 314
+ end
+ object DataSource1: TDataSource
+ DataSet = CDS_Main
+ Left = 792
+ Top = 234
+ end
+ object GPM_1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 425
+ Top = 254
+ end
+ object CDS_Main: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 626
+ Top = 237
+ end
+ object PopupMenu1: TPopupMenu
+ Left = 524
+ Top = 412
+ object N1: TMenuItem
+ Caption = #20840#36873
+ OnClick = N1Click
+ end
+ object N2: TMenuItem
+ Caption = #20840#24323
+ OnClick = N2Click
+ end
+ object N3: TMenuItem
+ Caption = #22797#21046
+ OnClick = N3Click
+ end
+ end
+ object ADOQueryPrint: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 655
+ Top = 444
+ end
+end
diff --git a/T03贸易布匹检验/U_TradeClothTotalOutSel.pas b/T03贸易布匹检验/U_TradeClothTotalOutSel.pas
new file mode 100644
index 0000000..5f859f6
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothTotalOutSel.pas
@@ -0,0 +1,369 @@
+unit U_TradeClothTotalOutSel;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Vcl.Printers, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
+ cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
+ cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
+ cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
+ ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
+ cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset,
+ RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit, cxPC,
+ cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges,
+ dxBarBuiltInMenu, U_Basehelp, Clipbrd, dxScrollbarAnnotations, FrameDateSel,
+ cxContainer, cxMaskEdit, cxProgressBar, cxButtons, U_BaseList,
+ System.ImageList, Vcl.ImgList;
+
+type
+ TfrmTradeClothTotalOutSel = class(TfrmBasehelp)
+ ToolBar1: TToolBar;
+ TBRafresh: TToolButton;
+ TBFind: TToolButton;
+ TBClose: TToolButton;
+ Panel1: TPanel;
+ ADOQueryCmd: TADOQuery;
+ ADOQueryMain: TADOQuery;
+ ADOQueryTemp: TADOQuery;
+ DataSource1: TDataSource;
+ GPM_1: TcxGridPopupMenu;
+ CDS_Main: TClientDataSet;
+ PopupMenu1: TPopupMenu;
+ N1: TMenuItem;
+ N2: TMenuItem;
+ cxGrid1: TcxGrid;
+ Tv1: TcxGridDBTableView;
+ v1Column6: TcxGridDBColumn;
+ v1Column2: TcxGridDBColumn;
+ v1Column4: TcxGridDBColumn;
+ v1Column15: TcxGridDBColumn;
+ v1Column14: TcxGridDBColumn;
+ v2Column1: TcxGridDBColumn;
+ v1Column8: TcxGridDBColumn;
+ v2Column6: TcxGridDBColumn;
+ v1Column3: TcxGridDBColumn;
+ v1Column12: TcxGridDBColumn;
+ cxGrid1Level1: TcxGridLevel;
+ Label3: TLabel;
+ Label5: TLabel;
+ Label8: TLabel;
+ Label12: TLabel;
+ C_NAME: TcxTextEdit;
+ BCIONO: TcxTextEdit;
+ C_spec: TcxTextEdit;
+ v1Column20: TcxGridDBColumn;
+ v1Column1: TcxGridDBColumn;
+ v1Column10: TcxGridDBColumn;
+ v1Column17: TcxGridDBColumn;
+ v1Column5: TcxGridDBColumn;
+ v1Column13: TcxGridDBColumn;
+ v1Column16: TcxGridDBColumn;
+ v1Column18: TcxGridDBColumn;
+ v1Column19: TcxGridDBColumn;
+ Tv1Column2: TcxGridDBColumn;
+ ToolButton1: TToolButton;
+ Tv1Column3: TcxGridDBColumn;
+ Tv1Column4: TcxGridDBColumn;
+ Tv1Column6: TcxGridDBColumn;
+ Tv1Column1: TcxGridDBColumn;
+ Tv1Column7: TcxGridDBColumn;
+ Tv1Column8: TcxGridDBColumn;
+ Tv1Column9: TcxGridDBColumn;
+ Tv1Column10: TcxGridDBColumn;
+ Tv1Column11: TcxGridDBColumn;
+ N3: TMenuItem;
+ Tv1Column12: TcxGridDBColumn;
+ Tv1Column13: TcxGridDBColumn;
+ Tv1Column14: TcxGridDBColumn;
+ Tv1Column15: TcxGridDBColumn;
+ Tv1Column16: TcxGridDBColumn;
+ Tv1Column17: TcxGridDBColumn;
+ Label4: TLabel;
+ Label9: TLabel;
+ Label6: TLabel;
+ Label7: TLabel;
+ FromCoName: TcxTextEdit;
+ ToCoName: TcxTextEdit;
+ ToOrdNo: TcxTextEdit;
+ FromOrdNo: TcxTextEdit;
+ Tv1Column18: TcxGridDBColumn;
+ Tv1Column19: TcxGridDBColumn;
+ Tv1Column20: TcxGridDBColumn;
+ Tv1Column21: TcxGridDBColumn;
+ frmFrameDateSel1: TfrmFrameDateSel;
+ IOType: TcxComboBox;
+ Tv1Column22: TcxGridDBColumn;
+ Tv1Column24: TcxGridDBColumn;
+ Tv1Column25: TcxGridDBColumn;
+ Tv1Column26: TcxGridDBColumn;
+ Tv1Column27: TcxGridDBColumn;
+ Tv1Column23: TcxGridDBColumn;
+ Tv1Column30: TcxGridDBColumn;
+ Tv1Column31: TcxGridDBColumn;
+ Tv1Column32: TcxGridDBColumn;
+ Tv1Column33: TcxGridDBColumn;
+ Tv1Column34: TcxGridDBColumn;
+ ADOQueryPrint: TADOQuery;
+ Tv1Column35: TcxGridDBColumn;
+ btnOK: TToolButton;
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormCreate(Sender: TObject);
+ procedure TBRafreshClick(Sender: TObject);
+ procedure ConNoMChange(Sender: TObject);
+ procedure TBCloseClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure TBExportClick(Sender: TObject);
+ procedure TBFindClick(Sender: TObject);
+ procedure SPNameChange(Sender: TObject);
+ procedure BCIOIDChange(Sender: TObject);
+ procedure N1Click(Sender: TObject);
+ procedure N2Click(Sender: TObject);
+ procedure TBDelClick(Sender: TObject);
+ procedure C_specChange(Sender: TObject);
+ procedure cxTabControl1Change(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure N3Click(Sender: TObject);
+ procedure BCIOIDPropertiesChange(Sender: TObject);
+ procedure btnOKClick(Sender: TObject);
+ private
+ canshu1, canshu2: string;
+ procedure InitGrid();
+ { Private declarations }
+ public
+ FFSPID, FstkName, FC_Degree, FC_Pack: string;
+ { Public declarations }
+ end;
+
+var
+ frmTradeClothTotalOutSel: TfrmTradeClothTotalOutSel;
+
+implementation
+
+uses
+ U_DataLink, U_RTFun;
+
+{$R *.dfm}
+
+procedure TfrmTradeClothTotalOutSel.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ Action := caFree;
+end;
+
+procedure TfrmTradeClothTotalOutSel.FormCreate(Sender: TObject);
+begin
+ inherited;
+ canshu1 := Trim(DParameters1);
+ canshu2 := Trim(DParameters2);
+ frmFrameDateSel1.EndDate.Date := SGetServerDate(ADOQueryTemp);
+ frmFrameDateSel1.BegDate.Date := frmFrameDateSel1.EndDate.Date;
+end;
+
+procedure TfrmTradeClothTotalOutSel.InitGrid();
+var
+ SqlStr: string;
+begin
+
+ SqlStr := ' select A.* ';
+ SqlStr := SqlStr + ',FJFlag=CAST((CASE WHEN (SELECT COUNT(X.FileName) FROM FJ_File X where X.TFType=''óܲ'' and X.WBID=A.BCIOID)>0 THEN 1 ELSE 0 END) AS BIT) ';
+ SqlStr := SqlStr + ' from BS_Cloth_IO A ';
+ SqlStr := SqlStr + ' where A.IOFlag='''' ';
+ SqlStr := SqlStr + ' and A.IOTime>=''' + Trim(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.BegDate.Date)) + '''';
+ SqlStr := SqlStr + ' and A.IOTime<''' + Trim(FormatDateTime('yyyy-MM-dd', frmFrameDateSel1.enddate.Date + 1)) + '''';
+ SqlStr := SqlStr + ' and isnull(stkName,'''')=''óײƥ''';
+
+ SqlStr := SqlStr + ' and IOType = '''' ';
+
+ SqlStr := SqlStr + ' order by IOTime desc';
+
+ InitCDSData(ADOQueryMain, CDS_Main, Tv1, SqlStr, SGetFilters(Panel1, 1, 2), 'BCIOID');
+
+end;
+
+procedure TfrmTradeClothTotalOutSel.TBRafreshClick(Sender: TObject);
+begin
+ frmFrameDateSel1.BegDate.SetFocus;
+ InitGrid();
+end;
+
+procedure TfrmTradeClothTotalOutSel.ToolButton1Click(Sender: TObject);
+begin
+ WriteCxGrid(trim(Self.Caption), Tv1, 'óֿܲ');
+end;
+
+procedure TfrmTradeClothTotalOutSel.BCIOIDPropertiesChange(Sender: TObject);
+begin
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalOutSel.btnOKClick(Sender: TObject);
+begin
+ if CDS_Main.IsEmpty then
+ exit;
+ ModalResult := 1;
+end;
+
+procedure TfrmTradeClothTotalOutSel.ConNoMChange(Sender: TObject);
+begin
+ if ADOQueryMain.Active then
+ begin
+ SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
+ end;
+end;
+
+procedure TfrmTradeClothTotalOutSel.TBCloseClick(Sender: TObject);
+begin
+
+ Close;
+end;
+
+procedure TfrmTradeClothTotalOutSel.FormShow(Sender: TObject);
+var
+ mSql: string;
+begin
+ inherited;
+ mSql := 'select distinct name=A.IOType from BS_Cloth_IO A where IOFlag='''' and isnull(STKNAME,'''')=''' + Trim(FSTKNAME) + ''' ';
+ SInitTcxComBoxBySql(ADOQueryTemp, IOType, false, mSql);
+ ReadCxGrid(trim(Self.Caption), Tv1, 'óֿܲ');
+ InitGrid();
+end;
+
+procedure TfrmTradeClothTotalOutSel.TBExportClick(Sender: TObject);
+begin
+ if ADOQueryMain.IsEmpty then
+ exit;
+ TcxGridToExcel(FstkName + 'б', cxGrid1);
+end;
+
+procedure TfrmTradeClothTotalOutSel.TBFindClick(Sender: TObject);
+begin
+ if ADOQueryMain.Active then
+ begin
+ SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
+ SCreateCDS(ADOQueryMain, CDS_Main);
+ SInitCDSData(ADOQueryMain, CDS_Main);
+ end;
+end;
+
+procedure TfrmTradeClothTotalOutSel.SPNameChange(Sender: TObject);
+begin
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalOutSel.BCIOIDChange(Sender: TObject);
+begin
+ if Length(Trim(BCIOno.Text)) < 4 then
+ begin
+ if Trim(BCIOno.Text) <> '' then
+ Exit;
+ end;
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalOutSel.N1Click(Sender: TObject);
+begin
+ SelOKNo(CDS_Main, True);
+end;
+
+procedure TfrmTradeClothTotalOutSel.N2Click(Sender: TObject);
+begin
+ SelOKNo(CDS_Main, False);
+end;
+
+procedure TfrmTradeClothTotalOutSel.N3Click(Sender: TObject);
+begin
+ Clipboard.SetTextBuf(PChar(Trim(CDS_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
+end;
+
+procedure TfrmTradeClothTotalOutSel.TBDelClick(Sender: TObject);
+var
+ MBCIOID, MBCIONO: string;
+begin
+ if CDS_Main.IsEmpty then
+ Exit;
+
+ if CDS_Main.Locate('SSel', True, []) = False then
+ begin
+ Application.MessageBox('ûѡ!', 'ʾ', 0);
+ Exit;
+ end;
+
+ if Application.MessageBox('ȷҪɾ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ MBCIOID := SelCDSKey(CDS_Main, ['BCIOID'])[0];
+ MBCIONO := SelCDSKey(CDS_Main, ['BCIONO'])[0];
+ with ADOQueryTemp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('exec P_Fin_Flow_Judge ');
+ Sql.Add(' @FFIDS=' + quotedstr(MBCIONO));
+ Sql.Add(',@DCode=' + quotedstr(Trim(DCode)));
+ Sql.Add(',@DName=' + quotedstr(Trim(DName)));
+ Open;
+ end;
+ if ADOQueryTemp.FieldByName('intReturn').AsInteger = -1 then
+ begin
+ Application.MessageBox(PChar(ADOQueryTemp.fieldbyname('ShowMsg').AsString), 'ʾ', 0);
+ exit;
+ end;
+ try
+ ADOQueryCmd.Connection.BeginTrans;
+
+ with ADOQueryCmd do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Trade_BSCloth_Judge ');
+ Sql.Add(' @BCIOIDS=' + quotedstr(MBCIOID));
+ Sql.Add(',@DCode=' + quotedstr(Trim(DCode)));
+ Sql.Add(',@DName=' + quotedstr(Trim(DName)));
+ Open;
+ end;
+ if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
+ raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
+
+ with ADOQueryCmd do
+ begin
+ Close;
+ Sql.Clear;
+ sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule,UDetails) ');
+ sql.Add('values(''óײ'' ');
+ sql.Add(',' + quotedstr(MBCIONO));
+ sql.Add(',''ɾ'' ');
+ sql.Add(',' + quotedstr(DName));
+ sql.Add(',' + quotedstr(trim(self.Caption)));
+ sql.Add(',' + quotedstr(MBCIOID));
+ sql.Add(') ');
+
+ Sql.Add('exec P_BS_Cloth_Out_Del ');
+ Sql.Add(' @BCIOIDS=' + quotedstr(MBCIOID));
+ Sql.Add(',@DCode=' + quotedstr(Trim(DCode)));
+ Sql.Add(',@DName=' + quotedstr(Trim(DName)));
+ Open;
+ end;
+ if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
+ raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
+ ADOQueryCmd.Connection.CommitTrans;
+ InitGrid();
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ InitGrid();
+ end;
+
+end;
+
+procedure TfrmTradeClothTotalOutSel.C_specChange(Sender: TObject);
+begin
+ TBFind.Click;
+end;
+
+procedure TfrmTradeClothTotalOutSel.cxTabControl1Change(Sender: TObject);
+begin
+ InitGrid();
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_TradeClothWaitPack.dfm b/T03贸易布匹检验/U_TradeClothWaitPack.dfm
new file mode 100644
index 0000000..dafcf09
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothWaitPack.dfm
@@ -0,0 +1,342 @@
+inherited frmTradeClothWaitPack: TfrmTradeClothWaitPack
+ Left = 111
+ Top = 85
+ Caption = #35746#21333#36873#25321
+ ClientHeight = 553
+ ClientWidth = 1203
+ Position = poScreenCenter
+ ExplicitWidth = 1219
+ ExplicitHeight = 592
+ PixelsPerInch = 96
+ TextHeight = 17
+ object Panel1: TPanel [0]
+ Left = 0
+ Top = 30
+ Width = 1203
+ Height = 51
+ Align = alTop
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ TabOrder = 3
+ object Label2: TLabel
+ Left = 15
+ Top = 19
+ Width = 36
+ Height = 17
+ Caption = #35746#21333#21495
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlue
+ Font.Height = -12
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label3: TLabel
+ Left = 480
+ Top = 19
+ Width = 24
+ Height = 17
+ Caption = #39068#33394
+ end
+ object Label8: TLabel
+ Left = 247
+ Top = 19
+ Width = 40
+ Height = 17
+ Caption = #23458' '#25143
+ end
+ object OrderNo: TcxTextEdit
+ Tag = 2
+ Left = 83
+ Top = 15
+ ParentFont = True
+ TabOrder = 0
+ Width = 120
+ end
+ object C_Color: TcxTextEdit
+ Tag = 2
+ Left = 510
+ Top = 15
+ ParentFont = True
+ TabOrder = 1
+ Width = 120
+ end
+ object CustName: TcxTextEdit
+ Tag = 2
+ Left = 313
+ Top = 14
+ ParentFont = True
+ TabOrder = 2
+ Width = 120
+ end
+ end
+ object cxGrid1: TcxGrid [1]
+ Left = 0
+ Top = 87
+ Width = 1203
+ Height = 344
+ TabOrder = 1
+ object Tv2: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = v1PRTMF
+ end
+ item
+ Kind = skSum
+ Column = v1PRTKZ
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsBehavior.CopyCaptionsToClipboard = False
+ OptionsBehavior.CopyRecordsToClipboard = False
+ OptionsBehavior.CopyPreviewToClipboard = False
+ OptionsData.Deleting = False
+ OptionsData.Inserting = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object v2SSel: TcxGridDBColumn
+ Caption = #36873#20013
+ DataBinding.FieldName = 'SSel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ HeaderAlignmentHorz = taCenter
+ Width = 45
+ end
+ object v2Column2: TcxGridDBColumn
+ Caption = #23458#25143
+ DataBinding.FieldName = 'CustName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv2Column5: TcxGridDBColumn
+ Caption = #35746#21333#21495
+ DataBinding.FieldName = 'OrderNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.ExpressionEditing = False
+ Width = 74
+ end
+ object Tv2Column2: TcxGridDBColumn
+ Caption = #32534#21495
+ DataBinding.FieldName = 'C_Code'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.ExpressionEditing = False
+ Width = 66
+ end
+ object cxGridDBColumn2: TcxGridDBColumn
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.ExpressionEditing = False
+ Width = 66
+ end
+ object Tv2Column3: TcxGridDBColumn
+ Caption = #38376#24133
+ DataBinding.FieldName = 'C_Width'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv2Column4: TcxGridDBColumn
+ Caption = #20811#37325
+ DataBinding.FieldName = 'C_GramWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v2C_ColorNo: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_ColorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv2C_pattern: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ end
+ object cxGridDBColumn3: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object Tv2Column1: TcxGridDBColumn
+ Caption = #21305#25968
+ DataBinding.FieldName = 'OrdPiece'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column10: TcxGridDBColumn
+ Caption = #25968#37327
+ DataBinding.FieldName = 'OrdQty'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1Column14: TcxGridDBColumn
+ Caption = #21333#20301
+ DataBinding.FieldName = 'OrdUnit'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 66
+ end
+ object v1PRTMF: TcxGridDBColumn
+ Caption = #26410#20837#24211#21305#25968
+ DataBinding.FieldName = 'ZPPS'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 97
+ end
+ object v1PRTKZ: TcxGridDBColumn
+ Caption = #26410#20837#24211#25968#37327
+ DataBinding.FieldName = 'ZPQty'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 117
+ end
+ end
+ object cxGrid1Level1: TcxGridLevel
+ GridView = Tv2
+ end
+ end
+ object ToolBar3: TToolBar [2]
+ Tag = 1
+ Left = 0
+ Top = 0
+ Width = 1203
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 83
+ Caption = 'ToolBar1'
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = []
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ParentColor = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 2
+ object ToolButton5: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #21047#26032
+ ImageIndex = 1
+ OnClick = ToolButton5Click
+ end
+ object ToolButton1: TToolButton
+ Left = 63
+ Top = 0
+ AutoSize = True
+ Caption = #30830#23450
+ ImageIndex = 12
+ OnClick = ToolButton1Click
+ end
+ object ToolButton8: TToolButton
+ Left = 126
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton8Click
+ end
+ object ToolButton7: TToolButton
+ Left = 213
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = ToolButton7Click
+ end
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Left = 225
+ Top = 161
+ end
+ object CDS_OrderSel: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 472
+ Top = 192
+ end
+ object DataSource1: TDataSource
+ DataSet = CDS_OrderSel
+ Left = 680
+ Top = 224
+ end
+ object ADOQueryTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 704
+ Top = 176
+ end
+ object ADOQueryCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 848
+ Top = 184
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 624
+ Top = 208
+ end
+ object cxGridPopupMenu1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 760
+ Top = 336
+ end
+end
diff --git a/T03贸易布匹检验/U_TradeClothWaitPack.pas b/T03贸易布匹检验/U_TradeClothWaitPack.pas
new file mode 100644
index 0000000..8031ca9
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeClothWaitPack.pas
@@ -0,0 +1,196 @@
+unit U_TradeClothWaitPack;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
+ cxEdit, DB, cxDBData, StdCtrls, ADODB, DBClient, ComCtrls, ExtCtrls,
+ cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
+ cxClasses, cxControls, cxGridCustomView, cxGrid, cxGridCustomPopupMenu,
+ cxGridPopupMenu, cxCheckBox, cxLookAndFeels, cxLookAndFeelPainters,
+ cxNavigator, dxDateRanges,
+ dxBarBuiltInMenu, Vcl.ToolWin, dxScrollbarAnnotations, cxContainer,
+ cxTextEdit,U_BaseList, cxProgressBar;
+
+type
+ TfrmTradeClothWaitPack = class(TfrmBaseList)
+ Panel1: TPanel;
+ Label2: TLabel;
+ OrderNo: TcxTextEdit;
+ Label3: TLabel;
+ C_Color: TcxTextEdit;
+ CDS_OrderSel: TClientDataSet;
+ DataSource1: TDataSource;
+ ADOQueryTemp: TADOQuery;
+ ADOQueryCmd: TADOQuery;
+ ADOQueryMain: TADOQuery;
+ cxGridPopupMenu1: TcxGridPopupMenu;
+ Label8: TLabel;
+ CustName: TcxTextEdit;
+ cxGrid1: TcxGrid;
+ Tv2: TcxGridDBTableView;
+ v2SSel: TcxGridDBColumn;
+ v2Column2: TcxGridDBColumn;
+ cxGridDBColumn2: TcxGridDBColumn;
+ v1Column10: TcxGridDBColumn;
+ v1Column14: TcxGridDBColumn;
+ cxGridDBColumn3: TcxGridDBColumn;
+ v1PRTMF: TcxGridDBColumn;
+ v1PRTKZ: TcxGridDBColumn;
+ cxGrid1Level1: TcxGridLevel;
+ v2C_ColorNo: TcxGridDBColumn;
+ ToolBar3: TToolBar;
+ ToolButton5: TToolButton;
+ ToolButton1: TToolButton;
+ ToolButton8: TToolButton;
+ ToolButton7: TToolButton;
+ Tv2Column1: TcxGridDBColumn;
+ Tv2Column2: TcxGridDBColumn;
+ Tv2Column3: TcxGridDBColumn;
+ Tv2Column4: TcxGridDBColumn;
+ Tv2Column5: TcxGridDBColumn;
+ Tv2C_pattern: TcxGridDBColumn;
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormDestroy(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure OrderNoChange(Sender: TObject);
+ procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
+ procedure ToolButton5Click(Sender: TObject);
+ procedure ToolButton7Click(Sender: TObject);
+ procedure ToolButton8Click(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ private
+ { Private declarations }
+
+ procedure InitGrid();
+ public
+ { Public declarations }
+ end;
+
+var
+ frmTradeClothWaitPack: TfrmTradeClothWaitPack;
+
+implementation
+
+uses
+ U_DataLink,U_globalVar, U_RTFun;
+
+{$R *.dfm}
+
+procedure TfrmTradeClothWaitPack.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ Action := caFree;
+end;
+
+procedure TfrmTradeClothWaitPack.FormCreate(Sender: TObject);
+begin
+ cxGrid1.Align:=alClient;
+end;
+
+procedure TfrmTradeClothWaitPack.FormDestroy(Sender: TObject);
+begin
+ frmTradeClothWaitPack := nil;
+end;
+
+procedure TfrmTradeClothWaitPack.FormShow(Sender: TObject);
+begin
+ ReadCxGrid('ѡ1', Tv2, gDllFileCaption);
+ InitGrid();
+end;
+
+procedure TfrmTradeClothWaitPack.InitGrid();
+begin
+ try
+ ADOQueryMain.DisableControls;
+ with ADOQueryMain do
+ begin
+ Filtered := False;
+ Close;
+ sql.Clear;
+ sql.Add('select A.*,B.*');
+ sql.Add(',ZPPS=(select Count(KC.StkID) from Trade_Cloth_Stock KC where KC.StkCycles=0 AND KC.SubID=B.SubID and KC.StkExists=0 ) ');
+ sql.Add(',ZPKGQty=(select sum(StkGrossWeight) from Trade_Cloth_Stock KC where KC.StkCycles=0 AND KC.SubID=B.SubID and KC.StkExists=0 ) ');
+ sql.Add(',ZPQty=(select sum(StkMeter) from Trade_Cloth_Stock KC where KC.StkCycles=0 AND KC.SubID=B.SubID and KC.StkExists=0 ) ');
+ sql.Add(' from Trade_Plan_Main A inner join Trade_Plan_Sub B on A.MainId=B.MainID ');
+// sql.Add(' where exists(select KC.SubID from Trade_Cloth_Stock KC where KC.StkCycles=0 AND KC.SubID=B.SubID and KC.StkExists=0)');
+// ShowMessage(sql.Text);
+ Open;
+ end;
+ SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
+ SCreateCDS(ADOQueryMain, CDS_OrderSel);
+ SInitCDSData(ADOQueryMain, CDS_OrderSel);
+ finally
+ ADOQueryMain.EnableControls;
+ end;
+end;
+
+procedure TfrmTradeClothWaitPack.OrderNoChange(Sender: TObject);
+begin
+ SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
+ SCreateCDS(ADOQueryMain, CDS_OrderSel);
+ SInitCDSData(ADOQueryMain, CDS_OrderSel);
+end;
+
+procedure TfrmTradeClothWaitPack.ToolButton1Click(Sender: TObject);
+var
+ KHName: string;
+begin
+// if CDS_OrderSel.Locate('SSel', True, []) = False then
+// begin
+// Application.MessageBox('ûѡݣ', 'ʾ', 0);
+// Exit;
+// end;
+// CDS_OrderSel.DisableControls;
+// KHName := '';
+// with CDS_OrderSel do
+// begin
+// First;
+// while not Eof do
+// begin
+// if FieldByName('SSel').AsBoolean = True then
+// begin
+// if Trim(KHName) = '' then
+// begin
+// KHName := Trim(fieldbyname('CustNo').AsString);
+// end
+// else
+// begin
+// if Trim(fieldbyname('CustNo').AsString) <> KHName then
+// begin
+// Application.MessageBox('ѡͬͻ', 'ʾ', 0);
+// Exit;
+// end;
+// end;
+// end;
+// Next;
+// end;
+// end;
+// CDS_OrderSel.EnableControls;
+ ModalResult := 1;
+end;
+
+procedure TfrmTradeClothWaitPack.ToolButton5Click(Sender: TObject);
+begin
+ InitGrid();
+end;
+
+procedure TfrmTradeClothWaitPack.ToolButton7Click(Sender: TObject);
+begin
+
+ Close;
+end;
+
+procedure TfrmTradeClothWaitPack.ToolButton8Click(Sender: TObject);
+begin
+ WriteCxGrid('ѡ1', Tv2, gDllFileCaption);
+end;
+
+procedure TfrmTradeClothWaitPack.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
+begin
+ ModalResult := 1;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_TradeInspEdit.dfm b/T03贸易布匹检验/U_TradeInspEdit.dfm
new file mode 100644
index 0000000..411ec28
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeInspEdit.dfm
@@ -0,0 +1,419 @@
+object frmTradeInspEdit: TfrmTradeInspEdit
+ Left = 285
+ Top = 179
+ Caption = #24067#21305#31649#29702
+ ClientHeight = 461
+ ClientWidth = 913
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = []
+ OldCreateOrder = False
+ OnClose = FormClose
+ OnDestroy = FormDestroy
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 12
+ object ToolBar1: TToolBar
+ Left = 0
+ Top = 0
+ Width = 913
+ Height = 30
+ AutoSize = True
+ ButtonHeight = 30
+ ButtonWidth = 83
+ Caption = 'ToolBar1'
+ Color = clBtnFace
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = []
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ParentColor = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 0
+ object ToolButton1: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #22686#34892
+ ImageIndex = 2
+ OnClick = ToolButton1Click
+ end
+ object ToolButton3: TToolButton
+ Left = 63
+ Top = 0
+ AutoSize = True
+ Caption = #21024#34892
+ ImageIndex = 6
+ OnClick = ToolButton3Click
+ end
+ object ToolButton2: TToolButton
+ Left = 126
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384
+ ImageIndex = 37
+ OnClick = ToolButton2Click
+ end
+ object ToolButton4: TToolButton
+ Left = 189
+ Top = 0
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ OnClick = ToolButton4Click
+ end
+ object TBClose: TToolButton
+ Left = 276
+ Top = 0
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = TBCloseClick
+ end
+ end
+ object Panel1: TPanel
+ Left = 0
+ Top = 30
+ Width = 913
+ Height = 79
+ Align = alTop
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ ParentBackground = False
+ TabOrder = 1
+ ExplicitTop = 24
+ object Label1: TLabel
+ Left = 586
+ Top = 46
+ Width = 52
+ Height = 12
+ Caption = #24067#21305#26465#30721
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ ParentFont = True
+ Visible = False
+ end
+ object Label2: TLabel
+ Left = 46
+ Top = 15
+ Width = 7
+ Height = 12
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ ParentFont = True
+ Visible = False
+ end
+ object Label4: TLabel
+ Left = 459
+ Top = 16
+ Width = 24
+ Height = 12
+ Caption = #27611#37325
+ end
+ object Label6: TLabel
+ Left = 343
+ Top = 16
+ Width = 24
+ Height = 12
+ Caption = #31859#25968
+ end
+ object Ma: TLabel
+ Left = 296
+ Top = 100
+ Width = 6
+ Height = 12
+ Caption = 'M'
+ end
+ object Label7: TLabel
+ Left = 211
+ Top = 100
+ Width = 24
+ Height = 12
+ Caption = #21407#30721
+ end
+ object Label5: TLabel
+ Left = 332
+ Top = 104
+ Width = 6
+ Height = 12
+ Caption = 'M'
+ end
+ object Label10: TLabel
+ Left = 549
+ Top = 16
+ Width = 12
+ Height = 12
+ Caption = 'Kg'
+ end
+ object Label12: TLabel
+ Left = 459
+ Top = 46
+ Width = 24
+ Height = 12
+ Caption = #20928#37325
+ end
+ object Label14: TLabel
+ Left = 549
+ Top = 46
+ Width = 12
+ Height = 12
+ Caption = 'Kg'
+ end
+ object Label15: TLabel
+ Left = 231
+ Top = 16
+ Width = 24
+ Height = 12
+ Caption = #21367#21495
+ end
+ object Label11: TLabel
+ Left = 343
+ Top = 46
+ Width = 24
+ Height = 12
+ Caption = #30721#25968
+ end
+ object Label3: TLabel
+ Left = 586
+ Top = 13
+ Width = 24
+ Height = 17
+ Hint = '1'
+ Caption = #31561#32423
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object CIID: TcxTextEdit
+ Left = 644
+ Top = 41
+ ParentFont = True
+ TabOrder = 0
+ Visible = False
+ Width = 110
+ end
+ object GrossWeight: TcxTextEdit
+ Left = 489
+ Top = 12
+ ParentFont = True
+ TabOrder = 3
+ Width = 54
+ end
+ object Meter: TcxTextEdit
+ Left = 373
+ Top = 12
+ ParentFont = True
+ TabOrder = 2
+ Width = 54
+ end
+ object MJQty1: TcxTextEdit
+ Left = 236
+ Top = 100
+ ParentFont = True
+ TabOrder = 5
+ Width = 54
+ end
+ object NetWeight: TcxTextEdit
+ Left = 489
+ Top = 42
+ ParentFont = True
+ TabOrder = 4
+ Width = 54
+ end
+ object PieceNo: TcxTextEdit
+ Left = 261
+ Top = 12
+ ParentFont = True
+ TabOrder = 1
+ Width = 54
+ end
+ object Yardage: TcxTextEdit
+ Left = 373
+ Top = 42
+ ParentFont = True
+ TabOrder = 6
+ Width = 54
+ end
+ object grade: TcxComboBox
+ Left = 616
+ Top = 6
+ ParentFont = True
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ #27491#21697
+ #27425#21697)
+ TabOrder = 7
+ Width = 99
+ end
+ end
+ object cxGrid1: TcxGrid
+ Left = 0
+ Top = 109
+ Width = 913
+ Height = 352
+ Align = alClient
+ TabOrder = 2
+ object TV1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DataSource1
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ Column = cxGridDBColumn5
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn8
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn9
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsSelection.CellSelect = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ Styles.Footer = DataLink_TradeInsp.Default
+ Styles.Header = DataLink_TradeInsp.Default
+ object TV1Column1: TcxGridDBColumn
+ Caption = #30133#28857
+ DataBinding.FieldName = 'CIFName'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxButtonEditProperties'
+ Properties.Buttons = <
+ item
+ Default = True
+ Kind = bkEllipsis
+ end>
+ Properties.OnButtonClick = TV1Column1PropertiesButtonClick
+ HeaderAlignmentHorz = taCenter
+ Width = 83
+ end
+ object cxGridDBColumn2: TcxGridDBColumn
+ Caption = #30133#28857#21517#31216
+ DataBinding.FieldName = 'CIFName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Focusing = False
+ Options.Sorting = False
+ Width = 111
+ end
+ object cxGridDBColumn3: TcxGridDBColumn
+ Caption = #20301#32622#36215
+ DataBinding.FieldName = 'CIFbeg'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ Properties.OnEditValueChanged = cxGridDBColumn3PropertiesEditValueChanged
+ HeaderAlignmentHorz = taCenter
+ HeaderGlyphAlignmentHorz = taCenter
+ Options.Sorting = False
+ Width = 85
+ end
+ object cxGridDBColumn4: TcxGridDBColumn
+ Caption = #20301#32622#27490
+ DataBinding.FieldName = 'CIFend'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ HeaderGlyphAlignmentHorz = taCenter
+ Width = 79
+ end
+ object cxGridDBColumn5: TcxGridDBColumn
+ Caption = #38271#24230
+ DataBinding.FieldName = 'CIFQty'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Width = 67
+ end
+ object cxGridDBColumn6: TcxGridDBColumn
+ Caption = #21407#22240
+ DataBinding.FieldName = 'CDReason'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Width = 60
+ end
+ object cxGridDBColumn7: TcxGridDBColumn
+ DataBinding.FieldName = 'CDQty'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ Width = 60
+ end
+ object cxGridDBColumn8: TcxGridDBColumn
+ Caption = #25187#20998
+ DataBinding.FieldName = 'CIFPoints'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 73
+ end
+ object cxGridDBColumn9: TcxGridDBColumn
+ Caption = #20010#25968
+ DataBinding.FieldName = 'CIFNumber'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 69
+ end
+ end
+ object cxGridLevel3: TcxGridLevel
+ GridView = TV1
+ end
+ end
+ object ADOTmp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 592
+ Top = 200
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 336
+ Top = 200
+ end
+ object ADOCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 648
+ Top = 200
+ end
+ object DataSource1: TDataSource
+ DataSet = Order_MJ
+ Left = 528
+ Top = 200
+ end
+ object Order_MJ: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 424
+ Top = 200
+ end
+end
diff --git a/T03贸易布匹检验/U_TradeInspEdit.pas b/T03贸易布匹检验/U_TradeInspEdit.pas
new file mode 100644
index 0000000..6d1a441
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeInspEdit.pas
@@ -0,0 +1,407 @@
+unit U_TradeInspEdit;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
+ cxEdit, DB, cxDBData, cxTextEdit, DBClient, ADODB, cxGridLevel,
+ cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
+ cxControls, cxGridCustomView, cxGrid, StdCtrls, ExtCtrls, ComCtrls, ToolWin,
+ cxButtonEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,
+ dxDateRanges, dxScrollbarAnnotations,
+ cxContainer, cxMaskEdit, cxDropDownEdit;
+
+type
+ TfrmTradeInspEdit = class(TForm)
+ ToolBar1: TToolBar;
+ ToolButton2: TToolButton;
+ TBClose: TToolButton;
+ Panel1: TPanel;
+ Label1: TLabel;
+ CIID: TcxTextEdit;
+ ADOTmp: TADOQuery;
+ ADOQueryMain: TADOQuery;
+ ADOCmd: TADOQuery;
+ DataSource1: TDataSource;
+ Order_MJ: TClientDataSet;
+ ToolButton1: TToolButton;
+ ToolButton3: TToolButton;
+ Label2: TLabel;
+ GrossWeight: TcxTextEdit;
+ Label4: TLabel;
+ Label6: TLabel;
+ Meter: TcxTextEdit;
+ Ma: TLabel;
+ Label7: TLabel;
+ MJQty1: TcxTextEdit;
+ Label5: TLabel;
+ Label10: TLabel;
+ Label12: TLabel;
+ Label14: TLabel;
+ NetWeight: TcxTextEdit;
+ PieceNo: TcxTextEdit;
+ Label15: TLabel;
+ Label11: TLabel;
+ Yardage: TcxTextEdit;
+ ToolButton4: TToolButton;
+ cxGrid1: TcxGrid;
+ TV1: TcxGridDBTableView;
+ cxGridDBColumn2: TcxGridDBColumn;
+ cxGridDBColumn3: TcxGridDBColumn;
+ cxGridDBColumn4: TcxGridDBColumn;
+ cxGridDBColumn5: TcxGridDBColumn;
+ cxGridDBColumn6: TcxGridDBColumn;
+ cxGridDBColumn7: TcxGridDBColumn;
+ cxGridDBColumn8: TcxGridDBColumn;
+ cxGridDBColumn9: TcxGridDBColumn;
+ cxGridLevel3: TcxGridLevel;
+ TV1Column1: TcxGridDBColumn;
+ Label3: TLabel;
+ grade: TcxComboBox;
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormDestroy(Sender: TObject);
+ procedure tv2CDWZPropertiesEditValueChanged(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure ToolButton3Click(Sender: TObject);
+ procedure ToolButton2Click(Sender: TObject);
+ procedure TBCloseClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure ToolButton4Click(Sender: TObject);
+ procedure cxGridDBColumn3PropertiesEditValueChanged(Sender: TObject);
+ procedure TV1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
+ private
+ { Private declarations }
+ function SaveData(): Boolean;
+ procedure GetJYXK(FJYIP: string);
+ public
+ { Public declarations }
+ end;
+
+var
+ frmTradeInspEdit: TfrmTradeInspEdit;
+
+implementation
+
+uses
+ U_RTFun, U_ZDYHelp, U_DataLink;
+
+{$R *.dfm}
+procedure TfrmTradeInspEdit.GetJYXK(FJYIP: string);
+begin
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ SQL.Add('select A.* from Trade_Cloth_Inspect A ');
+ sql.Add(' where A.CIID=''' + Trim(FJYIP) + '''');
+ Open;
+ end;
+ if ADOTmp.IsEmpty then
+ begin
+ CIID.Text := '';
+ Label2.Caption := '';
+ Label2.Visible := False;
+ Application.MessageBox('!', 'ʾ', 0);
+ Exit;
+ end;
+ PieceNo.Text := Trim(ADOTmp.fieldbyname('PieceNo').AsString);
+
+ GrossWeight.Text := Trim(ADOTmp.fieldbyname('GrossWeight').AsString);
+ NetWeight.Text := Trim(ADOTmp.fieldbyname('NetWeight').AsString);
+ Meter.Text := Trim(ADOTmp.fieldbyname('Meter').AsString);
+ Yardage.Text := Trim(ADOTmp.fieldbyname('Yardage').AsString);
+
+ grade.ItemIndex:=grade.Properties.Items.IndexOf(Trim(ADOTmp.fieldbyname('grade').AsString));
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect_Flaw A where A.CIID=''' + Trim(CIID.Text) + '''');
+ Open;
+ end;
+ Label2.Caption := Trim(CIID.Text);
+ Label2.Visible := True;
+ CIID.Text := '';
+ SCreateCDS(ADOTmp, Order_MJ);
+ SInitCDSData(ADOTmp, Order_MJ);
+
+end;
+
+procedure TfrmTradeInspEdit.cxGridDBColumn3PropertiesEditValueChanged(Sender: TObject);
+var
+ mvalue, CIFbeg, CIFEnd: string;
+ FFReal: Double;
+begin
+ mvalue := TcxTextEdit(Sender).EditingText;
+ with Order_MJ do
+ begin
+ Edit;
+ FieldByName('CIFEnd').Value := mvalue;
+ Post;
+ end;
+ CIFbeg := Trim(Order_MJ.fieldbyname('CIFbeg').AsString);
+ CIFEnd := Trim(Order_MJ.fieldbyname('CIFEnd').AsString);
+ if (Trim(CIFbeg) <> '') and (Trim(CIFEnd) <> '') then
+ begin
+ if TryStrToFloat(CIFbeg, FFReal) and TryStrToFloat(CIFbeg, FFReal) then
+ begin
+ if StrToFloat(CIFEnd) < StrToFloat(CIFbeg) then
+ begin
+ Application.MessageBox('ֹλСʼλ!', 'ʾ', 0);
+ Exit;
+ end;
+ with Order_MJ do
+ begin
+ Edit;
+ FieldByName('CDQty').Value := StrToFloat(CIFEnd) - StrToFloat(CIFbeg);
+ Post;
+ end;
+ end
+ else
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end;
+end;
+
+procedure TfrmTradeInspEdit.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ Action := caFree;
+end;
+
+procedure TfrmTradeInspEdit.FormDestroy(Sender: TObject);
+begin
+ frmTradeInspEdit := nil;
+end;
+
+procedure TfrmTradeInspEdit.tv2CDWZPropertiesEditValueChanged(Sender: TObject);
+var
+ mvalue, CIFbeg, CIFEnd: string;
+ FFReal: Double;
+begin
+ mvalue := TcxTextEdit(Sender).EditingText;
+ with Order_MJ do
+ begin
+ Edit;
+ FieldByName('CIFbeg').Value := mvalue;
+ Post;
+ end;
+ CIFbeg := Trim(Order_MJ.fieldbyname('CIFbeg').AsString);
+ CIFEnd := Trim(Order_MJ.fieldbyname('CIFEnd').AsString);
+ if (Trim(CIFbeg) <> '') and (Trim(CIFEnd) <> '') then
+ begin
+ if TryStrToFloat(CIFbeg, FFReal) and TryStrToFloat(CIFbeg, FFReal) then
+ begin
+ if StrToFloat(CIFEnd) < StrToFloat(CIFbeg) then
+ begin
+ Application.MessageBox('ֹλСʼλ!', 'ʾ', 0);
+ Exit;
+ end;
+ with Order_MJ do
+ begin
+ Edit;
+ FieldByName('CIFQty').Value := StrToFloat(CIFEnd) - StrToFloat(CIFbeg);
+ Post;
+ end;
+ end
+ else
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end;
+end;
+
+procedure TfrmTradeInspEdit.ToolButton1Click(Sender: TObject);
+begin
+ if Trim(Label2.Caption) = '' then
+ Exit;
+ Order_MJ.Append;
+ Order_MJ.Post;
+end;
+
+procedure TfrmTradeInspEdit.ToolButton3Click(Sender: TObject);
+begin
+ if Trim(Label2.Caption) = '' then
+ Exit;
+ if Order_MJ.IsEmpty then
+ Exit;
+ if Trim(Order_MJ.fieldbyname('CIFID').AsString) <> '' then
+ begin
+ if Application.MessageBox('ȷҪɾ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('delete Trade_Cloth_Inspect_Flaw where CIFID=''' + Trim(Order_MJ.fieldbyname('CIFID').AsString) + '''');
+ ExecSQL;
+ end;
+ end;
+ Order_MJ.Delete;
+end;
+
+procedure TfrmTradeInspEdit.ToolButton4Click(Sender: TObject);
+begin
+ WriteCxGrid(trim(Self.Caption), Tv1, 'ӡȾ');
+end;
+
+procedure TfrmTradeInspEdit.TV1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
+begin
+ try
+ frmZDYHelp := TfrmZDYHelp.Create(Application);
+ with frmZDYHelp do
+ begin
+ flag := 'WFBCD';
+ flagname := 'õ';
+ if ShowModal = 1 then
+ begin
+ Self.Order_MJ.Edit;
+ Self.Order_MJ.FieldByName('CIFName').value := Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
+ end;
+ end;
+ finally
+ frmZDYHelp.Free;
+ end;
+end;
+
+function TfrmTradeInspEdit.SaveData(): Boolean;
+var
+ maxno: string;
+ FFreal: Double;
+begin
+ try
+ ADOCmd.Connection.BeginTrans;
+ ///õ
+ with Order_MJ do
+ begin
+ First;
+ while not Eof do
+ begin
+ if trim(Order_MJ.FieldByName('CIFName').AsString) = '' then
+ raise Exception.Create(pchar('õƲΪգ'));
+
+ if Trim(Order_MJ.fieldbyname('CIFID').AsString) = '' then
+ begin
+ if GetLSNo(ADOTmp, maxno, 'JC', 'Trade_Cloth_Inspect_Flaw', 5, 1) = False then
+ raise Exception.Create(pchar('ȡˮʧܣ'));
+ end
+ else
+ begin
+ maxno := Trim(Order_MJ.fieldbyname('CIFID').AsString);
+ end;
+ with ADOCmd do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add(' select * from Trade_Cloth_Inspect_Flaw ');
+ sql.Add(' where CIFID=''' + Trim(maxno) + ''' ');
+ Open;
+ end;
+ with ADOCmd do
+ begin
+ if Trim(Order_MJ.fieldbyname('CIFID').AsString) = '' then
+ Append
+ else
+ Edit;
+ FieldByName('CIID').Value := Trim(Label2.Caption);
+ FieldByName('CIFID').Value := Trim(maxno);
+ RTSetSaveDataCDS(ADOCmd, Tv1, Order_MJ, 'Trade_Cloth_Inspect_Flaw', 0);
+ Post;
+ end;
+
+ Order_MJ.Edit;
+ Order_MJ.FieldByName('CIFID').Value := Trim(maxno);
+ Order_MJ.FieldByName('CIID').Value := Trim(Label2.Caption);
+ Next;
+ end;
+ end;
+
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add(' UPdate Trade_Cloth_Inspect Set ');
+ sql.Add(' PieceNo=''' + Trim(PieceNo.Text) + ''' ');
+ sql.Add(',GrossWeight=' + FloatToStr(Strtofloatdef(GrossWeight.Text, 0)));
+ sql.Add(',NetWeight=' + FloatToStr(Strtofloatdef(NetWeight.Text, 0)));
+ sql.Add(',Meter=' + FloatToStr(Strtofloatdef(Meter.Text, 0)));
+ sql.Add(',Yardage=' + FloatToStr(Strtofloatdef(Yardage.Text, 0)));
+
+ sql.Add(',Grade='+QuotedStr(grade.Text));
+
+ sql.Add(' where CIID=''' + Trim(Label2.Caption) + '''');
+ ExecSQL;
+ end;
+ ////////////////// ¾ŴõϢ //////////////////
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('exec P_Trade_Insp_Up_pack @CIID=''' + Trim(Label2.Caption) + '''');
+ sql.Add(',@InspType=' + QuotedStr(''));
+ sql.Add(',@RulePieceNo=' + QuotedStr('ֶ')); //ɹ
+ execsql;
+ end;
+////////////////// ¾ŴõϢ //////////////////
+///
+////////////////// ⼰ //////////////////
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('exec P_Trade_Insp_In_Stk @CIID=''' + Trim(Label2.Caption) + '''');
+ execsql;
+ end;
+////////////////// ⼰ //////////////////
+///
+////////////////// ½ //////////////////
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('insert into Trade_Need_Up(UOperation,UType,UDataId) values('''',''༭'',' + quotedstr(Trim(Label2.Caption)) + ') ');
+ execsql;
+ end;
+////////////////// ½ //////////////////
+///
+ ADOCmd.Connection.CommitTrans;
+ Result := True;
+ except
+ Result := False;
+ ADOCmd.Connection.RollbackTrans;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+end;
+
+procedure TfrmTradeInspEdit.ToolButton2Click(Sender: TObject);
+begin
+ if Trim(Label2.Caption) = '' then
+ Exit;
+ if SaveData() then
+ begin
+ Application.MessageBox('ɹ!', 'ʾ', 0);
+ Exit;
+ end;
+end;
+
+procedure TfrmTradeInspEdit.TBCloseClick(Sender: TObject);
+begin
+ Close;
+
+end;
+
+procedure TfrmTradeInspEdit.FormShow(Sender: TObject);
+begin
+ ReadCxGrid(trim(Self.Caption), Tv1, 'ӡȾ');
+ if CIID.Text <> '' then
+ begin
+ GetJYXK(CIID.Text);
+ end;
+
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_TradeMachInsp.dfm b/T03贸易布匹检验/U_TradeMachInsp.dfm
new file mode 100644
index 0000000..79424ab
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeMachInsp.dfm
@@ -0,0 +1,2284 @@
+inherited frmTradeMachInsp: TfrmTradeMachInsp
+ Left = 234
+ Top = 20
+ Caption = #25104#21697#26816#39564
+ ClientHeight = 701
+ ClientWidth = 1308
+ FormStyle = fsMDIChild
+ Position = poScreenCenter
+ Visible = True
+ ExplicitWidth = 1324
+ ExplicitHeight = 740
+ PixelsPerInch = 96
+ TextHeight = 17
+ object ScrollBox1: TScrollBox [0]
+ Left = 617
+ Top = 0
+ Width = 448
+ Height = 701
+ Align = alLeft
+ TabOrder = 7
+ Visible = False
+ object SpeedButton13: TSpeedButton
+ Left = 7
+ Top = 3
+ Width = 50
+ Height = 50
+ Caption = #30772#27934
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton14: TSpeedButton
+ Left = 63
+ Top = 3
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton15: TSpeedButton
+ Left = 119
+ Top = 3
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton16: TSpeedButton
+ Left = 175
+ Top = 3
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton17: TSpeedButton
+ Left = 231
+ Top = 3
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton18: TSpeedButton
+ Left = 287
+ Top = 3
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton21: TSpeedButton
+ Left = 343
+ Top = 3
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton22: TSpeedButton
+ Left = 7
+ Top = 59
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton23: TSpeedButton
+ Left = 63
+ Top = 63
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton24: TSpeedButton
+ Left = 119
+ Top = 61
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton25: TSpeedButton
+ Left = 175
+ Top = 61
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton26: TSpeedButton
+ Left = 231
+ Top = 61
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton29: TSpeedButton
+ Left = 287
+ Top = 61
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton30: TSpeedButton
+ Left = 343
+ Top = 61
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton31: TSpeedButton
+ Left = 7
+ Top = 119
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton32: TSpeedButton
+ Left = 63
+ Top = 119
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton33: TSpeedButton
+ Left = 119
+ Top = 119
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton34: TSpeedButton
+ Left = 175
+ Top = 119
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton37: TSpeedButton
+ Left = 231
+ Top = 119
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton38: TSpeedButton
+ Left = 287
+ Top = 119
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton39: TSpeedButton
+ Left = 343
+ Top = 119
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton40: TSpeedButton
+ Left = 7
+ Top = 177
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton41: TSpeedButton
+ Left = 63
+ Top = 177
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton42: TSpeedButton
+ Left = 119
+ Top = 177
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton45: TSpeedButton
+ Left = 175
+ Top = 177
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton46: TSpeedButton
+ Left = 231
+ Top = 177
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton47: TSpeedButton
+ Left = 287
+ Top = 177
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton48: TSpeedButton
+ Left = 343
+ Top = 177
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton50: TSpeedButton
+ Left = 7
+ Top = 235
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton51: TSpeedButton
+ Left = 63
+ Top = 235
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton54: TSpeedButton
+ Left = 119
+ Top = 235
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton55: TSpeedButton
+ Left = 175
+ Top = 235
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton56: TSpeedButton
+ Left = 231
+ Top = 235
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton57: TSpeedButton
+ Left = 287
+ Top = 235
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton58: TSpeedButton
+ Left = 343
+ Top = 235
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton59: TSpeedButton
+ Left = 7
+ Top = 291
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton62: TSpeedButton
+ Left = 63
+ Top = 291
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton63: TSpeedButton
+ Left = 119
+ Top = 291
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton64: TSpeedButton
+ Left = 175
+ Top = 291
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton65: TSpeedButton
+ Left = 231
+ Top = 291
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton66: TSpeedButton
+ Left = 287
+ Top = 291
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton67: TSpeedButton
+ Left = 343
+ Top = 291
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton70: TSpeedButton
+ Left = 7
+ Top = 347
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton71: TSpeedButton
+ Left = 63
+ Top = 347
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton72: TSpeedButton
+ Left = 119
+ Top = 347
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton73: TSpeedButton
+ Left = 175
+ Top = 347
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton74: TSpeedButton
+ Left = 231
+ Top = 347
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton75: TSpeedButton
+ Left = 287
+ Top = 347
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton19: TSpeedButton
+ Left = 343
+ Top = 347
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton20: TSpeedButton
+ Left = 7
+ Top = 403
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton27: TSpeedButton
+ Left = 63
+ Top = 403
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton28: TSpeedButton
+ Left = 119
+ Top = 403
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton35: TSpeedButton
+ Left = 175
+ Top = 403
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton36: TSpeedButton
+ Left = 231
+ Top = 403
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton43: TSpeedButton
+ Left = 287
+ Top = 403
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton44: TSpeedButton
+ Left = 343
+ Top = 403
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton52: TSpeedButton
+ Left = 7
+ Top = 459
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton53: TSpeedButton
+ Left = 63
+ Top = 459
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton60: TSpeedButton
+ Left = 119
+ Top = 459
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton61: TSpeedButton
+ Left = 175
+ Top = 459
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton68: TSpeedButton
+ Left = 231
+ Top = 459
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton69: TSpeedButton
+ Left = 287
+ Top = 459
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton76: TSpeedButton
+ Left = 343
+ Top = 459
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton77: TSpeedButton
+ Left = 7
+ Top = 515
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton78: TSpeedButton
+ Left = 63
+ Top = 515
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton79: TSpeedButton
+ Left = 119
+ Top = 515
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton80: TSpeedButton
+ Left = 175
+ Top = 515
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton81: TSpeedButton
+ Left = 231
+ Top = 515
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton82: TSpeedButton
+ Left = 287
+ Top = 515
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object SpeedButton83: TSpeedButton
+ Left = 343
+ Top = 515
+ Width = 50
+ Height = 50
+ Visible = False
+ OnClick = SpeedButton13Click
+ end
+ object MovePanel1: TMovePanel
+ Left = 4
+ Top = 233
+ Width = 391
+ Height = 337
+ BevelInner = bvLowered
+ ParentBackground = False
+ TabOrder = 0
+ Visible = False
+ object Label17: TLabel
+ Left = 38
+ Top = 59
+ Width = 24
+ Height = 17
+ Caption = #38271#24230
+ end
+ object Label18: TLabel
+ Left = 157
+ Top = 59
+ Width = 12
+ Height = 17
+ Caption = #21040
+ end
+ object lblLenUnit1: TLabel
+ Left = 362
+ Top = 59
+ Width = 12
+ Height = 17
+ Caption = 'M'
+ end
+ object lblCIFName: TLabel
+ Left = 41
+ Top = 14
+ Width = 24
+ Height = 17
+ Caption = #30772#27934
+ end
+ object Label2: TLabel
+ Left = 257
+ Top = 59
+ Width = 12
+ Height = 17
+ Caption = #20849
+ end
+ object Label8: TLabel
+ Left = 362
+ Top = 21
+ Width = 12
+ Height = 17
+ Caption = #20010
+ end
+ object CIFBeg: TcxTextEdit
+ Left = 84
+ Top = 56
+ TabOrder = 0
+ OnClick = CIFBegClick
+ Width = 73
+ end
+ object Button1: TButton
+ Left = 171
+ Top = 273
+ Width = 66
+ Height = 43
+ Caption = #30830#23450
+ TabOrder = 5
+ OnClick = Button1Click
+ end
+ object Button4: TButton
+ Left = 283
+ Top = 273
+ Width = 64
+ Height = 42
+ Caption = #20851#38381
+ TabOrder = 6
+ OnClick = Button4Click
+ end
+ object CIFEnd: TcxTextEdit
+ Left = 179
+ Top = 56
+ TabOrder = 1
+ OnClick = CIFBegClick
+ Width = 73
+ end
+ object CIFQty: TcxTextEdit
+ Left = 283
+ Top = 52
+ TabOrder = 2
+ OnClick = CIFBegClick
+ Width = 73
+ end
+ object RadioGroup1: TRadioGroup
+ Left = 0
+ Top = 91
+ Width = 389
+ Height = 176
+ Columns = 2
+ Items.Strings = (
+ '0-3"'
+ '3"-6"'
+ '6"-9"'
+ #8805'9"'
+ #25972#21305
+ #36830#32493#20986#29616#29781#30133)
+ ParentBackground = False
+ TabOrder = 3
+ end
+ object Button2: TButton
+ Left = 14
+ Top = 273
+ Width = 82
+ Height = 42
+ Caption = #21462#28040#36873#25321
+ TabOrder = 4
+ OnClick = Button2Click
+ end
+ object CIFNumber: TcxTextEdit
+ Left = 283
+ Top = 14
+ TabOrder = 7
+ OnClick = CIFBegClick
+ Width = 73
+ end
+ object Edit1: TcxTextEdit
+ Left = 9
+ Top = 56
+ TabOrder = 8
+ Text = #8730
+ OnClick = Edit1Click
+ Width = 30
+ end
+ end
+ end
+ object Panel7: TPanel [1]
+ Left = 1065
+ Top = 0
+ Width = 144
+ Height = 701
+ Align = alLeft
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ TabOrder = 6
+ object AOrdDefNote1: TRichEdit
+ Left = 2
+ Top = 116
+ Width = 140
+ Height = 583
+ Align = alClient
+ ReadOnly = True
+ ScrollBars = ssVertical
+ TabOrder = 0
+ Zoom = 100
+ end
+ object Panel1: TPanel
+ Left = 6
+ Top = 510
+ Width = 282
+ Height = 206
+ Caption = 'Panel1'
+ TabOrder = 1
+ Visible = False
+ object Pic_Image1: TcxDBImage
+ Left = 1
+ Top = 1
+ Hint = 'FileName'
+ Align = alClient
+ DataBinding.DataField = 'FilesOther'
+ DataBinding.DataSource = DataSource2
+ Properties.GraphicClassName = 'TdxSmartImage'
+ Properties.GraphicTransparency = gtTransparent
+ Properties.ReadOnly = True
+ Properties.ShowFocusRect = False
+ Style.BorderStyle = ebsSingle
+ TabOrder = 0
+ OnDblClick = Pic_Image1DblClick
+ Height = 204
+ Width = 280
+ end
+ end
+ object Panel8: TPanel
+ Left = 6
+ Top = 274
+ Width = 282
+ Height = 206
+ Caption = 'Panel8'
+ TabOrder = 2
+ Visible = False
+ object cxDBImage1: TcxDBImage
+ Left = 1
+ Top = 1
+ Hint = 'FileName'
+ Align = alClient
+ DataBinding.DataField = 'FilesOther'
+ DataBinding.DataSource = DS_ImgHX
+ Properties.GraphicClassName = 'TdxSmartImage'
+ Properties.GraphicTransparency = gtTransparent
+ Properties.ReadOnly = True
+ Properties.ShowFocusRect = False
+ Style.BorderStyle = ebsSingle
+ TabOrder = 0
+ OnDblClick = cxDBImage1DblClick
+ Height = 204
+ Width = 280
+ end
+ end
+ object ToolBar1: TToolBar
+ Tag = 1
+ Left = 2
+ Top = 2
+ Width = 140
+ Height = 114
+ AutoSize = True
+ ButtonHeight = 38
+ ButtonWidth = 91
+ Caption = 'ToolBar1'
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 3
+ object btnRK: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #20837#24211
+ ImageIndex = 12
+ Wrap = True
+ OnClick = btnRKClick
+ end
+ object ToolButton2: TToolButton
+ Left = 0
+ Top = 38
+ AutoSize = True
+ Caption = #30721#21333#25171#21360
+ ImageIndex = 21
+ Wrap = True
+ OnClick = ToolButton2Click
+ end
+ object btnCXRK: TToolButton
+ Left = 0
+ Top = 76
+ AutoSize = True
+ Caption = #25764#38144#20837#24211
+ ImageIndex = 11
+ OnClick = btnCXRKClick
+ end
+ end
+ end
+ object pnlSet: TPanel [2]
+ Left = 417
+ Top = 0
+ Width = 200
+ Height = 701
+ Align = alLeft
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ ParentBackground = False
+ TabOrder = 5
+ Visible = False
+ object Label35: TLabel
+ Left = 27
+ Top = 55
+ Width = 12
+ Height = 17
+ Caption = #31204
+ end
+ object Label16: TLabel
+ Left = 6
+ Top = 15
+ Width = 24
+ Height = 17
+ Caption = #30721#34920
+ end
+ object Label26: TLabel
+ Left = 6
+ Top = 94
+ Width = 24
+ Height = 17
+ Caption = #20986#32440
+ end
+ object Label6: TLabel
+ Left = 86
+ Top = 94
+ Width = 24
+ Height = 17
+ Caption = #20221#25968
+ end
+ object Label7: TLabel
+ Left = 86
+ Top = 15
+ Width = 24
+ Height = 17
+ Caption = #21333#20301
+ end
+ object Label9: TLabel
+ Left = 6
+ Top = 136
+ Width = 24
+ Height = 17
+ Caption = #38271#24230
+ end
+ object Label15: TLabel
+ Left = 6
+ Top = 178
+ Width = 24
+ Height = 17
+ Caption = #37325#37327
+ end
+ object Label19: TLabel
+ Left = 6
+ Top = 224
+ Width = 48
+ Height = 17
+ Caption = #31859#25968#20445#30041
+ end
+ object Label20: TLabel
+ Left = 161
+ Top = 224
+ Width = 12
+ Height = 17
+ Caption = #20301
+ end
+ object Label21: TLabel
+ Left = 6
+ Top = 255
+ Width = 48
+ Height = 17
+ Caption = #30721#25968#20445#30041
+ end
+ object Label3: TLabel
+ Left = 161
+ Top = 255
+ Width = 12
+ Height = 17
+ Caption = #20301
+ end
+ object Label30: TLabel
+ Left = 161
+ Top = 286
+ Width = 12
+ Height = 17
+ Caption = #20301
+ end
+ object Label33: TLabel
+ Left = 6
+ Top = 286
+ Width = 48
+ Height = 17
+ Caption = #37325#37327#20445#30041
+ end
+ object Label31: TLabel
+ Left = 8
+ Top = 462
+ Width = 48
+ Height = 17
+ Caption = #21367#21495#29983#25104
+ Visible = False
+ end
+ object Label34: TLabel
+ Left = 86
+ Top = 55
+ Width = 24
+ Height = 17
+ Caption = #31216#37325
+ Visible = False
+ end
+ object Label41: TLabel
+ Left = 10
+ Top = 327
+ Width = 24
+ Height = 17
+ Caption = #25171#21253
+ end
+ object edtChen: TcxTextEdit
+ Left = 50
+ Top = 52
+ TabOrder = 0
+ Text = #8730
+ OnClick = edtChenClick
+ Width = 30
+ end
+ object edtMaBiao: TcxTextEdit
+ Left = 50
+ Top = 13
+ TabOrder = 1
+ Text = #8730
+ OnClick = edtChenClick
+ Width = 30
+ end
+ object ComboBox1: TComboBox
+ Left = 130
+ Top = 92
+ Width = 43
+ Height = 25
+ Style = csDropDownList
+ ItemIndex = 1
+ TabOrder = 2
+ Text = '2'
+ Items.Strings = (
+ '1'
+ '2'
+ '3'
+ '4')
+ end
+ object Edit6: TcxTextEdit
+ Left = 50
+ Top = 92
+ TabOrder = 3
+ Text = #8730
+ OnClick = Edit6Click
+ OnKeyPress = MJstr3KeyPress
+ Width = 30
+ end
+ object edtMBDW: TcxTextEdit
+ Left = 130
+ Top = 12
+ TabOrder = 4
+ Text = #8730
+ OnClick = edtChenClick
+ Width = 30
+ end
+ object MinLen: TcxTextEdit
+ Left = 50
+ Top = 133
+ TabOrder = 5
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ object MinWeight: TcxTextEdit
+ Left = 50
+ Top = 175
+ TabOrder = 6
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ object MaxLen: TcxTextEdit
+ Left = 119
+ Top = 133
+ TabOrder = 7
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ object MaxWeight: TcxTextEdit
+ Left = 119
+ Top = 175
+ TabOrder = 8
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ object MPlace: TcxTextEdit
+ Left = 92
+ Top = 222
+ TabOrder = 9
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ object YPlace: TcxTextEdit
+ Left = 92
+ Top = 253
+ TabOrder = 10
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ object KgPlace: TcxTextEdit
+ Left = 92
+ Top = 284
+ TabOrder = 11
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ object ComboBox2: TComboBox
+ Left = 94
+ Top = 460
+ Width = 89
+ Height = 25
+ Style = csDropDownList
+ ItemIndex = 0
+ TabOrder = 12
+ Text = #33258#21160
+ Visible = False
+ OnChange = ComboBox2Change
+ Items.Strings = (
+ #33258#21160
+ #25163#21160)
+ end
+ object ComboBox3: TComboBox
+ Left = 129
+ Top = 47
+ Width = 65
+ Height = 25
+ Style = csDropDownList
+ ItemIndex = 0
+ TabOrder = 13
+ Text = #27611#37325
+ Visible = False
+ OnChange = ComboBox3Change
+ Items.Strings = (
+ #27611#37325
+ #20928#37325)
+ end
+ object edtdabao: TcxTextEdit
+ Left = 54
+ Top = 319
+ TabOrder = 14
+ OnClick = edtdabaoClick
+ Width = 30
+ end
+ object edtfrnshu: TcxTextEdit
+ Left = 90
+ Top = 325
+ TabOrder = 15
+ OnClick = CIFBegClick
+ OnExit = MPlaceExit
+ OnKeyPress = MJstr3KeyPress
+ Width = 63
+ end
+ end
+ object Panel4: TPanel [3]
+ Left = 1209
+ Top = 0
+ Width = 99
+ Height = 701
+ Align = alClient
+ Caption = 'Panel4'
+ TabOrder = 2
+ object cxGrid3: TcxGrid
+ Left = 1
+ Top = 229
+ Width = 97
+ Height = 278
+ Align = alClient
+ TabOrder = 0
+ object Tv3: TcxGridDBTableView
+ OnMouseDown = Tv3MouseDown
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ OnCustomDrawCell = Tv3CustomDrawCell
+ DataController.DataSource = DS_3
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = v3Column4
+ end
+ item
+ Kind = skSum
+ Column = v3Column5
+ end
+ item
+ Format = #21367#25968':0'
+ Kind = skCount
+ Column = cxGridDBColumn1
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = Tv3Column3
+ end
+ item
+ Kind = skSum
+ Column = Tv3Column1
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ Column = v3Column1
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object v3Column1: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 40
+ end
+ object Tv3Column3: TcxGridDBColumn
+ Caption = #30721#25968
+ DataBinding.FieldName = 'Yardage'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 62
+ end
+ object Tv3Column1: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 62
+ end
+ object v3Column5: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'NetWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 50
+ end
+ object v3Column4: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'GrossWeight'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 50
+ end
+ object Tv3Column4: TcxGridDBColumn
+ Caption = #31561#32423
+ DataBinding.FieldName = 'Grade'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 54
+ end
+ object cxGridDBColumn1: TcxGridDBColumn
+ Caption = #21367#26465#30721
+ DataBinding.FieldName = 'CIID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 113
+ end
+ object Tv3Column2: TcxGridDBColumn
+ Caption = #25209#21495
+ DataBinding.FieldName = 'BatchNO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 56
+ end
+ object Tv3Column5: TcxGridDBColumn
+ Caption = #21253#21495
+ DataBinding.FieldName = 'PacketNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 57
+ end
+ end
+ object cxGridLevel2: TcxGridLevel
+ GridView = Tv3
+ end
+ end
+ object cxPageControl1: TcxPageControl
+ Left = 1
+ Top = 507
+ Width = 97
+ Height = 193
+ Align = alBottom
+ TabOrder = 1
+ Properties.ActivePage = cxTabSheet1
+ Properties.CustomButtons.Buttons = <>
+ ClientRectBottom = 192
+ ClientRectLeft = 1
+ ClientRectRight = 96
+ ClientRectTop = 25
+ object cxTabSheet1: TcxTabSheet
+ Caption = #24405#20837
+ ImageIndex = 0
+ ExplicitLeft = 0
+ ExplicitTop = 0
+ ExplicitWidth = 0
+ ExplicitHeight = 0
+ object cxGrid2: TcxGrid
+ Left = 0
+ Top = 0
+ Width = 93
+ Height = 159
+ Align = alClient
+ TabOrder = 0
+ object Tv2: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ OnCellDblClick = Tv2CellDblClick
+ DataController.DataSource = DS_2
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ Column = Tv2CDQty
+ end
+ item
+ Kind = skSum
+ Column = v2Column3
+ end
+ item
+ Kind = skSum
+ Column = v2Column4
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsSelection.CellSelect = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object tv2CDType: TcxGridDBColumn
+ Caption = #30133#28857#21517#31216
+ DataBinding.FieldName = 'CIFName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Focusing = False
+ Options.Sorting = False
+ Width = 75
+ end
+ object tv2CDWZ: TcxGridDBColumn
+ Caption = #20301#32622#36215
+ DataBinding.FieldName = 'CIFbeg'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ HeaderAlignmentHorz = taCenter
+ HeaderGlyphAlignmentHorz = taCenter
+ Options.Sorting = False
+ Styles.Content = cxStyle1
+ Styles.Header = cxStyle1
+ Width = 52
+ end
+ object v2Column2: TcxGridDBColumn
+ Caption = #20301#32622#27490
+ DataBinding.FieldName = 'CIFend'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ HeaderGlyphAlignmentHorz = taCenter
+ Styles.Content = cxStyle1
+ Styles.Header = cxStyle1
+ Width = 51
+ end
+ object Tv2CDQty: TcxGridDBColumn
+ Caption = #38271#24230
+ DataBinding.FieldName = 'CIFQty'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Width = 46
+ end
+ object Tv2CDReason: TcxGridDBColumn
+ Caption = #21407#22240
+ DataBinding.FieldName = 'CDReason'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Styles.Content = cxStyle2
+ Styles.Header = cxStyle1
+ Width = 60
+ end
+ object v2Column1: TcxGridDBColumn
+ DataBinding.FieldName = 'CDQty'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ Width = 60
+ end
+ object v2Column3: TcxGridDBColumn
+ Caption = #25187#20998
+ DataBinding.FieldName = 'CIFPoints'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 54
+ end
+ object v2Column4: TcxGridDBColumn
+ Caption = #20010#25968
+ DataBinding.FieldName = 'CIFNumber'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 36
+ end
+ end
+ object cxGridLevel1: TcxGridLevel
+ GridView = Tv2
+ end
+ end
+ end
+ object 查看: TcxTabSheet
+ Caption = #26597#30475
+ ImageIndex = 1
+ ExplicitLeft = 0
+ ExplicitTop = 0
+ ExplicitWidth = 0
+ ExplicitHeight = 0
+ object cxGrid1: TcxGrid
+ Left = 0
+ Top = 0
+ Width = 93
+ Height = 159
+ Align = alClient
+ TabOrder = 0
+ object TV1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DS_1
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ Column = cxGridDBColumn5
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn8
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn9
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsCustomize.ColumnFiltering = False
+ OptionsSelection.CellSelect = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object cxGridDBColumn2: TcxGridDBColumn
+ Caption = #30133#28857#21517#31216
+ DataBinding.FieldName = 'CIFName'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Focusing = False
+ Options.Sorting = False
+ Width = 75
+ end
+ object cxGridDBColumn3: TcxGridDBColumn
+ Caption = #20301#32622#36215
+ DataBinding.FieldName = 'CIFbeg'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ HeaderAlignmentHorz = taCenter
+ HeaderGlyphAlignmentHorz = taCenter
+ Options.Sorting = False
+ Styles.Content = cxStyle1
+ Styles.Header = cxStyle1
+ Width = 52
+ end
+ object cxGridDBColumn4: TcxGridDBColumn
+ Caption = #20301#32622#27490
+ DataBinding.FieldName = 'CIFend'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ HeaderGlyphAlignmentHorz = taCenter
+ Styles.Content = cxStyle1
+ Styles.Header = cxStyle1
+ Width = 51
+ end
+ object cxGridDBColumn5: TcxGridDBColumn
+ Caption = #38271#24230
+ DataBinding.FieldName = 'CIFQty'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxTextEditProperties'
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Width = 46
+ end
+ object cxGridDBColumn6: TcxGridDBColumn
+ Caption = #21407#22240
+ DataBinding.FieldName = 'CDReason'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Styles.Content = cxStyle2
+ Styles.Header = cxStyle1
+ Width = 60
+ end
+ object cxGridDBColumn7: TcxGridDBColumn
+ DataBinding.FieldName = 'CDQty'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ Width = 60
+ end
+ object cxGridDBColumn8: TcxGridDBColumn
+ Caption = #25187#20998
+ DataBinding.FieldName = 'CIFPoints'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 54
+ end
+ object cxGridDBColumn9: TcxGridDBColumn
+ Caption = #20010#25968
+ DataBinding.FieldName = 'CIFNumber'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 36
+ end
+ end
+ object cxGridLevel3: TcxGridLevel
+ GridView = TV1
+ end
+ end
+ end
+ end
+ object ToolBar2: TToolBar
+ Tag = 1
+ Left = 1
+ Top = 1
+ Width = 97
+ Height = 228
+ AutoSize = True
+ ButtonHeight = 38
+ ButtonWidth = 91
+ Caption = 'ToolBar1'
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Images = DataLink_TradeInsp.cxImageList_bar
+ List = True
+ ShowCaptions = True
+ TabOrder = 2
+ object ToolButton3: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = #37325#25171
+ ImageIndex = 21
+ Wrap = True
+ OnClick = ToolButton3Click
+ end
+ object ToolButton5: TToolButton
+ Left = 0
+ Top = 38
+ AutoSize = True
+ Caption = #21024#38500
+ ImageIndex = 5
+ Wrap = True
+ OnClick = ToolButton5Click
+ end
+ object ToolButton4: TToolButton
+ Left = 0
+ Top = 76
+ AutoSize = True
+ Caption = #30133#28857#31649#29702
+ ImageIndex = 2
+ Wrap = True
+ OnClick = ToolButton4Click
+ end
+ object ToolButton7: TToolButton
+ Left = 0
+ Top = 114
+ AutoSize = True
+ Caption = #20445#23384#26684#24335
+ ImageIndex = 16
+ Wrap = True
+ OnClick = ToolButton7Click
+ end
+ object ToolButton6: TToolButton
+ Left = 0
+ Top = 152
+ AutoSize = True
+ Caption = #20462#25913
+ ImageIndex = 3
+ Wrap = True
+ OnClick = ToolButton6Click
+ end
+ object ToolButton8: TToolButton
+ Left = 0
+ Top = 190
+ AutoSize = True
+ Caption = #20851#38381
+ ImageIndex = 7
+ OnClick = ToolButton8Click
+ end
+ end
+ end
+ object Panel9: TPanel [4]
+ Left = 0
+ Top = 0
+ Width = 417
+ Height = 701
+ Align = alLeft
+ ParentBackground = False
+ TabOrder = 4
+ object Panel2: TPanel
+ Left = 1
+ Top = 173
+ Width = 415
+ Height = 527
+ Align = alClient
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ ParentBackground = False
+ TabOrder = 1
+ object lblLenUnit: TLabel
+ Left = 233
+ Top = 85
+ Width = 12
+ Height = 17
+ Caption = 'M'
+ OnClick = lblLenUnitClick
+ end
+ object Label4: TLabel
+ Left = 231
+ Top = 139
+ Width = 17
+ Height = 17
+ Caption = 'KG'
+ end
+ object Label5: TLabel
+ Left = 13
+ Top = 86
+ Width = 24
+ Height = 17
+ Caption = #38271#24230
+ end
+ object Label11: TLabel
+ Left = 13
+ Top = 139
+ Width = 24
+ Height = 17
+ Caption = #27611#37325
+ end
+ object Label10: TLabel
+ Left = 69
+ Top = 245
+ Width = 24
+ Height = 17
+ Caption = #27491#21697
+ end
+ object Label12: TLabel
+ Left = 180
+ Top = 245
+ Width = 24
+ Height = 17
+ Caption = #27425#21697
+ end
+ object lblRuleConversion: TLabel
+ Left = 146
+ Top = 6
+ Width = 48
+ Height = 17
+ Caption = #31859#36716#20844#26020
+ end
+ object Label36: TLabel
+ Left = 15
+ Top = 7
+ Width = 24
+ Height = 17
+ Caption = #31995#25968
+ end
+ object Label29: TLabel
+ Left = 15
+ Top = 47
+ Width = 24
+ Height = 17
+ Caption = #25209#21495
+ end
+ object Label32: TLabel
+ Left = 184
+ Top = 42
+ Width = 24
+ Height = 17
+ Caption = #21367#21495
+ Visible = False
+ end
+ object Label37: TLabel
+ Left = 13
+ Top = 189
+ Width = 24
+ Height = 17
+ Caption = #20928#37325
+ end
+ object Label38: TLabel
+ Left = 167
+ Top = 189
+ Width = 17
+ Height = 17
+ Caption = 'KG'
+ end
+ object Label39: TLabel
+ Left = 247
+ Top = 7
+ Width = 36
+ Height = 17
+ Caption = #21407#32568#21495
+ end
+ object Label40: TLabel
+ Left = 235
+ Top = 189
+ Width = 24
+ Height = 17
+ Caption = #21253#21495
+ Visible = False
+ end
+ object InputLen: TcxTextEdit
+ Left = 81
+ Top = 82
+ TabOrder = 0
+ OnClick = CIFBegClick
+ OnKeyPress = MJstr3KeyPress
+ Width = 146
+ end
+ object BTPrint: TButton
+ Left = 272
+ Top = 229
+ Width = 120
+ Height = 57
+ Caption = #25552#20132
+ TabOrder = 1
+ OnClick = BTPrintClick
+ end
+ object Button6: TButton
+ Left = 303
+ Top = 83
+ Width = 80
+ Height = 45
+ Caption = #30133#28857
+ TabOrder = 2
+ OnClick = Button6Click
+ end
+ object Button8: TButton
+ Left = 303
+ Top = 134
+ Width = 80
+ Height = 45
+ Caption = #35814#24773
+ TabOrder = 3
+ OnClick = Button8Click
+ end
+ object Edit3: TcxTextEdit
+ Left = 45
+ Top = 241
+ TabOrder = 4
+ Text = #8730
+ OnClick = Edit3Click
+ OnKeyPress = MJstr3KeyPress
+ Width = 30
+ end
+ object Edit4: TcxTextEdit
+ Left = 149
+ Top = 241
+ TabOrder = 5
+ OnClick = Edit4Click
+ OnKeyPress = MJstr3KeyPress
+ Width = 30
+ end
+ object Tare: TcxTextEdit
+ Left = 159
+ Top = 144
+ TabOrder = 6
+ OnClick = CIFBegClick
+ OnKeyPress = MJstr3KeyPress
+ Width = 66
+ end
+ object Coefficient: TcxTextEdit
+ Left = 60
+ Top = 5
+ TabOrder = 7
+ OnClick = CIFBegClick
+ OnKeyPress = MJstr3KeyPress
+ Width = 80
+ end
+ object InputWeight: TcxTextEdit
+ Left = 81
+ Top = 135
+ TabOrder = 8
+ OnClick = CIFBegClick
+ OnKeyPress = MJstr3KeyPress
+ Width = 80
+ end
+ object BatchNO: TcxTextEdit
+ Left = 63
+ Top = 47
+ TabOrder = 9
+ OnClick = CIFBegClick
+ Width = 80
+ end
+ object PieceNo: TcxTextEdit
+ Left = 252
+ Top = 37
+ TabOrder = 10
+ Visible = False
+ OnClick = CIFBegClick
+ OnKeyPress = MJstr3KeyPress
+ Width = 102
+ end
+ object OutPutWeight: TcxTextEdit
+ Left = 81
+ Top = 179
+ TabOrder = 11
+ OnClick = CIFBegClick
+ OnKeyPress = MJstr3KeyPress
+ Width = 80
+ end
+ object YGNo: TcxTextEdit
+ Left = 316
+ Top = 6
+ TabOrder = 12
+ OnClick = CIFBegClick
+ Width = 76
+ end
+ object edtPacketNo: TcxTextEdit
+ Left = 303
+ Top = 185
+ TabOrder = 13
+ Visible = False
+ OnClick = CIFBegClick
+ OnKeyPress = MJstr3KeyPress
+ Width = 80
+ end
+ end
+ object Panel10: TPanel
+ Left = 1
+ Top = 1
+ Width = 415
+ Height = 172
+ Align = alTop
+ ParentBackground = False
+ TabOrder = 0
+ object Label22: TLabel
+ Left = 8
+ Top = 144
+ Width = 36
+ Height = 17
+ Caption = #25968#37327#65306
+ end
+ object Label13: TLabel
+ Left = 207
+ Top = 144
+ Width = 36
+ Height = 17
+ Caption = #21305#25968#65306
+ end
+ object Label14: TLabel
+ Left = 8
+ Top = 113
+ Width = 36
+ Height = 17
+ Caption = #32568#21495#65306
+ end
+ object Label23: TLabel
+ Left = 207
+ Top = 82
+ Width = 36
+ Height = 17
+ Caption = #39068#33394#65306
+ end
+ object Label24: TLabel
+ Left = 8
+ Top = 82
+ Width = 36
+ Height = 17
+ Caption = #33394#21495#65306
+ end
+ object Label25: TLabel
+ Left = 207
+ Top = 49
+ Width = 36
+ Height = 17
+ Caption = #21697#21517#65306
+ end
+ object Label27: TLabel
+ Left = 8
+ Top = 49
+ Width = 36
+ Height = 17
+ Caption = #35745#21010#65306
+ end
+ object Label1: TLabel
+ Left = 12
+ Top = 12
+ Width = 48
+ Height = 17
+ Caption = #25195#25551#20837#21475
+ end
+ object Label28: TLabel
+ Left = 207
+ Top = 113
+ Width = 36
+ Height = 17
+ Caption = #21345#21495#65306
+ end
+ object Piece: TcxTextEdit
+ Left = 248
+ Top = 141
+ TabOrder = 0
+ Width = 144
+ end
+ object Qty: TcxTextEdit
+ Left = 53
+ Top = 142
+ TabOrder = 1
+ Width = 144
+ end
+ object FtyPCId: TcxTextEdit
+ Left = 53
+ Top = 111
+ TabOrder = 2
+ Width = 144
+ end
+ object Color: TcxTextEdit
+ Left = 248
+ Top = 80
+ TabOrder = 3
+ Width = 144
+ end
+ object ColorNo: TcxTextEdit
+ Left = 53
+ Top = 80
+ TabOrder = 4
+ Width = 144
+ end
+ object CodeName: TcxTextEdit
+ Left = 248
+ Top = 47
+ TabOrder = 5
+ Width = 144
+ end
+ object OrderNo: TcxTextEdit
+ Left = 53
+ Top = 47
+ TabOrder = 6
+ Width = 144
+ end
+ object edtScan: TcxTextEdit
+ Tag = 999
+ Left = 98
+ Top = 5
+ Style.LookAndFeel.Kind = lfUltraFlat
+ Style.LookAndFeel.SkinName = 'WXI'
+ StyleDisabled.LookAndFeel.Kind = lfUltraFlat
+ StyleDisabled.LookAndFeel.SkinName = 'WXI'
+ StyleFocused.LookAndFeel.Kind = lfUltraFlat
+ StyleFocused.LookAndFeel.SkinName = 'WXI'
+ StyleHot.LookAndFeel.Kind = lfUltraFlat
+ StyleHot.LookAndFeel.SkinName = 'WXI'
+ TabOrder = 7
+ OnClick = edtScanClick
+ OnDblClick = edtScanDblClick
+ OnKeyPress = edtScanKeyPress
+ Width = 185
+ end
+ object Button3: TButton
+ Left = 334
+ Top = 7
+ Width = 58
+ Height = 34
+ Caption = #35774#32622
+ TabOrder = 8
+ OnClick = Button3Click
+ end
+ object BCIOID: TcxTextEdit
+ Left = 248
+ Top = 111
+ TabOrder = 9
+ Width = 144
+ end
+ end
+ end
+ object Panel3: TPanel [5]
+ Left = 69
+ Top = 468
+ Width = 276
+ Height = 207
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ TabOrder = 3
+ object SpeedButton1: TSpeedButton
+ Left = 1
+ Top = 0
+ Width = 70
+ Height = 70
+ Caption = '1'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton2: TSpeedButton
+ Left = 68
+ Top = 0
+ Width = 70
+ Height = 70
+ Caption = '2'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton3: TSpeedButton
+ Left = 136
+ Top = 0
+ Width = 70
+ Height = 70
+ Caption = '3'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton4: TSpeedButton
+ Left = 204
+ Top = -3
+ Width = 70
+ Height = 70
+ Caption = #8592
+ OnClick = SpeedButton12Click
+ end
+ object SpeedButton5: TSpeedButton
+ Left = 0
+ Top = 68
+ Width = 70
+ Height = 70
+ Caption = '4'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton6: TSpeedButton
+ Left = 68
+ Top = 68
+ Width = 70
+ Height = 70
+ Caption = '5'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton7: TSpeedButton
+ Left = 136
+ Top = 68
+ Width = 70
+ Height = 70
+ Caption = '6'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton8: TSpeedButton
+ Left = 204
+ Top = 68
+ Width = 70
+ Height = 70
+ Caption = '0'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton9: TSpeedButton
+ Left = 0
+ Top = 136
+ Width = 70
+ Height = 70
+ Caption = '7'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton10: TSpeedButton
+ Left = 68
+ Top = 136
+ Width = 70
+ Height = 70
+ Caption = '8'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton11: TSpeedButton
+ Tag = 9
+ Left = 136
+ Top = 136
+ Width = 70
+ Height = 70
+ Caption = '9'
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton12: TSpeedButton
+ Left = 204
+ Top = 136
+ Width = 70
+ Height = 70
+ Caption = '.'
+ OnClick = SpeedButton1Click
+ end
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 1313
+ Top = 223
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 1305
+ Top = 168
+ end
+ object cxStyleRepository1: TcxStyleRepository
+ Left = 1104
+ Top = 211
+ PixelsPerInch = 96
+ object cxStyle1: TcxStyle
+ AssignedValues = [svColor, svFont]
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -14
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ end
+ object cxStyle2: TcxStyle
+ AssignedValues = [svFont, svTextColor]
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -20
+ Font.Name = #23435#20307
+ Font.Pitch = fpFixed
+ Font.Style = [fsBold]
+ TextColor = clDefault
+ end
+ object cxStyle4: TcxStyle
+ AssignedValues = [svFont]
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #23435#20307
+ Font.Style = []
+ end
+ end
+ object GPM_1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 1149
+ Top = 717
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 848
+ Top = 127
+ end
+ object ADOCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 912
+ Top = 123
+ end
+ object RMDB_1: TRMDBDataSet
+ Visible = True
+ DataSet = ADOQueryPrint
+ Left = 832
+ Top = 591
+ end
+ object DS_2: TDataSource
+ DataSet = CDS_2
+ Left = 1256
+ Top = 615
+ end
+ object CDS_2: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 1184
+ Top = 615
+ end
+ object ADOQueryPrint: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 756
+ Top = 611
+ end
+ object GPM_2: TcxGridPopupMenu
+ Grid = cxGrid2
+ PopupMenus = <>
+ Left = 1136
+ Top = 658
+ end
+ object ADOQueryMainDSC: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ SQL.Strings = (
+ 'select A.*,C.OrderNo,B.SWFBColor,B.SWFBHW,B.SWFBCodeName,'
+ ' B.SWFBCode,B.SWFBKZ,B.WKMS,B.KZBig,B.KZSmal,'
+
+ ' SCMQty=(select isnull(Sum(MJLen),0) from WFB_MJJY WM wher' +
+ 'e WM.APId=A.APId and len(WM.MJID)>8),'
+
+ ' Case when A.OrderQtyM-(select isnull(Sum(MJLen),0) from W' +
+ 'FB_MJJY WM where WM.APId=A.APId )>0 '
+
+ ' then A.OrderQtyM-(select isnull(Sum(MJLen),0) fr' +
+ 'om WFB_MJJY WM where WM.APId=A.APId ) else 0 end as WSCMQty'
+ 'from WFBOrder_Sub_AnPai A '
+ 'inner join WFBOrder_Sub B on A.SubId=B.SubId'
+ 'inner join WFBOrder_Main C on A.MainId=C.MainId'
+
+ 'where C.ChkStatus='#39#23457#26680#36890#36807#39' and RTrim(isnull(A.SCStatus,'#39#39'))<>'#39#24050#23436#25104#39 +
+ ' '
+ 'and isnull(B.AnPaiChkStatus,'#39#39')='#39#23457#26680#36890#36807#39' and A.SCXDFlag=1'
+ '')
+ Left = 1072
+ Top = 135
+ end
+ object RM1: TRMGridReport
+ ThreadPrepareReport = True
+ InitialZoom = pzDefault
+ PreviewButtons = [rmpbZoom, rmpbLoad, rmpbSave, rmpbPrint, rmpbFind, rmpbPageSetup, rmpbExit, rmpbExport, rmpbNavigator]
+ DefaultCollate = False
+ ShowPrintDialog = False
+ SaveReportOptions.RegistryPath = 'Software\ReportMachine\ReportSettings\'
+ PreviewOptions.RulerUnit = rmutScreenPixels
+ PreviewOptions.RulerVisible = False
+ PreviewOptions.DrawBorder = False
+ PreviewOptions.BorderPen.Color = clGray
+ PreviewOptions.BorderPen.Style = psDash
+ Dataset = RMDB_1
+ CompressLevel = rmzcFastest
+ CompressThread = False
+ LaterBuildEvents = True
+ OnlyOwnerDataSet = False
+ Left = 676
+ Top = 583
+ ReportData = {}
+ end
+ object ADOTmp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 975
+ Top = 118
+ end
+ object CDS_3: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 1232
+ Top = 399
+ end
+ object DS_3: TDataSource
+ DataSet = CDS_3
+ Left = 1360
+ Top = 391
+ end
+ object ADOQueryImage: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 896
+ Top = 642
+ end
+ object DataSource2: TDataSource
+ DataSet = ADOQueryImage
+ Left = 980
+ Top = 630
+ end
+ object IdFTP1: TIdFTP
+ ConnectTimeout = 0
+ NATKeepAlive.UseKeepAlive = False
+ NATKeepAlive.IdleTimeMS = 0
+ NATKeepAlive.IntervalMS = 0
+ ProxySettings.ProxyType = fpcmNone
+ ProxySettings.Port = 0
+ ReadTimeout = 0
+ Left = 928
+ Top = 577
+ end
+ object DS_ImgHX: TDataSource
+ DataSet = Qry_ImgHX
+ Left = 1036
+ Top = 406
+ end
+ object Qry_ImgHX: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 920
+ Top = 402
+ end
+ object DS_1: TDataSource
+ DataSet = CDS_1
+ Left = 1272
+ Top = 703
+ end
+ object CDS_1: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 1200
+ Top = 703
+ end
+ object GPM_3: TcxGridPopupMenu
+ Grid = cxGrid3
+ PopupMenus = <>
+ Left = 1160
+ Top = 402
+ end
+ object ADOQueryTmp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 426
+ Top = 588
+ end
+end
diff --git a/T03贸易布匹检验/U_TradeMachInsp.pas b/T03贸易布匹检验/U_TradeMachInsp.pas
new file mode 100644
index 0000000..a07c316
--- /dev/null
+++ b/T03贸易布匹检验/U_TradeMachInsp.pas
@@ -0,0 +1,2277 @@
+unit U_TradeMachInsp;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls,
+ Forms, Dialogs, StdCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
+ cxDataStorage, cxEdit, DB, cxDBData, cxCalendar, cxGridLevel,
+ cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
+ cxControls, cxGridCustomView, cxGrid, RM_Common, RM_Class, RM_GridReport,
+ RM_System, RM_Dataset, ADODB, DBClient, cxGridCustomPopupMenu, cxGridPopupMenu,
+ ExtCtrls, ComCtrls, ToolWin, cxTextEdit, Buttons, cxSplitter, cxCheckBox,
+ MovePanel, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, Menus,
+ U_BaseList, dxDateRanges,
+ dxBarBuiltInMenu, cxContainer, cxImage, cxDBEdit, IdBaseComponent, IdComponent,
+ IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, ShellAPI, IdFTP,
+ FireDAC.Stan.StorageXML, cxPC, dxScrollbarAnnotations,
+ cxProgressBar, dxSkinsCore;
+
+type
+ TfrmTradeMachInsp = class(TfrmBaseList)
+ cxStyleRepository1: TcxStyleRepository;
+ cxStyle1: TcxStyle;
+ cxStyle2: TcxStyle;
+ GPM_1: TcxGridPopupMenu;
+ ADOQueryMain: TADOQuery;
+ ADOCmd: TADOQuery;
+ RMDB_1: TRMDBDataSet;
+ DS_2: TDataSource;
+ CDS_2: TClientDataSet;
+ ADOQueryPrint: TADOQuery;
+ GPM_2: TcxGridPopupMenu;
+ ADOQueryMainDSC: TADOQuery;
+ Panel7: TPanel;
+ AOrdDefNote1: TRichEdit;
+ RM1: TRMGridReport;
+ ADOTmp: TADOQuery;
+ ScrollBox1: TScrollBox;
+ SpeedButton13: TSpeedButton;
+ SpeedButton14: TSpeedButton;
+ SpeedButton15: TSpeedButton;
+ SpeedButton16: TSpeedButton;
+ SpeedButton17: TSpeedButton;
+ SpeedButton18: TSpeedButton;
+ SpeedButton21: TSpeedButton;
+ SpeedButton22: TSpeedButton;
+ SpeedButton23: TSpeedButton;
+ SpeedButton24: TSpeedButton;
+ SpeedButton25: TSpeedButton;
+ SpeedButton26: TSpeedButton;
+ SpeedButton29: TSpeedButton;
+ SpeedButton30: TSpeedButton;
+ SpeedButton31: TSpeedButton;
+ SpeedButton32: TSpeedButton;
+ SpeedButton33: TSpeedButton;
+ SpeedButton34: TSpeedButton;
+ SpeedButton37: TSpeedButton;
+ SpeedButton38: TSpeedButton;
+ SpeedButton39: TSpeedButton;
+ SpeedButton40: TSpeedButton;
+ SpeedButton41: TSpeedButton;
+ SpeedButton42: TSpeedButton;
+ SpeedButton45: TSpeedButton;
+ SpeedButton46: TSpeedButton;
+ SpeedButton47: TSpeedButton;
+ SpeedButton48: TSpeedButton;
+ SpeedButton50: TSpeedButton;
+ SpeedButton51: TSpeedButton;
+ SpeedButton54: TSpeedButton;
+ SpeedButton55: TSpeedButton;
+ SpeedButton56: TSpeedButton;
+ SpeedButton57: TSpeedButton;
+ SpeedButton58: TSpeedButton;
+ SpeedButton59: TSpeedButton;
+ SpeedButton62: TSpeedButton;
+ SpeedButton63: TSpeedButton;
+ SpeedButton64: TSpeedButton;
+ SpeedButton65: TSpeedButton;
+ SpeedButton66: TSpeedButton;
+ SpeedButton67: TSpeedButton;
+ SpeedButton70: TSpeedButton;
+ SpeedButton71: TSpeedButton;
+ SpeedButton72: TSpeedButton;
+ SpeedButton73: TSpeedButton;
+ SpeedButton74: TSpeedButton;
+ SpeedButton75: TSpeedButton;
+ SpeedButton19: TSpeedButton;
+ SpeedButton20: TSpeedButton;
+ SpeedButton27: TSpeedButton;
+ SpeedButton28: TSpeedButton;
+ SpeedButton35: TSpeedButton;
+ SpeedButton36: TSpeedButton;
+ SpeedButton43: TSpeedButton;
+ SpeedButton44: TSpeedButton;
+ SpeedButton52: TSpeedButton;
+ SpeedButton53: TSpeedButton;
+ SpeedButton60: TSpeedButton;
+ SpeedButton61: TSpeedButton;
+ SpeedButton68: TSpeedButton;
+ SpeedButton69: TSpeedButton;
+ SpeedButton76: TSpeedButton;
+ SpeedButton77: TSpeedButton;
+ SpeedButton78: TSpeedButton;
+ SpeedButton79: TSpeedButton;
+ SpeedButton80: TSpeedButton;
+ SpeedButton81: TSpeedButton;
+ SpeedButton82: TSpeedButton;
+ SpeedButton83: TSpeedButton;
+ CDS_3: TClientDataSet;
+ DS_3: TDataSource;
+ ADOQueryImage: TADOQuery;
+ DataSource2: TDataSource;
+ IdFTP1: TIdFTP;
+ Panel4: TPanel;
+ cxGrid3: TcxGrid;
+ Tv3: TcxGridDBTableView;
+ cxGridDBColumn1: TcxGridDBColumn;
+ v3Column1: TcxGridDBColumn;
+ v3Column4: TcxGridDBColumn;
+ v3Column5: TcxGridDBColumn;
+ cxGridLevel2: TcxGridLevel;
+ Panel3: TPanel;
+ SpeedButton1: TSpeedButton;
+ SpeedButton2: TSpeedButton;
+ SpeedButton3: TSpeedButton;
+ SpeedButton4: TSpeedButton;
+ SpeedButton5: TSpeedButton;
+ SpeedButton6: TSpeedButton;
+ SpeedButton7: TSpeedButton;
+ SpeedButton8: TSpeedButton;
+ SpeedButton9: TSpeedButton;
+ SpeedButton10: TSpeedButton;
+ SpeedButton11: TSpeedButton;
+ SpeedButton12: TSpeedButton;
+ Panel1: TPanel;
+ Pic_Image1: TcxDBImage;
+ Tv3Column1: TcxGridDBColumn;
+ MovePanel1: TMovePanel;
+ Label17: TLabel;
+ Label18: TLabel;
+ lblLenUnit1: TLabel;
+ CIFBeg: TcxTextEdit;
+ Button1: TButton;
+ Button4: TButton;
+ CIFEnd: TcxTextEdit;
+ CIFQty: TcxTextEdit;
+ RadioGroup1: TRadioGroup;
+ Button2: TButton;
+ Panel8: TPanel;
+ cxDBImage1: TcxDBImage;
+ DS_ImgHX: TDataSource;
+ Qry_ImgHX: TADOQuery;
+ Tv3Column3: TcxGridDBColumn;
+ Tv3Column4: TcxGridDBColumn;
+ cxStyle4: TcxStyle;
+ cxPageControl1: TcxPageControl;
+ cxTabSheet1: TcxTabSheet;
+ 鿴: TcxTabSheet;
+ cxGrid2: TcxGrid;
+ Tv2: TcxGridDBTableView;
+ tv2CDType: TcxGridDBColumn;
+ tv2CDWZ: TcxGridDBColumn;
+ v2Column2: TcxGridDBColumn;
+ Tv2CDQty: TcxGridDBColumn;
+ Tv2CDReason: TcxGridDBColumn;
+ v2Column1: TcxGridDBColumn;
+ v2Column3: TcxGridDBColumn;
+ v2Column4: TcxGridDBColumn;
+ cxGridLevel1: TcxGridLevel;
+ cxGrid1: TcxGrid;
+ TV1: TcxGridDBTableView;
+ cxGridDBColumn2: TcxGridDBColumn;
+ cxGridDBColumn3: TcxGridDBColumn;
+ cxGridDBColumn4: TcxGridDBColumn;
+ cxGridDBColumn5: TcxGridDBColumn;
+ cxGridDBColumn6: TcxGridDBColumn;
+ cxGridDBColumn7: TcxGridDBColumn;
+ cxGridDBColumn8: TcxGridDBColumn;
+ cxGridDBColumn9: TcxGridDBColumn;
+ cxGridLevel3: TcxGridLevel;
+ DS_1: TDataSource;
+ CDS_1: TClientDataSet;
+ lblCIFName: TLabel;
+ Label2: TLabel;
+ Label8: TLabel;
+ CIFNumber: TcxTextEdit;
+ Panel9: TPanel;
+ Panel10: TPanel;
+ Label22: TLabel;
+ Label13: TLabel;
+ Label14: TLabel;
+ Label23: TLabel;
+ Label24: TLabel;
+ Label25: TLabel;
+ Label27: TLabel;
+ Piece: TcxTextEdit;
+ Qty: TcxTextEdit;
+ FtyPCId: TcxTextEdit;
+ Color: TcxTextEdit;
+ ColorNo: TcxTextEdit;
+ CodeName: TcxTextEdit;
+ OrderNo: TcxTextEdit;
+ Panel2: TPanel;
+ lblLenUnit: TLabel;
+ Label4: TLabel;
+ Label5: TLabel;
+ Label11: TLabel;
+ InputLen: TcxTextEdit;
+ BTPrint: TButton;
+ Button6: TButton;
+ Button8: TButton;
+ ToolBar2: TToolBar;
+ ToolButton3: TToolButton;
+ ToolButton5: TToolButton;
+ ToolButton6: TToolButton;
+ Label10: TLabel;
+ Edit3: TcxTextEdit;
+ Label12: TLabel;
+ Edit4: TcxTextEdit;
+ GPM_3: TcxGridPopupMenu;
+ pnlSet: TPanel;
+ Label35: TLabel;
+ Label16: TLabel;
+ Label26: TLabel;
+ Label6: TLabel;
+ Label7: TLabel;
+ Label9: TLabel;
+ Label15: TLabel;
+ Label19: TLabel;
+ Label20: TLabel;
+ Label21: TLabel;
+ Label3: TLabel;
+ Label30: TLabel;
+ Label33: TLabel;
+ edtChen: TcxTextEdit;
+ edtMaBiao: TcxTextEdit;
+ ComboBox1: TComboBox;
+ Edit6: TcxTextEdit;
+ edtMBDW: TcxTextEdit;
+ MinLen: TcxTextEdit;
+ MinWeight: TcxTextEdit;
+ MaxLen: TcxTextEdit;
+ MaxWeight: TcxTextEdit;
+ MPlace: TcxTextEdit;
+ YPlace: TcxTextEdit;
+ KgPlace: TcxTextEdit;
+ lblRuleConversion: TLabel;
+ Tare: TcxTextEdit;
+ Coefficient: TcxTextEdit;
+ Label1: TLabel;
+ edtScan: TcxTextEdit;
+ Button3: TButton;
+ ToolButton4: TToolButton;
+ ToolButton7: TToolButton;
+ ToolButton8: TToolButton;
+ InputWeight: TcxTextEdit;
+ Label36: TLabel;
+ Label28: TLabel;
+ BCIOID: TcxTextEdit;
+ ToolBar1: TToolBar;
+ btnRK: TToolButton;
+ btnCXRK: TToolButton;
+ ToolButton2: TToolButton;
+ BatchNO: TcxTextEdit;
+ Label29: TLabel;
+ Tv3Column2: TcxGridDBColumn;
+ Label31: TLabel;
+ ComboBox2: TComboBox;
+ Label32: TLabel;
+ PieceNo: TcxTextEdit;
+ Label34: TLabel;
+ ComboBox3: TComboBox;
+ Label37: TLabel;
+ OutPutWeight: TcxTextEdit;
+ Label38: TLabel;
+ Label39: TLabel;
+ YGNo: TcxTextEdit;
+ Edit1: TcxTextEdit;
+ edtPacketNo: TcxTextEdit;
+ Label40: TLabel;
+ Label41: TLabel;
+ edtdabao: TcxTextEdit;
+ edtfrnshu: TcxTextEdit;
+ ADOQueryTmp: TADOQuery;
+ Tv3Column5: TcxGridDBColumn;
+ procedure FormDestroy(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormShow(Sender: TObject);
+ procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
+ procedure BTPrintClick(Sender: TObject);
+ procedure SpeedButton1Click(Sender: TObject);
+ procedure SpeedButton12Click(Sender: TObject);
+ procedure SpeedButton13Click(Sender: TObject);
+ procedure Button1Click(Sender: TObject);
+ procedure edtScanKeyPress(Sender: TObject; var Key: Char);
+ procedure CIFBegClick(Sender: TObject);
+ procedure CIFEndChange(Sender: TObject);
+ procedure Edit3Click(Sender: TObject);
+ procedure Edit4Click(Sender: TObject);
+ procedure Edit6Click(Sender: TObject);
+ procedure MJstr3KeyPress(Sender: TObject; var Key: Char);
+ procedure Button2Click(Sender: TObject);
+ procedure GrossWeightChange(Sender: TObject);
+ procedure edtScanClick(Sender: TObject);
+ procedure NetWeightKeyPress(Sender: TObject; var Key: Char);
+ procedure FormCreate(Sender: TObject);
+ procedure Button4Click(Sender: TObject);
+ procedure edtChenClick(Sender: TObject);
+ procedure Button6Click(Sender: TObject);
+ procedure edtScanDblClick(Sender: TObject);
+ procedure Button8Click(Sender: TObject);
+ procedure Tv3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+ procedure edtYJClick(Sender: TObject);
+ procedure cxDBImage1DblClick(Sender: TObject);
+ procedure Pic_Image1DblClick(Sender: TObject);
+ procedure Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
+ procedure lblLenUnitClick(Sender: TObject);
+ procedure ToolButton3Click(Sender: TObject);
+ procedure ToolButton6Click(Sender: TObject);
+ procedure ToolButton5Click(Sender: TObject);
+ procedure Button3Click(Sender: TObject);
+ procedure ToolButton4Click(Sender: TObject);
+ procedure ToolButton7Click(Sender: TObject);
+ procedure ToolButton8Click(Sender: TObject);
+ procedure MPlaceExit(Sender: TObject);
+ procedure InputLenChange(Sender: TObject);
+ procedure InputWeightChange(Sender: TObject);
+ procedure btnRKClick(Sender: TObject);
+ procedure btnCXRKClick(Sender: TObject);
+ procedure ToolButton2Click(Sender: TObject);
+ procedure ComboBox2Change(Sender: TObject);
+ procedure ComboBox3Change(Sender: TObject);
+ procedure Edit1Click(Sender: TObject);
+ procedure Edit1Change(Sender: TObject);
+ procedure edtdabaoClick(Sender: TObject);
+ private
+ { Private declarations }
+ FCIID, FOperationStatus, FCIFName, FWorkshop: string;
+ FBCIOID, FOrderNo, FMainId, FSubId, FPCId, FConNo, FConMId, FConSId: string;
+ FBatchNO, FLenUnit, FC_Code, FC_Name, FC_Spec, FC_Width, FC_GramWeight: string;
+ FC_Color, FC_EColor, FC_ColorNo, FC_StyleNo, FC_Composition, FC_Pattern, FC_CustPattern, FC_ColorDepth: string;
+ Faddwet: string;
+ FFtyPCId, FGangNo, FRulePieceNo, FCDUnit: string;
+ FPieceNo: Integer;
+ IsCommopen: boolean;
+ FPacketCIID: string;
+ FPacketCount: Integer;
+ procedure SetINIFile();
+ procedure GetINIFile();
+ procedure SetUnit(MUnit: string);
+ procedure InitPlan(MSubID: string);
+ procedure InitCDPanel(); //ˢ´õѡ
+ procedure InitCDGrid(MCIID: string); //ˢ´õǼϢ
+ procedure InitCDGridCX(MCIID: string); //ˢ´õѯϢ
+ procedure InitJYGrid(); //ˢ¼Ϣ
+ function CheckData(CKType: string): Boolean; //У
+ function SaveData(): Boolean; //
+ procedure InitLCK(MBCIOID: string); //ɨ̿
+ procedure InitJTM(MCIID: string); //ɨ
+ procedure SetDdetails();
+ procedure ClearGlobal(); //ȫID
+ procedure PrtData(MCIID: string); //ӡǩ
+ procedure QuantityConversion(); //
+ procedure InitImage(YFTPName: string); //ͼƬ
+ procedure InitImageHX(HXSID: string);
+ procedure LookImage(FileName: string);
+ procedure OpenCom(DllName: string); //
+ procedure CloseCom(DllName: string); //رմ
+ procedure On1201(var Message: Tmessage); message 1201; //ӳ
+ procedure On1301(var Message: Tmessage); message 1301; //
+ procedure PrtMD(MInNo: string); //ӡⵥ
+
+ procedure PrintBao(PPacketId: string);
+
+ public
+ fmanage: string;
+ fFlileFlag: string;
+ { Public declarations }
+ end;
+
+var
+ frmTradeMachInsp: TfrmTradeMachInsp;
+ newh, newh1: hwnd;
+
+implementation
+
+uses
+ U_DataLink, U_RTFun, U_ZDYHelp, U_iniParam;
+
+{$R *.dfm}
+
+procedure TfrmTradeMachInsp.PrintBao(PPacketId: string);
+var
+ fPrintFile, NLBName: string;
+ Txt, fImagePath: string;
+ Moudle: THandle;
+ Makebar: TMakebar;
+ Mixtext: TMixtext;
+begin
+
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_Prt_PackLab ' + quotedstr(PPacketId));
+ Open;
+ end;
+
+ NLBName := ADOQueryPrint.FieldByName('LabPackage').AsString;
+
+ ExportFtErpFile(Trim(NLBName) + '.rmf', ADOQueryTmp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(NLBName) + '.rmf';
+ if not FileExists(fPrintFile) then
+ begin
+ Application.MessageBox(PChar('û' + fPrintFile), 'ʾ', 0);
+ Exit;
+ end;
+ if FileExists(fPrintFile) then
+ begin
+ RM1.LoadFromFile(fPrintFile);
+ RM1.DefaultCopies := 1;
+ RM1.printReport;
+ end;
+ if FileExists(fImagePath) then
+ DeleteFile(fImagePath);
+
+end;
+
+procedure TfrmTradeMachInsp.SetDdetails();
+begin
+ AOrdDefNote1.Text := '';
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FBCIOID + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'Ʒ:' + FC_Name + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'ŷ:' + FC_Width + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_GramWeight + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'ɫ:' + FC_Color + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + 'ɫ:' + FC_ColorNo + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_StyleNo + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + FC_Pattern + #13;
+ AOrdDefNote1.Text := AOrdDefNote1.Text + ':' + Faddwet + #13;
+end;
+
+procedure TfrmTradeMachInsp.PrtMD(MInNo: string);
+var
+ fPrintFile, FLBName: string;
+begin
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add(' EXEC P_Trade_Cloth_In_Prt11 ');
+ SQL.Add(' @Filtration=''' + Trim(MInNo) + '''');
+ Open;
+ end;
+
+ FLBName := '̨ⵥ';
+
+ ExportFtErpFile(FLBName + '.rmf', ADOTmp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLBName + '.rmf';
+
+ if FileExists(fPrintFile) then
+ begin
+ RM1.LoadFromFile(fPrintFile);
+ RM1.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1);
+ RM1.PrintReport;
+ end
+ else
+ begin
+ Application.MessageBox(PChar('û' + fPrintFile), 'ʾ', 0);
+ end;
+end;
+
+procedure TfrmTradeMachInsp.SetINIFile();
+begin
+ if edtChen.Text = '' then
+ IsDZCDYDll := '1'
+ else
+ IsDZCDYDll := '0';
+
+ if edtMaBiao.Text = '' then
+ IsMBDYDll := '1'
+ else
+ IsMBDYDll := '0';
+
+ if edtMBDW.Text = '' then
+ IsMBDYDllUnit := '1'
+ else
+ IsMBDYDllUnit := '0';
+
+ LabQty := ComboBox1.Text;
+ FMinLen := MinLen.Text;
+ FMaxLen := MaxLen.Text;
+ FMinWeight := MinWeight.Text;
+ FMaxWeight := MaxWeight.Text;
+
+ FMPlace := MPlace.Text;
+ FYPlace := YPlace.Text;
+ FKgPlace := KgPlace.Text;
+
+ WriteINIFile();
+
+end;
+
+procedure TfrmTradeMachInsp.GetINIFile();
+begin
+ if IsDZCDYDll = '1' then
+ edtChen.Text := ''
+ else
+ edtChen.Text := '';
+
+ if IsMBDYDll = '1' then
+ edtMaBiao.Text := ''
+ else
+ edtMaBiao.Text := '';
+
+ if IsMBDYDllUnit = '1' then
+ edtMBDW.Text := ''
+ else
+ edtMBDW.Text := '';
+
+ ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(trim(LabQty));
+
+ MinLen.Text := FMinLen;
+ MaxLen.Text := FMaxLen;
+ MinWeight.Text := FMinWeight;
+ MaxWeight.Text := FMaxWeight;
+
+ MPlace.Text := FMPlace;
+ YPlace.Text := FYPlace;
+ KgPlace.Text := FKgPlace;
+end;
+
+procedure TfrmTradeMachInsp.SetUnit(MUnit: string);
+begin
+ lblLenUnit.Caption := MUnit;
+ lblLenUnit1.Caption := MUnit;
+end;
+
+procedure TfrmTradeMachInsp.InitImage(YFTPName: string);
+begin
+// with ADOQueryImage do
+// begin
+// close;
+// sql.Clear;
+// sql.Add('select * from TC_File A');
+// sql.Add('where isnull(WBID,'''')<>'''' and WBID=' + quotedstr(YFTPName));
+//// showmessage(sql.text);
+// open;
+// end;
+end;
+
+procedure TfrmTradeMachInsp.InitImageHX(HXSID: string);
+begin
+// with Qry_ImgHX do
+// begin
+// close;
+// sql.Clear;
+// sql.Add('select * from TC_File A');
+// sql.Add('where isnull(WBID,'''')<>'''' and WBID=' + quotedstr(HXSID));
+//// ShowMessage(SQL.Text);
+// open;
+// end;
+end;
+
+procedure TfrmTradeMachInsp.QuantityConversion();
+begin
+ if ComboBox3.ItemIndex = 0 then // InputWeight ë OutPutWeight
+ begin
+ if lblRuleConversion.Caption = 'ת' then
+ begin
+ InputWeight.Text := floattostr(StrToFloatdef(trim(InputLen.Text), 0) * StrToFloatdef(trim(Coefficient.Text), 0) + StrToFloatdef(trim(Tare.Text), 0));
+ end;
+ if lblRuleConversion.Caption = 'ëת' then
+ begin
+ InputLen.Text := floattostr(StrToFloatdef(trim(InputWeight.Text), 0) * StrToFloatdef(trim(Coefficient.Text), 0));
+ end;
+ if lblRuleConversion.Caption = 'ת' then
+ begin
+ InputLen.Text := floattostr((RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), 1) - StrToFloatdef(trim(Tare.Text), 0)) * StrToFloatdef(trim(Coefficient.Text), 0));
+ end;
+ OutPutWeight.Text := floattostr((StrToFloatdef(trim(InputWeight.Text), 0) - StrToFloatdef(trim(Tare.Text), 0))); //
+ end;
+
+ if ComboBox3.ItemIndex = 1 then // InputWeight OutPutWeight ë
+ begin
+ if lblRuleConversion.Caption = 'ת' then
+ begin
+ InputWeight.Text := floattostr(StrToFloatdef(trim(InputLen.Text), 0) * StrToFloatdef(trim(Coefficient.Text), 0));
+ end;
+ if lblRuleConversion.Caption = 'ëת' then
+ begin
+ InputLen.Text := floattostr((StrToFloatdef(trim(InputWeight.Text), 0) + StrToFloatdef(trim(Tare.Text), 0)) * StrToFloatdef(trim(Coefficient.Text), 0));
+ end;
+ if lblRuleConversion.Caption = 'ת' then
+ begin
+ InputLen.Text := floattostr(RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), 1) * StrToFloatdef(trim(Coefficient.Text), 0));
+ end;
+ OutPutWeight.Text := floattostr((StrToFloatdef(trim(InputWeight.Text), 0) + StrToFloatdef(trim(Tare.Text), 0))); //ë
+ end;
+
+end;
+
+function TfrmTradeMachInsp.CheckData(CKType: string): Boolean;
+var
+ mvalue: Double;
+begin
+ try
+ if Trim(FBCIOID) = '' then
+ raise Exception.Create('ɨ̿');
+
+ if Trim(CKType) = 'ύ' then
+ begin
+
+ if edtdabao.Text = '' then
+ begin
+ if StrToIntDef(edtPacketNo.Text, 0) = 0 then
+ raise Exception.Create('ŲΪ!');
+ if StrToIntDef(edtfrnshu.Text, 0) = 0 then
+ raise Exception.Create('ÿΪ!');
+
+ end;
+
+ if (StrToIntDef(PieceNo.Text, 0) = 0) and (ComboBox2.Text = 'ֶ') then
+ raise Exception.Create('ŲΪ!');
+
+ if trim(lblLenUnit.Caption) = '' then
+ raise Exception.Create('ȵλΪ!');
+
+ if Trim(InputWeight.Text) <> '' then
+ begin
+ if TryStrToFloat(InputWeight.Text, mvalue) = False then
+ raise Exception.Create('¼!');
+ if strtofloatdef(trim(InputWeight.Text), 0) < Strtofloatdef(MinWeight.Text, 0) then
+ raise Exception.Create('С' + MinWeight.Text + '!');
+ if strtofloatdef(trim(InputWeight.Text), 0) > Strtofloatdef(MaxWeight.Text, 0) then
+ raise Exception.Create('ܴ' + MaxWeight.Text + '!');
+ end;
+
+ if Trim(InputLen.Text) <> '' then
+ begin
+ if TryStrToFloat(InputLen.Text, mvalue) = False then
+ raise Exception.Create('¼!');
+ if strtofloatdef(trim(InputLen.Text), 0) < Strtofloatdef(MinLen.Text, 0) then
+ raise Exception.Create('ȲС' + MinLen.Text + '!');
+ if strtofloatdef(trim(InputLen.Text), 0) > Strtofloatdef(MaxLen.Text, 0) then
+ raise Exception.Create('Ȳܴ' + MaxLen.Text + '!');
+ end;
+
+ if (strtofloatdef(trim(InputLen.Text), 0) = 0) and (strtofloatdef(trim(InputWeight.Text), 0) = 0) then
+ raise Exception.Create('ȺܶΪ0!!');
+ end;
+ Result := True;
+ except
+ Result := false;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+end;
+
+procedure TfrmTradeMachInsp.ClearGlobal();
+begin
+ FBCIOID := '';
+ FOrderNo := '';
+ FConNo := '';
+ FConMId := '';
+ FConSId := '';
+ FMainId := '';
+ FSubId := '';
+ FPCId := '';
+ FC_CustPattern := '';
+ FC_ColorDepth := '';
+ FFtyPCId := '';
+ FGangNo := '';
+ FC_Code := '';
+ FC_Name := '';
+ FBatchNO := '';
+ FC_Spec := '';
+ FC_Color := '';
+ FC_ColorNo := '';
+ FC_EColor := '';
+ FC_StyleNo := '';
+ FC_Composition := '';
+ FC_Width := '';
+ FC_GramWeight := '';
+ FC_Pattern := '';
+ FCIID := '';
+ FWorkshop := '';
+ InputLen.Text := '';
+ Coefficient.Text := '';
+ AOrdDefNote1.Text := '';
+ Tare.Text := '';
+ InputWeight.Text := '';
+ FLenUnit := '';
+ YGNo.Text := '';
+ BatchNO.Text := '';
+ Faddwet := '';
+
+ FPacketCIID := '';
+ FPacketCount := 0;
+
+end;
+
+procedure TfrmTradeMachInsp.LookImage(FileName: string);
+var
+ sFieldName: string;
+begin
+ sFieldName := leftbstr(ExtractFilePath(Application.ExeName), 1) + ':\ͼƬ鿴';
+ if not DirectoryExists(pchar(sFieldName)) then
+ CreateDirectory(pchar(sFieldName), nil);
+ sFieldName := sFieldName + '\' + trim(FileName);
+ try
+ IdFTP1.Host := ReadINIFileStr('SYSTEMSET.INI', 'SERVER', 'ַ', '127.0.0.1');
+ IdFTP1.Username := 'three';
+ IdFTP1.Password := '641010';
+ IdFTP1.Connect();
+ except
+ ;
+ end;
+ if IdFTP1.Connected then
+ begin
+ try
+ IdFTP1.Get(fFlileFlag + '\' + Trim(FileName), sFieldName, true, false);
+ except
+ Application.MessageBox('ͻͼļ', 'ʾ', MB_ICONWARNING);
+ IdFTP1.Quit;
+ Exit;
+ end;
+ end
+ else
+ begin
+ Application.MessageBox('ļ', 'ʾ', MB_ICONWARNING);
+ IdFTP1.Quit;
+ Exit;
+ end;
+ if IdFTP1.Connected then
+ IdFTP1.Quit;
+ ShellExecute(Handle, 'open', PChar(sFieldName), '', '', SW_SHOWNORMAL);
+end;
+
+procedure TfrmTradeMachInsp.Pic_Image1DblClick(Sender: TObject);
+begin
+ if TcxDBImage(Sender).Picture.Height = 0 then
+ exit;
+ LookImage(ADOQueryImage.fieldbyname(TcxDBImage(Sender).Hint).asstring);
+end;
+
+procedure TfrmTradeMachInsp.InitPlan(MSubID: string);
+begin
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('EXEC P_Trade_Insp_Get_plan @SubID=''' + Trim(MSubID) + '''');
+ Open;
+ end;
+ if NOT ADOTmp.IsEmpty then
+ begin
+// InitImage(Trim(ADOTmp.fieldbyname('YFTPName').AsString));
+// InitImageHX(Trim(ADOTmp.fieldbyname('HXSID').AsString));
+ FBCIOID := Trim(MSubID);
+ FLenUnit := Trim(ADOTmp.fieldbyname('ruleLenUnit').AsString);
+ if (FLenUnit='') then
+ begin
+ ShowMessage('ƻװδóȵλ!');
+ end;
+
+ SetUnit(FLenUnit);
+ //ƻõijȵλ ûĻֵͽһ
+ // if Trim(ADOTmp.fieldbyname('CDUnit').AsString) = '' then
+ FCDUnit := lblLenUnit.Caption ;
+ // else
+ // FCDUnit := Trim(ADOTmp.fieldbyname('ordUnit').AsString);
+
+ FConMId := Trim(ADOTmp.fieldbyname('ConMId').AsString);
+ FConSId := Trim(ADOTmp.fieldbyname('ConSId').AsString);
+ FConNo := Trim(ADOTmp.fieldbyname('ConNo').AsString);
+ FOrderNo := Trim(ADOTmp.fieldbyname('OrderNo').AsString);
+ FMainId := Trim(ADOTmp.fieldbyname('MainId').AsString);
+ FSubId := Trim(ADOTmp.fieldbyname('SubId').AsString);
+// FPCId := Trim(ADOTmp.fieldbyname('ToPCId').AsString);
+// FC_CustPattern := Trim(ADOTmp.fieldbyname('C_CustPattern').AsString);
+// FC_ColorDepth := Trim(ADOTmp.fieldbyname('C_ColorDepth').AsString);
+// FWorkshop := Trim(ADOTmp.fieldbyname('Workshop').AsString);
+ FC_StyleNo := Trim(ADOTmp.fieldbyname('C_StyleNo').AsString);
+ FC_Composition := Trim(ADOTmp.fieldbyname('C_Composition').AsString);
+ FC_Code := Trim(ADOTmp.fieldbyname('C_Code').AsString);
+ FC_Name := Trim(ADOTmp.fieldbyname('C_Name').AsString);
+// FBatchNO := Trim(ADOTmp.fieldbyname('BatchNO').AsString);
+ FC_Spec := Trim(ADOTmp.fieldbyname('C_Spec').AsString);
+ FC_Color := Trim(ADOTmp.fieldbyname('C_Color').AsString);
+ FC_ColorNo := Trim(ADOTmp.fieldbyname('C_ColorNo').AsString);
+ FC_EColor := Trim(ADOTmp.fieldbyname('C_EColor').AsString);
+ FC_Width := Trim(ADOTmp.fieldbyname('C_Width').AsString);
+ FC_GramWeight := Trim(ADOTmp.fieldbyname('C_GramWeight').AsString);
+ FC_Pattern := Trim(ADOTmp.fieldbyname('C_Pattern').AsString);
+// FFtyPCId := Trim(ADOTmp.fieldbyname('FtyPCId').AsString);
+ Faddwet := Trim(ADOTmp.fieldbyname('ruleaddwet').AsString);
+ FRulePieceNo := Trim(ADOTmp.fieldbyname('RulePieceNo').AsString); //ɹ
+ if FRulePieceNo = 'ֶ' then
+ begin
+ ComboBox2.ItemIndex := 1;
+ Label32.Visible := True;
+ PieceNo.Visible := True;
+ end;
+ Coefficient.Text := Trim(ADOTmp.fieldbyname('Coefficient').AsString);
+ lblRuleConversion.Caption := Trim(ADOTmp.fieldbyname('RuleConversion').AsString);
+ OrderNo.Text := FOrderNo;
+ CodeName.Text := FC_Name;
+ ColorNo.Text := FC_ColorNo;
+ Color.Text := FC_Color;
+ FtyPCId.Text := FFtyPCId;
+ BCIOID.Text := FBCIOID;
+ Piece.Text := Trim(ADOTmp.fieldbyname('ordPiece').AsString);
+ Qty.Text := Trim(ADOTmp.fieldbyname('ordQty').AsString) + Trim(ADOTmp.fieldbyname('ordUnit').AsString);
+ Tare.Text := Trim(ADOTmp.fieldbyname('RuleLaterTare').AsString);
+
+ InputLen.SetFocus;
+ CIFBegClick(InputLen);
+ SetDdetails();
+ end
+ else
+ begin
+ ClearGlobal();
+ end;
+
+ InitJYGrid();
+ InitCDGrid(FCIID);
+ edtScan.Text := '';
+
+end;
+
+procedure TfrmTradeMachInsp.InitLCK(MBCIOID: string);
+begin
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('EXEC P_Trade_Insp_Get_ClothIO @BCIOID=''' + Trim(MBCIOID) + '''');
+// ShowMessage(sql.Text);
+ Open;
+ end;
+ if ADOTmp.IsEmpty = False then
+ begin
+// InitImage(Trim(ADOTmp.fieldbyname('YFTPName').AsString));
+// InitImageHX(Trim(ADOTmp.fieldbyname('HXSID').AsString));
+ FBCIOID := Trim(MBCIOID);
+ FLenUnit := Trim(ADOTmp.fieldbyname('LenUnit').AsString);
+ SetUnit(FLenUnit);
+ //ƻõijȵλ ûĻֵͽһ
+ if Trim(ADOTmp.fieldbyname('CDUnit').AsString) = '' then
+ FCDUnit := lblLenUnit.Caption
+ else
+ FCDUnit := Trim(ADOTmp.fieldbyname('CDUnit').AsString);
+
+ FConMId := Trim(ADOTmp.fieldbyname('TOConMId').AsString);
+ FConSId := Trim(ADOTmp.fieldbyname('ToConSId').AsString);
+ FConNo := Trim(ADOTmp.fieldbyname('ToConNo').AsString);
+ FOrderNo := Trim(ADOTmp.fieldbyname('ToOrdNo').AsString);
+ FMainId := Trim(ADOTmp.fieldbyname('ToMainId').AsString);
+ FSubId := Trim(ADOTmp.fieldbyname('ToSubId').AsString);
+ FPCId := Trim(ADOTmp.fieldbyname('ToPCId').AsString);
+ FC_CustPattern := Trim(ADOTmp.fieldbyname('C_CustPattern').AsString);
+ FC_ColorDepth := Trim(ADOTmp.fieldbyname('C_ColorDepth').AsString);
+ FWorkshop := Trim(ADOTmp.fieldbyname('Workshop').AsString);
+ FC_StyleNo := Trim(ADOTmp.fieldbyname('C_StyleNo').AsString);
+ FC_Composition := Trim(ADOTmp.fieldbyname('C_Composition').AsString);
+ FC_Code := Trim(ADOTmp.fieldbyname('C_Code').AsString);
+ FC_Name := Trim(ADOTmp.fieldbyname('C_Name').AsString);
+ FBatchNO := Trim(ADOTmp.fieldbyname('BatchNO').AsString);
+ FC_Spec := Trim(ADOTmp.fieldbyname('C_Spec').AsString);
+ FC_Color := Trim(ADOTmp.fieldbyname('C_Color').AsString);
+ FC_ColorNo := Trim(ADOTmp.fieldbyname('C_ColorNo').AsString);
+ FC_EColor := Trim(ADOTmp.fieldbyname('C_EColor').AsString);
+ FC_Width := Trim(ADOTmp.fieldbyname('C_Width').AsString);
+ FC_GramWeight := Trim(ADOTmp.fieldbyname('C_GramWeight').AsString);
+ FC_Pattern := Trim(ADOTmp.fieldbyname('C_Pattern').AsString);
+ FFtyPCId := Trim(ADOTmp.fieldbyname('FtyPCId').AsString);
+ Faddwet := Trim(ADOTmp.fieldbyname('addwet').AsString);
+ FRulePieceNo := Trim(ADOTmp.fieldbyname('RulePieceNo').AsString); //ɹ
+ if FRulePieceNo = 'ֶ' then
+ begin
+ ComboBox2.ItemIndex := 1;
+ Label32.Visible := True;
+ PieceNo.Visible := True;
+ end;
+ Coefficient.Text := Trim(ADOTmp.fieldbyname('Coefficient').AsString);
+ lblRuleConversion.Caption := Trim(ADOTmp.fieldbyname('RuleConversion').AsString);
+ OrderNo.Text := FOrderNo;
+ CodeName.Text := FC_Name;
+ ColorNo.Text := FC_ColorNo;
+ Color.Text := FC_Color;
+ FtyPCId.Text := FFtyPCId;
+ BCIOID.Text := FBCIOID;
+ Piece.Text := Trim(ADOTmp.fieldbyname('Piece').AsString);
+ Qty.Text := Trim(ADOTmp.fieldbyname('Qty').AsString) + Trim(ADOTmp.fieldbyname('QtyUnit').AsString);
+ Tare.Text := Trim(ADOTmp.fieldbyname('RuleTare').AsString);
+
+ InputLen.SetFocus;
+ CIFBegClick(InputLen);
+ SetDdetails();
+ end
+ else
+ begin
+ ClearGlobal();
+ end;
+
+ InitJYGrid();
+ InitCDGrid(FCIID);
+ edtScan.Text := '';
+
+end;
+
+procedure TfrmTradeMachInsp.InputLenChange(Sender: TObject);
+begin
+ QuantityConversion();
+end;
+
+procedure TfrmTradeMachInsp.InputWeightChange(Sender: TObject);
+begin
+ QuantityConversion();
+end;
+
+procedure TfrmTradeMachInsp.InitJTM(MCIID: string);
+begin
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select * from Trade_Cloth_IO where StkId=''' + Trim(MCIID) + ''' and IOFlag=''''');
+ Open;
+ end;
+ if not ADOTmp.IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ Exit;
+ end;
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select * from Trade_Cloth_IO where StkId=''' + Trim(MCIID) + ''' and IOFlag=''''');
+ Open;
+ end;
+ if not ADOTmp.IsEmpty then
+ begin
+ Application.MessageBox('Ѳݲܲ!', 'ʾ', 0);
+ Exit;
+ end;
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select * from Trade_Cloth_Inspect where CIID=''' + Trim(MCIID) + '''');
+ Open;
+ end;
+ if not ADOTmp.IsEmpty then
+ begin
+ FOperationStatus := '';
+ FCIID := MCIID;
+ InitCDGrid(MCIID);
+ end;
+
+end;
+
+procedure TfrmTradeMachInsp.CloseCom(DllName: string);
+type
+ TMyFunc = function(sCommName: PAnsiChar): HWND; stdcall;
+var
+ Tf1: TMyFunc;
+ Tp1: TFarProc;
+ Th1: Thandle;
+begin
+ Th1 := LoadLibrary(Pchar(trim(DllName)));
+ if Th1 > 0 then
+ begin
+ try
+ Tp1 := GetProcAddress(Th1, 'CommClose');
+ if Tp1 <> nil then
+ begin
+ Tf1 := TMyFunc(Tp1);
+ newh1 := Tf1('Comm1');
+ end
+ else
+ begin
+
+ end;
+ finally
+ // FreeLibrary(Th1);
+ end;
+ end
+ else
+ begin
+ application.MessageBox(Pchar('Ҳ ' + trim(DllName) + ' ļ'), 'ʾ');
+ end;
+end;
+
+procedure TfrmTradeMachInsp.ComboBox2Change(Sender: TObject);
+begin
+ if ComboBox2.ItemIndex = 0 then
+ begin
+ PieceNo.Text := '';
+ Label32.Visible := False;
+ PieceNo.Visible := False;
+ end;
+ if ComboBox2.ItemIndex = 1 then
+ begin
+ Label32.Visible := True;
+ PieceNo.Visible := True;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.ComboBox3Change(Sender: TObject);
+begin
+ if ComboBox3.ItemIndex = 0 then // InputWeight ë OutPutWeight
+ begin
+ Label11.Caption := 'ë';
+ Label37.Caption := '';
+ end;
+
+ if ComboBox3.ItemIndex = 1 then // InputWeight OutPutWeight ë
+ begin
+ Label11.Caption := '';
+ Label37.Caption := 'ë';
+ end;
+end;
+
+procedure TfrmTradeMachInsp.OpenCom(DllName: string);
+type
+ TMyFunc = function(fhandle: hwnd; sCommName: PAnsiChar; IntTime: integer; IsMessage: integer): HWND; stdcall;
+var
+ Tf: TMyFunc;
+ Tp: TFarProc;
+ Th: Thandle;
+begin
+ // closeCom(FComFile);
+ Th := LoadLibrary(Pchar(trim(DllName)));
+ if Th > 0 then
+ begin
+ try
+ Tp := GetProcAddress(Th, 'CommOpen');
+ if Tp <> nil then
+ begin
+ Tf := TMyFunc(Tp);
+ newh := Tf(self.Handle, 'Comm1', 500, 1);
+ if newh < 1 then
+ begin
+ application.MessageBox(Pchar('ʧܣ'), 'ʾ');
+ end
+ else
+ IsCommOpen := true;
+ end
+ else
+ begin
+ IsCommOpen := false;
+ end;
+ finally
+ // FreeLibrary(Th);
+ end;
+ end
+ else
+ begin
+ IsCommOpen := false;
+ application.MessageBox(Pchar('Ҳ ' + trim(DllName) + ' ļ'), 'ʾ');
+ end;
+end;
+
+procedure TfrmTradeMachInsp.FormDestroy(Sender: TObject);
+begin
+ inherited;
+ frmTradeMachInsp := nil;
+end;
+
+procedure TfrmTradeMachInsp.On1301(var Message: Tmessage);
+var
+ i1, i2: integer;
+ unitname: string;
+ fdata: double;
+begin
+ i1 := Message.WParam;
+ i2 := Message.LParam;
+
+ if (trim(edtMaBiao.Text) = '') then
+ begin
+ InputLen.Text := format('%.2f', [i1 / 100000]);
+ if edtMBDW.Text = '' then
+ begin
+ if i2 = 0 then
+ begin
+ SetUnit('M');
+ end
+ else
+ begin
+ SetUnit('Y');
+ end;
+ end;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.On1201(var Message: Tmessage);
+var
+ i1, i2: integer;
+ unitname: string;
+ fdata: double;
+begin
+ i1 := Message.WParam;
+ i2 := Message.LParam;
+
+ if trim(edtChen.Text) = '' then
+ begin
+ InputWeight.Text := format('%.2f', [i1 / 100000]);
+ end;
+
+end;
+
+procedure TfrmTradeMachInsp.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+ if isCommopen then
+ begin
+ closeCom(DZCDYDllName);
+ closeCom(MBDYDllName);
+ end;
+ Action := caFree;
+end;
+
+procedure TfrmTradeMachInsp.InitCDGrid(MCIID: string);
+begin
+ cxPageControl1.ActivePageIndex := 0;
+ with ADOTmp do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add('select * from Trade_Cloth_Inspect_Flaw where CIID=' + quotedstr(Trim(MCIID)));
+ Open;
+ end;
+ SCreateCDS(ADOTmp, CDS_2);
+ SInitCDSData(ADOTmp, CDS_2);
+end;
+
+procedure TfrmTradeMachInsp.InitCDGridCX(MCIID: string);
+begin
+ cxPageControl1.ActivePageIndex := 1;
+ with ADOTmp do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add('select * from Trade_Cloth_Inspect_Flaw where CIID=' + quotedstr(Trim(MCIID)));
+ Open;
+ end;
+ SCreateCDS(ADOTmp, CDS_1);
+ SInitCDSData(ADOTmp, CDS_1);
+end;
+
+procedure TfrmTradeMachInsp.InitJYGrid();
+var
+ MNetWeight, MJYLen: double;
+begin
+ with ADOQueryMain do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add('select A.*');
+ sql.Add('from Trade_Cloth_Inspect A where BCIOID=''' + Trim(FBCIOID) + '''');
+ sql.Add('order by filltime desc');
+ Open;
+ end;
+ SCreateCDS(ADOQueryMain, CDS_3);
+ SInitCDSData(ADOQueryMain, CDS_3);
+
+end;
+
+procedure TfrmTradeMachInsp.FormShow(Sender: TObject);
+begin
+ inherited;
+ ReadCxGrid(trim(Self.Caption) + 'Tv1', Tv1, 'ó');
+ ReadCxGrid(trim(Self.Caption) + 'Tv2', Tv2, 'ó');
+ ReadCxGrid(trim(Self.Caption) + 'Tv3', Tv3, 'ó');
+ fFlileFlag := UserDataFlag + 'HX';
+ InitCDPanel();
+ InitCDGrid(FCIID);
+
+ if IsINIFile() then
+ ReadINIFile()
+ else
+ WriteINIFile;
+ GetINIFile();
+ if trim(fmanage) <> 'Ȩ' then
+ begin
+ if trim(DZCDYDllName) <> '' then
+ OpenCom(DZCDYDllName);
+ if trim(MBDYDllName) <> '' then
+ OpenCom(MBDYDllName);
+
+ edtScan.SetFocus;
+
+ end;
+end;
+
+procedure TfrmTradeMachInsp.InitCDPanel();
+var
+ AA: array[0..100] of string;
+ i, j: Integer;
+begin
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select ZDYName from KH_Zdy where Type=''WFBCD'' order by ZDYNO ');
+ Open;
+ end;
+ if ADOTmp.IsEmpty then
+ begin
+ Application.MessageBox('ûжõ㣡', 'ʾ', 0);
+ Exit;
+ end;
+ with ADOTmp do
+ begin
+ First;
+ i := 0;
+ while not Eof do
+ begin
+ AA[i] := Trim(fieldbyname('ZDYName').AsString);
+ i := i + 1;
+ Next;
+ end;
+ end;
+ i := i - 1;
+ if i > 69 then
+ begin
+ i := 69;
+ end;
+ for j := 0 to i do
+ begin
+ with ScrollBox1 do
+ begin
+ TSpeedButton(Controls[j]).Visible := True;
+ TSpeedButton(Controls[j]).Hint := AA[j];
+ if Length(AA[j]) > 4 then
+ begin
+ TSpeedButton(Controls[j]).Caption := Copy(Trim(AA[j]), 1, 4) + #13 + Copy(Trim(AA[j]), 5, Length(AA[j]) - 4);
+ end
+ else
+ TSpeedButton(Controls[j]).Caption := AA[j];
+ end;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
+begin
+ if CDS_2.IsEmpty then
+ Exit;
+// if FOperationStatus = '' then
+// Exit;
+ if Application.MessageBox('ȷҪɾ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ if Trim(CDS_2.fieldbyname('CIFID').AsString) = '' then
+ begin
+ CDS_2.Delete;
+ end
+ else
+ begin
+ with ADOCmd do
+ begin
+ Close;
+ SQL.Clear;
+// sql.Add('insert ZDel_Trade_Cloth_Inspect_Flaw into select * from Trade_Cloth_Inspect_Flaw where CIFID=''' + Trim(CDS_2.fieldbyname('CIFID').AsString) + '''');
+ sql.Add('delete Trade_Cloth_Inspect_Flaw where CIFID=''' + Trim(CDS_2.fieldbyname('CIFID').AsString) + '''');
+ ExecSQL;
+ end;
+ //´õϢ
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('exec C_JY_UC_CDList @CIID=''' + Trim(CDS_2.fieldbyname('CIID').AsString) + '''');
+ execsql;
+ end;
+ CDS_2.Delete;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
+begin
+ if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('Grade').Index] = 'Ʒ' then
+ ACanvas.Brush.Color := clRed;
+end;
+
+procedure TfrmTradeMachInsp.Tv3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+ if CDS_3.isEmpty then
+ exit;
+
+ InitCDGridCX(CDS_3.FieldByName('CIID').AsString);
+end;
+
+function TfrmTradeMachInsp.SaveData(): Boolean;
+var
+ maxno, MCIID, BZID, strsql: string;
+ MInputLen, MMeter, MYardage: Double;
+ MInputWeight, MGrossWeight, MNetWeight, MTare, Maddwet: Double;
+begin
+ Maddwet := strtofloatdef(Faddwet, 0);
+
+ if FOperationStatus = '' then
+ begin
+ MCIID := FCIID;
+ end
+ else
+ begin
+ MCIID := '';
+ end;
+ try
+ ADOCmd.Connection.BeginTrans;
+ ///
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ SQL.Add('select * from Trade_Cloth_Inspect where CIID=''' + Trim(MCIID) + '''');
+ Open;
+ end;
+ with ADOCmd do
+ begin
+ if Trim(MCIID) = '' then
+ begin
+ if not GetLSNo(ADOTmp, maxno, Trim(SCXFlag), 'Trade_Cloth_Inspect', 4, 1) then
+ raise Exception.Create('ȡʧܣ');
+ Append;
+ FieldByName('Filler').Value := Trim(DName);
+ FieldByName('CIID').Value := Trim(maxno);
+ end
+ else
+ begin
+ maxno := Trim(MCIID);
+ Edit;
+ FieldByName('Editer').Value := Trim(DName);
+ FieldByName('EditTime').Value := SGetServerDateTime(ADOTmp);
+ end;
+
+ FieldByName('Coefficient').Value := StrToFloatdef(trim(Coefficient.Text), 0); //ϵ
+ ///////////////////////// /////////////////////////
+ if ComboBox3.ItemIndex = 0 then // InputWeight ë OutPutWeight
+ begin
+ MTare := StrToFloatdef(trim(Tare.Text), 0); //Ƥ
+ MInputWeight := RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), StrTointdef(KgPlace.Text, 0)); //ë
+ MGrossWeight := MInputWeight + Maddwet; //ë +
+ MNetWeight := MInputWeight - MTare; //
+ FieldByName('InputWeight').Value := MInputWeight;
+ FieldByName('GrossWeight').Value := MGrossWeight;
+ FieldByName('NetWeight').Value := MNetWeight;
+ FieldByName('Tare').Value := MTare;
+ FieldByName('addwet').Value := Maddwet;
+
+ end;
+
+ if ComboBox3.ItemIndex = 1 then // InputWeight OutPutWeight ë
+ begin
+ MTare := StrToFloatdef(trim(Tare.Text), 0); //Ƥ
+ MInputWeight := RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), StrTointdef(KgPlace.Text, 0)); //
+ MGrossWeight := MInputWeight + MTare + Maddwet; //ë
+ MNetWeight := MInputWeight; //
+ FieldByName('InputWeight').Value := MInputWeight;
+ FieldByName('GrossWeight').Value := MGrossWeight;
+ FieldByName('NetWeight').Value := MNetWeight;
+ FieldByName('Tare').Value := MTare;
+ FieldByName('addwet').Value := Maddwet;
+ end;
+ ///////////////////////// /////////////////////////
+ ///
+ ///////////////////////// 泤 /////////////////////////
+ MInputLen := RoundFloat(StrToFloatdef(trim(InputLen.Text), 0), 2);
+ if lblLenUnit.Caption = 'M' then
+ begin
+ MMeter := RoundFloat(StrToFloatdef(trim(InputLen.Text), 0), StrTointdef(MPlace.Text, 0));
+ MYardage := RoundFloat(MMeter / 0.9144, StrTointdef(YPlace.Text, 0));
+ end
+ else
+ begin
+ MYardage := RoundFloat((StrToFloatdef(trim(InputLen.Text), 0)), StrTointdef(YPlace.Text, 0));
+ MMeter := RoundFloat(MYardage * 0.9144, StrTointdef(MPlace.Text, 0));
+ end;
+
+ FieldByName('InputLen').Value := RoundFloat(StrToFloatdef(trim(InputLen.Text), 0), 2);
+ FieldByName('Meter').Value := MMeter;
+ FieldByName('Yardage').Value := MYardage;
+ FieldByName('LenUnit').Value := TRIM(lblLenUnit.Caption);
+ ///////////////////////// 泤 /////////////////////////
+
+ if Trim(Edit3.Text) <> '' then
+ begin
+ FieldByName('Grade').Value := 'Ʒ';
+ end;
+ if Trim(Edit4.Text) <> '' then
+ begin
+ FieldByName('Grade').Value := 'Ʒ';
+ end;
+ if FOperationStatus <> '' then
+ begin
+ FieldByName('PieceNo').Value := 0;
+ end;
+
+ //ֶ
+ if FRulePieceNo = 'ֶ' then
+ begin
+ FieldByName('PieceNo').Value := StrToInt(PieceNo.Text);
+ end;
+
+ FieldByName('OrderNo').value := Trim(FOrderNo);
+ FieldByName('MainId').value := Trim(FMainId);
+ FieldByName('SubId').value := Trim(FSubId);
+ FieldByName('ConNo').value := Trim(FConNo);
+ FieldByName('ConMId').value := Trim(FConMId);
+ FieldByName('ConSId').value := Trim(FConSId);
+ FieldByName('BCIOID').value := Trim(FBCIOID);
+ FieldByName('Workshop').value := Trim(FWorkshop);
+ FieldByName('CIIOFlag').Value := 'δ';
+ FieldByName('FtyPCId').value := FFtyPCId;
+ FieldByName('C_Code').value := FC_Code;
+ FieldByName('C_Name').value := FC_Name;
+ FieldByName('BatchNO').value := BatchNO.text;
+ FieldByName('FtyPCId').value := YGNo.text; //ԭ
+ FieldByName('C_Spec').value := FC_Spec;
+ FieldByName('C_Color').value := FC_Color;
+ FieldByName('C_EColor').value := FC_EColor;
+ FieldByName('C_ColorNo').value := FC_ColorNo;
+ FieldByName('C_StyleNo').value := FC_StyleNo;
+ FieldByName('C_Composition').value := FC_Composition;
+ FieldByName('C_Width').value := FC_Width;
+ FieldByName('C_GramWeight').value := FC_GramWeight;
+ FieldByName('C_Pattern').value := FC_Pattern;
+ FieldByName('C_CustPattern').value := FC_CustPattern;
+ FieldByName('C_ColorDepth').value := FC_ColorDepth;
+ FieldByName('CIMachNo').Value := Trim(SCXFlag);
+ Post;
+ end;
+
+ MCIID := Trim(maxno);
+ FCIID := Trim(maxno);
+
+////////////////// õϢ //////////////////
+ with CDS_2 do
+ begin
+ First;
+ while not Eof do
+ begin
+ if Trim(CDS_2.fieldbyname('CIFID').AsString) = '' then
+ begin
+ if not GetLSNo(ADOTmp, maxno, 'JC', 'Trade_Cloth_Inspect_Flaw', 5, 1) then
+ raise Exception.Create('ȡõʧܣ');
+ end
+ else
+ begin
+ maxno := Trim(CDS_2.fieldbyname('CIFID').AsString);
+ end;
+ with ADOCmd do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add('select * from Trade_Cloth_Inspect_Flaw ');
+ sql.Add(' where CIFID=''' + Trim(maxno) + '''');
+ Open;
+ end;
+ with ADOCmd do
+ begin
+ if Trim(CDS_2.fieldbyname('CIFID').AsString) = '' then
+ Append
+ else
+ Edit;
+ RTSetSaveDataCDS(ADOCmd, Tv2, CDS_2, 'Trade_Cloth_Inspect_Flaw', 0);
+ FieldByName('CIID').Value := Trim(MCIID);
+ FieldByName('CIFID').Value := Trim(maxno);
+ Post;
+ end;
+ CDS_2.Edit;
+ CDS_2.FieldByName('CIID').Value := Trim(MCIID);
+ CDS_2.FieldByName('CIFID').Value := Trim(maxno);
+ Next;
+ end;
+ end;
+////////////////// õϢ //////////////////
+///
+////////////////// ¾ŴõϢ //////////////////
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('exec P_Trade_Insp_Up @CIID=''' + trim(MCIID) + '''');
+ if FOperationStatus = '' then
+ sql.Add(',@InspType=' + QuotedStr('첼'))
+ else
+ sql.Add(',@InspType=' + QuotedStr(''));
+ sql.Add(',@RulePieceNo=' + QuotedStr(FRulePieceNo)); //ɹ
+ execsql;
+ end;
+
+////////////////// ¾ŴõϢ //////////////////
+///
+////////////////// ¿ //////////////////
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('insert into Trade_Need_Up(UOperation,UType,UDataId) values('''',''̨'',' + quotedstr(maxno) + ') ');
+ execsql;
+ end;
+////////////////// ¿ //////////////////
+///
+ ADOCmd.Connection.CommitTrans;
+////////////////// ⼰ //////////////////
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('exec P_Trade_Insp_In_Stk @CIID=''' + trim(MCIID) + '''');
+ ExecSQL;
+ end;
+ // Open;
+// end;
+// if ADOCmd.FieldByName('intReturn').AsInteger = -1 then
+// begin
+// application.MessageBox(PChar(trim(ADOCmd.FieldByName('ShowMsg').AsString)), 'ʾϢ', 0);
+// Result := False;
+// end
+// else
+// begin
+// Result := True;
+// end;
+////////////////// ⼰ //////////////////
+
+ Result := True;
+ except
+ ADOCmd.Connection.RollbackTrans;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ Result := False;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.btnCXRKClick(Sender: TObject);
+var
+ MStkIds: string;
+begin
+ if CDS_3.IsEmpty then
+ exit;
+ btnCXRK.Enabled := False;
+ with CDS_3 do
+ begin
+ DisableControls;
+ First;
+ while not eof do
+ begin
+ MStkIds := MStkIds + Trim(CDS_3.FieldByName('CIID').AsString) + ',';
+ next;
+ end;
+ EnableControls;
+ end;
+ MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1);
+
+ try
+ ADOCmd.Connection.BeginTrans;
+ with ADOCmd do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Trade_Cloth_ReIn ');
+ Sql.Add('@StkIds=' + quotedstr(trim(MStkIds)));
+ Sql.Add(',@IOIDS='''' ');
+ Open;
+ end;
+ if ADOCmd.FieldByName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.Create(pchar(trim(ADOCmd.FieldByName('ShowMsg').AsString)));
+ end;
+ application.MessageBox('ɹ', 'ʾϢ');
+ ADOCmd.Connection.CommitTrans;
+ btnCXRK.Enabled := True;
+ except
+ ADOCmd.Connection.RollbackTrans;
+ btnCXRK.Enabled := True;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+
+ end;
+
+end;
+
+procedure TfrmTradeMachInsp.btnRKClick(Sender: TObject);
+var
+ MINo, MStkIds: string;
+begin
+ if CDS_3.IsEmpty then
+ exit;
+ btnRK.Enabled := False;
+ //ˢδľϢִ
+ with ADOQueryMain do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add('select A.*');
+ sql.Add('from Trade_Cloth_Inspect A where BCIOID=''' + Trim(FBCIOID) + '''');
+ sql.Add('and CIIOFlag=''δ''');
+ sql.Add('order by filltime desc');
+ Open;
+ end;
+ SCreateCDS(ADOQueryMain, CDS_3);
+ SInitCDSData(ADOQueryMain, CDS_3);
+
+ with CDS_3 do
+ begin
+ DisableControls;
+ First;
+ while not eof do
+ begin
+ MStkIds := MStkIds + Trim(CDS_3.FieldByName('CIID').AsString) + ',';
+ next;
+ end;
+ EnableControls;
+ end;
+ MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1);
+
+ if GetLSNo(ADOCmd, MINo, '9', 'Trade_Cloth_IO', 4, 1) = False then
+ begin
+ Application.MessageBox('ȡⵥʧ!', 'ʾ', 0);
+ Exit;
+ end;
+
+ ADOCmd.Connection.BeginTrans;
+ try
+
+ with ADOCmd do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Trade_Cloth_In ');
+ Sql.Add('@StkIds=' + quotedstr(trim(MStkIds)));
+ Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', SGetServerDate(ADOTmp))));
+ Sql.Add(',@IOType=' + Quotedstr(''));
+ Sql.Add(',@IONO=' + Quotedstr(MINo));
+ Open;
+ end;
+ if ADOCmd.FieldByName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.Create(pchar(trim(ADOCmd.FieldByName('ShowMsg').AsString)));
+ end;
+ ADOCmd.Connection.CommitTrans;
+ application.MessageBox('ɹ', 'ʾϢ');
+
+ btnRK.Enabled := True;
+ except
+ btnRK.Enabled := True;
+ ADOCmd.Connection.RollbackTrans;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+ //ˢȫϢ
+ InitJYGrid();
+end;
+
+procedure TfrmTradeMachInsp.BTPrintClick(Sender: TObject);
+var
+ fPrintFile, MPacketId: string;
+ mvalue: Double;
+ i: Integer;
+begin
+ edtScan.SetFocus;
+ if CheckData('ύ') = False then
+ exit;
+
+ if FCDUnit <> lblLenUnit.Caption then
+ begin
+ Application.MessageBox('λƻò!', 'ʾ', 0);
+ Exit;
+ end;
+
+ if SaveData() then
+ begin
+ InputLen.Text := '';
+ InputWeight.Text := '';
+ Edit3.Text := '';
+ Edit4.Text := '';
+// PieceNo.Text := inttostr(strtointdef(PieceNo.Text, 0) + 1); //
+ PieceNo.Text := '';
+ if Trim(Edit6.Text) = '' then
+ begin
+ PrtData(FCIID);
+ end;
+
+ if edtdabao.Text = '' then
+ begin
+ FPacketCount := FPacketCount + 1;
+ FPacketCIID := FPacketCIID + ',' + FCIID;
+ if FPacketCount = strtoint(edtfrnshu.Text) then
+ begin
+ if GetLSNo(ADOQueryTmp, MPacketId, 'BI', 'Trade_Cloth_Inspect', 4, 1) = False then
+ begin
+ Application.MessageBox('ȡʧܣ', 'ʾ', 0);
+ Exit;
+ end;
+
+ try
+ ADOCmd.Connection.BeginTrans;
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.add('Update Trade_Cloth_Inspect Set PacketTime=GETDATE() , PacketNo=' + edtPacketNo.Text + ',PacketId=' + QuotedStr(trim(MPacketId)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName)));
+ sql.Add('WHERE EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(FPacketCIID) + ','','') X where Trade_Cloth_Inspect.CIID=X.RTValue ) ');
+ sql.add('Update Trade_Cloth_Stock Set PacketTime=GETDATE() , PacketNo=' + edtPacketNo.Text + ',PacketId=' + QuotedStr(trim(MPacketId)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName)));
+ sql.Add('WHERE EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(FPacketCIID) + ','','') X where Trade_Cloth_Stock.STKID=X.RTValue ) ');
+ ExecSQL;
+ end;
+ PrintBao(MPacketId);
+ edtPacketNo.Text := INTTOSTR(strtoint(edtPacketNo.Text) + 1);
+ FPacketCIID := '';
+ FPacketCount := 0;
+ ADOCmd.Connection.CommitTrans;
+ except
+ ADOCmd.Connection.RollbackTrans;
+ application.MessageBox('ʧܣ', 'ʾϢ', 0);
+ end;
+
+ end;
+
+ end;
+
+ end;
+ InputLen.SetFocus;
+ CIFBegClick(InputLen);
+ FOperationStatus := '';
+ InitJYGrid();
+ InitCDGrid('');
+ FCIID := '';
+end;
+
+procedure TfrmTradeMachInsp.PrtData(MCIID: string);
+var
+ fPrintFile, FLabVolume: string;
+ Txt, fImagePath, Txt2, fImagePath2: string;
+ Moudle: THandle;
+ Makebar: TMakebar;
+ Mixtext: TMixtext;
+begin
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add(' EXEC P_Trade_Print_Lab ');
+ SQL.Add(' @CIID=''' + Trim(MCIID) + '''');
+// ShowMessage(sql.Text);
+ Open;
+ end;
+ if ADOQueryPrint.IsEmpty then
+ begin
+ application.MessageBox('ǩδҵ', 'ʾϢ', MB_ICONERROR);
+ exit;
+ end;
+
+ if Trim(ADOQueryPrint.fieldbyname('Grade').AsString) = 'Ʒ' then
+ FLabVolume := Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString)
+ else
+ FLabVolume := 'Ʒǩ';
+ ExportFtErpFile(FLabVolume + '.rmf', ADOTmp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLabVolume + '.rmf';
+
+ if FileExists(fPrintFile) then
+ begin
+ RM1.LoadFromFile(fPrintFile);
+ if Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString) <> 'Ʒǩ' then
+ RM1.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1)
+ else
+ RM1.DefaultCopies := 1;
+ RM1.PrintReport;
+ end
+ else
+ begin
+ Application.MessageBox(PChar('û' + fPrintFile), 'ʾ', 0);
+ end;
+end;
+
+procedure TfrmTradeMachInsp.SpeedButton1Click(Sender: TObject);
+var
+ fsj: string;
+begin
+ fsj := Trim(TSpeedButton(Sender).Hint);
+ if Trim(fsj) = '' then
+ Exit;
+ if TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Name = 'KuangHao' then
+ Exit;
+ fsj := Trim(TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text);
+ TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := fsj + Trim(TSpeedButton(Sender).Caption);
+ TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll;
+end;
+
+procedure TfrmTradeMachInsp.SpeedButton12Click(Sender: TObject);
+var
+ fsj: string;
+begin
+ fsj := Trim(TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text);
+ if Trim(fsj) = '' then
+ Exit;
+ TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := Copy(fsj, 1, Length(fsj) - 1);
+ TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll;
+end;
+
+procedure TfrmTradeMachInsp.SpeedButton13Click(Sender: TObject);
+var
+ i: Integer;
+begin
+ if CheckData('õ') = False then
+ exit;
+
+ FCIFName := Trim(TSpeedButton(Sender).Hint);
+ MovePanel1.Visible := True;
+ lblCIFName.Caption := Trim(FCIFName);
+
+ // CIFBeg.Text := InputLen.Text;
+ Edit1Change(Edit1); // Ƿȹѡ
+ //
+ //ʾּ
+ with Panel3 do
+ begin
+ for i := 0 to ControlCount - 1 do
+ begin
+ if Controls[i] is TSpeedButton then
+ begin
+ TSpeedButton(Controls[i]).Hint := Trim(CIFBeg.Name);
+ end;
+ end;
+ end;
+
+end;
+
+procedure TfrmTradeMachInsp.cxDBImage1DblClick(Sender: TObject);
+begin
+ if TcxDBImage(Sender).Picture.Height = 0 then
+ exit;
+ LookImage(Qry_ImgHX.fieldbyname(TcxDBImage(Sender).Hint).asstring);
+end;
+
+procedure TfrmTradeMachInsp.Button1Click(Sender: TObject);
+var
+ mvalue: Double;
+begin
+
+ if Trim(CIFBeg.Text) <> '' then
+ begin
+ if Trim(CIFEnd.Text) <> '' then
+ begin
+ if StrToFloat(CIFEnd.Text) < StrToFloat(CIFBeg.Text) then
+ begin
+ Application.MessageBox('õλ¼!', 'ʾ', 0);
+ Exit;
+ end;
+ end;
+ end;
+ if CIFQty.Text <> '' then
+ begin
+ if TryStrToFloat(CIFQty.Text, mvalue) = False then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end;
+ with CDS_2 do
+ begin
+ Append;
+// if RadioGroup1.ItemIndex = 5 then
+// FieldByName('CIFName').Value := '' + Trim(FCIFName)
+// else if RadioGroup1.ItemIndex = 4 then
+// FieldByName('CIFName').Value := 'ƥ' + Trim(FCIFName)
+// else
+ FieldByName('CIFName').Value := Trim(FCIFName);
+ FieldByName('CIFbeg').Value := Trim(CIFBeg.Text);
+ FieldByName('CIFEnd').Value := Trim(CIFEnd.Text);
+ FieldByName('CIFPoints').Value := 0;
+
+ if RadioGroup1.ItemIndex > -1 then
+ begin
+ if RadioGroup1.ItemIndex < 3 then
+ begin
+ FieldByName('CIFPoints').Value := RadioGroup1.ItemIndex + 1;
+ end
+ else
+ begin
+ FieldByName('CIFPoints').Value := 4;
+ end;
+ end;
+ FieldByName('CIFQty').Value := StrToFloatdef(trim(CIFQty.Text), 0);
+
+ Post;
+ end;
+ CIFBeg.Text := '';
+ CIFEnd.Text := '';
+ CIFQty.Text := '';
+ MovePanel1.Visible := False;
+ cxPageControl1.ActivePageIndex := 0;
+end;
+
+procedure TfrmTradeMachInsp.edtScanDblClick(Sender: TObject);
+begin
+ edtScan.Text := '';
+end;
+
+procedure TfrmTradeMachInsp.edtScanKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ if trim(edtScan.Text) = '' then
+ exit;
+ if trim(edtScan.Text) = FBCIOID then
+ exit;
+ ClearGlobal();
+ FOperationStatus := '';
+// InitLCK(edtScan.Text);
+ InitPlan(edtScan.Text);
+ Edit1Change(Edit1); // Ƿȹѡ
+ InputLen.SetFocus;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.CIFBegClick(Sender: TObject);
+var
+ i: Integer;
+begin
+ with Panel3 do
+ begin
+ for i := 0 to ControlCount - 1 do
+ begin
+ if Controls[i] is TSpeedButton then
+ begin
+ TSpeedButton(Controls[i]).Hint := Trim(TcxTextEdit(Sender).Name);
+ end;
+ end;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.CIFEndChange(Sender: TObject);
+var
+ mvalue: Double;
+begin
+ if Trim(CIFBeg.Text) <> '' then
+ begin
+ if TryStrToFloat(CIFBeg.Text, mvalue) = False then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end
+ else
+ begin
+ Exit;
+ end;
+ if Trim(CIFEnd.Text) <> '' then
+ begin
+ if TryStrToFloat(CIFEnd.Text, mvalue) = False then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end
+ else
+ begin
+ Exit;
+ end;
+ CIFQty.Text := FloatToStr(StrToFloat(CIFEnd.Text) - StrToFloat(CIFBeg.Text));
+end;
+
+procedure TfrmTradeMachInsp.Edit1Change(Sender: TObject);
+begin
+ if Trim(TcxTextEdit(Sender).Text) = '' then
+ begin
+ CIFBeg.Text := '0';
+ end
+ else
+ begin
+ CIFBeg.Text := InputLen.Text;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.Edit1Click(Sender: TObject);
+begin
+ if Trim(TcxTextEdit(Sender).Text) = '' then
+ begin
+ TcxTextEdit(Sender).Text := '';
+ end
+ else
+ begin
+ TcxTextEdit(Sender).Text := '';
+ end;
+end;
+
+procedure TfrmTradeMachInsp.Edit3Click(Sender: TObject);
+begin
+ if Trim(Edit3.Text) = '' then
+ begin
+ Edit3.Text := '';
+ Edit4.Text := '';
+ end
+ else
+ begin
+ Edit3.Text := '';
+ Edit4.Text := '';
+ end;
+end;
+
+procedure TfrmTradeMachInsp.Edit4Click(Sender: TObject);
+begin
+ if Trim(Edit4.Text) = '' then
+ begin
+ Edit4.Text := '';
+ Edit3.Text := '';
+ end
+ else
+ begin
+ Edit4.Text := '';
+ Edit3.Text := '';
+ end;
+end;
+
+procedure TfrmTradeMachInsp.Edit6Click(Sender: TObject);
+begin
+ if Trim(Edit6.Text) = '' then
+ begin
+ Edit6.Text := '';
+ end
+ else
+ begin
+ Edit6.Text := '';
+ end;
+end;
+
+procedure TfrmTradeMachInsp.MJstr3KeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ Key := #0;
+ SelectNext(ActiveControl as TWinControl, True, True);
+ end;
+end;
+
+procedure TfrmTradeMachInsp.MPlaceExit(Sender: TObject);
+begin
+ SetINIFile();
+end;
+
+procedure TfrmTradeMachInsp.Button2Click(Sender: TObject);
+begin
+ RadioGroup1.ItemIndex := -1;
+end;
+
+procedure TfrmTradeMachInsp.Button3Click(Sender: TObject);
+begin
+ if pnlSet.Visible then
+ pnlSet.Visible := False
+ else
+ pnlSet.Visible := True;
+
+end;
+
+procedure TfrmTradeMachInsp.GrossWeightChange(Sender: TObject);
+begin
+ QuantityConversion();
+end;
+
+procedure TfrmTradeMachInsp.edtScanClick(Sender: TObject);
+var
+ i: Integer;
+begin
+ Panel3.Visible := True;
+ with Panel3 do
+ begin
+ for i := 0 to ControlCount - 1 do
+ begin
+ if Controls[i] is TSpeedButton then
+ begin
+ TSpeedButton(Controls[i]).Hint := Trim(TcxTextEdit(Sender).Name);
+ end;
+ end;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.NetWeightKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ BTPrint.Click;
+ end;
+end;
+
+procedure TfrmTradeMachInsp.FormCreate(Sender: TObject);
+begin
+ inherited;
+ IsCommopen := false;
+end;
+
+procedure TfrmTradeMachInsp.lblLenUnitClick(Sender: TObject);
+begin
+ if Trim(lblLenUnit.Caption) = 'M' then
+ SetUnit('Y')
+ else
+ SetUnit('M');
+end;
+
+procedure TfrmTradeMachInsp.Button4Click(Sender: TObject);
+begin
+ MovePanel1.Visible := false;
+end;
+
+procedure TfrmTradeMachInsp.ToolButton2Click(Sender: TObject);
+begin
+ if CDS_3.IsEmpty then
+ exit;
+ if Application.MessageBox('ȷҪ´ӡ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ try
+ with ADOTmp do
+ begin
+ Close;
+ SQL.Clear;
+ sql.Add(' select * from Trade_Cloth_IO A where IOFlag='''' ');
+ SQL.Add(' and A.StkId=''' + trim(CDS_3.fieldbyName('CIID').AsString) + '''');
+ Open;
+ end;
+
+ PrtMD(ADOTmp.fieldbyName('IONo').AsString);
+
+ except
+ application.MessageBox('´ӡʧ!', 'ʾϢ', MB_ICONERROR);
+ end;
+end;
+
+procedure TfrmTradeMachInsp.ToolButton3Click(Sender: TObject);
+begin
+ if CDS_3.IsEmpty then
+ Exit;
+ PrtData(CDS_3.fieldbyname('CIID').AsString);
+
+end;
+
+procedure TfrmTradeMachInsp.ToolButton4Click(Sender: TObject);
+begin
+ try
+ frmZDYHelp := TfrmZDYHelp.Create(Application);
+ with frmZDYHelp do
+ begin
+ flag := 'WFBCD';
+ flagname := 'õ';
+ fnote := True;
+ V1Note.Caption := 'Ӣ';
+ if ShowModal = 1 then
+ begin
+ Self.InitCDPanel();
+ end;
+ end;
+ finally
+ frmZDYHelp.Free;
+ end;
+
+end;
+
+procedure TfrmTradeMachInsp.ToolButton5Click(Sender: TObject);
+begin
+
+ if CDS_3.IsEmpty then
+ Exit;
+ if Application.MessageBox('ȷҪɾ', 'ʾ', 32 + 4) <> IDYES then
+ Exit;
+ ADOCmd.Connection.BeginTrans;
+ try
+ with ADOCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('insert into Trade_Need_Up(UType,UOperation,UDataId) values('''',''ɾ'',' + quotedstr(Trim(CDS_3.fieldbyname('CIID').AsString)) + ') ');
+ ExecSQL;
+ end;
+ with ADOCmd do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Trade_Insp_Del ');
+ Sql.Add('@CIIDS=' + quotedstr(Trim(CDS_3.fieldbyname('CIID').AsString)));
+ Sql.Add(',@DCode=' + Quotedstr(DCode));
+ Sql.Add(',@DName=' + Quotedstr(DName));
+ Open;
+ end;
+ if ADOCmd.FieldByName('intReturn').AsInteger = -1 then
+ begin
+ raise Exception.Create(pchar(trim(ADOCmd.FieldByName('ShowMsg').AsString)));
+ end;
+ ADOCmd.Connection.CommitTrans;
+ CDS_3.Delete;
+ application.MessageBox('ɾɹ', 'ʾϢ');
+ except
+ ADOCmd.Connection.RollbackTrans;
+ application.MessageBox(PChar(Exception(ExceptObject).Message), 'ʾϢ', 0);
+ end;
+end;
+
+procedure TfrmTradeMachInsp.ToolButton6Click(Sender: TObject);
+begin
+ if CDS_3.IsEmpty then
+ Exit;
+ InitJTM(CDS_3.fieldbyname('CIID').AsString);
+end;
+
+procedure TfrmTradeMachInsp.ToolButton7Click(Sender: TObject);
+begin
+ WriteCxGrid(trim(Self.Caption) + 'Tv1', Tv1, 'ó');
+ WriteCxGrid(trim(Self.Caption) + 'Tv2', Tv2, 'ó');
+ WriteCxGrid(trim(Self.Caption) + 'Tv3', Tv3, 'ó');
+
+end;
+
+procedure TfrmTradeMachInsp.ToolButton8Click(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TfrmTradeMachInsp.edtChenClick(Sender: TObject);
+begin
+ if Trim(TcxTextEdit(Sender).Text) = '' then
+ begin
+ TcxTextEdit(Sender).Text := '';
+ end
+ else
+ begin
+ TcxTextEdit(Sender).Text := '';
+ end;
+
+ SetINIFile();
+end;
+
+procedure TfrmTradeMachInsp.edtdabaoClick(Sender: TObject);
+begin
+ if Trim(TcxTextEdit(Sender).Text) = '' then
+ begin
+ TcxTextEdit(Sender).Text := '';
+
+ Label40.Visible := True;
+ edtPacketNo.Visible := True;
+ end
+ else
+ begin
+ Label40.Visible := False;
+ edtPacketNo.Visible := False;
+ TcxTextEdit(Sender).Text := '';
+ end;
+
+end;
+
+procedure TfrmTradeMachInsp.edtYJClick(Sender: TObject);
+begin
+ if Trim(TcxTextEdit(Sender).Text) = '' then
+ begin
+ TcxTextEdit(Sender).Text := '';
+ end
+ else
+ begin
+ TcxTextEdit(Sender).Text := '';
+ end;
+end;
+
+procedure TfrmTradeMachInsp.Button6Click(Sender: TObject);
+begin
+ if ScrollBox1.Visible then
+ ScrollBox1.Visible := False
+ else
+ ScrollBox1.Visible := True;
+end;
+
+procedure TfrmTradeMachInsp.Button8Click(Sender: TObject);
+begin
+ if Panel7.Visible then
+ Panel7.Visible := False
+ else
+ Panel7.Visible := True;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_TradePack.dfm b/T03贸易布匹检验/U_TradePack.dfm
new file mode 100644
index 0000000..a083d9d
--- /dev/null
+++ b/T03贸易布匹检验/U_TradePack.dfm
@@ -0,0 +1,1224 @@
+inherited frmTradePack: TfrmTradePack
+ Left = 122
+ Top = 71
+ Caption = #25171#21253#31383#21475
+ ClientHeight = 634
+ ClientWidth = 1430
+ Font.Height = -16
+ FormStyle = fsMDIChild
+ Visible = True
+ ExplicitWidth = 1446
+ ExplicitHeight = 673
+ PixelsPerInch = 96
+ TextHeight = 21
+ object Panel2: TPanel [0]
+ Left = 625
+ Top = 160
+ Width = 797
+ Height = 474
+ TabOrder = 3
+ object cxGroupBox1: TcxGroupBox
+ Left = 1
+ Top = 256
+ Align = alBottom
+ Caption = #24050#25171#21253#26465#30721
+ ParentFont = True
+ TabOrder = 0
+ Height = 217
+ Width = 795
+ object cxGrid1: TcxGrid
+ Left = 4
+ Top = 15
+ Width = 787
+ Height = 186
+ Align = alClient
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ PopupMenu = PM_YDB
+ TabOrder = 0
+ object TV1: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DS_YDB
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <
+ item
+ Format = 'C_Code'
+ end>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn17
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn18
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn19
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ Column = cxGridDBColumn9
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsBehavior.FocusCellOnTab = True
+ OptionsBehavior.GoToNextCellOnEnter = True
+ OptionsBehavior.FocusCellOnCycle = True
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object cxGridDBColumn8: TcxGridDBColumn
+ Caption = #36873#25321
+ DataBinding.FieldName = 'Ssel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ VisibleForCustomization = False
+ Width = 53
+ end
+ object V1Column1: TcxGridDBColumn
+ Caption = #36873#25321
+ DataBinding.FieldName = 'SSel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ HeaderAlignmentHorz = taCenter
+ Width = 47
+ end
+ object cxGridDBColumn9: TcxGridDBColumn
+ Caption = #26465#30721#21495
+ DataBinding.FieldName = 'CIID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 113
+ end
+ object V4Column3: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object cxGridDBColumn10: TcxGridDBColumn
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 116
+ end
+ object TV1C_pattern: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ end
+ object cxGridDBColumn11: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 94
+ end
+ object cxGridDBColumn12: TcxGridDBColumn
+ Caption = #32568#21495
+ DataBinding.FieldName = 'BCGangNO'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 120
+ end
+ object TV1C_colorNo: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_colorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ end
+ object V4Column2: TcxGridDBColumn
+ Caption = #25209#21495
+ DataBinding.FieldName = 'BatchNO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 70
+ end
+ object cxGridDBColumn14: TcxGridDBColumn
+ Caption = #21253#26465#30721
+ DataBinding.FieldName = 'PacketId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 94
+ end
+ object cxGridDBColumn15: TcxGridDBColumn
+ Caption = #21253#21495
+ DataBinding.FieldName = 'PacketNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 51
+ end
+ object cxGridDBColumn17: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 60
+ end
+ object cxGridDBColumn18: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'MJMaoZ'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 60
+ end
+ object cxGridDBColumn19: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'MJQty4'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 60
+ end
+ end
+ object cxGridLevel3: TcxGridLevel
+ GridView = TV1
+ end
+ end
+ end
+ object cxGroupBox2: TcxGroupBox
+ Left = 1
+ Top = 1
+ Align = alTop
+ Caption = #24050#25195#25551#24453#25171#21253#26465#30721
+ ParentFont = True
+ TabOrder = 1
+ Height = 233
+ Width = 795
+ object cxGrid2: TcxGrid
+ Left = 4
+ Top = 15
+ Width = 787
+ Height = 202
+ Align = alClient
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #23435#20307
+ Font.Style = []
+ ParentFont = True
+ PopupMenu = PM_DDB
+ TabOrder = 0
+ object TV2: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DS_DDB
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <
+ item
+ Format = 'C_Code'
+ end>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = cxGridDBColumn6
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ Column = V2Column2
+ end
+ item
+ Kind = skSum
+ Column = V2Column3
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ Column = cxGridDBColumn2
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsBehavior.FocusCellOnTab = True
+ OptionsBehavior.GoToNextCellOnEnter = True
+ OptionsBehavior.FocusCellOnCycle = True
+ OptionsCustomize.ColumnFiltering = False
+ OptionsData.Editing = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object cxGridDBColumn2: TcxGridDBColumn
+ Caption = #26465#30721#21495
+ DataBinding.FieldName = 'CIID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 113
+ end
+ object V2Column6: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 59
+ end
+ object cxGridDBColumn4: TcxGridDBColumn
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Width = 116
+ end
+ object TV2C_pattern: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 60
+ end
+ object cxGridDBColumn3: TcxGridDBColumn
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 94
+ end
+ object TV2C_ColorNo: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_ColorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 63
+ end
+ object V2Column4: TcxGridDBColumn
+ Caption = #25209#21495
+ DataBinding.FieldName = 'BatchNO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 60
+ end
+ object V2Column1: TcxGridDBColumn
+ Caption = #32568#21495
+ DataBinding.FieldName = 'BCGangNO'
+ DataBinding.IsNullValueType = True
+ Visible = False
+ HeaderAlignmentHorz = taCenter
+ Width = 120
+ end
+ object V2BaooID: TcxGridDBColumn
+ Caption = #21253#26465#30721
+ DataBinding.FieldName = 'PacketId'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 91
+ end
+ object V2BaooNO: TcxGridDBColumn
+ Caption = #21253#21495
+ DataBinding.FieldName = 'PacketNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 51
+ end
+ object cxGridDBColumn6: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 60
+ end
+ object V2Column2: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'MJMaoZ'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 60
+ end
+ object V2Column3: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'MJQty4'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Width = 60
+ end
+ end
+ object cxGridLevel1: TcxGridLevel
+ GridView = TV2
+ end
+ end
+ end
+ end
+ object Panel4: TPanel [1]
+ Left = 0
+ Top = 60
+ Width = 625
+ Height = 574
+ Align = alLeft
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ Caption = 'Panel4'
+ TabOrder = 1
+ object cxGrid3: TcxGrid
+ Left = 2
+ Top = 94
+ Width = 621
+ Height = 478
+ Align = alClient
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ PopupMenu = PM_KDB
+ TabOrder = 0
+ object Tv3: TcxGridDBTableView
+ Navigator.Buttons.CustomButtons = <>
+ ScrollbarAnnotations.CustomAnnotations = <>
+ DataController.DataSource = DS_KDB
+ DataController.Filter.AutoDataSetFilter = True
+ DataController.Options = [dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoImmediatePost]
+ DataController.Summary.DefaultGroupSummaryItems = <>
+ DataController.Summary.FooterSummaryItems = <
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skSum
+ end
+ item
+ Kind = skCount
+ Column = Tv3Column1
+ end
+ item
+ Kind = skSum
+ Column = v3Column3
+ end>
+ DataController.Summary.SummaryGroups = <>
+ OptionsBehavior.FocusCellOnTab = True
+ OptionsBehavior.GoToNextCellOnEnter = True
+ OptionsBehavior.FocusCellOnCycle = True
+ OptionsCustomize.ColumnFiltering = False
+ OptionsView.Footer = True
+ OptionsView.GroupByBox = False
+ object v3Column5: TcxGridDBColumn
+ Caption = #36873#25321
+ DataBinding.FieldName = 'Ssel'
+ DataBinding.IsNullValueType = True
+ PropertiesClassName = 'TcxCheckBoxProperties'
+ Properties.ImmediatePost = True
+ Properties.NullStyle = nssUnchecked
+ HeaderAlignmentHorz = taCenter
+ Options.Sorting = False
+ Width = 50
+ end
+ object Tv3Column1: TcxGridDBColumn
+ Caption = #26465#30721
+ DataBinding.FieldName = 'CIID'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 88
+ end
+ object v3Column6: TcxGridDBColumn
+ Caption = #21367#21495
+ DataBinding.FieldName = 'PieceNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 50
+ end
+ object v3C_Name: TcxGridDBColumn
+ Caption = #21697#21517
+ DataBinding.FieldName = 'C_Name'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 72
+ end
+ object Tv3C_pattern: TcxGridDBColumn
+ Caption = #33457#22411
+ DataBinding.FieldName = 'C_pattern'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ end
+ object v3C_Color: TcxGridDBColumn
+ Tag = 1
+ Caption = #39068#33394
+ DataBinding.FieldName = 'C_Color'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 54
+ end
+ object Tv3C_ColorNo: TcxGridDBColumn
+ Caption = #33394#21495
+ DataBinding.FieldName = 'C_ColorNo'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ end
+ object v3Column7: TcxGridDBColumn
+ Caption = #25209#21495
+ DataBinding.FieldName = 'BatchNO'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 50
+ end
+ object v3Column3: TcxGridDBColumn
+ Caption = #31859#25968
+ DataBinding.FieldName = 'Meter'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 47
+ end
+ object v3Column4: TcxGridDBColumn
+ Caption = #27611#37325
+ DataBinding.FieldName = 'MJMaoZ'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 56
+ end
+ object v3Column11: TcxGridDBColumn
+ Caption = #20928#37325
+ DataBinding.FieldName = 'MJQty4'
+ DataBinding.IsNullValueType = True
+ HeaderAlignmentHorz = taCenter
+ Options.Editing = False
+ Options.Sorting = False
+ Width = 58
+ end
+ end
+ object cxGridLevel2: TcxGridLevel
+ GridView = Tv3
+ end
+ end
+ object Panel5: TPanel
+ Left = 2
+ Top = 2
+ Width = 621
+ Height = 92
+ Align = alTop
+ BevelOuter = bvNone
+ Color = clBtnFace
+ ParentBackground = False
+ TabOrder = 1
+ object Label6: TLabel
+ Left = 16
+ Top = 11
+ Width = 60
+ Height = 27
+ Caption = #35746#21333#21495
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -20
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object Label2: TLabel
+ Left = 12
+ Top = 57
+ Width = 64
+ Height = 22
+ Caption = #27599#21253#21367#25968
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object chkBBQ: TCheckBox
+ Left = 181
+ Top = 54
+ Width = 101
+ Height = 27
+ Caption = #21253' '#26631' '#31614
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ TabOrder = 0
+ end
+ object btnOK: TcxButton
+ Left = 432
+ Top = 12
+ Width = 145
+ Height = 62
+ Hint = 'Filesother'
+ Caption = #33258#21160#25171#21253
+ LookAndFeel.Kind = lfStandard
+ LookAndFeel.NativeStyle = False
+ TabOrder = 1
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -29
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = btnOKClick
+ end
+ object ComboBox1: TcxComboBox
+ Left = 266
+ Top = 49
+ ParentFont = True
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ '1'
+ '2'
+ '3'
+ '4')
+ Style.Font.Charset = GB2312_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -19
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 2
+ Text = '1'
+ Width = 59
+ end
+ object ComboBox3: TcxComboBox
+ Left = 98
+ Top = 49
+ ParentFont = True
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.Items.Strings = (
+ '1'
+ '2'
+ '3'
+ '4'
+ '5'
+ '6'
+ '7'
+ '8'
+ '9'
+ '10'
+ '11'
+ '12'
+ '13'
+ '14'
+ '15'
+ '16'
+ '17'
+ '18'
+ '19'
+ '20'
+ '21'
+ '22'
+ '23'
+ '24'
+ '25')
+ Style.Font.Charset = GB2312_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -19
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 3
+ Text = '2'
+ Width = 59
+ end
+ object edtOrder: TcxButtonEdit
+ Tag = 999
+ Left = 98
+ Top = 4
+ ParentFont = True
+ Properties.Buttons = <
+ item
+ Default = True
+ Kind = bkEllipsis
+ end>
+ Properties.OnButtonClick = edtOrderPropertiesButtonClick
+ Style.Font.Charset = GB2312_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -20
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 4
+ OnKeyPress = edtOrderKeyPress
+ Width = 227
+ end
+ end
+ end
+ object dxLayoutControl_tradepack: TdxLayoutControl [2]
+ Left = 0
+ Top = 0
+ Width = 1430
+ Height = 60
+ Align = alTop
+ TabOrder = 2
+ object SmNO: TcxTextEdit
+ Tag = 999
+ Left = 100
+ Top = 16
+ AutoSize = False
+ ParentFont = True
+ Style.Font.Charset = GB2312_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -19
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ Style.IsFontAssigned = True
+ TabOrder = 0
+ OnKeyPress = SmNOKeyPress
+ Height = 39
+ Width = 193
+ end
+ object btnClose: TcxButton
+ Left = 1216
+ Top = 16
+ Width = 83
+ Height = 39
+ Hint = 'Filesother'
+ Caption = #20851' '#38381
+ LookAndFeel.Kind = lfOffice11
+ TabOrder = 7
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -19
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = btnCloseClick
+ end
+ object cxButton2: TcxButton
+ Left = 302
+ Top = 16
+ Width = 100
+ Height = 39
+ Hint = 'Filesother'
+ Caption = #21047#26032
+ LookAndFeel.Kind = lfOffice11
+ TabOrder = 1
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = cxButton2Click
+ end
+ object edtPacketNo: TcxTextEdit
+ Tag = 999
+ Left = 457
+ Top = 16
+ AutoSize = False
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -16
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ Style.IsFontAssigned = True
+ TabOrder = 2
+ OnClick = edtPacketNoClick
+ OnKeyPress = SmNOKeyPress
+ Height = 39
+ Width = 157
+ end
+ object cxButton3: TcxButton
+ Left = 642
+ Top = 16
+ Width = 79
+ Height = 39
+ Hint = 'Filesother'
+ Caption = #20462#25913
+ LookAndFeel.Kind = lfOffice11
+ TabOrder = 3
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = cxButton3Click
+ end
+ object Edit1: TcxTextEdit
+ Tag = 999
+ Left = 730
+ Top = 16
+ AutoSize = False
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -16
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ Style.IsFontAssigned = True
+ TabOrder = 4
+ OnClick = edtPacketNoClick
+ OnKeyPress = SmNOKeyPress
+ Height = 39
+ Width = 93
+ end
+ object cxButton_bcgs: TcxButton
+ Left = 1114
+ Top = 16
+ Width = 93
+ Height = 39
+ Hint = 'Filesother'
+ Caption = #20445#23384#26684#24335
+ LookAndFeel.Kind = lfOffice11
+ TabOrder = 6
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -19
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = cxButton_bcgsClick
+ end
+ object CheckBox_hs: TCheckBox
+ Left = 851
+ Top = 16
+ Width = 97
+ Height = 39
+ Caption = #28151#33394#25171#21253
+ Color = 16448250
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlue
+ Font.Height = -19
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentColor = True
+ ParentFont = True
+ TabOrder = 5
+ OnClick = CheckBox_hsClick
+ end
+ object dxLayoutControl_tradepackGroup_Root: TdxLayoutGroup
+ AlignHorz = ahLeft
+ AlignVert = avTop
+ LayoutLookAndFeel = DataLink_TradeInsp.dxLayoutSkinLookAndFeel1
+ Hidden = True
+ ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutGroup1: TdxLayoutGroup
+ Parent = dxLayoutControl_tradepackGroup_Root
+ CaptionOptions.Text = #32452'1'
+ Hidden = True
+ ItemIndex = 6
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem1: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 277
+ AllowRemove = False
+ CaptionOptions.Text =
+ '[B][COLOR=#0000FF][SIZE=14][B][SIZE=14]'#25195#25551#26465#30721'[/SIZE][/B][/SIZE][/C' +
+ 'OLOR][/B]'
+ Control = SmNO
+ ControlOptions.OriginalHeight = 38
+ ControlOptions.OriginalWidth = 193
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutItem2: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 100
+ CaptionOptions.Text = #21047#26032
+ CaptionOptions.Visible = False
+ Control = cxButton2
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 100
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem3: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 203
+ AllowRemove = False
+ CaptionOptions.Text = '[B][COLOR=#FF0000][SIZE=14]'#21253#21495'[/SIZE][/COLOR][/B]'
+ Control = edtPacketNo
+ ControlOptions.OriginalHeight = 34
+ ControlOptions.OriginalWidth = 157
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem4: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Width = 79
+ CaptionOptions.Text = #20462#25913
+ CaptionOptions.Visible = False
+ Control = cxButton3
+ ControlOptions.OriginalHeight = 34
+ ControlOptions.OriginalWidth = 79
+ ControlOptions.ShowBorder = False
+ Index = 4
+ end
+ object dxLayoutItem5: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ CaptionOptions.Text = #20462#25913#20540
+ CaptionOptions.Visible = False
+ Control = Edit1
+ ControlOptions.OriginalHeight = 34
+ ControlOptions.OriginalWidth = 93
+ ControlOptions.ShowBorder = False
+ Index = 5
+ end
+ object dxLayoutItem6: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ AllowRemove = False
+ CaptionOptions.Text = '[B][COLOR=#FF0000][SIZE=14]'#20851' '#38381'[/SIZE][/COLOR][/B]'
+ CaptionOptions.Visible = False
+ Control = btnClose
+ ControlOptions.OriginalHeight = 33
+ ControlOptions.OriginalWidth = 83
+ ControlOptions.ShowBorder = False
+ Index = 10
+ end
+ object dxLayoutEmptySpaceItem1: TdxLayoutEmptySpaceItem
+ Parent = dxLayoutGroup1
+ AlignVert = avTop
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 30
+ SizeOptions.Width = 10
+ CaptionOptions.Text = 'Empty Space Item'
+ Index = 3
+ end
+ object dxLayoutEmptySpaceItem2: TdxLayoutEmptySpaceItem
+ Parent = dxLayoutGroup1
+ AlignHorz = ahLeft
+ AlignVert = avTop
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 28
+ SizeOptions.Width = 148
+ CaptionOptions.Text = 'Empty Space Item'
+ Index = 8
+ end
+ object dxLayoutItem7: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = False
+ SizeOptions.SizableVert = True
+ CaptionOptions.Text = 'New Item'
+ CaptionOptions.Visible = False
+ Control = cxButton_bcgs
+ ControlOptions.OriginalHeight = 39
+ ControlOptions.OriginalWidth = 93
+ ControlOptions.ShowBorder = False
+ Index = 9
+ end
+ object dxLayoutItem8: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ CaptionOptions.Text = 'New Item'
+ CaptionOptions.Visible = False
+ Control = CheckBox_hs
+ ControlOptions.AutoColor = True
+ ControlOptions.OriginalHeight = 17
+ ControlOptions.OriginalWidth = 97
+ ControlOptions.ShowBorder = False
+ Index = 7
+ end
+ object dxLayoutEmptySpaceItem3: TdxLayoutEmptySpaceItem
+ Parent = dxLayoutGroup1
+ SizeOptions.Height = 10
+ SizeOptions.Width = 10
+ CaptionOptions.Text = 'Empty Space Item'
+ Index = 6
+ end
+ end
+ inherited cxProgressBar2: TcxProgressBar
+ ExplicitHeight = 26
+ end
+ inherited ADOQueryBaseCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 105
+ Top = 264
+ end
+ inherited ADOQueryBaseTemp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Left = 97
+ Top = 369
+ end
+ object ADOQueryMain: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 336
+ Top = 252
+ end
+ object ADOQueryCmd: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 373
+ Top = 252
+ end
+ object CDS_DDB: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 200
+ Top = 460
+ end
+ object DS_DDB: TDataSource
+ DataSet = CDS_DDB
+ Left = 236
+ Top = 460
+ end
+ object ADOQueryTmp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ Parameters = <>
+ Left = 300
+ Top = 252
+ end
+ object DataSource1: TDataSource
+ Left = 448
+ Top = 356
+ end
+ object DS_KDB: TDataSource
+ DataSet = CDS_KDB
+ Left = 236
+ Top = 428
+ end
+ object RMDB_1: TRMDBDataSet
+ Visible = True
+ DataSet = ADOQueryPrint
+ Left = 692
+ Top = 236
+ end
+ object RM2: TRMGridReport
+ ThreadPrepareReport = True
+ InitialZoom = pzDefault
+ PreviewButtons = [rmpbZoom, rmpbLoad, rmpbSave, rmpbPrint, rmpbFind, rmpbPageSetup, rmpbExit, rmpbExport, rmpbNavigator]
+ DefaultCollate = False
+ ShowPrintDialog = False
+ SaveReportOptions.RegistryPath = 'Software\ReportMachine\ReportSettings\'
+ PreviewOptions.RulerUnit = rmutScreenPixels
+ PreviewOptions.RulerVisible = False
+ PreviewOptions.DrawBorder = False
+ PreviewOptions.BorderPen.Color = clGray
+ PreviewOptions.BorderPen.Style = psDash
+ Dataset = RMDB_1
+ CompressLevel = rmzcFastest
+ CompressThread = False
+ LaterBuildEvents = True
+ OnlyOwnerDataSet = False
+ Left = 764
+ Top = 236
+ ReportData = {}
+ end
+ object ADOQueryPrint: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 612
+ Top = 220
+ end
+ object CDS_KDB: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 185
+ Top = 427
+ end
+ object CDS_YDB: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 169
+ Top = 493
+ end
+ object DS_YDB: TDataSource
+ DataSet = CDS_YDB
+ Left = 232
+ Top = 492
+ end
+ object PM_KDB: TPopupMenu
+ Left = 273
+ Top = 427
+ object N1: TMenuItem
+ Caption = #20840#36873
+ OnClick = N1Click
+ end
+ object N2: TMenuItem
+ Caption = #20840#24323
+ OnClick = N2Click
+ end
+ object N5: TMenuItem
+ Caption = #30830#35748
+ OnClick = N5Click
+ end
+ end
+ object PM_YDB: TPopupMenu
+ Left = 272
+ Top = 496
+ object N3: TMenuItem
+ Caption = #25171#21360#26631#31614
+ OnClick = N3Click
+ end
+ object N4: TMenuItem
+ Caption = #25764#38144#25171#21253
+ OnClick = N4Click
+ end
+ object N13: TMenuItem
+ Caption = #20840#36873
+ OnClick = N13Click
+ end
+ object N8: TMenuItem
+ Caption = #20840#24323
+ OnClick = N8Click
+ end
+ end
+ object PM_DDB: TPopupMenu
+ Left = 272
+ Top = 464
+ object N6: TMenuItem
+ Caption = #31227#38500
+ OnClick = N6Click
+ end
+ object N7: TMenuItem
+ Caption = #25171#21253
+ OnClick = N7Click
+ end
+ end
+ object CDS_DDY: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 452
+ Top = 424
+ end
+ object cxGridPopupMenu2: TcxGridPopupMenu
+ Grid = cxGrid2
+ PopupMenus = <>
+ Left = 304
+ Top = 464
+ end
+ object cxGridPopupMenu1: TcxGridPopupMenu
+ Grid = cxGrid1
+ PopupMenus = <>
+ Left = 305
+ Top = 428
+ end
+ object cxGridPopupMenu3: TcxGridPopupMenu
+ Grid = cxGrid3
+ PopupMenus = <>
+ Left = 304
+ Top = 496
+ end
+ object CDS_PacketId: TClientDataSet
+ Aggregates = <>
+ Params = <>
+ Left = 524
+ Top = 284
+ end
+ object RMRichObject1: TRMRichObject
+ Left = 824
+ Top = 104
+ end
+ object RMBarCodeObject1: TRMBarCodeObject
+ Left = 864
+ Top = 112
+ end
+end
diff --git a/T03贸易布匹检验/U_TradePack.pas b/T03贸易布匹检验/U_TradePack.pas
new file mode 100644
index 0000000..07c3384
--- /dev/null
+++ b/T03贸易布匹检验/U_TradePack.pas
@@ -0,0 +1,976 @@
+unit U_TradePack;
+
+interface
+
+uses
+ Windows, Messages, strutils, SysUtils, Variants, Classes, Graphics, Controls,
+ Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
+ cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView,
+ cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView,
+ cxGrid, StdCtrls, cxContainer, cxTextEdit, cxCurrencyEdit, BtnEdit, ExtCtrls,
+ ComCtrls, ToolWin, DBClient, ADODB, MovePanel, Buttons, Menus,
+ cxLookAndFeelPainters, cxButtons, RM_Common, RM_Class, RM_GridReport,
+ RM_System, RM_Dataset, cxCheckBox, MMSystem, Math, WinSpool, Printers,
+ cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels, cxNavigator,
+ dxDateRanges, dxBarBuiltInMenu,
+ U_BaseList, dxScrollbarAnnotations, cxMaskEdit, cxDropDownEdit,
+ cxButtonEdit, dxLayoutcxEditAdapters, dxLayoutControlAdapters,
+ dxLayoutContainer, dxLayoutControl, cxGroupBox, RM_BarCode, RM_RichEdit,
+ cxProgressBar;
+
+type
+ TfrmTradePack = class(TfrmBaseList)
+ Panel2: TPanel;
+ ADOQueryMain: TADOQuery;
+ ADOQueryCmd: TADOQuery;
+ CDS_DDB: TClientDataSet;
+ DS_DDB: TDataSource;
+ SmNO: TcxTextEdit;
+ ADOQueryTmp: TADOQuery;
+ DataSource1: TDataSource;
+ cxGrid3: TcxGrid;
+ Tv3: TcxGridDBTableView;
+ cxGridLevel2: TcxGridLevel;
+ Tv3Column1: TcxGridDBColumn;
+ DS_KDB: TDataSource;
+ RMDB_1: TRMDBDataSet;
+ RM2: TRMGridReport;
+ Panel4: TPanel;
+ ADOQueryPrint: TADOQuery;
+ Label6: TLabel;
+ v3C_Name: TcxGridDBColumn;
+ v3C_Color: TcxGridDBColumn;
+ v3Column3: TcxGridDBColumn;
+ CDS_KDB: TClientDataSet;
+ Panel5: TPanel;
+ CDS_YDB: TClientDataSet;
+ DS_YDB: TDataSource;
+ v3Column5: TcxGridDBColumn;
+ v3Column6: TcxGridDBColumn;
+ v3Column7: TcxGridDBColumn;
+ PM_KDB: TPopupMenu;
+ N1: TMenuItem;
+ N2: TMenuItem;
+ PM_YDB: TPopupMenu;
+ btnClose: TcxButton;
+ N5: TMenuItem;
+ chkBBQ: TCheckBox;
+ PM_DDB: TPopupMenu;
+ N6: TMenuItem;
+ N3: TMenuItem;
+ N4: TMenuItem;
+ N7: TMenuItem;
+ Label2: TLabel;
+ CDS_DDY: TClientDataSet;
+ cxGridPopupMenu2: TcxGridPopupMenu;
+ cxGridPopupMenu1: TcxGridPopupMenu;
+ cxGridPopupMenu3: TcxGridPopupMenu;
+ v3Column4: TcxGridDBColumn;
+ v3Column11: TcxGridDBColumn;
+ btnOK: TcxButton;
+ cxButton2: TcxButton;
+ edtPacketNo: TcxTextEdit;
+ cxButton3: TcxButton;
+ Edit1: TcxTextEdit;
+ N13: TMenuItem;
+ CDS_PacketId: TClientDataSet;
+ N8: TMenuItem;
+ ComboBox1: TcxComboBox;
+ ComboBox3: TcxComboBox;
+ edtOrder: TcxButtonEdit;
+ dxLayoutControl_tradepackGroup_Root: TdxLayoutGroup;
+ dxLayoutControl_tradepack: TdxLayoutControl;
+ dxLayoutGroup1: TdxLayoutGroup;
+ dxLayoutItem1: TdxLayoutItem;
+ dxLayoutItem2: TdxLayoutItem;
+ dxLayoutItem3: TdxLayoutItem;
+ dxLayoutItem4: TdxLayoutItem;
+ dxLayoutItem5: TdxLayoutItem;
+ dxLayoutItem6: TdxLayoutItem;
+ dxLayoutEmptySpaceItem1: TdxLayoutEmptySpaceItem;
+ dxLayoutEmptySpaceItem2: TdxLayoutEmptySpaceItem;
+ cxButton_bcgs: TcxButton;
+ dxLayoutItem7: TdxLayoutItem;
+ cxGroupBox1: TcxGroupBox;
+ cxGrid1: TcxGrid;
+ TV1: TcxGridDBTableView;
+ cxGridDBColumn8: TcxGridDBColumn;
+ V1Column1: TcxGridDBColumn;
+ cxGridDBColumn9: TcxGridDBColumn;
+ V4Column3: TcxGridDBColumn;
+ cxGridDBColumn10: TcxGridDBColumn;
+ cxGridDBColumn11: TcxGridDBColumn;
+ cxGridDBColumn12: TcxGridDBColumn;
+ V4Column2: TcxGridDBColumn;
+ cxGridDBColumn14: TcxGridDBColumn;
+ cxGridDBColumn15: TcxGridDBColumn;
+ cxGridDBColumn17: TcxGridDBColumn;
+ cxGridDBColumn18: TcxGridDBColumn;
+ cxGridDBColumn19: TcxGridDBColumn;
+ cxGridLevel3: TcxGridLevel;
+ cxGroupBox2: TcxGroupBox;
+ cxGrid2: TcxGrid;
+ TV2: TcxGridDBTableView;
+ cxGridDBColumn2: TcxGridDBColumn;
+ V2Column6: TcxGridDBColumn;
+ cxGridDBColumn4: TcxGridDBColumn;
+ cxGridDBColumn3: TcxGridDBColumn;
+ V2Column4: TcxGridDBColumn;
+ V2Column1: TcxGridDBColumn;
+ V2BaooID: TcxGridDBColumn;
+ V2BaooNO: TcxGridDBColumn;
+ cxGridDBColumn6: TcxGridDBColumn;
+ V2Column2: TcxGridDBColumn;
+ V2Column3: TcxGridDBColumn;
+ cxGridLevel1: TcxGridLevel;
+ Tv3C_pattern: TcxGridDBColumn;
+ Tv3C_ColorNo: TcxGridDBColumn;
+ TV2C_pattern: TcxGridDBColumn;
+ TV2C_ColorNo: TcxGridDBColumn;
+ TV1C_pattern: TcxGridDBColumn;
+ TV1C_colorNo: TcxGridDBColumn;
+ RMRichObject1: TRMRichObject;
+ RMBarCodeObject1: TRMBarCodeObject;
+ CheckBox_hs: TCheckBox;
+ dxLayoutItem8: TdxLayoutItem;
+ dxLayoutEmptySpaceItem3: TdxLayoutEmptySpaceItem;
+ procedure FormDestroy(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormCreate(Sender: TObject);
+ procedure edtOrderBtnClick(Sender: TObject);
+ procedure btnCloseClick(Sender: TObject);
+ procedure PRTColorKeyPress(Sender: TObject; var Key: Char);
+ procedure N1Click(Sender: TObject);
+ procedure N2Click(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure N6Click(Sender: TObject);
+ procedure SmNOKeyPress(Sender: TObject; var Key: Char);
+ procedure N3Click(Sender: TObject);
+ procedure N4Click(Sender: TObject);
+ procedure N7Click(Sender: TObject);
+ procedure N5Click(Sender: TObject);
+ procedure btnOKClick(Sender: TObject);
+ procedure cxButton2Click(Sender: TObject);
+ procedure edtPacketNoClick(Sender: TObject);
+ procedure cxButton3Click(Sender: TObject);
+ procedure N13Click(Sender: TObject);
+ procedure N8Click(Sender: TObject);
+ procedure edtOrderPropertiesButtonClick(Sender: TObject;
+ AButtonIndex: Integer);
+ procedure cxButton_bcgsClick(Sender: TObject);
+ procedure edtOrderKeyPress(Sender: TObject; var Key: Char);
+ procedure CheckBox_hsClick(Sender: TObject);
+ private
+ FDDBSql, FPacketId, FPacketNo: string;
+ NLBName: string;
+
+ procedure InitGridKDB(); //ɴ
+ procedure InitGridDDB(); //
+ procedure InitGridYDB(); //Ѵ
+ procedure GetPacketNo();
+ procedure DaBao();
+ procedure HSDB();
+ procedure OKDDB();
+ procedure MoveCDS(CDS_Left: TclientDataSet; CDS_Right: TclientDataSet);
+ procedure PrintBao(PPacketId: string);
+ procedure doHsPack();
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ frmTradePack: TfrmTradePack;
+ newh: hwnd;
+
+implementation
+
+uses
+ U_DataLink, U_RTFun,U_globalVar, U_ZDYHelp, U_TradeClothWaitPack;
+{$R *.dfm}
+
+procedure TfrmTradePack.OKDDB();
+begin
+ if CDS_KDB.IsEmpty then
+ Exit;
+ with CDS_KDB do
+ begin
+ CDS_KDB.DisableControls;
+ while CDS_KDB.Locate('SSel', True, []) do
+ begin
+ MoveCDS(CDS_KDB, CDS_DDB);
+ with CDS_DDB do
+ begin
+ Edit;
+ FieldByName('PacketId').Value := FPacketId;
+ FieldByName('PacketNo').Value := FPacketNo;
+ end;
+ CDS_KDB.Delete;
+ end;
+ CDS_KDB.EnableControls;
+ end;
+end;
+
+procedure TfrmTradePack.DaBao();
+begin
+ if CDS_DDB.IsEmpty then
+ Exit;
+ FDDBSql := '';
+ with CDS_DDB do
+ begin
+ CDS_DDB.DisableControls;
+ First;
+ while not Eof do
+ begin
+ FDDBSql := FDDBSql + ' ' + 'Update Trade_Cloth_Inspect Set PacketTime=GETDATE() , PacketNo=' + QuotedStr(trim(FPacketNo)) + ',PacketId=' + QuotedStr(trim(FPacketId)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName)) + 'where CIID=' + QuotedStr(trim(CDS_DDB.FieldByName('CIID').AsString));
+ FDDBSql := FDDBSql + ' ' + 'Update Bs_Cloth_IO Set PacketTime=GETDATE() , PacketNo=' + QuotedStr(trim(FPacketNo)) + ',PacketId=' + QuotedStr(trim(FPacketId)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName)) + 'where CIID=' + QuotedStr(trim(CDS_DDB.FieldByName('CIID').AsString));
+ Next;
+ end;
+ CDS_DDB.EnableControls;
+ end;
+
+ try
+ ADOQueryCmd.Connection.BeginTrans;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add(FDDBSql);
+ ExecSQL;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ application.MessageBox('ʧܣ', 'ʾϢ', 0);
+ end;
+
+end;
+
+procedure TfrmTradePack.GetPacketNo();
+begin
+ with ADOQueryTmp do
+ begin
+ close;
+ sql.clear;
+ sql.add('select max(cast(isnull(PacketNo,''0'') as int) )+1 as MaxPacketNo from Trade_Cloth_Inspect ');
+ sql.Add('where OrderNo=' + quotedstr(trim(edtOrder.Text)));
+// ShowMessage(SQL.Text);
+ open;
+ end;
+ FPacketNo := Trim(ADOQueryTmp.fieldbyname('MaxPacketNo').AsString);
+ if FPacketNo = '' then
+ FPacketNo := '1';
+
+ edtPacketNo.Text := FPacketNo;
+ if GetLSNo(ADOQueryTmp, FPacketId, 'BI', 'Trade_Cloth_Inspect', 4, 1) = False then
+ begin
+ Application.MessageBox('ȡʧܣ', 'ʾ', 0);
+ Exit;
+ end;
+
+end;
+
+procedure TfrmTradePack.MoveCDS(CDS_Left: TclientDataSet; CDS_Right: TclientDataSet);
+var
+ i: Integer;
+begin
+ with CDS_Right do
+ begin
+ Append;
+ for i := 0 to CDS_Left.FieldCount - 1 do
+ begin
+ CDS_Right.FieldByName(CDS_Left.Fields[i].FieldName).Value := CDS_Left.fieldbyname(CDS_Left.Fields[i].FieldName).Value;
+ end;
+ Post;
+ end;
+end;
+
+procedure TfrmTradePack.PrintBao(PPacketId: string);
+var
+ fPrintFile: string;
+ Txt, fImagePath: string;
+ Moudle: THandle;
+ Makebar: TMakebar;
+ Mixtext: TMixtext;
+begin
+
+ with ADOQueryPrint do
+ begin
+ Close;
+ SQL.Clear;
+ SQL.Add('exec P_Trade_Insp_Prt_PackLab ' + quotedstr(PPacketId));
+ Open;
+ end;
+
+ if trim(ADOQueryPrint.fieldbyName('SLabPackage').AsString)<>'' then
+ NLBName := trim(ADOQueryPrint.fieldbyName('SLabPackage').AsString)
+ else
+ NLBName := ADOQueryPrint.fieldbyName('LabPackage').AsString;
+
+ ExportFtErpFile(Trim(NLBName) + '.rmf', ADOQueryTmp);
+ fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(NLBName) + '.rmf';
+ if not FileExists(fPrintFile) then
+ begin
+ Application.MessageBox(PChar('û' + fPrintFile), 'ʾ', 0);
+ Exit;
+ end;
+ if FileExists(fPrintFile) then
+ begin
+ RM2.LoadFromFile(fPrintFile);
+ RM2.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1);
+ RM2.printReport;
+ end;
+ if FileExists(fImagePath) then
+ DeleteFile(fImagePath);
+
+end;
+
+procedure TfrmTradePack.InitGridYDB();
+begin
+ if Trim(edtOrder.Text) = '' then
+ Exit;
+ with ADOQueryTmp do
+ begin
+ close;
+ sql.Clear;
+
+ sql.Add('select * from Trade_Cloth_Inspect A where isnull(PacketId,'''')<>'''' and OrderNo=' + QUOTEDSTR(Trim(edtOrder.Text)));
+
+ open;
+ end;
+ SCreateCDS(ADOQueryTmp, CDS_YDB);
+ SInitCDSData(ADOQueryTmp, CDS_YDB);
+end;
+
+procedure TfrmTradePack.InitGridKDB();
+begin
+ if Trim(edtOrder.Text) = '' then
+ Exit;
+ with ADOQueryTmp do
+ begin
+ close;
+ sql.Clear;
+ sql.Add('select * from Trade_Cloth_Inspect A where isnull(PacketId,'''')='''' and OrderNo=' + QUOTEDSTR(Trim(edtOrder.Text)));
+// ShowMessage(sql.Text);
+ open;
+ end;
+ SCreateCDS(ADOQueryTmp, CDS_KDB);
+ SInitCDSData(ADOQueryTmp, CDS_KDB);
+end;
+
+procedure TfrmTradePack.InitGridDDB();
+begin
+ //////////////////////ʼ/////////////////////
+ with ADOQueryTmp do
+ begin
+ close;
+ sql.Clear;
+ sql.Add('select AA.* from Trade_Cloth_Inspect AA where 1=2');
+ open;
+ end;
+ SCreateCDS(ADOQueryTmp, CDS_DDB);
+//////////////////////ʼ/////////////////////
+end;
+
+procedure TfrmTradePack.FormDestroy(Sender: TObject);
+begin
+ inherited;
+ frmTradePack := nil;
+end;
+
+procedure TfrmTradePack.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ inherited;
+
+ Action := cafree;
+end;
+
+procedure TfrmTradePack.FormCreate(Sender: TObject);
+begin
+ inherited;
+ Panel2.Align:=alClient;
+ cxGroupBox1.align :=alClient;
+ readCxGrid('ƷɨTv1', Tv1, gDllFileCaption);
+ readCxGrid('ƷɨTv2', Tv2, gDllFileCaption);
+ readCxGrid('ƷɨTv3', Tv3, gDllFileCaption);
+
+end;
+
+procedure TfrmTradePack.edtOrderBtnClick(Sender: TObject);
+var
+ FPacketId: string;
+ FMainID: string;
+begin
+ try
+ frmTradeClothWaitPack := TfrmTradeClothWaitPack.Create(self);
+ with frmTradeClothWaitPack do
+ begin
+ if ShowModal = 1 then
+ begin
+ edtOrder.Text := Trim(CDS_OrderSel.fieldbyname('OrderNo').AsString);
+ end;
+ end;
+ finally
+ frmTradeClothWaitPack.Free;
+ end;
+ SMNO.SetFocus;
+ InitGridKDB();
+ InitGridYDB();
+ GetPacketNo();
+end;
+
+procedure TfrmTradePack.edtOrderKeyPress(Sender: TObject; var Key: Char);
+begin
+ inherited;
+ if key=#13 then
+ begin
+ InitGridKDB();
+ InitGridYDB();
+ GetPacketNo();
+ tv3.ApplyBestFit();
+ end;
+end;
+
+procedure TfrmTradePack.edtOrderPropertiesButtonClick(Sender: TObject;
+ AButtonIndex: Integer);
+var
+ FPacketId: string;
+ FMainID: string;
+begin
+ try
+ frmTradeClothWaitPack := TfrmTradeClothWaitPack.Create(self);
+ with frmTradeClothWaitPack do
+ begin
+ if ShowModal = 1 then
+ begin
+ edtOrder.Text := Trim(CDS_OrderSel.fieldbyname('OrderNo').AsString);
+ end;
+ end;
+ finally
+ frmTradeClothWaitPack.Free;
+ end;
+ SMNO.SetFocus;
+ InitGridKDB();
+ InitGridYDB();
+ GetPacketNo();
+ tv3.ApplyBestFit();
+end;
+
+procedure TfrmTradePack.btnCloseClick(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TfrmTradePack.PRTColorKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ SDofilter(ADOQueryMain, SGetFilters(Panel5, 1, 2));
+ SCreateCDS(ADOQueryMain, CDS_KDB);
+ SInitCDSData(ADOQueryMain, CDS_KDB);
+ end;
+end;
+
+procedure TfrmTradePack.N1Click(Sender: TObject);
+begin
+ SelOKNo(CDS_KDB, True);
+end;
+
+procedure TfrmTradePack.N2Click(Sender: TObject);
+begin
+ SelOKNo(CDS_KDB, False);
+end;
+
+procedure TfrmTradePack.FormShow(Sender: TObject);
+begin
+ inherited;
+ dxLayoutItem7.Visible:=gIsCanDesign ;
+ readCxGrid('ƷɨTv1', Tv1, gDllFileCaption);
+ readCxGrid('ƷɨTv2', Tv2, gDllFileCaption);
+ readCxGrid('ƷɨTv3', Tv3, gDllFileCaption);
+ InitGridDDB();
+
+ btnOk.Caption:='Զ';
+
+end;
+
+procedure TfrmTradePack.N6Click(Sender: TObject);
+begin
+
+ if CDS_DDB.IsEmpty then
+ Exit;
+ with CDS_DDB do
+ begin
+
+ MoveCDS(CDS_DDB, CDS_KDB);
+ CDS_DDB.Delete;
+ end;
+
+end;
+
+procedure TfrmTradePack.SmNOKeyPress(Sender: TObject; var Key: Char);
+begin
+ if Key = #13 then
+ begin
+ if trim(smno.Text) = '' then
+ exit;
+
+ if trim(edtOrder.Text) = '' then
+ begin
+ application.MessageBox('ŲΪ!', 'ʾ');
+ exit;
+ end;
+ if CDS_KDB.IsEmpty then
+ begin
+ application.MessageBox('ŻδоϢ', 'ʾ');
+ exit;
+ end;
+ if not CDS_KDB.Locate('ciid',Trim(SmNO.Text),[]) then
+ begin
+ application.MessageBox('δҵǰ!', '');
+ exit;
+ end;
+
+ if Trim(CDS_KDB.FieldByName('ciid').AsString) = Trim(SmNO.Text) then
+ begin
+ with CDS_KDB do
+ begin
+ Edit;
+ FieldByName('SSel').Value := True;
+ Post;
+ end;
+ end;
+
+ OKDDB();
+ Sleep(200);
+
+ if StrToInt(ComboBox3.Text) = CDS_DDB.RecordCount then
+ begin
+ DaBao();
+ with CDS_DDB do
+ begin
+ CDS_DDB.DisableControls;
+ First;
+ while not Eof do
+ begin
+ MoveCDS(CDS_DDB, CDS_YDB);
+ Next;
+ end;
+ CDS_DDB.EnableControls;
+ CDS_DDB.EmptyDataSet;
+ end;
+ if chkBBQ.Checked then
+ begin
+ PrintBao(FPacketId);
+ end;
+ GetPacketNo();
+ end;
+
+ smno.Text := '';
+ smno.SetFocus;
+ end;
+
+end;
+
+procedure TfrmTradePack.N3Click(Sender: TObject);
+var
+ MPacketId: string;
+begin
+ if CDS_YDB.Locate('SSel', True, []) = False then
+ begin
+ application.MessageBox('ѡӡݣ', 'ʾϢ', MB_ICONERROR);
+ exit;
+ end;
+ while CDS_YDB.Locate('SSel', True, []) do
+ begin
+ MPacketId := Trim(CDS_YDB.FieldByName('PacketId').AsString);
+ PrintBao(MPacketId);
+ while CDS_YDB.Locate('SSel;PacketId', VarArrayOf([True, MPacketId]), []) do
+ begin
+ with CDS_YDB do
+ begin
+ Edit;
+ CDS_YDB.FieldByName('SSel').Value := False;
+ Post;
+ end;
+ end;
+ end;
+
+end;
+
+procedure TfrmTradePack.N4Click(Sender: TObject);
+var
+ NPacketId: string;
+begin
+
+ if CDS_YDB.Locate('SSel', True, []) = False then
+ begin
+ application.MessageBox('ѡӡݣ', 'ʾϢ', MB_ICONERROR);
+ exit;
+ end;
+ while CDS_YDB.Locate('SSel', True, []) do
+ begin
+ NPacketId := Trim(CDS_YDB.FieldByName('PacketId').AsString);
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('Update Trade_Cloth_Inspect Set PacketLog=isnull(PacketLog,'''')+cast(PacketNo as varchar(40))+''&''+PacketId+''&''+convert(varchar,PacketTime,120)+'';'' where isnull(PacketId,'''')<>'''' and PacketId=' + QuotedStr(NPacketId));
+ sql.Add('Update Trade_Cloth_Inspect Set PacketNo=null,PacketId=null where isnull(PacketId,'''')<>'''' and PacketId=' + QuotedStr(NPacketId));
+ sql.Add('Update Bs_Cloth_IO Set PacketNo=null,PacketId=null where isnull(PacketId,'''')<>'''' and PacketId=' + QuotedStr(NPacketId));
+ ExecSQL;
+ end;
+
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
+ sql.Add(' ' + quotedstr(trim(DName)));
+ sql.Add(',getdate() ');
+ sql.Add(',' + quotedstr(trim(self.Caption)));
+ sql.Add(',' + quotedstr(trim('')));
+ sql.Add(',' + quotedstr(NPacketId));
+ sql.Add(',' + quotedstr(trim('ɹ')));
+ sql.Add(')');
+ ExecSQL;
+ end;
+
+ while CDS_YDB.Locate('SSel;PacketId', VarArrayOf([True, NPacketId]), []) do
+ begin
+ with CDS_YDB do
+ begin
+ Edit;
+ CDS_YDB.FieldByName('SSel').Value := False;
+ Post;
+ end;
+ end;
+ end;
+ InitGridKDB();
+ InitGridYDB();
+ InitGridDDB();
+ GetPacketNo();
+end;
+
+procedure TfrmTradePack.N7Click(Sender: TObject);
+begin
+ DaBao();
+ with CDS_DDB do
+ begin
+ CDS_DDB.DisableControls;
+ First;
+ while not Eof do
+ begin
+ MoveCDS(CDS_DDB, CDS_YDB);
+ Next;
+ end;
+ CDS_DDB.EnableControls;
+ CDS_DDB.EmptyDataSet;
+ end;
+ if chkBBQ.Checked then
+ begin
+ PrintBao(FPacketId);
+ end;
+
+ GetPacketNo();
+end;
+
+procedure TfrmTradePack.N8Click(Sender: TObject);
+begin
+ SelOKNo(CDS_YDB, false);
+
+end;
+
+procedure TfrmTradePack.N5Click(Sender: TObject);
+begin
+ OKDDB();
+end;
+
+procedure TfrmTradePack.btnOKClick(Sender: TObject);
+var
+ i, j, K: Integer;
+ MCurBatchNO, MoldBatchNO, MCurSubID, MoldSubID: string;
+begin
+ if not CDS_DDB.IsEmpty then
+ begin
+ Application.MessageBox('մ', 'ʾ', 0);
+ Exit;
+ end;
+ if CDS_KDB.IsEmpty then
+ Exit;
+
+ //ɫ
+ if CheckBox_hs.Checked then
+ begin
+ doHsPack();
+ exit;
+ end;
+
+
+ MCurBatchNO := '';
+ MoldBatchNO := '';
+ i := 0;
+ j := StrToInt(ComboBox3.Text);
+ K := 0;
+ with CDS_KDB do
+ begin
+ CDS_KDB.DisableControls;
+ CDS_DDB.DisableControls;
+ First;
+ while not Eof do
+ begin
+ if CDS_KDB.FieldByName('SSel').AsBoolean then
+ begin
+ if K = 0 then
+ begin
+ MoldBatchNO := Trim(CDS_KDB.FieldByName('BatchNO').AsString);
+ MoldSubID := Trim(CDS_KDB.FieldByName('SubID').AsString);
+ end;
+ MCurBatchNO := Trim(CDS_KDB.FieldByName('BatchNO').AsString);
+ MCurSubID := Trim(CDS_KDB.FieldByName('SubID').AsString);
+ if j = 1 then
+ begin
+ MoveCDS(CDS_KDB, CDS_DDB);
+ with CDS_DDB do
+ begin
+ Edit;
+ FieldByName('PacketId').Value := FPacketId;
+ FieldByName('PacketNo').Value := FPacketNo;
+ Post
+ end;
+ DaBao();
+ CDS_DDB.EmptyDataSet;
+ if chkBBQ.Checked then
+ begin
+ PrintBao(FPacketId);
+ end;
+ GetPacketNo();
+ Sleep(200);
+ i := 0;
+ end
+ else
+ begin
+ if (MoldBatchNO <> MCurBatchNO) or (MoldSubID <> MCurSubID) then
+ begin
+ DaBao();
+ CDS_DDB.EmptyDataSet;
+ Sleep(100);
+ if chkBBQ.Checked then
+ begin
+ PrintBao(FPacketId);
+ end;
+
+ GetPacketNo();
+ MoveCDS(CDS_KDB, CDS_DDB);
+ with CDS_DDB do
+ begin
+ Edit;
+ FieldByName('PacketId').Value := FPacketId;
+ FieldByName('PacketNo').Value := FPacketNo;
+ Post
+ end;
+ i := 1;
+ end
+ else
+ begin
+ i := i + 1;
+
+ if i <= j then
+ begin
+ MoveCDS(CDS_KDB, CDS_DDB);
+ with CDS_DDB do
+ begin
+ Edit;
+ FieldByName('PacketId').Value := FPacketId;
+ FieldByName('PacketNo').Value := FPacketNo;
+ Post
+ end;
+ end;
+
+ if i = j then
+ begin
+ DaBao();
+ CDS_DDB.EmptyDataSet;
+ if chkBBQ.Checked then
+ begin
+ PrintBao(FPacketId);
+ end;
+
+ GetPacketNo();
+ Sleep(100);
+ i := 0;
+ end;
+ end;
+ end;
+
+ K := K + 1;
+ end;
+
+ MoldBatchNO := MCurBatchNO;
+ MoldSubID := MCurSubID;
+ with CDS_KDB do
+ begin
+ Edit;
+ FieldByName('SSel').Value := false;
+ Post
+ end;
+ Next;
+ end;
+ if not CDS_DDB.IsEmpty then
+ begin
+ DaBao();
+ CDS_DDB.EmptyDataSet;
+ if chkBBQ.Checked then
+ begin
+ PrintBao(FPacketId);
+ end;
+
+ GetPacketNo();
+ Sleep(100);
+ i := 0;
+ end;
+ CDS_DDB.EnableControls;
+ CDS_KDB.EnableControls;
+ end;
+ InitGridKDB();
+ InitGridYDB();
+
+end;
+
+procedure TfrmTradePack.CheckBox_hsClick(Sender: TObject);
+begin
+ if CheckBox_hs.Checked then
+ begin
+ btnOK.Caption:='ɫ';
+ end
+ else
+ begin
+ btnOK.Caption:='Զ';
+ end;
+
+end;
+
+procedure TfrmTradePack.cxButton2Click(Sender: TObject);
+begin
+ InitGridKDB();
+ InitGridYDB();
+ CDS_DDB.EmptyDataSet;
+end;
+
+procedure TfrmTradePack.edtPacketNoClick(Sender: TObject);
+begin
+ if not CDS_DDB.IsEmpty then
+ begin
+ Application.MessageBox('մ', 'ʾ', 0);
+ Exit;
+ end;
+end;
+
+procedure TfrmTradePack.cxButton3Click(Sender: TObject);
+begin
+ edtPacketNo.Text := Edit1.Text;
+ FPacketNo := Edit1.Text;
+end;
+
+procedure TfrmTradePack.cxButton_bcgsClick(Sender: TObject);
+begin
+ inherited;
+ writeCxGrid('ƷɨTv1', Tv1, gDllFileCaption);
+ writeCxGrid('ƷɨTv2', Tv2, gDllFileCaption);
+ writeCxGrid('ƷɨTv3', Tv3, gDllFileCaption);
+end;
+
+procedure TfrmTradePack.N13Click(Sender: TObject);
+begin
+ SelOKNo(CDS_YDB, True);
+end;
+
+//ɫ
+procedure TfrmTradePack.doHsPack();
+var
+ rtvalues: TArray;
+ FOrderNO, msg: string;
+ FJS, FJH: Integer;
+begin
+ rtvalues := SelCDSKey(CDS_KDB, ['CIID']);
+ FOrderNO := edtOrder.text;
+ FJS := StrToInt(ComboBox3.Text);
+ FJH := StrToInt(edtPacketNo.text);
+
+ with ADOQueryTmp do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Get_HS_DaBao ');
+ Sql.Add(' @CIIDs=' + quotedstr(rtvalues[0]));
+ Sql.Add(',@OrderNO=' + quotedstr(Trim(FOrderNO)));
+ Sql.Add(',@JS=' + inttostr(FJS));
+ SQL.Add(',@JH=' + inttostr(FJH));
+// showmessage(SQL.text);
+ Open;
+ end;
+ SCreateCDS(ADOQueryTmp, CDS_YDB);
+ SInitCDSData(ADOQueryTmp, CDS_YDB);
+
+ with ADOQueryTmp do
+ begin
+ Close;
+ Sql.Clear;
+ Sql.Add('exec P_Get_HSDaBao_TS ');
+ Sql.Add(' @CIIDs=' + quotedstr(rtvalues[0]));
+ Sql.Add(',@OrderNO=' + quotedstr(Trim(FOrderNO)));
+ Sql.Add(',@JS=' + inttostr(FJS));
+ Open;
+ end;
+
+ msg := ADOQueryTmp.FieldByName('msg').AsString;
+
+ if Application.MessageBox(PChar(msg), 'ȷϴ', 32 + 4) = IDYES then
+ begin
+ HSDB();
+ end;
+ GetPacketNo();
+ InitGridKDB();
+ InitGridYDB();
+
+
+end;
+
+///////////////////////////////
+procedure TfrmTradePack.HSDB();
+begin
+ if CDS_YDB.IsEmpty then
+ Exit;
+ FDDBSql := '';
+ with CDS_YDB do
+ begin
+ CDS_YDB.DisableControls;
+ First;
+ while not Eof do
+ begin
+ FDDBSql := FDDBSql + ' ' + 'Update Trade_Cloth_Inspect Set PacketTime=GETDATE() , PacketNo=' + QuotedStr(trim(CDS_YDB.FieldByName('PacketNo').AsString)) + ',PacketId=' + QuotedStr(trim(CDS_YDB.FieldByName('PacketId').AsString)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName)) + 'where CIID=' + QuotedStr(trim(CDS_YDB.FieldByName('CIID').AsString));
+ FDDBSql := FDDBSql + ' ' + 'Update Bs_Cloth_IO Set PacketTime=GETDATE() , PacketNo=' + QuotedStr(trim(CDS_YDB.FieldByName('PacketNo').AsString)) + ',PacketId=' + QuotedStr(trim(CDS_YDB.FieldByName('PacketId').AsString)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName)) + 'where CIID=' + QuotedStr(trim(CDS_YDB.FieldByName('CIID').AsString));
+ Next;
+ end;
+ CDS_YDB.EnableControls;
+ end;
+
+ try
+ ADOQueryCmd.Connection.BeginTrans;
+ with ADOQueryCmd do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add(FDDBSql);
+ ExecSQL;
+ end;
+ ADOQueryCmd.Connection.CommitTrans;
+ except
+ ADOQueryCmd.Connection.RollbackTrans;
+ application.MessageBox('ʧܣ', 'ʾϢ', 0);
+ end;
+
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_frameBads.dfm b/T03贸易布匹检验/U_frameBads.dfm
new file mode 100644
index 0000000..425dc5b
--- /dev/null
+++ b/T03贸易布匹检验/U_frameBads.dfm
@@ -0,0 +1,305 @@
+object frameBads: TframeBads
+ Left = 0
+ Top = 0
+ Width = 331
+ Height = 435
+ TabOrder = 0
+ object dxPanel1: TdxPanel
+ Left = 0
+ Top = 144
+ Width = 331
+ Height = 291
+ Align = alBottom
+ TabOrder = 0
+ Visible = False
+ object RadioGroup1: TRadioGroup
+ Left = 0
+ Top = 108
+ Width = 329
+ Height = 132
+ Align = alBottom
+ Columns = 2
+ Ctl3D = True
+ Items.Strings = (
+ '0-3"'
+ '3"-6"'
+ '6"-9"'
+ #8805'9"'
+ #25972#21305
+ #36830#32493#20986#29616#29781#30133)
+ ParentCtl3D = False
+ TabOrder = 0
+ ExplicitTop = 115
+ end
+ object dxPanel3: TdxPanel
+ Left = 0
+ Top = 240
+ Width = 329
+ Height = 49
+ Align = alBottom
+ Frame.Borders = [bLeft, bRight, bBottom]
+ TabOrder = 1
+ ExplicitTop = 248
+ object cxButton1: TcxButton
+ Left = 25
+ Top = 3
+ Width = 71
+ Height = 41
+ Caption = #21462#28040#36873#25321
+ TabOrder = 0
+ OnClick = cxButton1Click
+ end
+ object cxButton2: TcxButton
+ Left = 174
+ Top = 4
+ Width = 75
+ Height = 38
+ Caption = #30830' '#23450
+ TabOrder = 1
+ OnClick = cxButton2Click
+ end
+ end
+ object dxLayoutControl1: TdxLayoutControl
+ Left = 0
+ Top = 9
+ Width = 329
+ Height = 99
+ Align = alBottom
+ TabOrder = 2
+ LayoutLookAndFeel = DataLink_TradeInsp.dxLayoutSkinLookAndFeel1
+ object CIFBeg: TcxTextEdit
+ Left = 44
+ Top = 48
+ Properties.OnEditValueChanged = CIFBegPropertiesEditValueChanged
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 4
+ Width = 52
+ end
+ object CIFEnd: TcxTextEdit
+ Left = 116
+ Top = 48
+ AutoSize = False
+ Properties.OnChange = CIFEndPropertiesChange
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 5
+ Height = 30
+ Width = 58
+ end
+ object CIFQty: TcxTextEdit
+ Left = 194
+ Top = 48
+ AutoSize = False
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 6
+ Height = 30
+ Width = 53
+ end
+ object CIFNumber: TcxTextEdit
+ Left = 39
+ Top = 5
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 0
+ Width = 56
+ end
+ object IsSubtract: TcxCheckBox
+ Left = 245
+ Top = 5
+ AutoSize = False
+ Caption = ' '
+ Properties.Alignment = taCenter
+ Style.HotTrack = False
+ Style.LookAndFeel.SkinName = 'WXI'
+ Style.TransparentBorder = False
+ StyleDisabled.LookAndFeel.SkinName = 'WXI'
+ StyleFocused.LookAndFeel.SkinName = 'WXI'
+ StyleHot.LookAndFeel.SkinName = 'WXI'
+ TabOrder = 2
+ Transparent = True
+ OnClick = IsSubtractClick
+ Height = 37
+ Width = 74
+ end
+ object SubtractQty: TcxTextEdit
+ Left = 169
+ Top = 5
+ AutoSize = False
+ Properties.OnEditValueChanged = SubtractQtyPropertiesEditValueChanged
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 1
+ Height = 37
+ Width = 70
+ end
+ object cxCheck_len: TcxCheckBox
+ Left = 0
+ Top = 48
+ Caption = #38271#24230
+ Style.HotTrack = False
+ Style.TransparentBorder = False
+ TabOrder = 3
+ Transparent = True
+ end
+ object dxLayoutControl1Group_Root: TdxLayoutGroup
+ AlignHorz = ahParentManaged
+ AlignVert = avTop
+ CaptionOptions.Text = #30149#30133#26681
+ SizeOptions.AssignedValues = [sovSizableHorz]
+ SizeOptions.SizableHorz = True
+ Hidden = True
+ Padding.Left = -10
+ Padding.Top = -5
+ Padding.AssignedValues = [lpavLeft, lpavTop]
+ ShowBorder = False
+ Index = -1
+ end
+ object dxLayoutGroup1: TdxLayoutGroup
+ Parent = dxLayoutAutoCreatedGroup1
+ AlignHorz = ahLeft
+ CaptionOptions.Text = #30149#30133#21517#31216
+ Hidden = True
+ ItemIndex = 1
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ Index = 0
+ end
+ object dxLayoutGroup2: TdxLayoutGroup
+ Parent = dxLayoutControl1Group_Root
+ CaptionOptions.Text = #30149#30133#20301#32622
+ Hidden = True
+ LayoutDirection = ldHorizontal
+ ShowBorder = False
+ UseIndent = False
+ Index = 1
+ end
+ object dxLayoutItem2: TdxLayoutItem
+ Parent = dxLayoutGroup1
+ Control = CIFNumber
+ ControlOptions.OriginalHeight = 21
+ ControlOptions.OriginalWidth = 56
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object lblCIFName: TdxLayoutLabeledItem
+ Parent = dxLayoutGroup1
+ AlignVert = avClient
+ CaptionOptions.Text = #30772#27934
+ Index = 1
+ end
+ object dxLayoutEmptySpaceItem1: TdxLayoutEmptySpaceItem
+ Parent = dxLayoutGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 10
+ SizeOptions.Width = 2
+ CaptionOptions.Text = #20998#21106#26465
+ Index = 0
+ end
+ object dxLayoutLabeledItem1: TdxLayoutLabeledItem
+ Parent = dxLayoutGroup1
+ AlignHorz = ahClient
+ SizeOptions.AssignedValues = [sovSizableHorz, sovSizableVert]
+ SizeOptions.SizableHorz = True
+ SizeOptions.SizableVert = True
+ SizeOptions.Height = 30
+ CaptionOptions.Text = #20010
+ Index = 3
+ end
+ object dxLayoutItem1: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ Control = CIFBeg
+ ControlOptions.OriginalHeight = 21
+ ControlOptions.OriginalWidth = 52
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object dxLayoutItem3: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup1
+ AlignHorz = ahClient
+ AlignVert = avClient
+ CaptionOptions.Text = #36873#25321#26159#21542
+ CaptionOptions.Visible = False
+ CaptionOptions.Layout = clTop
+ Control = IsSubtract
+ ControlOptions.OriginalHeight = 37
+ ControlOptions.OriginalWidth = 31
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem4: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ AlignVert = avClient
+ CaptionOptions.Text = ' '#21040
+ Control = CIFEnd
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 58
+ ControlOptions.ShowBorder = False
+ Index = 2
+ end
+ object dxLayoutItem5: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ AlignVert = avClient
+ CaptionOptions.Text = ' '#20849
+ Control = CIFQty
+ ControlOptions.OriginalHeight = 25
+ ControlOptions.OriginalWidth = 53
+ ControlOptions.ShowBorder = False
+ Index = 3
+ end
+ object dxLayoutItem6: TdxLayoutItem
+ Parent = dxLayoutAutoCreatedGroup1
+ SizeOptions.AssignedValues = [sovSizableHorz]
+ SizeOptions.SizableHorz = True
+ SizeOptions.Width = 119
+ CaptionOptions.Text = '[B][COLOR=#FF0000]'#20943#21435#25968#37327'[/COLOR][/B]'
+ Control = SubtractQty
+ ControlOptions.OriginalHeight = 37
+ ControlOptions.OriginalWidth = 60
+ ControlOptions.ShowBorder = False
+ Index = 1
+ end
+ object lblLenUnit1: TdxLayoutLabeledItem
+ Parent = dxLayoutGroup2
+ AlignVert = avClient
+ CaptionOptions.Text = 'M'
+ Index = 4
+ end
+ object dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup
+ Parent = dxLayoutControl1Group_Root
+ LayoutDirection = ldHorizontal
+ Index = 0
+ end
+ object dxLayoutItem_checkLen: TdxLayoutItem
+ Parent = dxLayoutGroup2
+ AlignVert = avClient
+ CaptionOptions.Visible = False
+ Control = cxCheck_len
+ ControlOptions.OriginalHeight = 30
+ ControlOptions.OriginalWidth = 44
+ ControlOptions.ShowBorder = False
+ Index = 0
+ end
+ end
+ end
+ object cxScrollBox1: TcxScrollBox
+ Left = 0
+ Top = 0
+ Width = 331
+ Height = 144
+ Align = alClient
+ TabOrder = 1
+ ExplicitHeight = 148
+ end
+ object ADOTmp: TADOQuery
+ Connection = DataLink_TradeInsp.ADOLink
+ LockType = ltReadOnly
+ CommandTimeout = 60
+ Parameters = <>
+ Left = 208
+ Top = 65
+ end
+end
diff --git a/T03贸易布匹检验/U_frameBads.pas b/T03贸易布匹检验/U_frameBads.pas
new file mode 100644
index 0000000..8e1dc16
--- /dev/null
+++ b/T03贸易布匹检验/U_frameBads.pas
@@ -0,0 +1,236 @@
+unit U_frameBads;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
+ System.Classes,
+ Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls,
+ cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit,
+ Vcl.StdCtrls, Vcl.ExtCtrls, cxTextEdit, MovePanel, Vcl.Buttons,
+ cxGeometry, dxFramedControl, Vcl.Menus, cxButtons, dxPanel, cxScrollBox,
+ dxLayoutcxEditAdapters, dxLayoutContainer, cxClasses, dxLayoutControl,
+ Data.DB, Data.Win.ADODB, cxCheckBox, dxSkinsCore;
+
+type
+ TframeBads = class(TFrame)
+ dxPanel1: TdxPanel;
+ RadioGroup1: TRadioGroup;
+ dxPanel3: TdxPanel;
+ cxButton1: TcxButton;
+ cxButton2: TcxButton;
+ CIFBeg: TcxTextEdit;
+ CIFEnd: TcxTextEdit;
+ CIFQty: TcxTextEdit;
+ CIFNumber: TcxTextEdit;
+ dxLayoutControl1Group_Root: TdxLayoutGroup;
+ dxLayoutControl1: TdxLayoutControl;
+ dxLayoutGroup1: TdxLayoutGroup;
+ dxLayoutGroup2: TdxLayoutGroup;
+ dxLayoutItem2: TdxLayoutItem;
+ lblCIFName: TdxLayoutLabeledItem;
+ dxLayoutEmptySpaceItem1: TdxLayoutEmptySpaceItem;
+ dxLayoutLabeledItem1: TdxLayoutLabeledItem;
+ dxLayoutItem1: TdxLayoutItem;
+ dxLayoutItem3: TdxLayoutItem;
+ dxLayoutItem4: TdxLayoutItem;
+ dxLayoutItem5: TdxLayoutItem;
+ dxLayoutItem6: TdxLayoutItem;
+ lblLenUnit1: TdxLayoutLabeledItem;
+ ADOTmp: TADOQuery;
+ IsSubtract: TcxCheckBox;
+ cxScrollBox1: TcxScrollBox;
+ SubtractQty: TcxTextEdit;
+ dxLayoutAutoCreatedGroup1: TdxLayoutAutoCreatedGroup;
+ cxCheck_len: TcxCheckBox;
+ dxLayoutItem_checkLen: TdxLayoutItem;
+ procedure cxButton2Click(Sender: TObject);
+ procedure cxButton1Click(Sender: TObject);
+ procedure CIFBegPropertiesEditValueChanged(Sender: TObject);
+ procedure IsSubtractClick(Sender: TObject);
+ procedure SubtractQtyPropertiesEditValueChanged(Sender: TObject);
+ procedure CIFEndPropertiesChange(Sender: TObject);
+ private
+ procedure SpeedButtonClick(Sender: TObject);
+ public
+ fBadBtnSize: Integer;
+ fRowNumber: Integer;
+ procedure InitBadPanel();
+ end;
+
+implementation
+
+uses
+ U_DataLink;
+{$R *.dfm}
+
+procedure TframeBads.CIFBegPropertiesEditValueChanged(Sender: TObject);
+var
+ mvalue: Double;
+begin
+ if Trim(CIFBeg.Text) <> '' then
+ begin
+ if TryStrToFloat(CIFBeg.Text, mvalue) = False then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end
+ else
+ begin
+ Exit;
+ end;
+ if Trim(CIFEnd.Text) = '' then
+ begin
+ CIFQty.Text := '';
+ exit;
+ end ;
+
+ CIFQty.Text := FloatToStr(StrToFloat(CIFEnd.Text) - StrToFloat(CIFBeg.Text));
+end;
+
+procedure TframeBads.CIFEndPropertiesChange(Sender: TObject);
+var
+ mvalue: Double;
+begin
+ if Trim(CIFEnd.Text) <> '' then
+ begin
+ if TryStrToFloat(CIFEnd.Text, mvalue) = False then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end ;
+
+ if trim(CIFBeg.Text)='' then
+ CIFQty.Text :=''
+ else
+ CIFQty.Text := FloatToStr(StrToFloatDef(trim(CIFEnd.Text),0) - StrToFloatdef(trim(CIFBeg.Text),0));
+end;
+
+procedure TframeBads.cxButton1Click(Sender: TObject);
+begin
+ RadioGroup1.ItemIndex := -1;
+end;
+
+procedure TframeBads.cxButton2Click(Sender: TObject);
+var
+ mvalue: Double;
+begin
+
+ if Trim(CIFBeg.Text) <> '' then
+ begin
+ if Trim(CIFEnd.Text) <> '' then
+ begin
+ if StrToFloat(CIFEnd.Text) < StrToFloat(CIFBeg.Text) then
+ begin
+ Application.MessageBox('õλ¼!', 'ʾ', 0);
+ Exit;
+ end;
+ end;
+ end;
+ if CIFQty.Text <> '' then
+ begin
+ if TryStrToFloat(CIFQty.Text, mvalue) = False then
+ begin
+ Application.MessageBox('Ƿ!', 'ʾ', 0);
+ Exit;
+ end;
+ end;
+
+ if strTofloatdef(Trim(SubtractQty.Text),0)>0 then
+ begin
+ IsSubtract.Checked:=true;
+ end
+ else
+ begin
+ IsSubtract.Checked:=false;
+ end;
+
+end;
+
+procedure TframeBads.InitBadPanel();
+var
+ speedBtn: TSpeedButton;
+ zdyName: string;
+ i, k, j: Integer;
+begin
+ with ADOTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select ZDYName from KH_Zdy where Type=''WFBCD'' order by ZDYNO ');
+ Open;
+ end;
+ if ADOTmp.IsEmpty then
+ begin
+ Application.MessageBox('ûжõ㣡', 'ʾ', 0);
+ Exit;
+ end;
+ if fRowNumber = 0 then
+ fRowNumber := 5;
+
+ j := fRowNumber;
+ if fBadBtnSize < 30 then
+ fBadBtnSize := 40;
+ with ADOTmp do
+ begin
+ First;
+ i := 0;
+ while not Eof do
+ begin
+ k := i div j;
+ zdyName := Trim(fieldbyname('ZDYName').AsString);
+ speedBtn := TSpeedButton.Create(self);
+ speedBtn.OnClick := SpeedButtonClick;
+
+ speedBtn.Width := fBadBtnSize;
+ speedBtn.Height := fBadBtnSize;
+
+
+ speedBtn.Left := 5 + (i mod j) * speedBtn.Width;
+ speedBtn.Top := 3 + k * speedBtn.Height;
+
+ speedBtn.Parent := cxScrollBox1;
+ speedBtn.Hint := zdyName;
+ if Length(zdyName) > 4 then
+ begin
+ speedBtn.Caption := Copy(zdyName, 1, 4) + #13 +
+ Copy(zdyName, 5, Length(zdyName) - 4);
+ end
+ else
+ speedBtn.Caption := zdyName;
+
+ i := i + 1;
+ Next;
+ end;
+ end;
+
+end;
+
+procedure TframeBads.IsSubtractClick(Sender: TObject);
+begin
+
+end;
+
+//
+
+procedure TframeBads.SpeedButtonClick(Sender: TObject);
+begin
+ dxPanel1.Visible := true;
+
+ lblCIFName.Caption := Trim(TSpeedButton(Sender).Hint);
+
+ // CIFNumber.SetFocus;
+
+end;
+
+procedure TframeBads.SubtractQtyPropertiesEditValueChanged(Sender: TObject);
+begin
+ if trim(SubtractQty.Text)<>'' then
+ isSubTract.Checked:=true
+ else
+ isSubTract.Checked:=false;
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_frameParam.dfm b/T03贸易布匹检验/U_frameParam.dfm
new file mode 100644
index 0000000..63cf163
--- /dev/null
+++ b/T03贸易布匹检验/U_frameParam.dfm
@@ -0,0 +1,787 @@
+object FrameParam: TFrameParam
+ Left = 0
+ Top = 0
+ Width = 666
+ Height = 509
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -13
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ TabOrder = 0
+ object Label4: TLabel
+ Left = 192
+ Top = 57
+ Width = 76
+ Height = 25
+ Caption = #21367#21495#29983#25104
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -19
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object pnlSet: TPanel
+ Left = 0
+ Top = 0
+ Width = 666
+ Height = 509
+ Align = alClient
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentBackground = False
+ ParentFont = True
+ TabOrder = 0
+ ExplicitWidth = 605
+ object cxGroupBox1: TcxGroupBox
+ Left = 2
+ Top = 2
+ Align = alTop
+ Caption = #35774#22791#35774#32622
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -13
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 0
+ ExplicitTop = -4
+ ExplicitWidth = 601
+ Height = 122
+ Width = 662
+ object Label16: TLabel
+ Left = 10
+ Top = 28
+ Width = 30
+ Height = 20
+ Caption = #30721#34920
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label7: TLabel
+ Left = 106
+ Top = 29
+ Width = 30
+ Height = 20
+ Caption = #21333#20301
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label35: TLabel
+ Left = 32
+ Top = 71
+ Width = 15
+ Height = 20
+ Caption = #31204
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label34: TLabel
+ Left = 106
+ Top = 71
+ Width = 30
+ Height = 20
+ Caption = #31216#37325
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ Visible = False
+ end
+ object Label26: TLabel
+ Left = 262
+ Top = 68
+ Width = 30
+ Height = 20
+ Caption = #20986#32440
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label6: TLabel
+ Left = 350
+ Top = 65
+ Width = 30
+ Height = 20
+ Caption = #20221#25968
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label8: TLabel
+ Left = 260
+ Top = 28
+ Width = 60
+ Height = 20
+ Caption = #36192#36865#37325#37327
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label10: TLabel
+ Left = 420
+ Top = 26
+ Width = 60
+ Height = 20
+ Caption = #36192#36865#38271#24230
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object edtMaBiao: TcxTextEdit
+ Left = 59
+ Top = 24
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -19
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 0
+ Text = #8730
+ OnClick = edtMaBiaoClick
+ Width = 36
+ end
+ object edtMBDW: TcxTextEdit
+ Left = 154
+ Top = 24
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -19
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 1
+ Text = #8730
+ OnClick = edtMaBiaoClick
+ Width = 36
+ end
+ object edtChen: TcxTextEdit
+ Left = 59
+ Top = 65
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -19
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 2
+ Text = #8730
+ OnClick = edtMaBiaoClick
+ Width = 36
+ end
+ object outPage: TcxTextEdit
+ Left = 310
+ Top = 59
+ ParentFont = True
+ Properties.ReadOnly = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -19
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 3
+ Text = #8730
+ OnClick = edtMaBiaoClick
+ Width = 34
+ end
+ object labNumber: TComboBox
+ Left = 398
+ Top = 63
+ Width = 51
+ Height = 28
+ Style = csDropDownList
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -20
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ ItemIndex = 1
+ ParentFont = True
+ TabOrder = 4
+ Text = '2'
+ Items.Strings = (
+ '1'
+ '2'
+ '3'
+ '4')
+ end
+ object AddwetPresent: TcxTextEdit
+ Left = 330
+ Top = 22
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 5
+ Width = 74
+ end
+ object AddLenPresent: TcxTextEdit
+ Left = 486
+ Top = 24
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 6
+ Width = 74
+ end
+ object presentNumFlag: TcxComboBox
+ Left = 570
+ Top = 22
+ Properties.DropDownListStyle = lsEditFixedList
+ Properties.ImmediatePost = True
+ Properties.Items.Strings = (
+ #36192#36865#21518#25968#37327#19981#21464
+ #36192#36865#21518#25968#37327#20943#21435)
+ TabOrder = 7
+ Text = #36192#36865#21518#25968#37327#19981#21464
+ Width = 119
+ end
+ end
+ object cxGroupBox2: TcxGroupBox
+ Left = 2
+ Top = 124
+ Align = alTop
+ Caption = #21367#25968#25454#36755#20837#33539#22260#35774#32622
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -13
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 1
+ ExplicitWidth = 601
+ Height = 123
+ Width = 662
+ object Label9: TLabel
+ Left = 10
+ Top = 28
+ Width = 30
+ Height = 20
+ Caption = #38271#24230
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label15: TLabel
+ Left = 260
+ Top = 29
+ Width = 30
+ Height = 20
+ Caption = #37325#37327
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label1: TLabel
+ Left = 10
+ Top = 70
+ Width = 60
+ Height = 20
+ Caption = #24320#22987#21367#21495
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label2: TLabel
+ Left = 260
+ Top = 72
+ Width = 60
+ Height = 20
+ Caption = #25130#33267#21367#21495
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object MinLen: TcxTextEdit
+ Left = 54
+ Top = 26
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 0
+ Text = '0'
+ Width = 63
+ end
+ object MaxLen: TcxTextEdit
+ Left = 123
+ Top = 26
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 1
+ Text = '100'
+ Width = 63
+ end
+ object MinWeight: TcxTextEdit
+ Left = 306
+ Top = 26
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 2
+ Text = '0'
+ Width = 63
+ end
+ object MaxWeight: TcxTextEdit
+ Left = 375
+ Top = 26
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 3
+ Text = '100'
+ Width = 74
+ end
+ object BeginPieceNo: TcxTextEdit
+ Left = 92
+ Top = 63
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 4
+ Width = 94
+ end
+ object EndPieceNo: TcxTextEdit
+ Left = 375
+ Top = 63
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 5
+ Width = 74
+ end
+ end
+ object cxGroupBox3: TcxGroupBox
+ Left = 2
+ Top = 247
+ Align = alTop
+ Caption = #23567#25968#20301#25968#35774#32622
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -13
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 2
+ ExplicitWidth = 601
+ Height = 132
+ Width = 662
+ object Label19: TLabel
+ Left = 12
+ Top = 27
+ Width = 60
+ Height = 20
+ Caption = #31859#25968#20445#30041
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label20: TLabel
+ Left = 198
+ Top = 29
+ Width = 15
+ Height = 19
+ Caption = #20301
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object Label21: TLabel
+ Left = 250
+ Top = 26
+ Width = 60
+ Height = 20
+ Caption = #30721#25968#20445#30041
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label3: TLabel
+ Left = 198
+ Top = 71
+ Width = 15
+ Height = 19
+ Caption = #20301
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object Label30: TLabel
+ Left = 428
+ Top = 27
+ Width = 15
+ Height = 19
+ Caption = #20301
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object Label33: TLabel
+ Left = 12
+ Top = 69
+ Width = 60
+ Height = 20
+ Caption = #37325#37327#20445#30041
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object MPlace: TcxTextEdit
+ Left = 95
+ Top = 23
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 0
+ Text = '1'
+ Width = 82
+ end
+ object YPlace: TcxTextEdit
+ Left = 340
+ Top = 24
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 1
+ Text = '1'
+ Width = 82
+ end
+ object KgPlace: TcxTextEdit
+ Left = 95
+ Top = 67
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 2
+ Text = '1'
+ Width = 82
+ end
+ end
+ object cxGroupBox4: TcxGroupBox
+ Left = 2
+ Top = 379
+ Align = alTop
+ Caption = #20854#23427#20449#24687#35774#32622
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -16
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 3
+ ExplicitWidth = 601
+ Height = 122
+ Width = 662
+ object Label31: TLabel
+ Left = 379
+ Top = 36
+ Width = 60
+ Height = 20
+ Caption = #21367#21495#35268#21017
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label41: TLabel
+ Left = 5
+ Top = 36
+ Width = 30
+ Height = 20
+ Caption = #25171#21253
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label5: TLabel
+ Left = 180
+ Top = 36
+ Width = 60
+ Height = 20
+ Caption = #21253#21495#35268#21017
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label11: TLabel
+ Left = 182
+ Top = 73
+ Width = 75
+ Height = 20
+ Caption = #21253#20986#32440#20221#25968
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object Label12: TLabel
+ Left = 383
+ Top = 73
+ Width = 75
+ Height = 20
+ Caption = #25552#20132#21253#35268#21017
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -15
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ end
+ object edtdabao: TcxTextEdit
+ Left = 43
+ Top = 30
+ ParentFont = True
+ Properties.ReadOnly = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 0
+ OnClick = edtMaBiaoClick
+ Width = 35
+ end
+ object packRolls: TcxTextEdit
+ Left = 82
+ Top = 30
+ ParentFont = True
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 1
+ TextHint = #36755#20837#21253#21367#25968
+ Width = 91
+ end
+ object rollnoMake: TcxComboBox
+ Left = 461
+ Top = 31
+ ParentFont = True
+ Properties.DropDownListStyle = lsFixedList
+ Properties.Items.Strings = (
+ #33258#21160
+ #25163#21160)
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 2
+ Text = #33258#21160
+ Width = 99
+ end
+ object packNoMake: TcxComboBox
+ Left = 264
+ Top = 31
+ ParentFont = True
+ Properties.DropDownListStyle = lsFixedList
+ Properties.Items.Strings = (
+ #33258#21160
+ #25163#21160)
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 3
+ Text = #33258#21160
+ Width = 99
+ end
+ object packPrintPreview: TCheckBox
+ Left = 8
+ Top = 75
+ Width = 97
+ Height = 17
+ Caption = #21253#26631#31614#39044#35272
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = #24494#36719#38597#40657
+ Font.Style = []
+ ParentFont = True
+ TabOrder = 4
+ end
+ object packlabNumber: TcxComboBox
+ Left = 263
+ Top = 66
+ ParentFont = True
+ Properties.DropDownListStyle = lsFixedList
+ Properties.ImmediatePost = True
+ Properties.Items.Strings = (
+ '0'
+ '1'
+ '2')
+ TabOrder = 5
+ Text = '0'
+ Width = 104
+ end
+ object packPrintAction: TcxComboBox
+ Left = 461
+ Top = 68
+ ParentFont = True
+ Properties.DropDownListStyle = lsFixedList
+ Properties.Items.Strings = (
+ #33258#21160
+ #25163#21160)
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -15
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 6
+ Text = #33258#21160
+ Width = 99
+ end
+ end
+ end
+ object weightRule: TcxComboBox
+ Left = 156
+ Top = 82
+ ParentFont = True
+ Properties.DropDownListStyle = lsFixedList
+ Properties.Items.Strings = (
+ #27611#37325
+ #20928#37325)
+ Style.Font.Charset = ANSI_CHARSET
+ Style.Font.Color = clWindowText
+ Style.Font.Height = -16
+ Style.Font.Name = #24494#36719#38597#40657
+ Style.Font.Style = [fsBold]
+ Style.IsFontAssigned = True
+ TabOrder = 1
+ Text = #27611#37325
+ Width = 76
+ end
+end
diff --git a/T03贸易布匹检验/U_frameParam.pas b/T03贸易布匹检验/U_frameParam.pas
new file mode 100644
index 0000000..9a762a6
--- /dev/null
+++ b/T03贸易布匹检验/U_frameParam.pas
@@ -0,0 +1,93 @@
+unit U_frameParam;
+
+interface
+
+uses
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
+ Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls,
+ cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit,
+ cxGroupBox, Vcl.StdCtrls, cxTextEdit, Vcl.ExtCtrls, cxMaskEdit,
+ cxDropDownEdit;
+
+type
+ TFrameParam = class(TFrame)
+ pnlSet: TPanel;
+ cxGroupBox1: TcxGroupBox;
+ Label16: TLabel;
+ edtMaBiao: TcxTextEdit;
+ Label7: TLabel;
+ edtMBDW: TcxTextEdit;
+ Label35: TLabel;
+ Label34: TLabel;
+ edtChen: TcxTextEdit;
+ Label26: TLabel;
+ outPage: TcxTextEdit;
+ Label6: TLabel;
+ labNumber: TComboBox;
+ cxGroupBox2: TcxGroupBox;
+ Label9: TLabel;
+ MinLen: TcxTextEdit;
+ MaxLen: TcxTextEdit;
+ Label15: TLabel;
+ MinWeight: TcxTextEdit;
+ MaxWeight: TcxTextEdit;
+ cxGroupBox3: TcxGroupBox;
+ Label19: TLabel;
+ MPlace: TcxTextEdit;
+ Label20: TLabel;
+ Label21: TLabel;
+ YPlace: TcxTextEdit;
+ Label3: TLabel;
+ Label30: TLabel;
+ KgPlace: TcxTextEdit;
+ Label33: TLabel;
+ cxGroupBox4: TcxGroupBox;
+ Label31: TLabel;
+ Label41: TLabel;
+ edtdabao: TcxTextEdit;
+ packRolls: TcxTextEdit;
+ rollnoMake: TcxComboBox;
+ Label1: TLabel;
+ BeginPieceNo: TcxTextEdit;
+ EndPieceNo: TcxTextEdit;
+ Label2: TLabel;
+ weightRule: TcxComboBox;
+ Label4: TLabel;
+ Label5: TLabel;
+ packNoMake: TcxComboBox;
+ Label8: TLabel;
+ AddwetPresent: TcxTextEdit;
+ Label10: TLabel;
+ AddLenPresent: TcxTextEdit;
+ packPrintPreview: TCheckBox;
+ Label11: TLabel;
+ packlabNumber: TcxComboBox;
+ Label12: TLabel;
+ packPrintAction: TcxComboBox;
+ presentNumFlag: TcxComboBox;
+ procedure edtMaBiaoClick(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+implementation
+
+{$R *.dfm}
+
+procedure TFrameParam.edtMaBiaoClick(Sender: TObject);
+begin
+ if Trim(TcxTextEdit(Sender).Text) = '' then
+ begin
+ TcxTextEdit(Sender).Text := '';
+ packlabNumber.ItemIndex:=1;
+ end
+ else
+ begin
+ TcxTextEdit(Sender).Text := '';
+ packlabNumber.ItemIndex:=0;
+ end;
+end;
+
+end.
diff --git a/T03贸易布匹检验/U_iniParam.pas b/T03贸易布匹检验/U_iniParam.pas
new file mode 100644
index 0000000..b3c997d
--- /dev/null
+++ b/T03贸易布匹检验/U_iniParam.pas
@@ -0,0 +1,145 @@
+unit U_iniParam;
+
+interface
+
+uses
+ IniFiles, SysUtils;
+
+var
+ Filename: string; //ļ
+ iParam2: integer;
+ bParam1: Boolean;
+ bParam2: Boolean;
+ SCXFlag: string; // ݴ˱־ȡǰ ܰĸ 1,2
+ SCXCount: string; //̨
+ PortNoStr: string; //˿ں
+ DllName: string; //˿Dllļ
+ DZCDYDllName: string; //ӳӵDllļ
+ IsDZCDYDll: string; //õӳӵDllļ
+ MBDYDllName: string; // Dllļ
+ IsMBDYDll: string; // Dllļ
+ IsMBDYDllUnit: string; // Dllļλ
+ LabQty: string; // ǩ
+ FMinLen, FMaxLen, FMinWeight, FMaxWeight: string;
+ FMPlace, FYPlace, FKgPlace: string;
+ gPresentNumFlag:integer; //0䣻1ȥ
+ gMachOperators:string;//̨Ա
+ fCanInputFs:String;
+
+ gzdykey1,gZdyKey2,gZdyKey3:string ;
+ gBcSpeedSize:Integer;
+ gRowSpeedNumber:Integer;
+ gScanBarcodeMaxLen:integer; //ɨλ
+
+function IsINIFile(): Boolean; //жInIļǷ
+
+procedure ReadINIFile();
+
+procedure WriteINIFile();
+
+implementation
+///////////////////////////////////////////////////////////////////
+ //ȡiniļò
+ //
+////////////////////////////////////////////////////////////////////
+
+procedure ReadINIFile();
+var
+ programIni: Tinifile; //ļ
+begin
+ FileName := ExtractFilePath(Paramstr(0)) + 'TradeInspFile.INI';
+ programIni := Tinifile.create(FileName);
+ SCXFlag := programIni.ReadString('', '̨־', '1');
+ SCXCount := programIni.ReadString('', '̨', '1');
+
+ DZCDYDllName := programIni.ReadString('', 'ӳӵDllļ', '');
+ IsDZCDYDll := programIni.ReadString('', 'õӳDllļ', '1');
+
+ MBDYDllName := programIni.ReadString('', 'Dllļ', '');
+ IsMBDYDll := programIni.ReadString('', 'Dllļ', '1');
+ IsMBDYDllUnit := programIni.ReadString('', 'λ', '1');
+
+ LabQty := programIni.ReadString('', 'ǩ', '2');
+
+ FMinLen := programIni.ReadString('', '', '0');
+ FMaxLen := programIni.ReadString('', '', '100');
+ FMinWeight := programIni.ReadString('', '', '0');
+ FMaxWeight := programIni.ReadString('', '', '50');
+
+ FMPlace := programIni.ReadString('', 'Сλ', '1');
+ FYPlace := programIni.ReadString('', 'Сλ', '0');
+ FKgPlace := programIni.ReadString('', 'Сλ', '1');
+
+ gZdyKey1 := programIni.ReadString('', 'Զĸ1', '');
+ gZdyKey2 := programIni.ReadString('', 'Զĸ2', '');
+ //gZdyKey3 := programIni.ReadString('', 'Զĸ3', '');
+ gBcSpeedSize:= programIni.ReadInteger('', 'ðťС', 60);
+ gRowSpeedNumber := programIni.ReadInteger('', 'ÿвðť', 5);
+
+ gPresentNumFlag:=programIni.ReadInteger('', '', 0);
+
+ gScanBarcodeMaxLen:=programIni.ReadInteger('', 'ɨλ', 0);
+
+ fCanInputFs:= programIni.ReadString('', '븺', '');
+ gMachOperators:=programIni.ReadString('', '̨Ա', '');
+
+ programIni.Free;
+end;
+
+//////////////////////////////////////////////////////////////////
+ //дϢINIļ
+ //
+//////////////////////////////////////////////////////////////////
+procedure WriteINIFile();
+var
+ programIni: Tinifile; //ļ
+begin
+ if StrToIntDef(FMaxLen,0)=0 then FMaxLen:='100';
+ if StrToIntDef(FMaxWeight,0)=0 then FMaxWeight:='50';
+
+ FileName := ExtractFilePath(Paramstr(0)) + 'TradeInspFile.INI';
+ programIni := Tinifile.create(FileName);
+ programIni.WriteString('', '̨־', SCXFlag);
+ programIni.WriteString('', '̨', SCXCount);
+ programIni.WriteString('', '˿ں', PortNoStr);
+
+ programIni.WriteString('', 'ӳӵDllļ', DZCDYDllName);
+ programIni.WriteString('', 'õӳDllļ', IsDZCDYDll);
+
+ programIni.WriteString('', 'Dllļ', MBDYDllName);
+ programIni.WriteString('', 'Dllļ', IsMBDYDll);
+ programIni.WriteString('', 'λ', IsMBDYDllUnit);
+
+ programIni.WriteString('', 'ǩ', LabQty);
+
+ programIni.WriteString('', '', FMinLen);
+ programIni.WriteString('', '', FMaxLen);
+ programIni.WriteString('', '', FMinWeight);
+ programIni.WriteString('', '', FMaxWeight);
+
+ programIni.WriteString('', 'Сλ', FMPlace);
+ programIni.WriteString('', 'Сλ', FYPlace);
+ programIni.WriteString('', 'Сλ', FKgPlace);
+
+ programIni.ReadString('', 'Զĸ1',gZdyKey1 );
+ programIni.ReadString('', 'Զĸ2', gZdyKey2);
+
+ programIni.WriteInteger('', '', gPresentNumFlag);
+
+ programIni.Free;
+end;
+//////////////////////////////////////////////////////////////////
+ //жInIļǷ
+//////////////////////////////////////////////////////////////////
+
+function IsINIFile(): Boolean;
+begin
+ FileName := ExtractFilePath(Paramstr(0)) + 'TradeInspFile.INI';
+ if FileExists(FileName) then
+ Result := true
+ else
+ Result := false;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_testdll.dfm b/T03贸易布匹检验/U_testdll.dfm
new file mode 100644
index 0000000..46765a7
--- /dev/null
+++ b/T03贸易布匹检验/U_testdll.dfm
@@ -0,0 +1,220 @@
+object Form1: TForm1
+ Left = 203
+ Top = 121
+ Caption = 'Form1'
+ ClientHeight = 426
+ ClientWidth = 716
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ FormStyle = fsMDIForm
+ Menu = MainMenu1
+ OldCreateOrder = False
+ WindowState = wsMaximized
+ OnClose = FormClose
+ OnResize = FormResize
+ PixelsPerInch = 96
+ TextHeight = 13
+ object ToolBar1: TToolBar
+ Left = 0
+ Top = 0
+ Width = 716
+ Height = 25
+ ButtonWidth = 57
+ Caption = 'ToolBar1'
+ Images = ImageList1
+ TabOrder = 0
+ object Edit1: TEdit
+ Left = 0
+ Top = 0
+ Width = 81
+ Height = 22
+ TabOrder = 0
+ Text = '1'
+ end
+ object ToolButton1: TToolButton
+ Left = 81
+ Top = 0
+ Caption = #20851#38381
+ ImageIndex = 0
+ OnClick = ToolButton1Click
+ end
+ object Label1: TLabel
+ Left = 138
+ Top = 0
+ Width = 79
+ Height = 22
+ Caption = ' DllName'#65306
+ end
+ object DllName: TEdit
+ Left = 217
+ Top = 0
+ Width = 135
+ Height = 22
+ TabOrder = 1
+ end
+ end
+ object MainMenu1: TMainMenu
+ Left = 232
+ Top = 40
+ object test1: TMenuItem
+ Caption = 'test'
+ OnClick = test1Click
+ end
+ end
+ object ImageList1: TImageList
+ Left = 320
+ Top = 56
+ Bitmap = {
+ 494C010101000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 0000000000003600000028000000400000001000000001002000000000000010
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000EFEFEF000000
+ 0000EFEFEF00EFEFEF000000000000000000EFEFEF0000000000000000000000
+ 0000EFEFEF00EFEFEF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000EFEFEF0000000000EFEFEF00EFEFEF0000000000EFEFEF00000000008080
+ 00008080000000000000C0C0C000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000EFEFEF00EFEFEF000000
+ 0000EFEFEF00EFEFEF000000000000000000C0C0C00000000000000000008080
+ 00008080000080800000EFEFEF00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000EFEFEF0000000000000000000000000000000000000000008080
+ 0000808000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000EFEFEF0000000000808080008080800080808000000000008080
+ 0000808000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008080000000000000808080008080800080808000000000008080
+ 0000000000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000EFEFEF00EFEF
+ EF0000000000FFFF000080800000000000008080800080808000000000000000
+ 0000000000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FFFF0000FFFF0000808000000000000080808000000000008080
+ 0000000000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000808000008080
+ 000080800000FFFF0000FFFF0000FFFF00000000000080808000000000008080
+ 0000808000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFFF0000FFFF
+ 0000FFFF0000FFFF000000000000FFFF00000000000080808000000000008080
+ 0000808000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FFFF0000FFFF0000FFFF00000000000080808000000000008080
+ 0000808000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000808000000000000080808000808080008080800080808000FFFF
+ 0000808000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000808080008080800080808000808080000000
+ 0000808000008080000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000424D3E000000000000003E000000
+ 2800000040000000100000000100010000000000800000000000000000000000
+ 000000000000000000000000FFFFFF00FFFF000000000000D343000000000000
+ F4810000000000009340000000000000F801000000000000F001000000000000
+ F001000000000000C001000000000000C001000000000000C001000000000000
+ C201000000000000C001000000000000F001000000000000F001000000000000
+ FC03000000000000FFFF00000000000000000000000000000000000000000000
+ 000000000000}
+ end
+ object ADOConnection1: TADOConnection
+ ConnectionString =
+ 'Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ' +
+ 'ID=sa;Initial Catalog=rzdata;Data Source=6GMFFMYKYMJDZW7'
+ LoginPrompt = False
+ Provider = 'SQLOLEDB.1'
+ Left = 408
+ Top = 64
+ end
+end
diff --git a/T03贸易布匹检验/U_testdll.pas b/T03贸易布匹检验/U_testdll.pas
new file mode 100644
index 0000000..1d2db03
--- /dev/null
+++ b/T03贸易布匹检验/U_testdll.pas
@@ -0,0 +1,94 @@
+unit U_testdll;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, ExtCtrls, StdCtrls, Menus, ToolWin, ComCtrls, ImgList, DB, ADODB,
+ System.ImageList;
+
+type
+ TForm1 = class(TForm)
+ MainMenu1: TMainMenu;
+ test1: TMenuItem;
+ ToolBar1: TToolBar;
+ Edit1: TEdit;
+ ToolButton1: TToolButton;
+ ImageList1: TImageList;
+ ADOConnection1: TADOConnection;
+ DllName: TEdit;
+ Label1: TLabel;
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure test1Click(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure FormResize(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ Form1: TForm1;
+ newh: hwnd;
+
+implementation
+
+{$R *.dfm}
+
+procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ sendmessage(newh, 1034, 4, 0);
+ Action := cafree;
+end;
+
+procedure TForm1.test1Click(Sender: TObject);
+type
+ TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; stdcall;
+var
+ Tf: TMyFunc;
+ Tp: TFarProc;
+ Th: Thandle;
+begin
+ //̬
+ //newh:=getForm(Application,1,ADOConnection1,PChar('sa'),PChar('dsa'));
+
+ //̬
+ // showMessage(intTostr(application.Handle));
+ Th := LoadLibrary('djdMachineInsp.dll');
+ if Th > 0 then
+ begin
+ try
+ Tp := GetProcAddress(Th, 'GetDllForm');
+ if Tp <> nil then
+ begin
+ Tf := TMyFunc(Tp);
+ newh := Tf(Application, 0, strToint(edit1.text), 0, 0, PChar('djdAdmin'), PChar('djdAdmin'), PChar('datebase'), PChar('title'), PChar(''), PChar(''), '', '', '', '', '', '', '', '', '');
+ end
+ else
+ begin
+ ShowMessage('ӡִд');
+ end;
+ finally
+ // FreeLibrary();
+ end;
+ end
+ else
+ begin
+ ShowMessage('Ҳ' + Trim(DllName.Text));
+ end;
+
+end;
+
+procedure TForm1.ToolButton1Click(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TForm1.FormResize(Sender: TObject);
+begin
+ sendmessage(newh, 1034, 1, 0);
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/U_upPassword.dfm b/T03贸易布匹检验/U_upPassword.dfm
new file mode 100644
index 0000000..b243bf4
--- /dev/null
+++ b/T03贸易布匹检验/U_upPassword.dfm
@@ -0,0 +1,336 @@
+object frmupPassword: TfrmupPassword
+ Left = 300
+ Top = 177
+ BorderIcons = [biSystemMenu]
+ Caption = #23494#30721#20462#25913
+ ClientHeight = 505
+ ClientWidth = 601
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ OldCreateOrder = False
+ Position = poScreenCenter
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 35
+ object Label1: TLabel
+ Left = 48
+ Top = 36
+ Width = 180
+ Height = 35
+ Caption = #25805#20316#21592#32534#21495
+ end
+ object Label2: TLabel
+ Left = 48
+ Top = 99
+ Width = 180
+ Height = 35
+ Caption = #36755#20837#21407#23494#30721
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlue
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object Label3: TLabel
+ Left = 48
+ Top = 154
+ Width = 180
+ Height = 35
+ Caption = #36755#20837#26032#23494#30721
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlue
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object Label4: TLabel
+ Left = 48
+ Top = 222
+ Width = 180
+ Height = 35
+ Caption = #37325#36755#26032#23494#30721
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlue
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object userID: TEdit
+ Left = 240
+ Top = 32
+ Width = 238
+ Height = 43
+ CharCase = ecUpperCase
+ Enabled = False
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ TabOrder = 0
+ OnKeyPress = userIDKeyPress
+ end
+ object oldPassword: TEdit
+ Left = 240
+ Top = 95
+ Width = 239
+ Height = 43
+ CharCase = ecUpperCase
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ PasswordChar = '*'
+ TabOrder = 1
+ OnClick = oldPasswordClick
+ OnKeyPress = userIDKeyPress
+ end
+ object newPassword: TEdit
+ Left = 240
+ Top = 150
+ Width = 240
+ Height = 43
+ CharCase = ecUpperCase
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ PasswordChar = '*'
+ TabOrder = 2
+ OnClick = newPasswordClick
+ OnKeyPress = userIDKeyPress
+ end
+ object DnewPassword: TEdit
+ Left = 240
+ Top = 218
+ Width = 241
+ Height = 43
+ CharCase = ecUpperCase
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clRed
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ PasswordChar = '*'
+ TabOrder = 3
+ OnClick = DnewPasswordClick
+ OnKeyPress = userIDKeyPress
+ end
+ object cxOK: TcxButton
+ Left = 127
+ Top = 424
+ Width = 89
+ Height = 49
+ Caption = #25552#20132
+ LookAndFeel.Kind = lfOffice11
+ LookAndFeel.NativeStyle = False
+ TabOrder = 4
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -35
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = cxOKClick
+ end
+ object cxClose: TcxButton
+ Left = 409
+ Top = 424
+ Width = 75
+ Height = 49
+ Caption = #20851#38381
+ LookAndFeel.Kind = lfOffice11
+ LookAndFeel.NativeStyle = False
+ TabOrder = 5
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -32
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ ParentFont = True
+ OnClick = cxCloseClick
+ end
+ object Panel3: TPanel
+ Left = 127
+ Top = 288
+ Width = 357
+ Height = 118
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ ParentColor = True
+ TabOrder = 6
+ object SpeedButton1: TSpeedButton
+ Left = 0
+ Top = 0
+ Width = 60
+ Height = 60
+ Caption = '0'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton2: TSpeedButton
+ Left = 59
+ Top = 0
+ Width = 60
+ Height = 60
+ Caption = '1'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton3: TSpeedButton
+ Left = 118
+ Top = 0
+ Width = 60
+ Height = 60
+ Caption = '2'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton4: TSpeedButton
+ Left = 177
+ Top = 0
+ Width = 60
+ Height = 60
+ Caption = '3'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton5: TSpeedButton
+ Left = 236
+ Top = 0
+ Width = 60
+ Height = 60
+ Caption = '4'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton6: TSpeedButton
+ Left = 295
+ Top = 0
+ Width = 60
+ Height = 60
+ Caption = '5'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton7: TSpeedButton
+ Left = 0
+ Top = 59
+ Width = 60
+ Height = 60
+ Caption = '6'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton8: TSpeedButton
+ Left = 59
+ Top = 59
+ Width = 60
+ Height = 60
+ Caption = '7'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton9: TSpeedButton
+ Left = 118
+ Top = 59
+ Width = 60
+ Height = 60
+ Caption = '8'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton10: TSpeedButton
+ Left = 177
+ Top = 59
+ Width = 60
+ Height = 60
+ Caption = '9'
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -37
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton1Click
+ end
+ object SpeedButton12: TSpeedButton
+ Left = 236
+ Top = 59
+ Width = 60
+ Height = 60
+ Caption = #8592
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -53
+ Font.Name = #40657#20307
+ Font.Style = []
+ ParentFont = True
+ OnClick = SpeedButton12Click
+ end
+ end
+ object ADO_Cmd: TADOQuery
+ Connection = FormMain.ADOConnection1
+ Parameters = <>
+ Left = 540
+ Top = 24
+ end
+end
diff --git a/T03贸易布匹检验/U_upPassword.pas b/T03贸易布匹检验/U_upPassword.pas
new file mode 100644
index 0000000..0e3210c
--- /dev/null
+++ b/T03贸易布匹检验/U_upPassword.pas
@@ -0,0 +1,205 @@
+unit U_upPassword;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, StdCtrls, Menus, cxLookAndFeelPainters, cxButtons, DB, ADODB,
+ Buttons, ExtCtrls, cxGraphics, cxLookAndFeels,
+ dxSkinsDefaultPainters;
+
+type
+ TfrmupPassword = class(TForm)
+ Label1: TLabel;
+ Label2: TLabel;
+ Label3: TLabel;
+ Label4: TLabel;
+ userID: TEdit;
+ oldPassword: TEdit;
+ newPassword: TEdit;
+ DnewPassword: TEdit;
+ cxOK: TcxButton;
+ cxClose: TcxButton;
+ ADO_Cmd: TADOQuery;
+ Panel3: TPanel;
+ SpeedButton1: TSpeedButton;
+ SpeedButton2: TSpeedButton;
+ SpeedButton3: TSpeedButton;
+ SpeedButton4: TSpeedButton;
+ SpeedButton5: TSpeedButton;
+ SpeedButton6: TSpeedButton;
+ SpeedButton7: TSpeedButton;
+ SpeedButton8: TSpeedButton;
+ SpeedButton9: TSpeedButton;
+ SpeedButton10: TSpeedButton;
+ SpeedButton12: TSpeedButton;
+ procedure cxCloseClick(Sender: TObject);
+ procedure cxOKClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure userIDKeyPress(Sender: TObject; var Key: Char);
+ procedure oldPasswordClick(Sender: TObject);
+ procedure newPasswordClick(Sender: TObject);
+ procedure DnewPasswordClick(Sender: TObject);
+ procedure SpeedButton1Click(Sender: TObject);
+ procedure SpeedButton12Click(Sender: TObject);
+ private
+ Fint:Integer;
+ { Private declarations }
+ public
+ fuserID:string;
+ fuserName:string;
+ fPassWord:string;
+ { Public declarations }
+ end;
+
+var
+ frmupPassword: TfrmupPassword;
+
+implementation
+uses spmain,ElAES,AES;
+{$R *.dfm}
+procedure TfrmupPassword.cxCloseClick(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TfrmupPassword.cxOKClick(Sender: TObject);
+begin
+ if trim(oldPassword.text)<>'' then
+ fPassWord:=trim(EncryptString(PAnsiChar( trim(oldPassword.text)),keys))
+ else
+ fPassWord:='';
+ WITH ADO_Cmd Do
+ BEGIN
+ close;
+ sql.Clear;
+ sql.Add(' SELECT * ');
+ sql.Add(' FROM SY_User A ');
+ Sql.Add(' where UserID='+quotedstr(trim(fuserID)));
+ Sql.Add(' and PassWord='+quotedstr(trim(fPassWord)));
+ Sql.Add(' and Valid=''Y'' ');
+ open;
+ END;
+ IF ADO_Cmd.IsEmpty THEN
+ BEGIN
+ Application.MessageBox('ԭ', 'ʾ', MB_ICONERROR);
+ oldPassword.Text := '';
+ exit;
+ END;
+ if trim(newPassword.Text)<> trim(dnewPassword.Text) then
+ begin
+ application.MessageBox('벻һ£','Ϣ',MB_ICONERROR);
+ newPassword.Text:='';
+ dnewPassword.Text:='';
+ exit;
+ end;
+
+ if trim(newPassword.text)<>'' then
+ fPassWord:=trim(EncryptString(PAnsiChar( trim(newPassword.text)),keys))
+ else
+ fPassWord:='';
+ try
+ WITH ADO_Cmd Do
+ BEGIN
+ close;
+ sql.Clear;
+ sql.Add(' SELECT * ');
+ sql.Add(' FROM SY_User A ');
+ Sql.Add(' where UserID='+quotedstr(trim(fuserID)));
+ Sql.Add(' and Valid=''Y'' ');
+ open;
+ END;
+ ADO_Cmd.Edit;
+ ADO_Cmd.FieldByName('password').Value:=trim(fPassWord);
+ ADO_Cmd.Post;
+ ModalResult:=1;
+ application.MessageBox('ɹ','ʾϢ');
+ except
+ application.MessageBox('ʧܣ','Ϣ',MB_ICONERROR);
+ exit;
+ end;
+
+
+
+end;
+
+procedure TfrmupPassword.FormShow(Sender: TObject);
+begin
+ userID.Text:=trim(fuserID);
+ oldPassword.SetFocus;
+ Fint:=1;
+end;
+
+procedure TfrmupPassword.userIDKeyPress(Sender: TObject; var Key: Char);
+begin
+ Key:=UpCase(Key);
+ if key=#13 then
+ begin
+ perform(WM_NEXTDLGCTL,0,0);
+ Key := #0;
+ end;
+end;
+
+procedure TfrmupPassword.oldPasswordClick(Sender: TObject);
+begin
+ Fint:=1;
+end;
+
+procedure TfrmupPassword.newPasswordClick(Sender: TObject);
+begin
+ Fint:=2;
+end;
+
+procedure TfrmupPassword.DnewPasswordClick(Sender: TObject);
+begin
+ Fint:=3;
+end;
+
+procedure TfrmupPassword.SpeedButton1Click(Sender: TObject);
+begin
+ if Fint=1 then
+ begin
+ oldPassword.Text:=Trim(oldPassword.Text)+Trim(TSpeedButton(Sender).Caption);
+ oldPassword.SelectAll;
+ end else
+ if Fint=2 then
+ begin
+ newPassword.Text:=Trim(newPassword.Text)+Trim(TSpeedButton(Sender).Caption);
+ newPassword.SelectAll;
+ end else
+ if Fint=3 then
+ begin
+ DnewPassword.Text:=Trim(DnewPassword.Text)+Trim(TSpeedButton(Sender).Caption);
+ DnewPassword.SelectAll;
+ end;
+end;
+
+procedure TfrmupPassword.SpeedButton12Click(Sender: TObject);
+begin
+ if Fint=1 then
+ begin
+ if Trim(oldPassword.Text)<>'' then
+ begin
+ oldPassword.Text:=Copy(Trim(oldPassword.Text),1,Length(Trim(oldPassword.Text))-1);
+ oldPassword.SelectAll;
+ end;
+ end else
+ if Fint=2 then
+ begin
+ if Trim(newPassword.Text)<>'' then
+ begin
+ newPassword.Text:=Copy(Trim(newPassword.Text),1,Length(Trim(newPassword.Text))-1);
+ newPassword.SelectAll;
+ end;
+ end else
+ if Fint=3 then
+ begin
+ if Trim(DnewPassword.Text)<>'' then
+ begin
+ DnewPassword.Text:=Copy(Trim(DnewPassword.Text),1,Length(Trim(DnewPassword.Text))-1);
+ DnewPassword.SelectAll;
+ end;
+ end;
+end;
+
+end.
diff --git a/T03贸易布匹检验/cia_c39c.ttf b/T03贸易布匹检验/cia_c39c.ttf
new file mode 100644
index 0000000..a000b66
Binary files /dev/null and b/T03贸易布匹检验/cia_c39c.ttf differ
diff --git a/T03贸易布匹检验/delphitwain/.svn/entries b/T03贸易布匹检验/delphitwain/.svn/entries
new file mode 100644
index 0000000..86d869f
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/entries
@@ -0,0 +1,334 @@
+10
+
+dir
+4312
+svn://192.168.71.68/ftsource/mgg/%E9%A9%AC%E5%9B%BD%E9%92%A2%E5%BC%80%E5%8F%91%E4%BB%A3%E7%A0%81/%E9%A1%B9%E7%9B%AE%E4%BB%A3%E7%A0%81/%E5%AF%8C%E5%BC%BA%E7%9A%AE%E5%A1%91/%E4%BA%BA%E4%BA%8B/KQEnter(%E8%80%83%E5%8B%A4EXE)/delphitwain
+svn://192.168.71.68/ftsource
+
+
+
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ef2f1445-a04c-0b43-b547-5002d5acc4ff
+
+DelphiTwain.inc
+file
+
+
+
+
+2008-03-14T03:32:04.000000Z
+d1502857ee30bd1e4ab02219525b8c55
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+323
+
+DelphiTwain.dcu
+file
+
+
+
+
+2011-03-25T08:07:15.453125Z
+799dfa8c2f2b7847a08c34a9ed3f3742
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+44713
+
+DelphiTwainUtils.dcu
+file
+
+
+
+
+2011-03-25T08:07:15.437500Z
+50268198655deef4b603df265060738e
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5243
+
+Twain.pas
+file
+
+
+
+
+2008-03-14T03:32:04.000000Z
+d40ddce30d6efc19a84ec92724e428d4
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+114247
+
+DelphiTwain.pas
+file
+
+
+
+
+2008-03-14T03:32:04.000000Z
+b92440babf311bbcf6291a42a8700554
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+95195
+
+delphifans.com.nfo
+file
+
+
+
+
+2008-03-14T03:32:04.000000Z
+14eb5b6ac36f4a2b14010ebafd639be6
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+467
+
+DelphiTwainUtils.pas
+file
+
+
+
+
+2008-03-14T03:32:04.000000Z
+1e58cf6138573c357e07556c32317c78
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+11811
+
+Twain.dcu
+file
+
+
+
+
+2011-03-25T08:07:15.312500Z
+63cb43845f304f983c883fa999e0e7ed
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+37936
+
+DelphiTwain.chm
+file
+
+
+
+
+2008-03-14T03:32:04.000000Z
+6228d38e998bca8c0e0d9f64f944ecfa
+2011-09-05T04:33:21.203125Z
+4312
+mgg
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+258831
+
diff --git a/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwain.chm.svn-base b/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwain.chm.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwain.chm.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwain.dcu.svn-base b/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwain.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwain.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwainUtils.dcu.svn-base b/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwainUtils.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/prop-base/DelphiTwainUtils.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/delphitwain/.svn/prop-base/Twain.dcu.svn-base b/T03贸易布匹检验/delphitwain/.svn/prop-base/Twain.dcu.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/prop-base/Twain.dcu.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.chm.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.chm.svn-base
new file mode 100644
index 0000000..2c30fd0
Binary files /dev/null and b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.chm.svn-base differ
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.dcu.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.dcu.svn-base
new file mode 100644
index 0000000..27ae29d
Binary files /dev/null and b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.dcu.svn-base differ
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.inc.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.inc.svn-base
new file mode 100644
index 0000000..7e3f851
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.inc.svn-base
@@ -0,0 +1,8 @@
+{.$DEFINE DONTUSEVCL}
+
+{$IFDEF VER80}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER90}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER93}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER100}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER110}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFNDEF DELPHI_4_PRIOR}{$DEFINE DEFAULTPARAM}{$ENDIF}
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.pas.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.pas.svn-base
new file mode 100644
index 0000000..641a0ec
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwain.pas.svn-base
@@ -0,0 +1,2862 @@
+{DELPHI IMPLEMENTATION OF TWAIN INTERFACE}
+{december 2003, initially created by Gustavo Daud}
+
+{This is my newest contribution for Delphi comunity, a powerfull}
+{implementation of latest Twain features. As you know, twain is }
+{the most common library to acquire images from most acquisition}
+{devices such as Scanners and Web-Cameras.}
+
+{Twain library is a bit different from other libraries, because}
+{most of the hard work can be done by a a single method. Also it}
+{automatically changes in the application message loop, which is}
+{not a simple task, at least in delphi VCL.}
+
+{It is not 100% sure to to Twain not to be installed in Windows,}
+{as it ships with Windows and later and with most of the }
+{acquisition device drivers (automatically with their installation)}
+{This library dynamically calls the library, avoiding the application}
+{hand when it is not present.}
+
+{Also, as in most of my other components, I included a trigger}
+{to allow the component to work without the heavy delphi VCL}
+{for small final executables. To enable, edit DelphiTwain.inc}
+
+{20/01/2004 - Some updates and bug fixes by Nemeth Peter}
+
+{$INCLUDE DelphiTwain.inc}
+
+unit DelphiTwain;
+
+interface
+
+{Used units}
+uses
+ Twain, Windows {$IFNDEF DONTUSEVCL}, Classes, SysUtils, Graphics{$ENDIF},
+ DelphiTwainUtils;
+
+const
+ {Name of the Twain library for 32 bits enviroment}
+ TWAINLIBRARY = 'TWAIN_32.DLL';
+ VIRTUALWIN_CLASSNAME = 'DELPHITWAIN_VIRTUALWINDOW';
+
+const
+ {Error codes}
+ ERROR_BASE = 300;
+ ERROR_INT16: TW_INT16 = HIGH(TW_INT16);
+
+type
+ {From twain}
+ TW_STR255 = Twain.TW_STR255;
+
+ {Forward declaration}
+ TDelphiTwain = class;
+
+ {Component kinds}
+ {$IFDEF DONTUSEVCL} TTwainComponent = TObject;
+ {$ELSE} TTwainComponent = TComponent; {$ENDIF}
+
+ {File formats}
+ TTwainFormat = (tfTIFF, tfPict, tfBMP, tfXBM, tfJPEG, tfFPX,
+ tfTIFFMulti, tfPNG, tfSPIFF, tfEXIF, tfUnknown);
+ {Twain units}
+ TTwainUnit = (tuInches, tuCentimeters, tuPicas, tuPoints, tuTwips,
+ tuPixels, tuUnknown);
+ TTwainUnitSet = set of TTwainUnit;
+ {Twain pixel flavor}
+ TTwainPixelFlavor = (tpfChocolate, tpfVanilla, tpfUnknown);
+ TTwainPixelFlavorSet = set of TTwainPixelFlavor;
+ {Twain pixel type}
+ TTwainPixelType = (tbdBw, tbdGray, tbdRgb, tbdPalette, tbdCmy, tbdCmyk,
+ tbdYuv, tbdYuvk, tbdCieXYZ, tbdUnknown);
+ TTwainPixelTypeSet = set of TTwainPixelType;
+ {Twain bit depth}
+ TTwainBitDepth = array of TW_UINT16;
+ {Twain resolutions}
+ TTwainResolution = array of Extended;
+
+ {Events}
+ TOnTwainError = procedure(Sender: TObject; const Index: Integer; ErrorCode,
+ Additional: Integer) of object;
+ TOnTwainAcquire = procedure(Sender: TObject; const Index: Integer; Image:
+ {$IFNDEF DONTUSEVCL}TBitmap{$ELSE}HBitmap{$ENDIF};
+ var Cancel: Boolean) of object;
+ TOnAcquireProgress = procedure(Sender: TObject; const Index: Integer;
+ const Image: HBitmap; const Current, Total: Integer) of object;
+ TOnSourceNotify = procedure(Sender: TObject; const Index: Integer) of object;
+ TOnSourceFileTransfer = procedure(Sender: TObject; const Index: Integer;
+ Filename: TW_STR255; Format: TTwainFormat; var Cancel: Boolean) of object;
+
+ {Avaliable twain languages}
+ TTwainLanguage = ({-1}tlUserLocale, tlDanish, tlDutch, tlInternationalEnglish,
+ tlFrenchCanadian, tlFinnish, tlFrench, tlGerman, tlIcelandic, tlItalian,
+ tlNorwegian, tlPortuguese, tlSpanish, tlSwedish, tlUsEnglish,
+ tlAfrikaans, tlAlbania, tlArabic, tlArabicAlgeria, tlArabicBahrain, {18}
+ tlArabicEgypt, tlArabicIraq, tlArabJordan, tlArabicKuwait,
+ tlArabicLebanon, tlArabicLibya, tlArabicMorocco, tlArabicOman,
+ tlArabicQatar, tlArabicSaudiarabia, tlArabicSyria, tlArabicTunisia,
+ tlArabicUae, tlArabicYemen, tlBasque, tlByelorussian, tlBulgarian, {35}
+ tlCatalan, tlChinese, tlChineseHongkong, tlChinesePeoplesRepublic,
+ tlChineseSingapore, tlChineseSimplified, tlChineseTwain, {42}
+ tlChineseTraditional, tlCroatia, tlCzech, tlDutchBelgian, {46}
+ tlEnglishAustralian, tlEnglishCanadian, tlEnglishIreland,
+ tlEnglishNewZealand, tlEnglishSouthAfrica, tlEnglishUk, {52}
+ tlEstonian, tlFaeroese, tlFarsi, tlFrenchBelgian, tlFrenchLuxembourg, {57}
+ tlFrenchSwiss, tlGermanAustrian, tlGermanLuxembourg, tlGermanLiechtenstein,
+ tlGermanSwiss, tlGreek, tlHebrew, tlHungarian, tlIndonesian, {66}
+ tlItalianSwiss, tlJapanese, tlKorean, tlKoreanJohab, tlLatvian, {71}
+ tlLithuanian, tlNorewgianBokmal, tlNorwegianNynorsk, tlPolish, {75}
+ tlPortugueseBrazil, tlRomanian, tlRussian, tlSerbianLatin,
+ tlSlovak, tlSlovenian, tlSpanishMexican, tlSpanishModern, tlThai,
+ tlTurkish, tlUkranian, tlAssamese, tlBengali, tlBihari, tlBodo,
+ tlDogri, tlGujarati {92}, tlHarayanvi, tlHindi, tlKannada, tlKashmiri,
+ tlMalayalam, tlMarathi, tlMarwari, tlMeghalayan, tlMizo, tlNaga {102},
+ tlOrissi, tlPunjabi, tlPushtu, tlSerbianCyrillic, tlSikkimi,
+ tlSwidishFinland, tlTamil, tlTelugu, tlTripuri, tlUrdu, tlVietnamese);
+ {Twain supported groups}
+ TTwainGroups = set of (tgControl, tgImage, tgAudio);
+
+ {Transfer mode for twain}
+ TTwainTransferMode = (ttmFile, ttmNative, ttmMemory);
+
+ {rect for LAYOUT; npeter 2004.01.12.}
+ TTwainRect =
+ record
+ Left: double;
+ Top: double;
+ Right: double;
+ Bottom: double;
+ end;
+
+ {Object to handle TW_IDENTITY}
+ TTwainIdentity = class{$IFNDEF DONTUSEVCL}(TPersistent){$ENDIF}
+ private
+ {Structure which should be filled}
+ Structure: TW_IDENTITY;
+ {Owner}
+ fOwner: {$IFNDEF DONTUSEVCL}TComponent{$ELSE}TObject{$ENDIF};
+ {Returns/sets application language property}
+ function GetLanguage(): TTwainLanguage;
+ procedure SetLanguage(const Value: TTwainLanguage);
+ {Returns/sets text values}
+ function GetString(const Index: integer): String;
+ procedure SetString(const Index: Integer; const Value: String);
+ {Returns/sets avaliable groups}
+ function GetGroups(): TTwainGroups;
+ procedure SetGroups(const Value: TTwainGroups);
+ protected
+ {$IFNDEF DONTUSEVCL}function GetOwner(): TPersistent; override;{$ENDIF}
+ public
+ {Object being created}
+ {$IFNDEF DONTUSEVCL} constructor Create(AOwner: TComponent);
+ {$ELSE} constructor Create(AOwner: TObject); {$ENDIF}
+ {Copy properties from another TTwainIdentity}
+ {$IFDEF DONTUSEVCL} procedure Assign(Source: TObject); {$ELSE}
+ procedure Assign(Source: TPersistent); override; {$ENDIF}
+ published
+ {Application major version}
+ property MajorVersion: TW_UINT16 read Structure.Version.MajorNum
+ write Structure.Version.MajorNum;
+ {Application minor version}
+ property MinorVersion: TW_UINT16 read Structure.Version.MinorNum
+ write Structure.Version.MinorNum;
+ {Language}
+ property Language: TTwainLanguage read GetLanguage write SetLanguage;
+ {Country code}
+ property CountryCode: word read Structure.Version.Country write
+ Structure.Version.Country;
+ {Supported groups}
+ property Groups: TTwainGroups read GetGroups write SetGroups;
+ {Text values}
+ property VersionInfo: String index 0 read GetString write
+ SetString;
+ property Manufacturer: String index 1 read GetString write
+ SetString;
+ property ProductFamily: String index 2 read GetString write
+ SetString;
+ property ProductName: String index 3 read GetString write
+ SetString;
+ end;
+
+ {Return set for capability retrieving/setting}
+ TCapabilityRet = (crSuccess, crUnsupported, crBadOperation, crDependencyError,
+ crLowMemory, crInvalidState, crInvalidContainer);
+ {Kinds of capability retrieving}
+ TRetrieveCap = (rcGet, rcGetCurrent, rcGetDefault, rcReset);
+ {Capability list type}
+ TGetCapabilityList = array of string;
+ TSetCapabilityList = array of pointer;
+
+ {Source object}
+ TTwainSource = class(TTwainIdentity)
+ private
+ {Holds the item index}
+ fIndex: Integer;
+ {Transfer mode for the images}
+ fTransferMode: TTwainTransferMode;
+ {Stores if user interface should be shown}
+ fShowUI: Boolean;
+ {Stores if the source window is modal}
+ fModal: Boolean;
+ {Stores if the source is enabled}
+ fEnabled: Boolean;
+ {Stores if the source is loaded}
+ fLoaded: Boolean;
+ {Stores the owner}
+ fOwner: TDelphiTwain;
+ {Used with property SourceManagerLoaded to test if the source manager}
+ {is loaded or not.}
+ function GetSourceManagerLoaded(): Boolean;
+ {Returns a pointer to the application}
+ function GetAppInfo(): pTW_IDENTITY;
+ {Sets if the source is loaded}
+ procedure SetLoaded(const Value: Boolean);
+ {Sets if the source is enabled}
+ procedure SetEnabled(const Value: Boolean);
+ {Returns a pointer to the source pTW_IDENTITY}
+ function GetStructure: pTW_IDENTITY;
+ {Returns a resolution}
+ function GetResolution(Capability: TW_UINT16; var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+ protected
+ {Reads a native image}
+ procedure ReadNative(Handle: TW_UINT32; var Cancel: Boolean);
+ {Reads the file image}
+ procedure ReadFile(Name: TW_STR255; Format: TW_UINT16; var Cancel: Boolean);
+ {Call event for memory image}
+ procedure ReadMemory(Image: HBitmap; var Cancel: Boolean);
+ protected
+ {Prepare image memory transference}
+ function PrepareMemXfer(var BitmapHandle: HBitmap;
+ var PixelType: TW_INT16): TW_UINT16;
+ {Transfer image memory}
+ function TransferImageMemory(var ImageHandle: HBitmap;
+ PixelType: TW_INT16): TW_UINT16;
+ {Returns a pointer to the TW_IDENTITY for the application}
+ property AppInfo: pTW_IDENTITY read GetAppInfo;
+ {Method to transfer the images}
+ procedure TransferImages();
+ {Message received in the event loop}
+ function ProcessMessage(const Msg: TMsg): Boolean;
+ {Returns if the source manager is loaded}
+ property SourceManagerLoaded: Boolean read GetSourceManagerLoaded;
+ {Source configuration methods}
+ {************************}
+ protected
+ {Gets an item and returns it in a string}
+ procedure GetItem(var Return: String; ItemType: TW_UINT16; Data: Pointer);
+ {Converts from a result to a TCapabilityRec}
+ function ResultToCapabilityRec(const Value: TW_UINT16): TCapabilityRet;
+ {Sets a capability}
+ function SetCapabilityRec(const Capability, ConType: TW_UINT16;
+ Data: HGLOBAL): TCapabilityRet;
+ public
+ {Returns a capability strucutre}
+ function GetCapabilityRec(const Capability: TW_UINT16;
+ var Handle: HGLOBAL; Mode: TRetrieveCap;
+ var Container: TW_UINT16): TCapabilityRet;
+ {************************}
+ {Returns an one value capability}
+ function GetOneValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var Value: string;
+ Mode: TRetrieveCap{$IFDEF DEFAULTPARAM}=rcGet{$ENDIF};
+ MemHandle: HGLOBAL{$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {Returns an range capability}
+ function GetRangeValue(Capability: TW_UINT16; var ItemType: TW_UINT16;
+ var Min, Max, Step, Default, Current: String;
+ MemHandle: HGLOBAL{$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {Returns an enumeration capability}
+ function GetEnumerationValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var List: TGetCapabilityList; var Current,
+ Default: Integer; Mode: TRetrieveCap{$IFDEF DEFAULTPARAM}=rcGet{$ENDIF};
+ MemHandle: HGLOBAL{$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {Returns an array capability}
+ function GetArrayValue(Capability: TW_UINT16; var ItemType: TW_UINT16;
+ var List: TGetCapabilityList; MemHandle: HGLOBAL
+ {$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {************************}
+ {Sets an one value capability}
+ function SetOneValue(Capability: TW_UINT16; ItemType: TW_UINT16;
+ Value: Pointer): TCapabilityRet;
+ {Sets a range capability}
+ function SetRangeValue(Capability, ItemType: TW_UINT16; Min, Max, Step,
+ Current: TW_UINT32): TCapabilityRet;
+ {Sets an enumeration capability}
+ function SetEnumerationValue(Capability, ItemType: TW_UINT16;
+ CurrentIndex: TW_UINT32; List: TSetCapabilityList): TCapabilityRet;
+ {Sets an array capability}
+ function SetArrayValue(Capability, ItemType: TW_UINT16;
+ List: TSetCapabilityList): TCapabilityRet;
+ public
+ {Setup file transfer}
+ function SetupFileTransfer(Filename: String; Format: TTwainFormat): Boolean;
+ protected
+ {Used with property PendingXfers}
+ function GetPendingXfers(): TW_INT16;
+ public
+ {Set source transfer mode}
+ function ChangeTransferMode(NewMode: TTwainTransferMode): TCapabilityRet;
+ {Returns return status information}
+ function GetReturnStatus(): TW_UINT16;
+ {Capability setting}
+ {Set the number of images that the application wants to receive}
+ function SetCapXferCount(Value: SmallInt): TCapabilityRet;
+ {Returns the number of images that the source will return}
+ function GetCapXferCount(var Return: SmallInt;
+ Mode: TRetrieveCap{$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Retrieve the unit measure for all quantities}
+ function GetICapUnits(var Return: TTwainUnit;
+ var Supported: TTwainUnitSet; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set the unit measure}
+ function SetICapUnits(Value: TTwainUnit): TCapabilityRet;
+ {npeter 2004.01.12 begin}
+ function SetImagelayoutFrame(const fLeft,fTop,fRight,
+ fBottom: double): TCapabilityRet;
+ function SetIndicators(Value: boolean): TCapabilityRet;
+ {npeter 2004.01.12 end}
+ {Retrieve the pixel flavor values}
+ function GetIPixelFlavor(var Return: TTwainPixelFlavor;
+ var Supported: TTwainPixelFlavorSet; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set the pixel flavor values}
+ function SetIPixelFlavor(Value: TTwainPixelFlavor): TCapabilityRet;
+ {Returns bitdepth values}
+ function GetIBitDepth(var Return: Word;
+ var Supported: TTwainBitDepth; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set current bitdepth value}
+ function SetIBitDepth(Value: Word): TCapabilityRet;
+ {Returns pixel type values}
+ function GetIPixelType(var Return: TTwainPixelType;
+ var Supported: TTwainPixelTypeSet; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set the pixel type value}
+ function SetIPixelType(Value: TTwainPixelType): TCapabilityRet;
+ {Returns X and Y resolutions}
+ function GetIXResolution(var Return: Extended; var Values: TTwainResolution;
+ Mode: TRetrieveCap {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ function GetIYResolution(var Return: Extended; var Values: TTwainResolution;
+ Mode: TRetrieveCap {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Sets X and X resolutions}
+ function SetIXResolution(Value: Extended): TCapabilityRet;
+ function SetIYResolution(Value: Extended): TCapabilityRet;
+ {Returns physical width and height}
+ function GetIPhysicalWidth(var Return: Extended; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ function GetIPhysicalHeight(var Return: Extended; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Returns if user interface is controllable}
+ function GetUIControllable(var Return: Boolean): TCapabilityRet;
+ {Returns feeder is loaded or not}
+ function GetFeederLoaded(var Return: Boolean): TCapabilityRet;
+ {Returns/sets if feeder is enabled}
+ function GetFeederEnabled(var Return: Boolean): TCapabilityRet;
+ function SetFeederEnabled(Value: WordBool): TCapabilityRet;
+ {Returns/sets if auto feed is enabled}
+ function GetAutofeed(var Return: Boolean): TCapabilityRet;
+ function SetAutoFeed(Value: WordBool): TCapabilityRet;
+ {Returns number of pending transfer}
+ property PendingXfers: TW_INT16 read GetPendingXfers;
+ public
+ {Enables the source}
+ function EnableSource(ShowUI, Modal: Boolean): Boolean;
+ {Disables the source}
+ function DisableSource: Boolean;
+ {Loads the source}
+ function LoadSource(): Boolean;
+ {Unloads the source}
+ function UnloadSource(): Boolean;
+ {Returns a pointer to the source identity}
+ property SourceIdentity: pTW_IDENTITY read GetStructure;
+ {Returns/sets if the source is enabled}
+ property Enabled: Boolean read fEnabled write SetEnabled;
+ {Returns/sets if this source is loaded}
+ property Loaded: Boolean read fLoaded write SetLoaded;
+ {Object being created/destroyed}
+ constructor Create(AOwner: TDelphiTwain);
+ destructor Destroy; override;
+ {Returns owner}
+ property Owner: TDelphiTwain read fOwner;
+ {Source window is modal}
+ property Modal: Boolean read fModal write fModal;
+ {Sets if user interface should be shown}
+ property ShowUI: Boolean read fShowUI write fShowUI;
+ {Transfer mode for transfering images from the source to}
+ {the component and finally to the application}
+ property TransferMode: TTwainTransferMode read fTransferMode
+ write fTransferMode;
+ {Returns the item index}
+ property Index: Integer read fIndex;
+ {Convert properties from write/read to read only}
+ {(read description on TTwainIdentity source)}
+ property MajorVersion: TW_UINT16 read Structure.Version.MajorNum;
+ property MinorVersion: TW_UINT16 read Structure.Version.MinorNum;
+ property Language: TTwainLanguage read GetLanguage;
+ property CountryCode: word read Structure.Version.Country;
+ property Groups: TTwainGroups read GetGroups;
+ property VersionInfo: String index 0 read GetString;
+ property Manufacturer: String index 1 read GetString;
+ property ProductFamily: String index 2 read GetString;
+ property ProductName: String index 3 read GetString;
+ end;
+
+ {Component part}
+ TDelphiTwain = class(TTwainComponent)
+ private
+ {Should contain the number of Twain sources loaded}
+ fSourcesLoaded: Integer;
+ {Contains if the select source dialog is being displayed}
+ SelectDialogDisplayed: Boolean;
+ private
+ {Event pointer holders}
+ fOnSourceDisable: TOnSourceNotify;
+ fOnAcquireCancel: TOnSourceNotify;
+ fOnTwainAcquire: TOnTwainAcquire;
+ fOnSourceSetupFileXfer: TOnSourceNotify;
+ fOnSourceFileTransfer: TOnSourceFileTransfer;
+ fOnAcquireError: TOnTwainError;
+ fOnAcquireProgress: TOnAcquireProgress;
+ private
+ {Temp variable to allow SourceCount to be displayed in delphi}
+ {property editor}
+ fDummySourceCount: integer;
+ {Contains list of source devices}
+ DeviceList: TPointerList;
+ {Contains a pointer to the structure with the application}
+ {information}
+ AppInfo: pTW_IDENTITY;
+ {Holds the object to allow the user to set the application information}
+ fInfo: TTwainIdentity;
+ {Holds the handle for the virtual window which will receive}
+ {twain message notifications}
+ VirtualWindow: THandle;
+ {Will hold Twain library handle}
+ fHandle: HInst;
+ {Holds if the component has enumerated the devices}
+ fHasEnumerated: Boolean;
+ {Holds twain dll procedure handle}
+ fTwainProc: TDSMEntryProc;
+ {Holds the transfer mode to be used}
+ fTransferMode: TTwainTransferMode;
+ {Contains if the library is loaded}
+ fLibraryLoaded: Boolean;
+ {Contains if the source manager was loaded}
+ fSourceManagerLoaded: Boolean;
+ {Procedure to load and unload twain library and update property}
+ procedure SetLibraryLoaded(const Value: Boolean);
+ {Procedure to load or unloaded the twain source manager}
+ procedure SetSourceManagerLoaded(const Value: Boolean);
+ {Updates the application information object}
+ procedure SetInfo(const Value: TTwainIdentity);
+ {Returns the number of sources}
+ function GetSourceCount(): Integer;
+ {Returns a source from the list}
+ function GetSource(Index: Integer): TTwainSource;
+ {Finds a matching source index}
+ function FindSource(Value: pTW_IDENTITY): Integer;
+ protected
+ {Returns the default source}
+ function GetDefaultSource: Integer;
+ {Creates the virtual window}
+ procedure CreateVirtualWindow();
+ {Clears the list of sources}
+ procedure ClearDeviceList();
+ public
+ {Allows Twain to display a dialog to let the user choose any source}
+ {and returns the source index in the list}
+ function SelectSource(): Integer;
+ {Returns the number of loaded sources}
+ property SourcesLoaded: Integer read fSourcesLoaded;
+ {Enumerate the avaliable devices after Source Manager is loaded}
+ function EnumerateDevices(): Boolean;
+ {Object being created}
+ {$IFNDEF DONTUSEVCL}
+ constructor Create(AOwner: TComponent);override;
+ {$ELSE}
+ constructor Create;
+ {$ENDIF}
+ {Object being destroyed}
+ destructor Destroy(); override;
+ {Loads twain library and returns if it loaded sucessfully}
+ function LoadLibrary(): Boolean;
+ {Unloads twain and returns if it unloaded sucessfully}
+ function UnloadLibrary(): Boolean;
+ {Loads twain source manager}
+ function LoadSourceManager(): Boolean;
+ {Unloads the source manager}
+ function UnloadSourceManager(forced: boolean): Boolean;
+ {Returns the application TW_IDENTITY}
+ property AppIdentity: pTW_IDENTITY read AppInfo;
+ {Returns Twain library handle}
+ property Handle: HInst read fHandle;
+ {Returns a pointer to Twain only procedure}
+ property TwainProc: TDSMEntryProc read fTwainProc;
+ {Holds if the component has enumerated the devices}
+ property HasEnumerated: Boolean read fHasEnumerated;
+ {Returns a source}
+ property Source[Index: Integer]: TTwainSource read GetSource;
+ published
+ {Events}
+ {Source being disabled}
+ property OnSourceDisable: TOnSourceNotify read fOnSourceDisable
+ write fOnSourceDisable;
+ {Acquire cancelled}
+ property OnAcquireCancel: TOnSourceNotify read fOnAcquireCancel
+ write fOnAcquireCancel;
+ {Image acquired}
+ property OnTwainAcquire: TOnTwainAcquire read fOnTwainAcquire
+ write fOnTwainAcquire;
+ {User should set information to prepare for the file transfer}
+ property OnSourceSetupFileXfer: TOnSourceNotify read fOnSourceSetupFileXfer
+ write fOnSourceSetupFileXfer;
+ {File transfered}
+ property OnSourceFileTransfer: TOnSourceFileTransfer read
+ fOnSourceFileTransfer write fOnSourceFileTransfer;
+ {Acquire error}
+ property OnAcquireError: TOnTwainError read fOnAcquireError
+ write fOnAcquireError;
+ {Acquire progress, for memory transfers}
+ property OnAcquireProgress: TOnAcquireProgress read fOnAcquireProgress
+ write fOnAcquireProgress;
+ published
+ {Default transfer mode to be used with sources}
+ property TransferMode: TTwainTransferMode read fTransferMode
+ write fTransferMode;
+ {Returns the number of sources, after Library and Source Manager}
+ {has being loaded}
+ property SourceCount: Integer read GetSourceCount write fDummySourceCount;
+ {User should fill the application information}
+ property Info: TTwainIdentity read fInfo write SetInfo;
+ {Loads or unload Twain library}
+ property LibraryLoaded: Boolean read fLibraryLoaded write SetLibraryLoaded;
+ {Loads or unloads the source manager}
+ property SourceManagerLoaded: Boolean read fSourceManagerLoaded write
+ SetSourceManagerLoaded;
+ end;
+
+{Puts a string inside a TW_STR255}
+function StrToStr255(Value: String): TW_STR255;
+{This method returns if Twain is installed in the current machine}
+function IsTwainInstalled(): Boolean;
+{Called by Delphi to register the component}
+procedure Register();
+{Returns the size of a twain type}
+function TWTypeSize(TypeName: TW_UINT16): Integer;
+
+implementation
+
+{Units used bellow}
+uses
+ Messages;
+
+{Called by Delphi to register the component}
+procedure Register();
+begin
+ {$IFNDEF DONTUSEVCL}
+ RegisterComponents('NP', [TDelphiTwain]);
+ {$ENDIF}
+end;
+
+{Returns the size of a twain type}
+function TWTypeSize(TypeName: TW_UINT16): Integer;
+begin
+ {Test the type to return the size}
+ case TypeName of
+ TWTY_INT8 : Result := sizeof(TW_INT8);
+ TWTY_UINT8 : Result := sizeof(TW_UINT8);
+ TWTY_INT16 : Result := sizeof(TW_INT16);
+ TWTY_UINT16: Result := sizeof(TW_UINT16);
+ TWTY_INT32 : Result := sizeof(TW_INT32);
+ TWTY_UINT32: Result := sizeof(TW_UINT32);
+ TWTY_FIX32 : Result := sizeof(TW_FIX32);
+ TWTY_FRAME : Result := sizeof(TW_FRAME);
+ TWTY_STR32 : Result := sizeof(TW_STR32);
+ TWTY_STR64 : Result := sizeof(TW_STR64);
+ TWTY_STR128: Result := sizeof(TW_STR128);
+ TWTY_STR255: Result := sizeof(TW_STR255);
+ //npeter: the following types were not implemented
+ //especially the bool caused problems
+ TWTY_BOOL: Result := sizeof(TW_BOOL);
+ TWTY_UNI512: Result := sizeof(TW_UNI512);
+ TWTY_STR1024: Result := sizeof(TW_STR1024);
+ else Result := 0;
+ end {case}
+end;
+
+{Puts a string inside a TW_STR255}
+function StrToStr255(Value: String): TW_STR255;
+begin
+ {Clean result}
+ Fillchar(Result, sizeof(TW_STR255), #0);
+ {If value fits inside the TW_STR255, copy memory}
+ if Length(Value) <= sizeof(TW_STR255) then
+ CopyMemory(@Result[0], @Value[1], Length(Value))
+ else CopyMemory(@Result[0], @Value[1], sizeof(TW_STR255));
+end;
+
+{Returns full Twain directory (usually in Windows directory)}
+function GetTwainDirectory(): String;
+var
+ i: TDirectoryKind;
+ Dir: String;
+begin
+ {Searches in all the directories}
+ FOR i := LOW(TDirectoryKind) TO HIGH(TDirectoryKind) DO
+ begin
+
+ {Directory to search}
+ Dir := GetCustomDirectory(i);
+ {Tests if the file exists in this directory}
+ if FileExists(Dir + TWAINLIBRARY) then
+ begin
+ {In case it exists, returns this directory and exit}
+ {the for loop}
+ Result := Dir;
+ Break;
+ end {if FileExists}
+
+ end {FOR i}
+end;
+
+{This method returns if Twain is installed in the current machine}
+function IsTwainInstalled(): Boolean;
+begin
+ {If GetTwainDirectory function returns an empty string, it means}
+ {that Twain was not found}
+ Result := (GetTwainDirectory() <> '');
+end;
+
+{ TTwainIdentity object implementation }
+
+{Object being created}
+{$IFNDEF DONTUSEVCL} constructor TTwainIdentity.Create(AOwner: TComponent);
+{$ELSE} constructor TTwainIdentity.Create(AOwner: TObject); {$ENDIF}
+begin
+ {Allows ancestor to work}
+ inherited Create;
+
+ {Set initial properties}
+ FillChar(Structure, sizeof(Structure), #0);
+ Language := tlUserLocale;
+ CountryCode := 1;
+ MajorVersion := 1;
+ VersionInfo := 'Application name';
+ Structure.ProtocolMajor := TWON_PROTOCOLMAJOR;
+ Structure.ProtocolMinor := TWON_PROTOCOLMINOR;
+ Groups := [tgImage, tgControl];
+ Manufacturer := 'Application manufacturer';
+ ProductFamily := 'App product family';
+ ProductName := 'App product name';
+
+ fOwner := AOwner; {Copy owner pointer}
+end;
+
+{$IFNDEF DONTUSEVCL}
+function TTwainIdentity.GetOwner(): TPersistent;
+begin
+ Result := fOwner;
+end;
+{$ENDIF}
+
+{Sets a text value}
+procedure TTwainIdentity.SetString(const Index: Integer;
+ const Value: String);
+var
+ PropStr: PChar;
+begin
+ {Select and copy pointer}
+ case Index of
+ 0: PropStr := @Structure.Version.Info[0];
+ 1: PropStr := @Structure.Manufacturer[0];
+ 2: PropStr := @Structure.ProductFamily[0];
+ else PropStr := @Structure.ProductName[0];
+ end {case};
+
+ {Set value}
+ Fillchar(PropStr^, sizeof(TW_STR32), #0);
+ if Length(Value) > sizeof(TW_STR32) then
+ CopyMemory(PropStr, @Value[1], sizeof(TW_STR32))
+ else
+ CopyMemory(PropStr, @Value[1], Length(Value));
+end;
+
+{Returns a text value}
+function TTwainIdentity.GetString(const Index: Integer): String;
+begin
+ {Test for the required property}
+ case Index of
+ 0: Result := Structure.Version.Info;
+ 1: Result := Structure.Manufacturer;
+ 2: Result := Structure.ProductFamily;
+ else Result := Structure.ProductName;
+ end {case}
+end;
+
+{Returns application language property}
+function TTwainIdentity.GetLanguage(): TTwainLanguage;
+begin
+ Result := TTwainLanguage(Structure.Version.Language + 1);
+end;
+
+{Sets application language property}
+procedure TTwainIdentity.SetLanguage(const Value: TTwainLanguage);
+begin
+ Structure.Version.Language := Word(Value) - 1;
+end;
+
+{Copy properties from another TTwainIdentity}
+{$IFDEF DONTUSEVCL} procedure TTwainIdentity.Assign(Source: TObject);
+{$ELSE} procedure TTwainIdentity.Assign(Source: TPersistent); {$ENDIF}
+begin
+ {The source should also be a TTwainIdentity}
+ if Source is TTwainIdentity then
+ {Copy properties}
+ Structure := TTwainIdentity(Source).Structure
+ else
+ {$IFNDEF DONTUSEVCL}inherited; {$ENDIF}
+end;
+
+{Returns avaliable groups}
+function TTwainIdentity.GetGroups(): TTwainGroups;
+begin
+ {Convert from Structure.SupportedGroups to TTwainGroups}
+ Include(Result, tgControl);
+ if DG_IMAGE AND Structure.SupportedGroups <> 0 then
+ Include(Result, tgImage);
+ if DG_AUDIO AND Structure.SupportedGroups <> 0 then
+ Include(Result, tgAudio);
+end;
+
+{Sets avaliable groups}
+procedure TTwainIdentity.SetGroups(const Value: TTwainGroups);
+begin
+ {Convert from TTwainGroups to Structure.SupportedGroups}
+ Structure.SupportedGroups := DG_CONTROL;
+ if tgImage in Value then
+ Structure.SupportedGroups := Structure.SupportedGroups or DG_IMAGE;
+ if tgAudio in Value then
+ Structure.SupportedGroups := Structure.SupportedGroups or DG_AUDIO;
+end;
+
+{ TDelphiTwain component implementation }
+
+{Loads twain library and returns if it loaded sucessfully}
+function TDelphiTwain.LoadLibrary(): Boolean;
+var
+ TwainDirectory: String;
+begin
+ {The library must not be already loaded}
+ if (not LibraryLoaded) then
+ begin
+ Result := FALSE; {Initially returns FALSE}
+ {Searches for Twain directory}
+ TwainDirectory := GetTwainDirectory();
+ {Continue only if twain is installed in an known directory}
+ if TwainDirectory <> '' then
+ begin
+
+ fHandle := Windows.LoadLibrary(PChar(TwainDirectory + TWAINLIBRARY));
+ {If the library was sucessfully loaded}
+ if (fHandle <> INVALID_HANDLE_VALUE) then
+ begin
+
+ {Obtains method handle}
+ @fTwainProc := GetProcAddress(fHandle, MAKEINTRESOURCE(1));
+ {Returns TRUE/FALSE if the method was obtained}
+ Result := (@fTwainProc <> nil);
+
+ {If the method was not obtained, also free the library}
+ if not Result then
+ begin
+ {Free the handle and clears the variable}
+ Windows.FreeLibrary(fHandle);
+ fHandle := 0;
+ end {if not Result}
+ end
+ else
+ {If it was not loaded, clears handle value}
+ fHandle := 0;
+
+ end {if TwainDirectory <> ''};
+
+ end
+ else
+ {If it was already loaded, returns true, since that is}
+ {what was supposed to happen}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then fLibraryLoaded := TRUE;
+end;
+
+
+{Unloads twain and returns if it unloaded sucessfully}
+function TDelphiTwain.UnloadLibrary(): Boolean;
+begin
+ {The library must not be already unloaded}
+ if (LibraryLoaded) then
+ begin
+ {Unloads the source manager}
+ SourceManagerLoaded := FALSE;
+ {Just call windows method to unload}
+ Result := Windows.FreeLibrary(Handle);
+ {If it was sucessfull, also clears handle value}
+ if Result then fHandle := 0;
+ {Updates property}
+ fLibraryLoaded := not Result;
+ end
+ else
+ {If it was already unloaded, returns true, since that is}
+ {what was supposed to happen}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then fLibraryLoaded := FALSE;
+end;
+
+{Enumerate the avaliable devices after Source Manager is loaded}
+function TDelphiTwain.EnumerateDevices(): Boolean;
+var
+ NewSource: TTwainSource;
+ CallRes : TW_UINT16;
+begin
+ {Booth library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded) then
+ begin
+ {Clears the preview list of sources}
+ ClearDeviceList();
+
+ {Allocate new identity and tries to enumerate}
+ NewSource := TTwainSource.Create(Self);
+ CallRes := TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_GETFIRST, @NewSource.Structure);
+ if CallRes = TWRC_SUCCESS then
+ repeat
+
+ {Add this item to the list}
+ DeviceList.Add(NewSource);
+ {Allocate memory for the next}
+ NewSource := TTwainSource.Create(Self);
+ NewSource.TransferMode := Self.TransferMode;
+ NewSource.fIndex := DeviceList.Count;
+
+ {Try to get the next item}
+ until TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_GETNEXT, @NewSource.Structure) <> TWRC_SUCCESS;
+
+ {Set that the component has enumerated the devices}
+ {if everything went correctly}
+ Result := TRUE;
+ fHasEnumerated := Result;
+
+ {Dispose un-needed source object}
+ NewSource.Free;
+
+ end
+ else Result := FALSE; {If library and source manager aren't loaded}
+end;
+
+{Procedure to load and unload twain library and update property}
+procedure TDelphiTwain.SetLibraryLoaded(const Value: Boolean);
+begin
+ {The value must be changing to activate}
+ if (Value <> fLibraryLoaded) then
+ begin
+ {Depending on the parameter load/unload the library and updates}
+ {property whenever it loaded or unloaded sucessfully}
+ if Value then LoadLibrary()
+ else {if not Value then} UnloadLibrary();
+
+ end {if (Value <> fLibraryLoaded)}
+end;
+
+{Loads twain source manager}
+function TDelphiTwain.LoadSourceManager(): Boolean;
+begin
+ {The library must be loaded}
+ if LibraryLoaded and not SourceManagerLoaded then
+ {Loads source manager}
+ Result := (fTwainProc(AppInfo, nil, DG_CONTROL, DAT_PARENT,
+ MSG_OPENDSM, @VirtualWindow) = TWRC_SUCCESS)
+ else
+ {The library is not loaded, thus the source manager could}
+ {not be loaded}
+ Result := FALSE or SourceManagerLoaded;
+
+ {In case the method was sucessful, updates property}
+ if Result then fSourceManagerLoaded := TRUE;
+end;
+
+{UnLoads twain source manager}
+function TDelphiTwain.UnloadSourceManager(forced: boolean): Boolean;
+begin
+ {The library must be loaded}
+ if LibraryLoaded and SourceManagerLoaded then
+ begin
+ {Clears the list of sources}
+ ClearDeviceList();
+ {Unload source manager}
+ if not forced then
+ Result := (TwainProc(AppInfo, nil, DG_CONTROL, DAT_PARENT, MSG_CLOSEDSM, @VirtualWindow) = TWRC_SUCCESS)
+ else result:=true;
+ end
+ else
+ {The library is not loaded, meaning that the Source Manager isn't either}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then fSourceManagerLoaded := FALSE;
+end;
+
+{Procedure to load or unloaded the twain source manager}
+procedure TDelphiTwain.SetSourceManagerLoaded(const Value: Boolean);
+begin
+ {The library must be loaded to have access to the method}
+ if LibraryLoaded and (Value <> fSourceManagerLoaded) then
+ begin
+ {Load/unload the source manager}
+ if Value then LoadSourceManager()
+ else {if not Value then} UnloadSourceManager(false);
+ end {if LibraryLoaded}
+end;
+
+{Clears the list of sources}
+procedure TDelphiTwain.ClearDeviceList();
+var
+ i: Integer;
+begin
+ {Deallocate pTW_IDENTITY}
+ FOR i := 0 TO DeviceList.Count - 1 DO
+ TTwainSource(DeviceList.Item[i]).Free;
+ {Clears the list}
+ DeviceList.Clear;
+ {Set trigger to tell that it has not enumerated again yet}
+ fHasEnumerated := FALSE;
+
+end;
+
+{Finds a matching source index}
+function TDelphiTwain.FindSource(Value: pTW_IDENTITY): Integer;
+var
+ i : Integer;
+begin
+ Result := -1; {Default result}
+
+ {Search for this source in the list}
+ for i := 0 TO SourceCount - 1 DO
+ if CompareMem(@Source[i].Structure, pChar(Value), SizeOf(TW_IDENTITY)) then
+ begin
+ {Return index and exit}
+ Result := i;
+ break;
+ end; {if CompareMem, for i}
+end;
+
+{Allows Twain to display a dialog to let the user choose any source}
+{and returns the source index in the list}
+function TDelphiTwain.SelectSource: Integer;
+var
+ Identity: TW_IDENTITY;
+begin
+ Result := -1; {Default result}
+ {Booth library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded and not SelectDialogDisplayed) then
+ begin
+ {Don't allow this dialog to be displayed twice}
+ SelectDialogDisplayed := TRUE;
+
+ {Call twain to display the dialog}
+ if TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY, MSG_USERSELECT,
+ @Identity) = TWRC_SUCCESS then
+ Result := FindSource(@Identity);
+
+ {Ended using}
+ SelectDialogDisplayed := FALSE
+ end {(LibraryLoaded and SourceManagerLoaded)}
+end;
+
+{Returns the number of sources}
+function TDelphiTwain.GetSourceCount(): Integer;
+begin
+ {Library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded) then
+ begin
+ {Enumerate devices, if needed}
+ if not HasEnumerated then EnumerateDevices();
+ {Returns}
+ Result := DeviceList.Count;
+ end
+ {In case library and source manager aren't loaded, returns 0}
+ else Result := 0
+end;
+
+{Returns the default source}
+function TDelphiTwain.GetDefaultSource: Integer;
+var
+ Identity: TW_IDENTITY;
+begin
+ {Call twain to display the dialog}
+ if SourceManagerLoaded and (TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_GETDEFAULT, @Identity) = TWRC_SUCCESS) then
+ Result := FindSource(@Identity)
+ else Result := 0 {Returns}
+end;
+
+{Returns a source from the list}
+function TDelphiTwain.GetSource(Index: Integer): TTwainSource;
+begin
+ {Booth library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded) then
+ begin
+
+ {If index is in range, returns}
+ {(Call to SourceCount property enumerates the devices, if needed)}
+ if Index in [0..SourceCount - 1] then
+ Result := DeviceList.Item[Index]
+ else if (Index = -1) and (SourceCount > 0) then
+ Result := DeviceList.Item[GetDefaultSource]
+ {Unknown object, returns nil}
+ else Result := nil;
+
+ end
+ {In case either the library or the source manager aren't}
+ {loaded, it returns nil}
+ else Result := nil
+end;
+
+{Object being created}
+constructor TDelphiTwain.Create{$IFNDEF DONTUSEVCL}(AOwner: TComponent){$ENDIF};
+begin
+ {Let the ancestor class also handle the call}
+ inherited;
+
+ {Create source list}
+ DeviceList := TPointerList.Create;
+ {Clear variables}
+ fSourcesLoaded := 0;
+ fHandle := 0;
+ @fTwainProc := nil;
+ SelectDialogDisplayed := FALSE;
+ fSourceManagerLoaded := FALSE;
+ fHasEnumerated := FALSE;
+ fTransferMode := ttmMemory;
+ {Creates the virtual window which will intercept messages}
+ {from Twain}
+ CreateVirtualWindow();
+ {Creates the object to allow the user to set the application}
+ {information to inform twain source manager and sources}
+ fInfo := TTwainIdentity.Create(Self);
+ AppInfo := @fInfo.Structure;
+end;
+
+{Object being destroyed}
+destructor TDelphiTwain.Destroy;
+begin
+ {Full unload the library}
+ LibraryLoaded := FALSE;
+ {Free the virtual window handle}
+ DestroyWindow(VirtualWindow);
+ {Free the object}
+ fInfo.Free;
+ {Clears and free source list}
+ ClearDeviceList();
+ DeviceList.Free();
+ {Let ancestor class handle}
+ inherited Destroy;
+end;
+
+{Creates the virtual window}
+procedure TDelphiTwain.CreateVirtualWindow;
+begin
+ {Creates the window and passes a pointer to the class object}
+ VirtualWindow := CreateWindow(VIRTUALWIN_CLASSNAME, 'Delphi Twain virtual ' +
+ 'window', 0, 10, 10, 100, 100, 0, 0, hInstance, Self);
+end;
+
+{Updates the application information object}
+procedure TDelphiTwain.SetInfo(const Value: TTwainIdentity);
+begin
+ {Assign one object to another}
+ fInfo.Assign(Value);
+end;
+
+{ TTwainSource object implementation }
+
+{Used with property SourceManagerLoaded to test if the source manager}
+{is loaded or not.}
+function TTwainSource.GetSourceManagerLoaded: Boolean;
+begin
+ {Obtain information from owner TDelphiTwain}
+ Result := Owner.SourceManagerLoaded;
+end;
+
+{Sets if the source is loaded}
+procedure TTwainSource.SetLoaded(const Value: Boolean);
+begin
+ {Value should be changing}
+ if (Value <> fLoaded) then
+ begin
+ {Loads or unloads the source}
+ if Value then LoadSource()
+ else {if not Value then} UnloadSource();
+ end {if (Value <> fLoaded)}
+end;
+
+{Sets if the source is enabled}
+procedure TTwainSource.SetEnabled(const Value: Boolean);
+begin
+ {Source must be already enabled and value changing}
+ if (Loaded) and (Value <> fEnabled) then
+ begin
+ {Enables/disables}
+ if Value then EnableSource(ShowUI, Modal)
+ else {if not Value then} DisableSource();
+ end {if (Loaded) and (Value <> fEnabled)}
+end;
+
+{Enables the source}
+function TTwainSource.EnableSource(ShowUI, Modal: Boolean): Boolean;
+var
+ twUserInterface: TW_USERINTERFACE;
+begin
+ {Source must be loaded and the value changing}
+ if (Loaded) and (not Enabled) then
+ begin
+ {Builds UserInterface structure}
+ twUserInterface.ShowUI := ShowUI;
+ twUserInterface.ModalUI := Modal;
+ twUserInterface.hParent := owner.VirtualWindow;
+ //npeter may be it is better to send messages to VirtualWindow
+ //I am not sure, but it seems more stable with a HP TWAIN driver
+ //it was: := GetActiveWindow;
+ fEnabled := TRUE;
+ {Call method}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_USERINTERFACE, MSG_ENABLEDS, @twUserInterface) in
+ [TWRC_SUCCESS, TWRC_CHECKSTATUS]);
+ end
+ else {If it's either not loaded or already enabled}
+ {If it is not loaded}
+ Result := FALSE or Enabled;
+
+ {Updates property}
+ if (Result = TRUE) then fEnabled := TRUE;
+end;
+
+{Disables the source}
+function TTwainSource.DisableSource(): Boolean;
+var
+ twUserInterface: TW_USERINTERFACE;
+begin
+ {Source must be loaded and the value changing}
+ if (Loaded) and (Enabled) then
+ begin
+
+ {Call method}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_USERINTERFACE, MSG_DISABLEDS, @twUserInterface) = TWRC_SUCCESS);
+ {Call notification event if being used}
+ if (Result) and (Assigned(Owner.OnSourceDisable)) then
+ Owner.OnSourceDisable(Owner, Index);
+
+ end
+ else {If it's either not loaded or already disabled}
+ {If it is not loaded}
+ Result := TRUE;
+
+ {Updates property}
+ if (Result = TRUE) then fEnabled := FALSE;
+end;
+
+{Loads the source}
+function TTwainSource.LoadSource: Boolean;
+begin
+ {Only loads if it is not already loaded}
+ if Not Loaded then
+ begin
+ Result := (Owner.TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_OPENDS, @Structure) = TWRC_SUCCESS);
+ {Increase the loaded sources count variable}
+ if Result then inc(Owner.fSourcesLoaded);
+ end
+ else
+ {If it was already loaded, returns true}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then
+ fLoaded := TRUE;
+
+end;
+
+{Unloads the source}
+function TTwainSource.UnloadSource: Boolean;
+begin
+ {Only unloads if it is loaded}
+ if Loaded then
+ begin
+ {If the source was enabled, disable it}
+ DisableSource();
+ {Call method to load}
+ Result := (Owner.TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_CLOSEDS, @Structure) = TWRC_SUCCESS);
+ {Decrease the loaded sources count variable}
+ if Result then dec(Owner.fSourcesLoaded);
+ end
+ else
+ {If it was already unloaded, returns true}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ fLoaded := FALSE;
+end;
+
+{Object being destroyed}
+destructor TTwainSource.Destroy;
+begin
+ {If loaded, unloads source}
+ UnloadSource();
+ {Let ancestor class process}
+ inherited Destroy;
+end;
+
+{Returns a pointer to the application}
+function TTwainSource.GetAppInfo: pTW_IDENTITY;
+begin
+ Result := Owner.AppInfo;
+end;
+
+{Returns a pointer to the source identity}
+function TTwainSource.GetStructure: pTW_IDENTITY;
+begin
+ Result := @Structure;
+end;
+
+{Object being created}
+constructor TTwainSource.Create(AOwner: TDelphiTwain);
+begin
+ {Allows ancestor class to process}
+ inherited Create(AOwner);
+
+ {Initial values}
+ fTransferMode := ttmNative;
+ fLoaded := FALSE;
+ fShowUI := TRUE;
+ fEnabled := FALSE;
+ fModal := TRUE;
+ {Stores owner}
+ fOwner := AOwner;
+end;
+
+{Set source transfer mode}
+function TTwainSource.ChangeTransferMode(
+ NewMode: TTwainTransferMode): TCapabilityRet;
+const
+ TransferModeToTwain: Array[TTwainTransferMode] of TW_UINT16 =
+ (TWSX_FILE, TWSX_NATIVE, TWSX_MEMORY);
+var
+ Value: TW_UINT16;
+begin
+ {Set transfer mode method}
+ Value := TransferModeToTwain[NewMode];
+ Result := SetOneValue(ICAP_XFERMECH, TWTY_UINT16, @Value);
+ TransferMode := NewMode;
+end;
+
+{Message received in the event loop}
+function TTwainSource.ProcessMessage(const Msg: TMsg): Boolean;
+var
+ twEvent: TW_EVENT;
+begin
+ {Make twEvent structure}
+ twEvent.TWMessage := MSG_NULL;
+ twEvent.pEvent := TW_MEMREF(@Msg);
+ {Call Twain procedure to handle message}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_EVENT,
+ MSG_PROCESSEVENT, @twEvent) = TWRC_DSEVENT);
+
+ {If it is a message from the source, process}
+ if Result then
+ case twEvent.TWMessage of
+ {No message from the source}
+ MSG_NULL: exit;
+ {Requested to close the source}
+ MSG_CLOSEDSREQ:
+ begin
+ {Call notification event}
+ if (Assigned(Owner.OnAcquireCancel)) then
+ Owner.OnAcquireCancel(Owner, Index);
+ {Disable the source}
+ DisableSource();
+ end;
+ {Ready to transfer the images}
+ MSG_XFERREADY:
+ {Call method to transfer}
+ TransferImages();
+
+ MSG_CLOSEDSOK:
+ result:=true;
+
+ MSG_DEVICEEVENT:
+ result:=true;
+
+ end {case twEvent.TWMessage}
+end;
+
+{Returns return status information}
+function TTwainSource.GetReturnStatus: TW_UINT16;
+var
+ StatusInfo: TW_STATUS;
+begin
+ {The source must be loaded in order to get the status}
+ if Loaded then
+ begin
+ {Call method to get the information}
+ Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_STATUS, MSG_GET,
+ @StatusInfo);
+ Result := StatusInfo.ConditionCode;
+ end else Result := 0 {In case it was called while the source was not loaded}
+end;
+
+{Converts from a result to a TCapabilityRec}
+function TTwainSource.ResultToCapabilityRec(
+ const Value: TW_UINT16): TCapabilityRet;
+begin
+
+ {Test result code to return}
+ case Value of
+ {Successull, copy handle and return a success value}
+ TWRC_SUCCESS: Result := crSuccess;
+ {Error, get more on the error, and return result}
+ {case} else
+ case GetReturnStatus() of
+ TWCC_CAPUNSUPPORTED: Result := crUnsupported;
+ TWCC_CAPBADOPERATION: Result := crBadOperation;
+ TWCC_CAPSEQERROR: Result := crDependencyError;
+ TWCC_LOWMEMORY: Result := crLowMemory;
+ TWCC_SEQERROR: Result := crInvalidState;
+ else Result := crBadOperation;
+ end {case GetReturnStatus of}
+ end {case};
+
+end;
+
+{Sets a capability}
+function TTwainSource.SetCapabilityRec(const Capability,
+ ConType: TW_UINT16; Data: HGlobal): TCapabilityRet;
+var
+ CapabilityInfo: TW_CAPABILITY;
+begin
+ {Source must be loaded to set}
+ if Loaded then
+ begin
+
+ {Fill structure}
+ CapabilityInfo.Cap := Capability;
+ CapabilityInfo.ConType := ConType;
+ CapabilityInfo.hContainer := Data;
+
+ {Call method and store return}
+ Result := ResultToCapabilityRec(Owner.TwainProc(AppInfo, @Structure,
+ DG_CONTROL, DAT_CAPABILITY, MSG_SET, @CapabilityInfo));
+
+ end
+ else Result := crInvalidState {In case the source is not loaded}
+end;
+
+{Returns a capability strucutre}
+function TTwainSource.GetCapabilityRec( const Capability: TW_UINT16;
+ var Handle: HGLOBAL; Mode: TRetrieveCap;
+ var Container: TW_UINT16): TCapabilityRet;
+const
+ ModeToTwain: Array[TRetrieveCap] of TW_UINT16 = (MSG_GET, MSG_GETCURRENT,
+ MSG_GETDEFAULT, MSG_RESET);
+var
+ CapabilityInfo: TW_CAPABILITY;
+begin
+ {Source must be loaded}
+ if Loaded then
+ begin
+
+ {Fill structure}
+ CapabilityInfo.Cap := Capability;
+ CapabilityInfo.ConType := TWON_DONTCARE16;
+ CapabilityInfo.hContainer := 0;
+
+ {Call method and store return}
+ Result := ResultToCapabilityRec(Owner.TwainProc(AppInfo, @Structure,
+ DG_CONTROL, DAT_CAPABILITY, ModeToTwain[Mode], @CapabilityInfo));
+
+ if Result = crSuccess then
+ begin
+ Handle := CapabilityInfo.hContainer;
+ Container := CapabilityInfo.ConType;
+ end
+ end {if not Loaded}
+ else Result := crInvalidState {In case the source is not loaded}
+end;
+
+{Gets an item and returns it in a string}
+procedure TTwainSource.GetItem(var Return: String; ItemType: TW_UINT16;
+ Data: Pointer);
+begin
+ {Test the item type}
+ case ItemType of
+ TWTY_INT8 : Return := IntToStr(pTW_INT8(Data)^);
+ TWTY_UINT8 : Return := IntToStr(pTW_UINT8(Data)^);
+ TWTY_INT16,
+ 44 {TWTY_HANDLE} : Return := IntToStr(pTW_INT16(Data)^);
+ TWTY_UINT16,
+ TWTY_BOOL : Return := IntToStr(pTW_UINT16(Data)^);
+ TWTY_INT32 : Return := IntToStr(pTW_INT32(Data)^);
+ TWTY_UINT32,
+ 43 {TWTY_MEMREF} : Return := IntToStr(pTW_UINT32(Data)^);
+ {Floating integer type}
+ TWTY_FIX32:
+ with pTW_FIX32(Data)^ do
+ //npeter bugfix:
+ //it is better to use the actual decimal separator
+ //and not a wired in value!
+ //If not, you may get error on strtofloat
+ //original: Return := IntToStr(Whole) + ',' + IntToStr(Frac);
+ Return := IntToStr(Whole) + decimalseparator + IntToStr(Frac);
+ {String types, which are all ended by a null char (#0)}
+ TWTY_STR32,
+ TWTY_STR64,
+ TWTY_STR128,
+ TWTY_STR255 : Return := PChar(Data);
+
+ end {case ItemType}
+end;
+
+{Returns an array capability}
+function TTwainSource.GetArrayValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var List: TGetCapabilityList;
+ MemHandle: HGLOBAL): TCapabilityRet;
+var
+ ArrayV : pTW_ARRAY;
+ ItemSize : Integer;
+ Data : PChar;
+ CurItem : Integer;
+ Value : String;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, rcGet, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_ARRAY;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_ARRAY) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ ArrayV := GlobalLock(MemHandle);
+
+ {Fill return properties}
+ ItemType := ArrayV^.ItemType;
+
+ {Prepare to list items}
+ ItemSize := TWTypeSize(ItemType);
+ Data := @ArrayV^.ItemList[0];
+ SetLength(List, ArrayV^.NumItems);
+
+ {Copy items}
+ for CurItem := 0 TO ArrayV^.NumItems - 1 do
+ begin
+ {Obtain this item}
+ GetItem(Value, ItemType, Data);
+ List[CurItem] := Value;
+ {Move memory to the next}
+ inc(Data, ItemSize);
+ end;
+
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Returns an enumeration capability}
+function TTwainSource.GetEnumerationValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var List: TGetCapabilityList;
+ var Current, Default: Integer; Mode: TRetrieveCap;
+ MemHandle: HGLOBAL): TCapabilityRet;
+var
+ EnumV : pTW_ENUMERATION;
+ ItemSize : Integer;
+ Data : PChar;
+ CurItem : Integer;
+ Value : String;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, Mode, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_ENUMERATION;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_ENUMERATION) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ EnumV := GlobalLock(MemHandle);
+
+ {Fill return properties}
+ Current := EnumV^.CurrentIndex;
+ Default := EnumV^.DefaultIndex;
+ ItemType := EnumV^.ItemType;
+
+ {Prepare to list items}
+ ItemSize := TWTypeSize(ItemType);
+ Data := @EnumV^.ItemList[0];
+ SetLength(List, EnumV^.NumItems);
+
+ {Copy items}
+ for CurItem := 0 TO EnumV^.NumItems - 1 do
+ begin
+ {Obtain this item}
+ GetItem(Value, ItemType, Data);
+ List[CurItem] := Value;
+ {Move memory to the next}
+ inc(Data, ItemSize);
+ end;
+
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Returns a range capability}
+function TTwainSource.GetRangeValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var Min, Max, Step, Default,
+ Current: String; MemHandle: HGLOBAL): TCapabilityRet;
+var
+ RangeV : pTW_RANGE;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, rcGet, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_RANGE;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_RANGE) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ RangeV := GlobalLock(MemHandle);
+ {Fill return}
+ ItemType := RangeV^.ItemType;
+ GetItem(Min, ItemType, @RangeV^.MinValue);
+ GetItem(Max, ItemType, @RangeV^.MaxValue);
+ GetItem(Step, ItemType, @RangeV^.StepSize);
+ GetItem(Default, ItemType, @RangeV^.DefaultValue);
+ GetItem(Current, ItemType, @RangeV^.CurrentValue);
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Returns an one value capability}
+function TTwainSource.GetOneValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var Value: String;
+ Mode: TRetrieveCap; MemHandle: HGLOBAL): TCapabilityRet;
+var
+ OneV : pTW_ONEVALUE;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, Mode, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_ONEVALUE;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_ONEVALUE) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ OneV := GlobalLock(MemHandle);
+ {Fill return}
+ ItemType := OneV^.ItemType;
+ GetItem(Value, OneV^.ItemType, @OneV^.Item);
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Sets an one value capability}
+function TTwainSource.SetOneValue(Capability: TW_UINT16;
+ ItemType: TW_UINT16; Value: Pointer): TCapabilityRet;
+var
+ Data: HGLOBAL;
+ OneV: pTW_ONEVALUE;
+ ItemSize,ItemSize2: Integer;
+begin
+ {Allocate enough memory for the TW_ONEVALUE and obtain pointer}
+ ItemSize := TWTypeSize(ItemType);
+ //npeter: TW_ONEVALUE minimal size !!!
+ //I think to meet the specifications the
+ //Item's size must be at least sizeof(TW_UINT32)!
+ //when I did it, some mistic errors on some drivers went gone
+ if ItemSize 0 do
+ begin
+ {In case the total bytes received now have more than we}
+ {need to complete the line}
+ if Xfer.BytesWritten + DataSize > LineLength then
+ begin
+ Readed := LineLength - DataSize;
+ CopyMemory(Ptr, Xfer.Memory.TheMem, LineLength - DataSize);
+ end
+ else
+ {Otherwise, continue completing the line}
+ begin
+ Readed := Xfer.BytesWritten;
+ CopyMemory(Ptr, Xfer.Memory.TheMem, Readed);
+ end;
+
+ {Adjust}
+ inc(DataSize, Readed); inc(Ptr, Readed);
+ dec(Xfer.BytesWritten, Readed);
+ Cardinal(Xfer.Memory.TheMem) :=
+ Cardinal(Xfer.Memory.TheMem) + Readed;
+
+ {Reached end of line}
+ if DataSize >= LineLength then
+ begin
+ {Fix RGB to BGR}
+ if PixelType = TWPT_RGB then
+ begin
+ ItemPtr := LinePtr;
+ FOR Index := 1 TO ImageInfo.bmWidth DO
+ begin
+ Temp := ItemPtr^.rgbtRed;
+ ItemPtr^.rgbtRed := ItemPtr^.rgbtBlue;
+ ItemPtr^.rgbtBlue := Temp;
+ inc(ItemPtr);
+ end {FOR Index};
+ end {if PixelType = TWPT_RGB};
+
+ {Adjust pointers}
+ Cardinal(LinePtr) := Cardinal(LinePtr) - LineLength;
+ Ptr := LinePtr; dec(CurLine); DataSize := 0;
+
+ {Call event}
+ if Assigned(Owner.OnAcquireProgress) then
+ Owner.OnAcquireProgress(Self, Self.Index, ImageHandle,
+ Cardinal(ImageInfo.bmHeight) - CurLine - 1,
+ ImageInfo.bmHeight - 1);
+
+ end {if DataSize >= LineLength}
+
+ end {while Xfer.BytesWritten > 0};
+
+
+ {Set again pointer to write to}
+ Xfer.Memory.TheMem := AllocPtr;
+ end {TWRC_SUCCESS};
+
+ until Result <> TWRC_SUCCESS;
+
+ {Free allocated memory}
+ FreeMem(AllocPtr, Setup.Preferred);
+
+ {Some error ocurred, free memory and returns}
+ if Result <> TWRC_XFERDONE then
+ DeleteObject(ImageHandle);
+end;
+
+{Prepare image memory transference}
+function TTwainSource.PrepareMemXfer(var BitmapHandle: HBitmap;
+ var PixelType: TW_INT16): TW_UINT16;
+const
+ PixelColor: Array[TTwainPixelFlavor] of Array[0..1] of Byte =
+ ((0, $FF), ($FF, 00), (0, $FF));
+var
+ Handle: HGlobal;
+ Info: TW_IMAGEINFO;
+ Setup: TW_SETUPMEMXFER;
+ structsize, index, Size, Blocks: Integer;
+ XRes, YRes: Extended;
+ Pal : TW_PALETTE8;
+ vUnit : TTwainUnit;
+ vUnits: TTwainUnitSet;
+ Dib : pBitmapInfo;
+ PixelFlavor: TTwainPixelFlavor;
+ PixelFlavors: TTwainPixelFlavorSet;
+ DC: HDC;
+ Data : Pointer;
+begin
+ {First of all, get information on the image being acquired}
+ Result := Owner.TwainProc(AppInfo, @Structure, DG_IMAGE, DAT_IMAGEINFO,
+ MSG_GET, @Info);
+ if Result <> TWRC_SUCCESS then exit;
+
+ {Calculate image size}
+ with Info do
+ size := ((((ImageWidth * BitsPerPixel + 31) div 32)*4) * info.ImageLength);
+
+ {Obtain image buffer transference sizes}
+ Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_SETUPMEMXFER,
+ MSG_GET, @Setup);
+ blocks := (size div Integer(setup.Preferred));
+ size := (blocks + 1) * Integer(setup.Preferred);
+
+ {Prepare new bitmap}
+ structsize := size + sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD);
+
+ Handle := GlobalAlloc(GHND, StructSize);
+ Dib := GlobalLock(Handle);
+ Fillchar(Dib^, structsize, #0);
+ {Fill image information}
+ Dib^.bmiHeader.biSize := sizeof(BITMAPINFOHEADER);
+ Dib^.bmiHeader.biWidth := info.ImageWidth;
+ Dib^.bmiHeader.biHeight := info.ImageLength;
+ {Only 1 plane supported}
+ Dib^.bmiHeader.biPlanes := 1;
+ Dib^.bmiHeader.biBitCount := info.BitsPerPixel;
+ {No compression}
+ Dib^.bmiHeader.biCompression := BI_RGB;
+ Dib^.bmiHeader.biSizeImage := Size;
+
+ {Adjust units}
+ XRes := Fix32ToFloat(Info.XResolution);
+ YRes := Fix32ToFloat(Info.YResolution);
+ GetICapUnits(vUnit, vUnits);
+ case vUnit of
+ tuInches: begin
+ Dib^.bmiHeader.biXPelsPerMeter := Trunc((XRes*2.54)*100);
+ Dib^.bmiHeader.biYPelsPerMeter := Trunc((YRes*2.54)*100);
+ end;
+ tuCentimeters: begin
+ Dib^.bmiHeader.biXPelsPerMeter := Trunc(XRes*100);
+ Dib^.bmiHeader.biYPelsPerMeter := Trunc(YRes*100);
+ end
+ else begin
+ Dib^.bmiHeader.biXPelsPerMeter := 0;
+ Dib^.bmiHeader.biYPelsPerMeter := 0;
+ end
+ end {case vUnits of};
+
+ {Now it should setup the palette to be used by the image}
+ {by either building a definied palette or retrieving the}
+ {image's one}
+ case (Info.PixelType) of
+ TWPT_BW:
+ begin
+ {Only two colors are used}
+ Dib^.bmiHeader.biClrUsed := 2;
+ Dib^.bmiHeader.biClrImportant := 0;
+ {Try obtaining the pixel flavor}
+ if GetIPixelFlavor(PixelFlavor, PixelFlavors) <> crSuccess then
+ PixelFlavor := tpfChocolate;
+ {Set palette colors}
+ for Index := 0 to 1 do
+ begin
+ Dib^.bmiColors[Index].rgbRed := PixelColor[PixelFlavor][Index];
+ Dib^.bmiColors[Index].rgbGreen := PixelColor[PixelFlavor][Index];
+ Dib^.bmiColors[Index].rgbBlue := PixelColor[PixelFlavor][Index];
+ Dib^.bmiColors[Index].rgbReserved := 0;
+ end;
+
+ end;
+ TWPT_GRAY:
+ begin
+ {Creates a 256 shades of gray palette}
+ Dib^.bmiHeader.biClrUsed := 256;
+ for index := 0 to 255 do
+ begin
+ Dib^.bmiColors[index].rgbRed := index;
+ Dib^.bmiColors[index].rgbGreen := index;
+ Dib^.bmiColors[index].rgbBlue := index;
+ Dib^.bmiColors[index].rgbReserved := 0;
+ end {for i}
+ end;
+ TWPT_RGB: Dib^.bmiHeader.biClrUsed := 0;
+ else
+ begin
+ {Try obtaining the palette}
+ if Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_PALETTE8,
+ MSG_GET, @Pal) <> TWRC_SUCCESS then
+ begin
+ {If the source did not provide a palette, uses shades of gray here}
+ Dib^.bmiHeader.biClrUsed := 256;
+ for index := 0 to 255 do
+ begin
+ Dib^.bmiColors[index].rgbRed := index;
+ Dib^.bmiColors[index].rgbGreen := index;
+ Dib^.bmiColors[index].rgbBlue := index;
+ Dib^.bmiColors[index].rgbReserved := 0;
+ end {for i}
+ end
+ else
+ begin
+ {Uses source palette here}
+ Dib^.bmiHeader.biClrUsed := Pal.NumColors;
+ for Index := 0 TO Pal.NumColors - 1 do
+ begin
+ Dib^.bmiColors[index].rgbRed := pal.Colors[index].Channel1;
+ Dib^.bmiColors[index].rgbGreen := pal.Colors[index].Channel2;
+ Dib^.bmiColors[index].rgbBlue := pal.Colors[index].Channel3;
+ Dib^.bmiColors[index].rgbReserved := 0;
+ end {for Index}
+ end {if Owner.TwainProc(AppInfo...}
+
+ end {case else};
+ end {case Info.PixelType};
+
+ {Creates the bitmap}
+ DC := GetDC(Owner.VirtualWindow);
+ Cardinal(Data) := Cardinal(Dib) + Dib^.bmiHeader.biSize +
+ (Dib^.bmiHeader.biClrUsed * sizeof(RGBQUAD));
+ BitmapHandle := CreateDIBSection(DC, Dib^, DIB_RGB_COLORS, Data, 0, 0);
+ ReleaseDC(Owner.VirtualWindow, DC);
+ PixelType := Info.PixelType;
+
+ {Unlock and free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+end;
+
+{Method to transfer the images}
+procedure TTwainSource.TransferImages();
+var
+ {To test if the image transfer is done}
+ Cancel, Done : Boolean;
+ {Return code from Twain method}
+ rc : TW_UINT16;
+ {Handle to the native Device independent Image (DIB)}
+ hNative: TW_UINT32;
+ {Pending transfers structure}
+ PendingXfers: TW_PENDINGXFERS;
+ {File transfer info}
+ Info: TW_SETUPFILEXFER;
+ {Image handle and pointer}
+ ImageHandle: HBitmap;
+ PixelType : TW_INT16;
+begin
+ {Set the transfer mode}
+ //npeter:
+ //on a HP driver I got error events
+ //when it was set above state 5;
+ //commented out
+ // ChangeTransferMode(TransferMode);
+
+ Cancel := FALSE; {Testing if it was cancelled}
+ Done := FALSE; {Initialize done variable}
+
+ {Obtain all the images from the source}
+ repeat
+ {Transfer depending on the transfer mode}
+ case TransferMode of
+ {Native transfer, the source creates the image thru a device}
+ {dependent image}
+ ttmNative:
+ begin
+ {Call method to obtain the image}
+ hNative := 0;
+ rc := Owner.TwainProc(AppInfo, @Structure, DG_IMAGE,
+ DAT_IMAGENATIVEXFER, MSG_GET, @hNative);
+ end {case ttmNative};
+ {File transfering, the source should create a file with}
+ {the acquired image}
+ ttmFile:
+ begin
+ {Event to allow user to set the file transfer information}
+ if Assigned(Owner.OnSourceSetupFileXfer) then
+ Owner.OnSourceSetupFileXfer(Owner, Index);
+ Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_SETUPFILEXFER,
+ MSG_GET, @Info);
+ {Call method to make source acquire and create file}
+ rc := Owner.TwainProc(AppInfo, @Structure, DG_IMAGE,
+ DAT_IMAGEFILEXFER, MSG_GET, nil);
+ end {case ttmFile};
+ {Memory buffer transfers}
+ ttmMemory:
+ begin
+ {Prepare for memory transference}
+ rc := PrepareMemXfer(ImageHandle, PixelType);
+ {If the image was sucessfully prepared to be transfered, it's}
+ {now time to transfer it}
+ if rc = TWRC_SUCCESS then rc := TransferImageMemory(ImageHandle,
+ PixelType);
+ end
+ {Unknown transfer mode ?}
+ else Rc := 0;
+ end;
+
+ {Twain call to transfer image return}
+ case rc of
+ {Transfer sucessfully done}
+ TWRC_XFERDONE:
+ case TransferMode of
+ {Native transfer sucessfull}
+ ttmNative: ReadNative(hNative, Cancel);
+ {File transfer sucessfull}
+ ttmFile: ReadFile(Info.FileName, Info.Format, Cancel);
+ {Memory transfer sucessfull}
+ ttmMemory: ReadMemory(ImageHandle, Cancel);
+ end {case TransferMode, TWRC_XFERDONE};
+ {User cancelled the transfers}
+ TWRC_CANCEL:
+ begin
+ {Acknowledge end of transfer}
+ Done := TRUE;
+ {Call event, if avaliable}
+ if Assigned(Owner.OnAcquireCancel) then
+ Owner.OnAcquireCancel(Owner, Index)
+ end
+ else {Unknown return or error}
+ if Assigned(Owner.OnAcquireError) then
+ Owner.OnAcquireError(Owner, Index, Rc, GetReturnStatus())
+ end;
+
+ {Check if there are pending transfers}
+ if not Done then
+ Done := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_PENDINGXFERS, MSG_ENDXFER, @PendingXfers) <> TWRC_SUCCESS) or
+ (PendingXfers.Count = 0);
+
+ {If user has cancelled}
+ if not Done and Cancel then
+ Done := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_PENDINGXFERS, MSG_RESET, @PendingXfers) = TWRC_SUCCESS);
+
+ until Done;
+
+ {Disable source}
+ Enabled := False;
+end;
+
+{Returns the number of colors in the DIB}
+function DibNumColors (pv: Pointer): Word;
+var
+ Bits: Integer;
+ lpbi: PBITMAPINFOHEADER absolute pv;
+ lpbc: PBITMAPCOREHEADER absolute pv;
+begin
+ //With the BITMAPINFO format headers, the size of the palette
+ //is in biClrUsed, whereas in the BITMAPCORE - style headers, it
+ //is dependent on the bits per pixel ( = 2 raised to the power of
+ //bits/pixel).
+ if (lpbi^.biSize <> sizeof(BITMAPCOREHEADER)) then
+ begin
+ if (lpbi^.biClrUsed <> 0) then
+ begin
+ result := lpbi^.biClrUsed;
+ exit;
+ end;
+ Bits := lpbi^.biBitCount;
+ end
+ else
+ Bits := lpbc^.bcBitCount;
+
+ {Test bits to return}
+ case (Bits) of
+ 1: Result := 2;
+ 4: Result := 16;
+ 8: Result := 256;
+ else Result := 0;
+ end {case};
+
+end;
+
+{Converts from TWain TW_UINT16 to TTwainFormat}
+function TwainToTTwainFormat(Value: TW_UINT16): TTwainFormat;
+begin
+ Case Value of
+ TWFF_TIFF : Result := tfTIFF;
+ TWFF_PICT : Result := tfPict;
+ TWFF_BMP : Result := tfBMP;
+ TWFF_XBM : Result := tfXBM;
+ TWFF_JFIF : Result := tfJPEG;
+ TWFF_FPX : Result := tfFPX;
+ TWFF_TIFFMULTI: Result := tfTIFFMulti;
+ TWFF_PNG : Result := tfPNG;
+ TWFF_SPIFF : Result := tfSPIFF;
+ TWFF_EXIF : Result := tfEXIF;
+ else Result := tfUnknown;
+ end {case Value of}
+end;
+
+{Reads the file image}
+procedure TTwainSource.ReadFile(Name: TW_STR255; Format: TW_UINT16;
+ var Cancel: Boolean);
+begin
+ {Call event, if set}
+ if Assigned(Owner.OnSourceFileTransfer) then
+ Owner.OnSourceFileTransfer(Self, Index, Name, TwainToTTwainFormat(Format),
+ Cancel);
+end;
+
+{Call event for memory image}
+procedure TTwainSource.ReadMemory(Image: HBitmap; var Cancel: Boolean);
+{$IFNDEF DONTUSEVCL} var BitmapObj: TBitmap;{$ENDIF}
+begin
+
+ if Assigned(Owner.OnTwainAcquire) then
+ {$IFDEF DONTUSEVCL}
+ Owner.OnTwainAcquire(Owner, Index, Image, Cancel); {$ELSE}
+ begin
+ BitmapObj := TBitmap.Create;
+ BitmapObj.Handle := Image;
+ Owner.OnTwainAcquire(Owner, Index, BitmapObj, Cancel);
+ BitmapObj.Free;
+ end; {$ENDIF}
+end;
+
+{Reads a native image}
+procedure TTwainSource.ReadNative(Handle: TW_UINT32; var Cancel: Boolean);
+var
+ DibInfo: ^TBITMAPINFO;
+ ColorTableSize: Integer;
+ lpBits: PChar;
+ DC: HDC;
+ BitmapHandle: HBitmap;
+ {$IFNDEF DONTUSEVCL}BitmapObj: TBitmap;{$ENDIF}
+begin
+
+ {Get image information pointer and size}
+ DibInfo := GlobalLock(Handle);
+ ColorTableSize := (DibNumColors(DibInfo) * SizeOf(RGBQUAD));
+
+ {Get data memory position}
+ lpBits := PChar(DibInfo);
+ Inc(lpBits, DibInfo.bmiHeader.biSize);
+ Inc(lpBits, ColorTableSize);
+
+ {Creates the bitmap}
+ DC := GetDC(Owner.VirtualWindow);
+ BitmapHandle := CreateDIBitmap(DC, DibInfo.bmiHeader, CBM_INIT,
+ lpBits, DibInfo^, DIB_RGB_COLORS);
+ ReleaseDC(Owner.VirtualWindow, DC);
+
+ if Assigned(Owner.OnTwainAcquire) then
+ {$IFDEF DONTUSEVCL}
+ Owner.OnTwainAcquire(Owner, Index, BitmapHandle, Cancel); {$ELSE}
+ begin
+ BitmapObj := TBitmap.Create;
+ BitmapObj.Handle := BitmapHandle;
+ Owner.OnTwainAcquire(Owner, Index, BitmapObj, Cancel);
+ BitmapObj.Free;
+ end; {$ENDIF}
+
+ {Free bitmap}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+end;
+
+{Setup file transfer}
+function TTwainSource.SetupFileTransfer(Filename: String;
+ Format: TTwainFormat): Boolean;
+const
+ FormatToTwain: Array[TTwainFormat] of TW_UINT16 = (TWFF_TIFF,
+ TWFF_PICT, TWFF_BMP, TWFF_XBM, TWFF_JFIF, TWFF_FPX, TWFF_TIFFMULTI,
+ TWFF_PNG, TWFF_SPIFF, TWFF_EXIF, 0);
+var
+ FileTransferInfo: TW_SETUPFILEXFER;
+begin
+ {Source must be loaded to set things}
+ if (Loaded) then
+ begin
+ {Prepare structure}
+ FileTransferInfo.FileName := StrToStr255(FileName);
+ FileTransferInfo.Format := FormatToTwain[Format];
+
+ {Call method}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_SETUPFILEXFER, MSG_SET, @FileTransferInfo) = TWRC_SUCCESS);
+ end
+ else Result := FALSE; {Could not set file transfer with source unloaded}
+end;
+
+{Set the number of images that the application wants to receive}
+function TTwainSource.SetCapXferCount(Value: SmallInt): TCapabilityRet;
+begin
+ {Call method to set the value}
+ Result := SetOneValue(CAP_XFERCOUNT, TWTY_UINT16, @Value);
+end;
+
+{Returns the number of images that the source will return}
+function TTwainSource.GetCapXferCount(var Return: SmallInt;
+ Mode: TRetrieveCap): TCapabilityRet;
+var
+ {Will hold the capability information}
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Call method to return information}
+ Result := GetOneValue(CAP_XFERCOUNT, ItemType, Value, Mode);
+ {Item type must be of TW_UINT16}
+ if (Result = crSuccess) and (ItemType <> TWTY_INT16) then
+ Result := crUnsupported;
+ {If everything gone ok, fill result}
+ if Result = crSuccess then Return := StrToIntDef(Value, -1);
+end;
+
+{Set the unit measure}
+function TTwainSource.SetICapUnits(Value: TTwainUnit): TCapabilityRet;
+//npeter
+//the TTwainUnit is byte!!!
+//so we have to convert it to TW_UINT16
+//before this fix I was not able to set this capability
+//on a HP driver
+const Transfer: Array[TTwainUnit] of TW_UINT16 =
+ (TWUN_INCHES, TWUN_CENTIMETERS, TWUN_PICAS, TWUN_POINTS, TWUN_TWIPS, TWUN_PIXELS, TWUN_INCHES);
+var
+ iValue: TW_UINT16;
+begin
+ ivalue:=Transfer[Value];
+ Result := SetOneValue(ICAP_UNITS, TWTY_UINT16, @iValue);
+end;
+
+{Convert from Twain to TTwainPixelFlavor}
+function TwainToTTwainPixelFlavor(Value: TW_UINT16): TTwainPixelFlavor;
+begin
+ {Test the value to make the convertion}
+ case Value of
+ TWPF_CHOCOLATE: Result := tpfChocolate;
+ TWPF_VANILLA : Result := tpfVanilla;
+ else Result := tpfUnknown;
+ end {case Value}
+end;
+
+{Convert from Twain to TTwainUnit}
+function TwainToTTwainUnit(Value: TW_UINT16): TTwainUnit;
+begin
+ {Test the value to make the convertion}
+ case Value of
+ TWUN_INCHES : Result := tuInches;
+ TWUN_CENTIMETERS: Result := tuCentimeters;
+ TWUN_PICAS : Result := tuPicas;
+ TWUN_POINTS : Result := tuPoints;
+ TWUN_TWIPS : Result := tuTwips;
+ TWUN_PIXELS : Result := tuPixels;
+ else Result := tuUnknown;
+ end {case Value}
+end;
+
+{Retrieve the unit measure for all quantities}
+function TTwainSource.GetICapUnits(var Return: TTwainUnit;
+ var Supported: TTwainUnitSet; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call method to get result}
+ Result := GetEnumerationValue(ICAP_UNITS, ItemType, List, Current, Default,
+ Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {If it was sucessfull, return values}
+ if Result = crSuccess then
+ begin
+ {Make list}
+ for i := Low(List) to High(List) do
+ Include(Supported, TwainToTTwainUnit(StrToIntDef(List[i], -1)));
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then
+ Return := TwainToTTwainUnit(StrToIntDef(List[Default], -1))
+ else
+ Return := TwainToTTwainUnit(StrToIntDef(List[Current], -1));
+ end {if Result = crSuccess}
+
+end;
+
+{Retrieve the pixel flavor values}
+function TTwainSource.GetIPixelFlavor(var Return: TTwainPixelFlavor;
+ var Supported: TTwainPixelFlavorSet; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call method to get result}
+ Result := GetEnumerationValue(ICAP_PIXELFLAVOR, ItemType, List, Current,
+ Default, Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {If it was sucessfull, return values}
+ if Result = crSuccess then
+ begin
+ {Make list}
+ for i := Low(List) to High(List) do
+ Include(Supported, TwainToTTwainPixelFlavor(StrToIntDef(List[i], -1)));
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then
+ Return := TwainToTTwainPixelFlavor(StrToIntDef(List[Default], -1))
+ else
+ Return := TwainToTTwainPixelFlavor(StrToIntDef(List[Current], -1));
+ end {if Result = crSuccess}
+end;
+
+function TTwainSource.SetIPixelFlavor(Value: TTwainPixelFlavor): TCapabilityRet;
+//npeter
+//the TTwainPixelFlavor is byte!!!
+//so we have to convert it to TW_UINT16
+//before this fix I was not able to set this capability
+//on a HP driver
+const Transfer: array [TTwainPixelFlavor] of TW_UINT16 = (TWPF_CHOCOLATE,TWPF_VANILLA,TWPF_CHOCOLATE);
+var iValue: TW_UINT16;
+begin
+ iValue:=Transfer[value];
+ Result := SetOneValue(ICAP_PIXELFLAVOR, TWTY_UINT16, @iValue);
+end;
+
+{Convert from Twain to TTwainPixelType}
+function TwainToTTwainPixelType(Value: TW_UINT16): TTwainPixelType;
+begin
+ {Test the value to make the convertion}
+ case Value of
+ TWPT_BW : Result := tbdBw;
+ TWPT_GRAY : Result := tbdGray;
+ TWPT_RGB : Result := tbdRgb;
+ TWPT_PALETTE : Result := tbdPalette;
+ TWPT_CMY : Result := tbdCmy;
+ TWPT_CMYK : Result := tbdCmyk;
+ TWPT_YUV : Result := tbdYuv;
+ TWPT_YUVK : Result := tbdYuvk;
+ TWPT_CIEXYZ : Result := tbdCieXYZ;
+ else Result := tbdUnknown;
+ end {case Value}
+end;
+
+{Returns pixel type values}
+function TTwainSource.GetIPixelType(var Return: TTwainPixelType;
+ var Supported: TTwainPixelTypeSet; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call method to get result}
+ Result := GetEnumerationValue(ICAP_PIXELTYPE, ItemType, List, Current,
+ Default, Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {If it was sucessfull, return values}
+ if Result = crSuccess then
+ begin
+ {Make list}
+ for i := Low(List) to High(List) do
+ Include(Supported, TwainToTTwainPixelType(StrToIntDef(List[i], -1)));
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then
+ Return := TwainToTTwainPixelType(StrToIntDef(List[Default], -1))
+ else
+ Return := TwainToTTwainPixelType(StrToIntDef(List[Current], -1));
+ end {if Result = crSuccess}
+end;
+
+{Set the pixel type value}
+function TTwainSource.SetIPixelType(Value: TTwainPixelType): TCapabilityRet;
+//npeter
+//the TTwainPixelType is byte!!!
+//so we have to convert it to TW_UINT16
+//before this fix occasionally I was not able to set this capability
+//on a HP driver
+var ivalue: smallint;
+begin
+ ivalue:=ord(value);
+ Result := SetOneValue(ICAP_PIXELTYPE, TWTY_UINT16, @iValue);
+end;
+
+{Returns bitdepth values}
+function TTwainSource.GetIBitDepth(var Return: Word;
+ var Supported: TTwainBitDepth; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call GetOneValue to obtain this property}
+ Result := GetEnumerationValue(ICAP_BITDEPTH, ItemType, List, Current,
+ Default, Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {In case everything went ok, fill parameters}
+ if Result = crSuccess then
+ begin
+ {Build bit depth list}
+ SetLength(Supported, Length(List));
+ FOR i := LOW(List) TO HIGH(List) DO
+ Supported[i] := StrToIntDef(List[i], -1);
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then Return := StrToIntDef(List[Default], -1)
+ else Return := StrToIntDef(List[Current], -1);
+ end {if Result = crSuccess}
+end;
+
+{Set current bitdepth value}
+function TTwainSource.SetIBitDepth(Value: Word): TCapabilityRet;
+begin
+ Result := SetOneValue(ICAP_BITDEPTH, TWTY_UINT16, @Value);
+end;
+
+{Returns physical width}
+function TTwainSource.GetIPhysicalWidth(var Return: Extended;
+ Mode: TRetrieveCap): TCapabilityRet;
+var
+ Handle: HGlobal;
+ OneV : pTW_ONEVALUE;
+ Container: TW_UINT16;
+begin
+ {Obtain handle to data from this capability}
+ Result := GetCapabilityRec(ICAP_PHYSICALWIDTH, Handle, Mode, Container);
+ if Result = crSuccess then
+ begin
+ {Obtain data}
+ OneV := GlobalLock(Handle);
+ if OneV^.ItemType <> TWTY_FIX32 then Result := crUnsupported
+ else Return := Fix32ToFloat(pTW_FIX32(@OneV^.Item)^);
+ {Free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+ end;
+end;
+
+{Returns physical height}
+function TTwainSource.GetIPhysicalHeight(var Return: Extended;
+ Mode: TRetrieveCap): TCapabilityRet;
+var
+ Handle: HGlobal;
+ OneV : pTW_ONEVALUE;
+ Container: TW_UINT16;
+begin
+ {Obtain handle to data from this capability}
+ Result := GetCapabilityRec(ICAP_PHYSICALHEIGHT, Handle, Mode, Container);
+ if Result = crSuccess then
+ begin
+ {Obtain data}
+ OneV := GlobalLock(Handle);
+ if OneV^.ItemType <> TWTY_FIX32 then Result := crUnsupported
+ else Return := Fix32ToFloat(pTW_FIX32(@OneV^.Item)^);
+ {Free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+ end;
+end;
+
+{Returns a resolution}
+function TTwainSource.GetResolution(Capability: TW_UINT16; var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+var
+ Handle: HGlobal;
+ EnumV: pTW_ENUMERATION;
+ Container: TW_UINT16;
+ Item: pTW_FIX32;
+ i : Integer;
+begin
+ {Obtain handle to data from this capability}
+ Result := GetCapabilityRec(Capability, Handle, Mode, Container);
+ if Result = crSuccess then
+ begin
+ {Obtain data}
+ //npeter
+ //the "if" is just for sure!
+ if (Container<>TWON_ENUMERATION) and (Container<>TWON_ARRAY) then
+ begin
+ result:=crUnsupported;
+ exit;
+ end;
+
+ EnumV := GlobalLock(Handle);
+ if EnumV^.ItemType <> TWTY_FIX32 then Result := crUnsupported
+ else begin
+ {Set array size and pointer to the first item}
+ Item := @EnumV^.ItemList[0];
+ SetLength(Values, EnumV^.NumItems);
+ {Fill array}
+ FOR i := 1 TO EnumV^.NumItems DO
+ begin
+ {Fill array with the item}
+ Values[i - 1] := Fix32ToFloat(Item^);
+ {Move to next item}
+ inc(Item);
+ end {FOR i};
+
+ {Fill return}
+
+ //npeter
+ //DefaultIndex and CurrentIndex valid for enum only!
+ //I got nice AV with an old Mustek scanner which uses TWON_ARRAY
+ //i return 0 in this case (may be not the best solution, but not AV at least :-)
+ if (Container<>TWON_ARRAY) then
+ begin
+ if Mode = rcGetDefault then Return := Values[EnumV^.DefaultIndex]
+ else Return := Values[EnumV^.CurrentIndex];
+ end
+ else return:=0;
+ end;
+ {Free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+ end;
+end;
+
+{Sets X resolution}
+function TTwainSource.SetIXResolution(Value: Extended): TCapabilityRet;
+var
+ Fix32: TW_FIX32;
+begin
+ Fix32 := FloatToFix32(Value);
+ Result := SetOneValue(ICAP_XRESOLUTION, TWTY_FIX32, @Fix32);
+end;
+
+{Sets Y resolution}
+function TTwainSource.SetIYResolution(Value: Extended): TCapabilityRet;
+var
+ Fix32: TW_FIX32;
+begin
+ Fix32 := FloatToFix32(Value);
+ Result := SetOneValue(ICAP_YRESOLUTION, TWTY_FIX32, @Fix32);
+end;
+
+{Returns X resolution}
+function TTwainSource.GetIXResolution(var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+begin
+ Result := GetResolution(ICAP_XRESOLUTION, Return, Values, Mode);
+end;
+
+{Returns Y resolution}
+function TTwainSource.GetIYResolution(var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+begin
+ Result := GetResolution(ICAP_YRESOLUTION, Return, Values, Mode);
+end;
+
+{Returns if user interface is controllable}
+function TTwainSource.GetUIControllable(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_UICONTROLLABLE, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Returns if feeder is loaded}
+function TTwainSource.GetFeederLoaded(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_FEEDERLOADED, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Returns if feeder is enabled}
+function TTwainSource.GetFeederEnabled(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_FEEDERENABLED, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Set if feeder is enabled}
+function TTwainSource.SetFeederEnabled(Value: WordBool): TCapabilityRet;
+begin
+ {Call SetOneValue to set value}
+ Result := SetOneValue(CAP_FEEDERENABLED, TWTY_BOOL, @Value);
+end;
+
+
+{Returns if autofeed is enabled}
+function TTwainSource.GetAutofeed(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_AUTOFEED, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Set if autofeed is enabled}
+function TTwainSource.SetAutoFeed(Value: WordBool): TCapabilityRet;
+begin
+ {Call SetOneValue to set value}
+ Result := SetOneValue(CAP_AUTOFEED, TWTY_BOOL, @Value);
+end;
+
+
+{Used with property PendingXfers}
+function TTwainSource.GetPendingXfers: TW_INT16;
+var
+ PendingXfers: TW_PENDINGXFERS;
+begin
+ if Loaded and Enabled then
+ begin
+ {Call method to retrieve}
+ if Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_PENDINGXFERS,
+ MSG_GET, @PendingXfers) = TWRC_SUCCESS then
+ Result := PendingXfers.Count
+ else Result := ERROR_INT16; {Some error ocurred while calling message}
+ end
+ else Result := ERROR_INT16; {Source not loaded/enabled}
+end;
+
+{Returns a TMsg structure}
+function MakeMsg(const Handle: THandle; uMsg: UINT; wParam: WPARAM;
+ lParam: LPARAM): TMsg;
+begin
+ {Fill structure with the parameters}
+ Result.hwnd := Handle;
+ Result.message := uMsg;
+ Result.wParam := wParam;
+ Result.lParam := lParam;
+ GetCursorPos(Result.pt);
+end;
+
+{Virtual window procedure handler}
+function VirtualWinProc(Handle: THandle; uMsg: UINT; wParam: WPARAM;
+ lParam: LPARAM): LResult; stdcall;
+
+ {Returns the TDelphiTwain object}
+ function Obj: TDelphiTwain;
+ begin
+ Longint(Result) := GetWindowLong(Handle, GWL_USERDATA);
+ end {function};
+
+var
+ Twain: TDelphiTwain;
+ i : Integer;
+ Msg : TMsg;
+begin
+ {Tests for the message}
+ case uMsg of
+ {Creation of the window}
+ WM_CREATE:
+ {Stores the TDelphiTwain object handle}
+ with pCreateStruct(lParam)^ do
+ SetWindowLong(Handle, GWL_USERDATA, Longint(lpCreateParams));
+ {case} else
+ begin
+ {Try to obtain the current object pointer}
+ Twain := Obj;
+
+ if Assigned(Twain) then
+ {If there are sources loaded, we need to verify}
+ {this message}
+ if (Twain.SourcesLoaded > 0) then
+ begin
+ {Convert parameters to a TMsg}
+ Msg := MakeMsg(Handle, uMsg, wParam, lParam);
+ {Tell about this message}
+ FOR i := 0 TO Twain.SourceCount - 1 DO
+ if ((Twain.Source[i].Loaded) and (Twain.Source[i].Enabled)) then
+ if Twain.Source[i].ProcessMessage(Msg) then
+ begin
+ {Case this was a message from the source, there is}
+ {no need for the default procedure to process}
+ Result := 0;
+ Exit;
+ end;
+
+ end {if (Twain.SourcesLoaded > 0)}
+
+
+ end {case Else}
+ end {case uMsg of};
+
+ {Calls method to handle}
+ Result := DefWindowProc(Handle, uMsg, wParam, lParam);
+end;
+
+
+//npeter: 2004.01.12
+//sets the acquired area
+function TTwainSource.SetImagelayoutFrame(const fLeft, fTop, fRight,
+ fBottom: double): TCapabilityRet;
+var ImageLayout: TW_IMAGELAYOUT;
+begin
+ if not Loaded then
+ begin
+ Result := crInvalidState; {In case the source is not loaded}
+ exit;
+ end;
+
+ fillchar(ImageLayout,sizeof(TW_IMAGELAYOUT),0);
+ with ImageLayout.Frame do
+ begin
+ Left:=FloatToFIX32(fLeft);
+ Top:=FloatToFIX32(fTop);
+ Right:=FloatToFIX32(fRight);
+ Bottom:=FloatToFIX32(fBottom);
+ end;
+ {Call method and store return}
+ Result := ResultToCapabilityRec(Owner.TwainProc(AppInfo, @Structure,
+ DG_IMAGE, DAT_IMAGELAYOUT, MSG_SET, @ImageLayout));
+end;
+
+//npeter: 2004.01.12
+//enable/disable progress indicators
+function TTwainSource.SetIndicators(Value: boolean): TCapabilityRet;
+begin
+ {Call SetOneValue to set value}
+ Result := SetOneValue(CAP_INDICATORS, TWTY_BOOL, @Value);
+end;
+
+
+{Information for the virtual window class}
+var
+ VirtualWinClass: TWNDClass;
+
+
+initialization
+ {Registers the virtual window class}
+ VirtualWinClass.hInstance := hInstance;
+ VirtualWinClass.style := 0;
+ VirtualWinClass.lpfnWndProc := @VirtualWinProc;
+ VirtualWinClass.cbClsExtra := 0;
+ VirtualWinClass.cbWndExtra := 0;
+ VirtualWinClass.hIcon := 0;
+ VirtualWinClass.hCursor := 0;
+ VirtualWinClass.hbrBackground := COLOR_WINDOW + 1;
+ VirtualWinClass.lpszMenuName := '';
+ VirtualWinClass.lpszClassName := VIRTUALWIN_CLASSNAME;
+ Windows.RegisterClass(VirtualWinClass);
+finalization
+ {Unregisters the virtual window class}
+ Windows.UnregisterClass(VIRTUALWIN_CLASSNAME, hInstance);
+end.
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwainUtils.dcu.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwainUtils.dcu.svn-base
new file mode 100644
index 0000000..874e989
Binary files /dev/null and b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwainUtils.dcu.svn-base differ
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwainUtils.pas.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwainUtils.pas.svn-base
new file mode 100644
index 0000000..4bb4230
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/text-base/DelphiTwainUtils.pas.svn-base
@@ -0,0 +1,379 @@
+{GENERAL METHODS USED BY TWAIN DELPHI}
+{december 2001, made by Gustavo Daud}
+
+{This unit contains general methods used by Delphi}
+{Twain component. Some of the methods bellow aren't}
+{directly related to Twain, but are pieces needed}
+{to implement the component.}
+
+unit DelphiTwainUtils;
+
+{$INCLUDE DELPHITWAIN.INC}
+
+interface
+
+uses
+ Twain;
+
+type
+ {Kinds of directories to be obtained with GetCustomDirectory}
+ TDirectoryKind = (dkWindows, dkSystem, dkCurrent, dkApplication, dkTemp);
+
+ {Class to store a list of pointers}
+ TPointerList = class
+ private
+ {Stores pointer to the allocated data}
+ Data: Pointer;
+ {Contains number of additional items allocated every time}
+ {it needs more data to store}
+ fAdditionalBlock: Integer;
+ {Contains the number of items in the list}
+ fCount: Integer;
+ {Contains number of allocated items}
+ fAllocated: Integer;
+ {Allocate/deallocate memory to have enough memory}
+ {to hold the new number of items}
+ procedure SetAllocated(const Value: Integer);
+ {Sets the AdditionalBlock property}
+ procedure SetAdditionalBlock(const Value: Integer);
+ {Set the number of items in the list}
+ procedure SetCount(const Value: Integer);
+ function GetItem(Index: Integer): Pointer;
+ procedure PutItem(Index: Integer; const Value: Pointer);
+ public
+ {Add a new item}
+ procedure Add(Value: Pointer);
+ {Clear all the items in the list}
+ procedure Clear;
+ {Object being created or destroyed}
+ constructor Create;
+ destructor Destroy; override;
+ {Returns/sets an item value}
+ property Item[Index: Integer]: Pointer read GetItem write PutItem; default;
+ {Returns the number of items}
+ property Count: Integer read fCount write SetCount;
+ {Number of allocated items}
+ property Allocated: Integer read fAllocated write SetAllocated;
+ {Additional items to alloc when it needs more memory}
+ property AdditionalBlock: Integer read fAdditionalBlock write
+ SetAdditionalBlock;
+ end;
+
+{Returns custom Microsoft Windows directories}
+function GetCustomDirectory(const DirectoryKind: TDirectoryKind): String;
+{Returns the last error string from Microsoft Windows}
+function GetLastErrorText(): String;
+{Returns if the directory exists}
+function DirectoryExists(const Directory: String): Boolean;
+{Returns if the file exists}
+function FileExists(const FilePath: String): Boolean;
+{Extracts the file directory part}
+function ExtractDirectory(const FilePath: String): String;
+{Convert from integer to string}
+{$IFDEF DONTUSEVCL}function IntToStr(Value: Integer): String;{$ENDIF}
+{$IFDEF DONTUSEVCL}function StrToIntDef(Value: String;
+ Default: Integer): Integer;{$ENDIF}
+{$IFDEF DONTUSEVCL}function CompareMem(P1, P2: pChar;
+ Size: Integer): Boolean;{$ENDIF}
+{Convert from twain Fix32 to extended}
+function Fix32ToFloat(Value: TW_FIX32): Extended;
+{Convert from extended to Fix32}
+function FloatToFix32 (floater: extended): TW_FIX32;
+
+implementation
+
+{Units used bellow}
+uses
+ Windows;
+
+{$IFDEF DONTUSEVCL}
+ function CompareMem(P1, P2: pChar; Size: Integer): Boolean;
+ var
+ i: Integer;
+ begin
+ {Default result}
+ Result := TRUE;
+ {Search each byte}
+ FOR i := 1 TO Size DO
+ begin
+ {Compare booth bytes}
+ if P1^ <> P2^ then
+ begin
+ Result := FALSE;
+ Exit;
+ end; {if P1^ <> P2^}
+ {Move to next byte}
+ Inc(P1); Inc(P2);
+ end {FOR i}
+ end {function};
+{$ENDIF}
+
+{$IFDEF DONTUSEVCL}
+ function IntToStr(Value: Integer): String;
+ begin
+ Str(Value, Result);
+ end;
+{$ENDIF}
+
+{$IFDEF DONTUSEVCL}
+ function StrToIntDef(Value: String; Default: Integer): Integer;
+ var Code: Integer;
+ begin
+ {Try converting from string to integer}
+ Val(Value, Result, Code);
+ {If any error ocurred, returns default value}
+ if Code <> 0 then Result := Default;
+ end;
+{$ENDIF}
+
+
+{Convert from extended to Fix32}
+function FloatToFix32 (floater: extended): TW_FIX32;
+var
+ fracpart : extended;
+begin
+ //Obtain numerical part by truncating the float number
+ Result.Whole := trunc(floater);
+ //Obtain fracional part by subtracting float number by
+ //numerical part. Also we make sure the number is not
+ //negative by multipling by -1 if it is negative
+ fracpart := floater - result.Whole;
+ if fracpart < 0 then fracpart := fracpart * -1;
+ //Multiply by 10 until there is no fracional part any longer
+ while FracPart - trunc(FracPart) <> 0 do fracpart := fracpart * 10;
+ //Return fracional part
+ Result.Frac := trunc(fracpart);
+end;
+
+{Convert from twain Fix32 to extended}
+function Fix32ToFloat(Value: TW_FIX32): Extended;
+begin
+ Result := Value.Whole + (Value.Frac / 65536.0);
+end;
+
+{Returns the last position for any of the characters in the parameter}
+function LastPosition(const Text, characters: String): Integer;
+var
+ x, y: Integer; {For loop variables}
+begin
+ Result := Length(Text); {Initial result}
+
+ {Search each character in the text}
+ FOR x := 1 TO Length(Text) DO
+ begin
+ {Test for each character}
+ FOR y := 1 TO Length(characters) DO
+ if Text[x] = characters[y] then
+ Result := x;
+ end {for x}
+end;
+
+{Extracts the file directory}
+function ExtractDirectory(const FilePath: String): String;
+begin
+ {Searches for the last \ or : characters}
+ {ex: c:\windows\system32\yfile.ext or c:autoexec.bat}
+ Result := Copy(FilePath, 1, LastPosition(FilePath, '\:'));
+end;
+
+{Returns if the file exists}
+function FileExists(const FilePath: String): Boolean;
+var
+ FindData : TWin32FindData;
+ FindHandle: THandle;
+begin
+ {Searches for the file}
+ FindHandle := FindFirstFile(PChar(FilePath), FindData);
+ Result := (FindHandle <> INVALID_HANDLE_VALUE);
+ {In case it found, closes the FindFirstFile handle}
+ if Result then FindClose(FindHandle);
+end;
+
+{Returns if the directory exists}
+function DirectoryExists(const Directory: String): Boolean;
+var
+ Attr: DWORD;
+begin
+ {Calls GetFileAttributes to verify}
+ Attr := GetFileAttributes(PChar(Directory));
+ Result := (Attr <> $FFFFFFFF) and (Attr and FILE_ATTRIBUTE_DIRECTORY <> 0);
+end;
+
+{Makes an language identifier using the two ids}
+function MAKELANGID(p, s: WORD): DWORD;
+begin
+ Result := (s shl 10) or p;
+end;
+
+{Returns the last error string from Microsoft Windows}}
+function GetLastErrorText(): String;
+var
+ Buffer: Array[Byte] of Char;
+ Len : DWORD;
+begin
+ {Calls format message to translate from the error code ID to}
+ {a text understandable error}
+ Len := Windows.FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or
+ FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), Buffer, sizeof(Buffer), nil);
+ {Remove this chars from the ending of the result}
+ while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do Dec(Len);
+ {Fills result}
+ SetString(Result, Buffer, Len);
+end;
+
+{Includes a trailing backslash in the end of the directory; if necessary}
+procedure IncludeTrailingBackslash(var Directory: String);
+begin
+ {If there isn't already a backslash, add one}
+ if Directory[Length(Directory)] <> '\' then
+ Directory := Directory + '\'
+end;
+
+{Returns custom Microsoft Windows directories}
+function GetCustomDirectory(const DirectoryKind: TDirectoryKind): String;
+const
+ {Default maximum size for directories}
+ DEF_DIRLEN = MAX_PATH;
+
+ {Calls appropriate method and returns necessary size}
+ function CallDirectoryMethod(Buffer: Pointer; Size: UINT): UINT;
+ begin
+ {Test the directory needed by the parameter}
+ case DirectoryKind of
+ {Windows directory}
+ dkWindows: Result := Windows.GetWindowsDirectory(Buffer, Size);
+ {System directory}
+ dkSystem : Result := Windows.GetSystemDirectory(Buffer, Size);
+ {Current directory}
+ dkCurrent: Result := Windows.GetCurrentDirectory(Size, Buffer);
+ {Application directory}
+ dkApplication: Result := Windows.GetModuleFileName(0, Buffer, Size);
+ {Temp directory}
+ dkTemp : Result := Windows.GetTempPath(Size, Buffer);
+ {Unknown directory}
+ else Result := 0;
+ end {case}
+ end;
+
+var
+ DirectoryLen: UINT;
+begin
+ {Set length of the resulting buffer to MAX_PATH to try to hold}
+ {windows directory}
+ SetLength(Result, DEF_DIRLEN + 1);
+ {Tries to obtain the windows directory and stores the size}
+ DirectoryLen := CallDirectoryMethod(@Result[1], DEF_DIRLEN);
+
+ {In case it was not enough to hold windows directory, enlarge}
+ if DirectoryLen > DEF_DIRLEN then
+ begin
+ {Try again, now with the right size}
+ SetLength(Result, DirectoryLen + 1);
+ CallDirectoryMethod(@Result[1], DirectoryLen);
+ end
+ else {Otherwise, adjust the result to excluded unused data}
+ SetLength(Result, DirectoryLen);
+
+ {In case the user searched for the application directory}
+ {extracts just the directory part}
+ if DirectoryKind = dkApplication then
+ Result := ExtractDirectory(Result);
+ {Add a trailing backslash to end of the directory name}
+ IncludeTrailingBackslash(Result);
+end;
+
+{ TPointerList object implementation }
+
+{Add a new item}
+procedure TPointerList.Add(Value: Pointer);
+begin
+ {Increase number of items and update new item}
+ Count := Count + 1;
+ Item[Count - 1] := Value;
+end;
+
+{Clear all the items in the list}
+procedure TPointerList.Clear;
+begin
+ {Set number of items to 0 and initialize again allocated items}
+ Count := 0;
+ Allocated := AdditionalBlock;
+end;
+
+{TPointerList being created}
+constructor TPointerList.Create;
+begin
+ {Let ancestor receive the call}
+ inherited Create;
+
+ {Allocate a number of items}
+ fAdditionalBlock := 10;
+ fAllocated := fAdditionalBlock;
+ GetMem(Data, (fAllocated * sizeof(Pointer)));
+end;
+
+{TPointerList being destroyed}
+destructor TPointerList.Destroy;
+begin
+ {Deallocate data}
+ FreeMem(Data, (fAllocated * sizeof(Pointer)));
+
+ {Let ancestor receive and finish}
+ inherited Destroy;
+end;
+
+{Returns an item from the list}
+function TPointerList.GetItem(Index: Integer): Pointer;
+begin
+ {Check item bounds and return item}
+ if Index in [0..Count - 1] then
+ Longint(Result) := pLongint(Longint(Data) + (Index * sizeof(Pointer)))^
+ else Result := nil; {Otherwise returns nil}
+end;
+
+{Sets an item from the list}
+procedure TPointerList.PutItem(Index: Integer; const Value: Pointer);
+begin
+ {Check item bounds and sets item}
+ if Index in [0..Count - 1] then
+ pLongint(Longint(Data) + (Index * sizeof(Pointer)))^ := Longint(Value);
+end;
+
+{Sets the AdditionalBlock property}
+procedure TPointerList.SetAdditionalBlock(const Value: Integer);
+begin
+ {Value must be a positive number greater than 0}
+ if (Value > 0) then
+ fAdditionalBlock := Value;
+end;
+
+{Allocate/deallocate memory to have enough memory to hold}
+{the new number of items}
+procedure TPointerList.SetAllocated(const Value: Integer);
+begin
+ {Must be always greater than 0 the number of allocated items}
+ {And it also should not be smaller than count}
+ if (Value > 0) and (Value <= Count) then
+ begin
+ {Just realloc memory and update property variable}
+ ReallocMem(Data, (Value * sizeof(Pointer)));
+ fAllocated := Value;
+ end {if (Value <> 0)}
+end;
+
+{Set the number of items in the list}
+procedure TPointerList.SetCount(const Value: Integer);
+begin
+ {Value must be 0 or greater}
+ if (Value >= 0) then
+ begin
+ {If there is no more memory to hold data, allocate some more}
+ while (Value > fAllocated) do
+ Allocated := Allocated + fAdditionalBlock;
+ {Update property}
+ fCount := Value;
+ end {if (Value >= 0)}
+end;
+
+end.
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/Twain.dcu.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/Twain.dcu.svn-base
new file mode 100644
index 0000000..eb3ba8b
Binary files /dev/null and b/T03贸易布匹检验/delphitwain/.svn/text-base/Twain.dcu.svn-base differ
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/Twain.pas.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/Twain.pas.svn-base
new file mode 100644
index 0000000..d83e956
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/text-base/Twain.pas.svn-base
@@ -0,0 +1,3225 @@
+{******************************************************************}
+{ }
+{ Borland Delphi Runtime Library }
+{ Twain interface unit }
+{ }
+{ Portions created by TWAIN Working Group, }
+{ see Copyright statement from original file below }
+{ }
+{ The original file is: twain.h, released March 15, 2000. }
+{ The original Pascal code is: twain.pas, released 20. Dez 1999. }
+{ The initial developer of the Pascal code is: Uli Tessel (UT) }
+{ (UliTessel@swol.de) with help of Matthias Thoma (MT) }
+{ (ma.thoma@gmx.de) }
+{ Translation cleaned up and updated to twain 1.9 by: }
+{ Martin Olsson (MO), mnemo@home.se }
+{ }
+{ Obtained through: }
+{ Joint Endeavour of Delphi Innovators (Project JEDI) }
+{ }
+{ You may retrieve the latest version of this file at the Project }
+{ JEDI home page, located at http://delphi-jedi.org }
+{ }
+{ The contents of this file are used with permission, subject to }
+{ the Mozilla Public License Version 1.1 (the "License"); you may }
+{ not use this file except in compliance with the License. You may }
+{ obtain a copy of the License at }
+{ http://www.mozilla.org/MPL/MPL-1.1.html }
+{ }
+{ Software distributed under the License is distributed on an }
+{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
+{ implied. See the License for the specific language governing }
+{ rights and limitations under the License. }
+{ }
+{******************************************************************}
+
+{ ========================================================================
+
+ Copyright (C) 1991, 1992 TWAIN Working Group: Aldus, Caere, Eastman-Kodak,
+ Hewlett-Packard and Logitech Corporations. All rights reserved.
+
+ Copyright (C) 1997 TWAIN Working Group: Bell+Howell, Canon, DocuMagix,
+ Fujitsu, Genoa Technology, Hewlett-Packard, Kofax Imaging Products, and
+ Ricoh Corporation. All rights reserved.
+
+ Copyright 1998 TWAIN Working Group: Adobe Systems Incorporated,
+ Canon Information Systems, Eastman Kodak Company,
+ Fujitsu Computer Products of America, Genoa Technology,
+ Hewlett-Packard Company, Intel Corporation, Kofax Image Products,
+ JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation.
+ All rights reserved.
+
+ Copyright 2000 TWAIN Working Group: Adobe Systems Incorporated,
+ Canon Information Systems, Digimarc Corporation, Eastman Kodak Company,
+ Fujitsu Computer Products of America, Hewlett-Packard Company,
+ JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation.
+ All rights reserved.
+
+ TWAIN.h - This is the definitive include file for applications and
+ data sources written to the TWAIN specification.
+ It defines constants, data structures, messages etc.
+ for the public interface to TWAIN.
+
+ Revision History:
+ version 1.0, March 6, 1992. TWAIN 1.0.
+ version 1.1, January 1993. Tech Notes 1.1
+ version 1.5, June 1993. Specification Update 1.5
+ Change DC to TW
+ Change filename from DC.H to TWAIN.H
+ version 1.5, July 1993. Remove spaces from country identifiers
+
+ version 1.7, July 1997 Added Capabilities and data structure for
+ document imaging and digital cameras.
+ KHL.
+ version 1.7, July 1997 Inserted Borland compatibile structure packing
+ directives provided by Mentor. JMH
+ version 1.7, Aug 1997 Expanded file tabs to spaces.
+ NOTE: future authors should be sure to have
+ their editors set to automatically expand tabs
+ to spaces (original tab setting was 4 spaces).
+ version 1.7, Sept 1997 Added job control values
+ Added return codes
+ version 1.7, Sept 1997 changed definition of pRGBRESPONSE to
+ pTW_RGBRESPONSE
+ version 1.7 Aug 1998 Added missing TWEI_BARCODEROTATION values
+ TWBCOR_ types JMH
+ version 1.8 August 1998 Added new types and definitions required
+ for 1.8 Specification JMH
+ version 1.8 January 1999 Changed search mode from SRCH_ to TWBD_ as
+ in 1.8 Specification, added TWBT_MAXICODE JMH
+ version 1.8 January 1999 Removed undocumented duplicate AUTO JMH
+ version 1.8 March 1999 Removed undocumented 1.8 caps:
+ CAP_FILESYSTEM
+ CAP_PAPERBINDING
+ CAP_PASSTHRU
+ CAP_POWERDOWNTIME
+ ICAP_AUTODISCARDBLANKPAGES
+ * CAP_PAGEMULTIPLEACQUIRE - is CAP_REACQUIREALLOWED,
+ requires spec change. JMH
+ Added Mac structure packing modifications JMH
+ version 1.9 March 2000 Added new types and definations required
+ for 1.9 Specification MLM
+ version 1.9 March 2000 Added ICAP_JPEGQUALITY, TWJQ_ values,
+ updated TWON_PROTOCOLMINOR for Release v1.9 MN
+
+ ======================================================================== }
+
+{
+ Revision History for translation:
+
+ Version 1.8.0: 29.08.99 - UT
+ Initial translation, based on twain.h, version 1.8
+
+ Version 1.8.1: 12.09.99 - UT
+ SizeOf for all structures checked and corrected.
+ (Alignment is 2 Bytes for the C Code and 'packed record' uses
+ 1 Byte alignment. Only types using TW_xINT8 are affected)
+
+ Version 1.8.2: 19.12.99 UT
+ Added MPL and the other JEDI Statements
+ Added EXTERNALSYMS to support C++ Builder
+ Created the .PAR file (no Unicode things are used by the TWAIN API?)
+ A bit better formatting of the source
+
+ Version 1.8.3: 20.12.99
+ MT: Added Delphi-Aliases to the structures (like TTWFrame = TW_FRAME)
+ UT: Added missing Externalyms for some constants
+
+ Version 1.9.0: 01.12.00
+ MO: Updated translation to conform with twain.h 1.9
+ MO: Cleaned up style to to fit JEDI standards
+}
+
+unit Twain;
+
+interface
+
+{$HPPEMIT '#include ' }
+
+uses
+ Windows;
+
+{***************************************************************************
+ * TWAIN Version *
+ *************************************************************************** }
+
+const
+ TWON_PROTOCOLMINOR = 9; { Changed for Version 1.9 }
+ {$EXTERNALSYM TWON_PROTOCOLMINOR}
+ TWON_PROTOCOLMAJOR = 1;
+ {$EXTERNALSYM TWON_PROTOCOLMAJOR}
+
+{***************************************************************************
+ * Platform Dependent Definitions and Typedefs *
+ *************************************************************************** }
+
+type
+ TW_HANDLE = THandle;
+ {$EXTERNALSYM TW_HANDLE}
+ TTWHandle = TW_HANDLE;
+ TW_MEMREF = Pointer;
+ {$EXTERNALSYM TW_MEMREF}
+ TTWMemRef = TW_MEMREF;
+
+{***************************************************************************
+ * Type Definitions *
+ *************************************************************************** }
+
+{ String types. These include room for the strings and a NULL char, *
+* or, on the Mac, a length byte followed by the string. *
+* TW_STR255 must hold less than 256 chars so length fits in first byte. }
+type
+ TW_STR32 = array[0..33] of Char; // char TW_STR32[34]
+ {$EXTERNALSYM TW_STR32}
+ pTW_STR32 = ^TW_STR32;
+ {$EXTERNALSYM pTW_STR32}
+ TTWStr32 = TW_STR32;
+ PTWStr32 = pTW_STR32;
+
+ TW_STR64 = array[0..65] of Char; // char TW_STR64[66]
+ {$EXTERNALSYM TW_STR64}
+ pTW_STR64 = ^TW_STR64;
+ {$EXTERNALSYM pTW_STR64}
+ TTWStr64 = TW_STR64;
+ PTWStr64 = pTW_STR64;
+
+ TW_STR128 = array[0..129] of Char; // char TW_STR128[130]
+ {$EXTERNALSYM TW_STR128}
+ pTW_STR128 = ^TW_STR128;
+ {$EXTERNALSYM pTW_STR128}
+ TTWStr128 = TW_STR128;
+ PTWStr128 = pTW_STR128;
+
+ TW_STR255 = array[0..255] of Char; // char TW_STR255[256]
+ {$EXTERNALSYM TW_STR255}
+ pTW_STR255 = ^TW_STR255;
+ {$EXTERNALSYM pTW_STR255}
+ TTWStr255 = TW_STR255;
+ PTWStr255 = pTW_STR255;
+
+ TW_STR1024 = array[0..1025] of Char; // char TW_STR1024[1026]
+ {$EXTERNALSYM TW_STR1024}
+ pTW_STR1024 = ^TW_STR1024;
+ {$EXTERNALSYM pTW_STR1024}
+ TTWStr1024 = TW_STR1024; // added 1.9
+ PTWStr1024 = pTW_STR1024;
+
+ TW_UNI512 = array[0..511] of WideChar; // wchar_t TW_UNI512[512]
+ {$EXTERNALSYM TW_UNI512}
+ pTW_UNI512 = ^TW_UNI512;
+ {$EXTERNALSYM pTW_UNI512}
+ TTWUni512 = TW_UNI512; // added 1.9
+ PTWUni512 = pTW_UNI512;
+
+{ Numeric types. }
+ TW_INT8 = ShortInt; // char TW_INT8
+ {$EXTERNALSYM TW_INT8}
+ pTW_INT8 = ^TW_INT8;
+ {$EXTERNALSYM pTW_INT8}
+ TTWInt8 = TW_INT8;
+ PTWInt8 = pTW_INT8;
+
+ TW_INT16 = SmallInt; // short TW_INT16
+ {$EXTERNALSYM TW_INT16}
+ pTW_INT16 = ^TW_INT16;
+ {$EXTERNALSYM pTW_INT16}
+ TTWInt16 = TW_INT16;
+ PTWInt16 = pTW_INT16;
+
+ TW_INT32 = LongInt; // long TW_INT32
+ {$EXTERNALSYM TW_INT32}
+ pTW_INT32 = ^TW_INT32;
+ {$EXTERNALSYM pTW_INT32}
+ TTWInt32 = TW_INT32;
+ PTWInt32 = pTW_INT32;
+
+ TW_UINT8 = Byte; // unsigned char TW_UINT8
+ {$EXTERNALSYM TW_UINT8}
+ pTW_UINT8 = ^TW_UINT8;
+ {$EXTERNALSYM pTW_UINT8}
+ TTWUInt8 = TW_UINT8;
+ PTWUInt8 = pTW_UINT8;
+
+ TW_UINT16 = Word; // unsigned short TW_UINT16
+ {$EXTERNALSYM TW_UINT16}
+ pTW_UINT16 = ^TW_UINT16;
+ {$EXTERNALSYM pTW_UINT16}
+ TTWUInt16 = TW_UINT16;
+ PTWUInt16 = pTW_UINT16;
+
+ TW_UINT32 = ULONG; // unsigned long TW_UINT32
+ {$EXTERNALSYM TW_UINT32}
+ pTW_UINT32 = ^TW_UINT32;
+ {$EXTERNALSYM pTW_UINT32}
+ TTWUInt32 = TW_UINT32;
+ PTWUInt32 = pTW_UINT32;
+
+ TW_BOOL = WordBool; // unsigned short TW_BOOL
+ {$EXTERNALSYM TW_BOOL}
+ pTW_BOOL = ^TW_BOOL;
+ {$EXTERNALSYM pTW_BOOL}
+ TTWBool = TW_BOOL;
+ PTWBool = pTW_BOOL;
+
+{ Fixed point structure type. }
+type
+ TW_FIX32 = packed record
+ Whole: TW_INT16; { maintains the sign }
+ Frac: TW_UINT16;
+ end;
+ {$EXTERNALSYM TW_FIX32}
+ pTW_FIX32 = ^TW_FIX32;
+ {$EXTERNALSYM pTW_FIX32}
+
+ TTWFix32 = TW_Fix32;
+ PTWFix32 = pTW_FIX32;
+
+{***************************************************************************
+ * Structure Definitions *
+ *************************************************************************** }
+
+{ No DAT needed. }
+type
+ TW_CIEPOINT = packed record
+ X: TW_FIX32;
+ Y: TW_FIX32;
+ Z: TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_CIEPOINT}
+ pTW_CIEPOINT = ^TW_CIEPOINT;
+ {$EXTERNALSYM pTW_CIEPOINT}
+
+ TTWCiePoint = TW_CIEPOINT;
+ PTWCiePoint = pTW_CIEPOINT;
+
+
+{ No DAT needed. }
+ TW_DECODEFUNCTION = packed record
+ StartIn: TW_FIX32;
+ BreakIn: TW_FIX32;
+ EndIn: TW_FIX32;
+ StartOut: TW_FIX32;
+ BreakOut: TW_FIX32;
+ EndOut: TW_FIX32;
+ Gamma: TW_FIX32;
+ SampleCount: TW_FIX32; { if =0 use the gamma }
+ end;
+ {$EXTERNALSYM TW_DECODEFUNCTION}
+ pTW_DECODEFUNCTION = ^TW_DECODEFUNCTION;
+ {$EXTERNALSYM pTW_DECODEFUNCTION}
+
+ TTWDecodeFunction = TW_DECODEFUNCTION;
+ PTWDecodeFunction = pTW_DECODEFUNCTION;
+
+
+{ No DAT needed. }
+ TW_ELEMENT8 = packed record
+ Index: TW_UINT8; { Value used to index into the color table. }
+ Channel1: TW_UINT8; { First tri-stimulus value (e.g Red) }
+ Channel2: TW_UINT8; { Second tri-stimulus value (e.g Green) }
+ Channel3: TW_UINT8; { Third tri-stimulus value (e.g Blue) }
+ end;
+ {$EXTERNALSYM TW_ELEMENT8}
+ pTW_ELEMENT8 = ^TW_ELEMENT8;
+ {$EXTERNALSYM pTW_ELEMENT8}
+
+ TTWElement8 = TW_ELEMENT8;
+ PTWElement8 = pTW_ELEMENT8;
+
+{ No DAT. Defines a frame rectangle in ICAP_UNITS coordinates. }
+ TW_FRAME = packed record
+ Left: TW_FIX32;
+ Top: TW_FIX32;
+ Right: TW_FIX32;
+ Bottom: TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_FRAME}
+ pTW_FRAME = ^TW_FRAME;
+ {$EXTERNALSYM pTW_FRAME}
+
+ PTWFrame = pTW_FRAME;
+ TTWFrame = TW_FRAME;
+
+
+{ No DAT needed. Used to manage memory buffers. }
+ TW_MEMORY = packed record
+ Flags: TW_UINT32; { Any combination of the TWMF_ constants. }
+ Length: TW_UINT32; { Number of bytes stored in buffer TheMem. }
+ TheMem: TW_MEMREF; { Pointer or handle to the allocated memory buffer. }
+ end;
+ {$EXTERNALSYM TW_MEMORY}
+ pTW_MEMORY = ^TW_MEMORY;
+ {$EXTERNALSYM pTW_MEMORY}
+
+ TTWMemory = TW_MEMORY;
+ PTWMemory = pTW_MEMORY;
+
+
+{ No DAT needed. }
+ TW_TRANSFORMSTAGE = packed record
+ Decode: array[0..2] of TW_DECODEFUNCTION;
+ Mix: array[0..2, 0..2] of TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_TRANSFORMSTAGE}
+ pTW_TRANSFORMSTAGE = ^TW_TRANSFORMSTAGE;
+ {$EXTERNALSYM pTW_TRANSFORMSTAGE}
+
+ TTWTransformStage = TW_TRANSFORMSTAGE;
+ PTWTransformStage = pTW_TRANSFORMSTAGE;
+
+{ No DAT needed. Describes version of software currently running. }
+ TW_VERSION = packed record
+ MajorNum: TW_UINT16; { Major revision number of the software. }
+ MinorNum: TW_UINT16; { Incremental revision number of the software. }
+ Language: TW_UINT16; { e.g. TWLG_SWISSFRENCH }
+ Country: TW_UINT16; { e.g. TWCY_SWITZERLAND }
+ Info: TW_STR32; { e.g. "1.0b3 Beta release" }
+ end;
+ {$EXTERNALSYM TW_VERSION}
+ pTW_VERSION = ^TW_VERSION;
+ {$EXTERNALSYM pTW_VERSION}
+
+ PTWVersion = pTW_VERSION;
+ TTWVersion = TW_VERSION;
+
+{ TWON_ARRAY. Container for array of values (a simplified TW_ENUMERATION) }
+ TW_ARRAY = packed record
+ ItemType: TW_UINT16;
+ NumItems: TW_UINT32; { How many items in ItemList }
+ ItemList: array[0..1] of TW_UINT8; { Array of ItemType values starts here }
+ // UT: ..1 for alignment to 2 Byte Packing, so sizeof is correct
+ end;
+ {$EXTERNALSYM TW_ARRAY}
+ pTW_ARRAY = ^TW_ARRAY;
+ {$EXTERNALSYM pTW_ARRAY}
+
+ TTWArray = TW_ARRAY;
+ PTWArray = pTW_ARRAY;
+
+
+{ TWON_ENUMERATION. Container for a collection of values. }
+ TW_ENUMERATION = packed record
+ ItemType: TW_UINT16;
+ NumItems: TW_UINT32; { How many items in ItemList }
+ CurrentIndex: TW_UINT32; { Current value is in ItemList[CurrentIndex] }
+ DefaultIndex: TW_UINT32; { Powerup value is in ItemList[DefaultIndex] }
+ ItemList: array[0..1] of TW_UINT8; { Array of ItemType values starts here }
+ // UT: ..1 for alignment to 2 Byte Packing, so sizeof is correct
+ end;
+ {$EXTERNALSYM TW_ENUMERATION}
+ pTW_ENUMERATION = ^TW_ENUMERATION;
+ {$EXTERNALSYM pTW_ENUMERATION}
+
+ TTWEnumeration = TW_ENUMERATION;
+ PTWEnumeration = pTW_ENUMERATION;
+
+{ TWON_ONEVALUE. Container for one value. }
+ TW_ONEVALUE = packed record
+ ItemType: TW_UINT16;
+ Item: TW_UINT32;
+ end;
+ {$EXTERNALSYM TW_ONEVALUE}
+ pTW_ONEVALUE = ^TW_ONEVALUE;
+ {$EXTERNALSYM pTW_ONEVALUE}
+
+ TTWOneValue = TW_ONEVALUE;
+ PTWOneValue = pTW_ONEVALUE;
+
+{ TWON_RANGE. Container for a range of values. }
+ TW_RANGE = packed record
+ ItemType: TW_UINT16;
+ MinValue: TW_UINT32; { Starting value in the range. }
+ MaxValue: TW_UINT32; { Final value in the range. }
+ StepSize: TW_UINT32; { Increment from MinValue to MaxValue. }
+ DefaultValue: TW_UINT32; { Power-up value. }
+ CurrentValue: TW_UINT32; { The value that is currently in effect. }
+ end;
+ {$EXTERNALSYM TW_RANGE}
+ pTW_RANGE = ^TW_RANGE;
+ {$EXTERNALSYM pTW_RANGE}
+
+ TTWRange = TW_RANGE;
+ PTWRange = pTW_RANGE;
+
+{ DAT_CAPABILITY. Used by application to get/set capability from/in a data source. }
+ TW_CAPABILITY = packed record
+ Cap: TW_UINT16; { id of capability to set or get, e.g. CAP_BRIGHTNESS }
+ ConType: TW_UINT16; { TWON_ONEVALUE, _RANGE, _ENUMERATION or _ARRAY }
+ hContainer: TW_HANDLE;{ Handle to container of type Dat }
+ end;
+ {$EXTERNALSYM TW_CAPABILITY}
+ pTW_CAPABILITY = ^TW_CAPABILITY;
+ {$EXTERNALSYM pTW_CAPABILITY}
+
+ TTWCapability = TW_CAPABILITY;
+ PTWCapability = pTW_CAPABILITY;
+
+
+{ DAT_CIECOLOR. }
+ TW_CIECOLOR = packed record
+ ColorSpace: TW_UINT16;
+ LowEndian: TW_INT16;
+ DeviceDependent: TW_INT16;
+ VersionNumber: TW_INT32;
+ StageABC: TW_TRANSFORMSTAGE;
+ StageLMN: TW_TRANSFORMSTAGE;
+ WhitePoint: TW_CIEPOINT;
+ BlackPoint: TW_CIEPOINT;
+ WhitePaper: TW_CIEPOINT;
+ BlackInk: TW_CIEPOINT;
+ Samples: array[0..0] of TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_CIECOLOR}
+ pTW_CIECOLOR = ^TW_CIECOLOR;
+ {$EXTERNALSYM pTW_CIECOLOR}
+
+ TTWCieColor = TW_CIECOLOR;
+ PTWCieColor = pTW_CIECOLOR;
+
+{ DAT_EVENT. For passing events down from the application to the DS. }
+ TW_EVENT = packed record
+ pEvent: TW_MEMREF; { Windows pMSG or Mac pEvent. }
+ TWMessage: TW_UINT16; { TW msg from data source, e.g. MSG_XFERREADY }
+ end;
+ {$EXTERNALSYM TW_EVENT}
+ pTW_EVENT = ^TW_EVENT;
+ {$EXTERNALSYM pTW_EVENT}
+
+ TTWEvent = TW_EVENT;
+ PTWEvent = pTW_EVENT;
+
+{ DAT_GRAYRESPONSE }
+ TW_GRAYRESPONSE = packed record
+ Response: array[0..0] of TW_ELEMENT8;
+ end;
+ {$EXTERNALSYM TW_GRAYRESPONSE}
+ pTW_GRAYRESPONSE = ^TW_GRAYRESPONSE;
+ {$EXTERNALSYM pTW_GRAYRESPONSE}
+
+ TTWGrayResponse = TW_GRAYRESPONSE;
+ PTWGrayResponse = pTW_GRAYRESPONSE;
+
+{ DAT_IDENTITY. Identifies the program/library/code resource. }
+ TW_IDENTITY = packed record
+ Id: TW_UINT32; { Unique number. In Windows, application hWnd }
+ Version: TW_VERSION ; { Identifies the piece of code }
+ ProtocolMajor: TW_UINT16; { Application and DS must set to TWON_PROTOCOLMAJOR }
+ ProtocolMinor: TW_UINT16; { Application and DS must set to TWON_PROTOCOLMINOR }
+ SupportedGroups: TW_UINT32; { Bit field OR combination of DG_ constants }
+ Manufacturer: TW_STR32; { Manufacturer name, e.g. "Hewlett-Packard" }
+ ProductFamily: TW_STR32; { Product family name, e.g. "ScanJet" }
+ ProductName: TW_STR32; { Product name, e.g. "ScanJet Plus" }
+ end;
+ {$EXTERNALSYM TW_IDENTITY}
+ pTW_IDENTITY = ^TW_IDENTITY;
+ {$EXTERNALSYM pTW_IDENTITY}
+
+ TTWIdentity = TW_IDENTITY;
+ PTWIdentity = pTW_IDENTITY;
+
+{ DAT_IMAGEINFO. Application gets detailed image info from DS with this. }
+ TW_IMAGEINFO = packed record
+ XResolution: TW_FIX32; { Resolution in the horizontal }
+ YResolution: TW_FIX32; { Resolution in the vertical }
+ ImageWidth: TW_INT32; { Columns in the image, -1 if unknown by DS }
+ ImageLength: TW_INT32; { Rows in the image, -1 if unknown by DS }
+ SamplesPerPixel: TW_INT16; { Number of samples per pixel, 3 for RGB }
+ BitsPerSample: array[0..7] of TW_INT16; { Number of bits for each sample }
+ BitsPerPixel: TW_INT16; { Number of bits for each padded pixel }
+ Planar: TW_BOOL; { True if Planar, False if chunky }
+ PixelType: TW_INT16; { How to interp data: ; photo interp (TWPT_) }
+ Compression: TW_UINT16; { How the data is compressed (TWCP_xxxx) }
+ end;
+ {$EXTERNALSYM TW_IMAGEINFO}
+ pTW_IMAGEINFO = ^TW_IMAGEINFO;
+ {$EXTERNALSYM pTW_IMAGEINFO}
+
+ TTWImageInfo = TW_IMAGEINFO;
+ PTWImageInfo = pTW_IMAGEINFO;
+
+{ DAT_IMAGELAYOUT. Provides image layout information in current units. }
+ TW_IMAGELAYOUT = packed record
+ Frame: TW_FRAME; { Frame coords within larger document }
+ DocumentNumber: TW_UINT32;
+ PageNumber: TW_UINT32; { Reset when you go to next document }
+ FrameNumber: TW_UINT32; { Reset when you go to next page }
+ end;
+ {$EXTERNALSYM TW_IMAGELAYOUT}
+ pTW_IMAGELAYOUT = ^TW_IMAGELAYOUT;
+ {$EXTERNALSYM pTW_IMAGELAYOUT}
+
+ TTWImageLayout = TW_IMAGELAYOUT;
+ PTWImageLayout = pTW_IMAGELAYOUT;
+
+{ DAT_IMAGEMEMXFER. Used to pass image data (e.g. in strips) from DS to application. }
+ TW_IMAGEMEMXFER = packed record
+ Compression: TW_UINT16; { How the data is compressed }
+ BytesPerRow: TW_UINT32; { Number of bytes in a row of data }
+ Columns: TW_UINT32; { How many columns }
+ Rows: TW_UINT32; { How many rows }
+ XOffset: TW_UINT32; { How far from the side of the image }
+ YOffset: TW_UINT32; { How far from the top of the image }
+ BytesWritten: TW_UINT32;{ How many bytes written in Memory }
+ Memory: TW_MEMORY; { Mem struct used to pass actual image data }
+ end;
+ {$EXTERNALSYM TW_IMAGEMEMXFER}
+ pTW_IMAGEMEMXFER = ^TW_IMAGEMEMXFER;
+ {$EXTERNALSYM pTW_IMAGEMEMXFER}
+
+ TTWImageMemXFER = TW_IMAGEMEMXFER;
+ PTWImageMemXFER = pTW_IMAGEMEMXFER;
+
+{ Changed in 1.1: QuantTable, HuffmanDC, HuffmanAC TW_MEMREF -> TW_MEMORY }
+{ DAT_JPEGCOMPRESSION. Based on JPEG Draft International Std, ver 10918-1. }
+ TW_JPEGCOMPRESSION = packed record
+ ColorSpace: TW_UINT16; { One of the TWPT_xxxx values }
+ SubSampling: TW_UINT32; { Two word "array" for subsampling values }
+ NumComponents: TW_UINT16; { Number of color components in image }
+ RestartFrequency: TW_UINT16; { Frequency of restart marker codes in MDU's }
+ QuantMap: array[0..3] of TW_UINT16; { Mapping of components to QuantTables }
+ QuantTable: array[0..3] of TW_MEMORY; { Quantization tables }
+ HuffmanMap: array[0..3] of TW_UINT16; { Mapping of components to Huffman tables }
+ HuffmanDC: array[0..1] of TW_MEMORY; { DC Huffman tables }
+ HuffmanAC: array[0..1] of TW_MEMORY; { AC Huffman tables }
+ end;
+ {$EXTERNALSYM TW_JPEGCOMPRESSION}
+ pTW_JPEGCOMPRESSION = ^TW_JPEGCOMPRESSION;
+ {$EXTERNALSYM pTW_JPEGCOMPRESSION}
+
+ TTWJPEGCompression = TW_JPEGCOMPRESSION;
+ PTWJPEGCompression = pTW_JPEGCOMPRESSION;
+
+{ DAT_PALETTE8. Color palette when TWPT_PALETTE pixels xfer'd in mem buf. }
+ TW_PALETTE8 = packed record
+ NumColors: TW_UINT16; { Number of colors in the color table. }
+ PaletteType: TW_UINT16; { TWPA_xxxx, specifies type of palette. }
+ Colors: array[0..255] of TW_ELEMENT8; { Array of palette values starts here. }
+ end;
+ {$EXTERNALSYM TW_PALETTE8}
+ pTW_PALETTE8 = ^TW_PALETTE8;
+ {$EXTERNALSYM pTW_PALETTE8}
+
+ TTWPalette8 = TW_PALETTE8;
+ PTWPalette8 = pTW_PALETTE8;
+
+{ DAT_PENDINGXFERS. Used with MSG_ENDXFER to indicate additional data. }
+ TW_PENDINGXFERS = packed record
+ Count: TW_UINT16;
+ case boolean of
+ False: (EOJ: TW_UINT32);
+ True: (Reserved: TW_UINT32);
+ end;
+ {$EXTERNALSYM TW_PENDINGXFERS}
+ pTW_PENDINGXFERS = ^TW_PENDINGXFERS;
+ {$EXTERNALSYM pTW_PENDINGXFERS}
+
+ TTWPendingXFERS = TW_PENDINGXFERS;
+ PTWPendingXFERS = pTW_PENDINGXFERS;
+
+
+{ DAT_RGBRESPONSE }
+ TW_RGBRESPONSE = packed record
+ Response: array[0..0] of TW_ELEMENT8;
+ end;
+ {$EXTERNALSYM TW_RGBRESPONSE}
+ pTW_RGBRESPONSE = ^TW_RGBRESPONSE;
+ {$EXTERNALSYM pTW_RGBRESPONSE}
+
+ TTWRGBResponse = TW_RGBRESPONSE;
+ PTWRGBResponse = pTW_RGBRESPONSE;
+
+{ DAT_SETUPFILEXFER. Sets up DS to application data transfer via a file. }
+ TW_SETUPFILEXFER = packed record
+ FileName: TW_STR255;
+ Format: TW_UINT16; { Any TWFF_ constant }
+ VRefNum: TW_INT16; { Used for Mac only }
+ end;
+ {$EXTERNALSYM TW_SETUPFILEXFER}
+ pTW_SETUPFILEXFER = ^TW_SETUPFILEXFER;
+ {$EXTERNALSYM pTW_SETUPFILEXFER}
+
+ TTWSetupFileXFER = TW_SETUPFILEXFER;
+ PTWSetupFileXFER = pTW_SETUPFILEXFER;
+
+
+{ DAT_SETUPFILEXFER2. Sets up DS to application data transfer via a file. }
+{ Added 1.9 }
+ TW_SETUPFILEXFER2 = packed record
+ FileName: TW_MEMREF; { Pointer to file name text }
+ FileNameType: TW_UINT16; { TWTY_STR1024 or TWTY_UNI512 }
+ Format: TW_UINT16; { Any TWFF_ constant }
+ VRefNum: TW_INT16; { Used for Mac only }
+ parID: TW_UINT32; { Used for Mac only }
+ end;
+ {$EXTERNALSYM pTW_SETUPFILEXFER2}
+ pTW_SETUPFILEXFER2 = ^TW_SETUPFILEXFER2;
+ {$EXTERNALSYM pTW_SETUPFILEXFER2}
+
+ TTWSetupFileXFER2 = TW_SETUPFILEXFER2;
+ PTWSetupFileXFER2 = pTW_SETUPFILEXFER2;
+
+
+{ DAT_SETUPMEMXFER. Sets up DS to application data transfer via a memory buffer. }
+ TW_SETUPMEMXFER = packed record
+ MinBufSize: TW_UINT32;
+ MaxBufSize: TW_UINT32;
+ Preferred: TW_UINT32;
+ end;
+ {$EXTERNALSYM TW_SETUPMEMXFER}
+ pTW_SETUPMEMXFER = ^TW_SETUPMEMXFER;
+ {$EXTERNALSYM pTW_SETUPMEMXFER}
+
+ TTWSetupMemXFER = TW_SETUPMEMXFER;
+ PTWSetupMemXFER = pTW_SETUPMEMXFER;
+
+{ DAT_STATUS. Application gets detailed status info from a data source with this. }
+ TW_STATUS = packed record
+ ConditionCode: TW_UINT16; { Any TWCC_ constant }
+ Reserved: TW_UINT16; { Future expansion space }
+ end;
+ {$EXTERNALSYM TW_STATUS}
+ pTW_STATUS = ^TW_STATUS;
+ {$EXTERNALSYM pTW_STATUS}
+
+ TTWStatus = TW_STATUS;
+ PTWStatus = pTW_STATUS;
+
+{ DAT_USERINTERFACE. Coordinates UI between application and data source. }
+ TW_USERINTERFACE = packed record
+ ShowUI: TW_BOOL; { TRUE if DS should bring up its UI }
+ ModalUI: TW_BOOL; { For Mac only - true if the DS's UI is modal }
+ hParent: TW_HANDLE; { For windows only - Application window handle }
+ end;
+ {$EXTERNALSYM TW_USERINTERFACE}
+ pTW_USERINTERFACE = ^TW_USERINTERFACE;
+ {$EXTERNALSYM pTW_USERINTERFACE}
+
+ TTWUserInterface = TW_USERINTERFACE;
+ PTWUserInterface = pTW_USERINTERFACE;
+
+{ SDH - 03/21/95 - TWUNK }
+{ DAT_TWUNKIDENTITY. Provides DS identity and 'other' information necessary }
+{ across thunk link. }
+ TW_TWUNKIDENTITY = packed record
+ identity: TW_IDENTITY; { Identity of data source. }
+ dsPath: TW_STR255; { Full path and file name of data source. }
+ end;
+ {$EXTERNALSYM TW_TWUNKIDENTITY}
+ pTW_TWUNKIDENTITY = ^TW_TWUNKIDENTITY;
+ {$EXTERNALSYM pTW_TWUNKIDENTITY}
+
+ TTWTwunkIdentity = TW_TWUNKIDENTITY;
+ PTWTwunkIdentity = pTW_TWUNKIDENTITY;
+
+{ SDH - 03/21/95 - TWUNK }
+{ Provides DS_Entry parameters over thunk link. }
+ TW_TWUNKDSENTRYPARAMS = packed record
+ destFlag: TW_INT8; { TRUE if dest is not NULL }
+ alignment: TW_INT8; // UT: Packed to two byte alignment
+ dest: TW_IDENTITY; { Identity of data source (if used) }
+ dataGroup: TW_INT32; { DSM_Entry dataGroup parameter }
+ dataArgType: TW_INT16; { DSM_Entry dataArgType parameter }
+ message: TW_INT16; { DSM_Entry message parameter }
+ pDataSize: TW_INT32; { Size of pData (0 if NULL) }
+ //pData: TW_MEMREF; { Based on implementation specifics, a }
+ { pData parameter makes no sense in this }
+ { structure, but data (if provided) will be }
+ { appended in the data block. }
+ end;
+ {$EXTERNALSYM TW_TWUNKDSENTRYPARAMS}
+ pTW_TWUNKDSENTRYPARAMS = ^TW_TWUNKDSENTRYPARAMS;
+ {$EXTERNALSYM pTW_TWUNKDSENTRYPARAMS}
+
+ TTWTwunkDSEntryParams = TW_TWUNKDSENTRYPARAMS;
+ PTWTwunkDSEntryParams = pTW_TWUNKDSENTRYPARAMS;
+
+{ SDH - 03/21/95 - TWUNK }
+{ Provides DS_Entry results over thunk link. }
+ TW_TWUNKDSENTRYRETURN = packed record
+ returnCode: TW_UINT16; { Thunker DsEntry return code. }
+ conditionCode: TW_UINT16; { Thunker DsEntry condition code. }
+ pDataSize: TW_INT32; { Size of pData (0 if NULL) }
+ //pData: TW_MEMREF; { Based on implementation specifics, a }
+ { pData parameter makes no sense in this }
+ { structure, but data (if provided) will be }
+ { appended in the data block. }
+ end;
+ {$EXTERNALSYM TW_TWUNKDSENTRYRETURN}
+ pTW_TWUNKDSENTRYRETURN = ^TW_TWUNKDSENTRYRETURN;
+ {$EXTERNALSYM pTW_TWUNKDSENTRYRETURN}
+
+ TTWTwunkDSEntryReturn = TW_TWUNKDSENTRYRETURN;
+ PTWTwunkDSEntryReturn = pTW_TWUNKDSENTRYRETURN;
+
+{ WJD - 950818 }
+{ Added for 1.6 Specification }
+{ TWAIN 1.6 CAP_SUPPORTEDCAPSEXT structure }
+ TW_CAPEXT = packed record
+ Cap: TW_UINT16; { Which CAP/ICAP info is relevant to }
+ Properties: TW_UINT16; { Messages this CAP/ICAP supports }
+ end;
+ {$EXTERNALSYM TW_CAPEXT}
+ pTW_CAPEXT = ^TW_CAPEXT;
+ {$EXTERNALSYM pTW_CAPEXT}
+
+ TTWCapExt = TW_CAPEXT;
+ PTWCapExt = pTW_CAPEXT;
+
+{ -----------------------------------------------------------------------
+
+ Version 1.7: Added Following data structure for Document Imaging
+ July 1997 Enhancement.
+ KHL TW_CUSTOMDSDATA -- For Saving and Restoring Source's
+ state.
+ TW_INFO -- Each attribute for extended image
+ information.
+ TW_EXTIMAGEINFO -- Extended image information structure.
+
+ ----------------------------------------------------------------------- }
+
+ TW_CUSTOMDSDATA = packed record
+ InfoLength: TW_UINT32; { Length of Information in bytes. }
+ hData: TW_HANDLE; { Place holder for data, DS Allocates }
+ end;
+ {$EXTERNALSYM TW_CUSTOMDSDATA}
+ pTW_CUSTOMDSDATA = ^TW_CUSTOMDSDATA;
+ {$EXTERNALSYM pTW_CUSTOMDSDATA}
+
+ TTWCustomDSData = TW_CUSTOMDSDATA;
+ PTWCustomDSData = pTW_CUSTOMDSDATA;
+
+ TW_INFO = packed record
+ InfoID: TW_UINT16;
+ ItemType: TW_UINT16;
+ NumItems: TW_UINT16;
+ CondCode: TW_UINT16;
+ Item: TW_UINT32;
+ end;
+ {$EXTERNALSYM TW_INFO}
+ pTW_INFO = ^TW_INFO;
+ {$EXTERNALSYM pTW_INFO}
+
+ TTWInfo = TW_INFO;
+ PTWInfo = pTW_INFO;
+
+ TW_EXTIMAGEINFO = packed record
+ NumInfos: TW_UINT32;
+ Info: array[0..0] of TW_INFO;
+ end;
+ {$EXTERNALSYM TW_EXTIMAGEINFO}
+ pTW_EXTIMAGEINFO = ^TW_EXTIMAGEINFO;
+ {$EXTERNALSYM pTW_EXTIMAGEINFO}
+
+ TTWExtImageInfo = TW_EXTIMAGEINFO;
+ PTWExtImageInfo = pTW_EXTIMAGEINFO;
+
+{ Added 1.8 }
+
+{ DAT_AUDIOINFO, information about audio data }
+ TW_AUDIOINFO = packed record
+ Name: TW_STR255; { name of audio data }
+ Reserved: TW_UINT32; { reserved space }
+ end;
+ {$EXTERNALSYM TW_AUDIOINFO}
+ pTW_AUDIOINFO = ^TW_AUDIOINFO;
+ {$EXTERNALSYM pTW_AUDIOINFO}
+
+ TTWAudioInfo = TW_AUDIOINFO;
+ PTWAudioInfo = pTW_AUDIOINFO;
+
+{ DAT_DEVICEEVENT, information about events }
+ TW_DEVICEEVENT = packed record
+ Event: TW_UINT32; { One of the TWDE_xxxx values. }
+ DeviceName: TW_STR255; { The name of the device that generated the event }
+ BatteryMinutes: TW_UINT32; { Battery Minutes Remaining }
+ BatteryPercentage: TW_INT16; { Battery Percentage Remaining }
+ PowerSupply: TW_INT32; { Power Supply }
+ XResolution: TW_FIX32; { Resolution }
+ YResolution: TW_FIX32; { Resolution }
+ FlashUsed2: TW_UINT32; { Flash Used2 }
+ AutomaticCapture: TW_UINT32; { Automatic Capture }
+ TimeBeforeFirstCapture: TW_UINT32; { Automatic Capture }
+ TimeBetweenCaptures: TW_UINT32; { Automatic Capture }
+ end;
+ {$EXTERNALSYM TW_DEVICEEVENT}
+ pTW_DEVICEEVENT = ^TW_DEVICEEVENT;
+ {$EXTERNALSYM pTW_DEVICEEVENT}
+
+ TTWDeviceEvent = TW_DEVICEEVENT;
+ PTWDeviceEvent = pTW_DEVICEEVENT;
+
+{ DAT_FILESYSTEM, information about TWAIN file system }
+ TW_FILESYSTEM = packed record
+ { DG_CONTROL / DAT_FILESYSTEM / MSG_xxxx fields }
+ InputName: TW_STR255; { The name of the input or source file }
+ OutputName: TW_STR255; { The result of an operation or the name of a destination file }
+ Context: TW_MEMREF; { Source specific data used to remember state information }
+ { DG_CONTROL / DAT_FILESYSTEM / MSG_DELETE field }
+ Recursive: Integer;{int} { recursively delete all sub-directories }
+ { DG_CONTROL / DAT_FILESYSTEM / MSG_GETINFO fields }
+ FileType: TW_INT32; { One of the TWFT_xxxx values }
+ Size: TW_UINT32; { Size of current FileType }
+ CreateTimeDate: TW_STR32; { creation date of the file }
+ ModifiedTimeDate: TW_STR32;{ last date the file was modified }
+ FreeSpace: TW_UINT32; { bytes of free space on the current device }
+ NewImageSize: TW_INT32; { estimate of the amount of space a new image would take up }
+ NumberOfFiles: TW_UINT32; { number of files, depends on FileType }
+ NumberOfSnippets: TW_UINT32; { number of audio snippets }
+ DeviceGroupMask: TW_UINT32; { used to group cameras (ex: front/rear bitonal, front/rear grayscale...) }
+ Reserved: array[0..507] of Char; { }
+ end;
+ {$EXTERNALSYM TW_FILESYSTEM}
+ pTW_FILESYSTEM = ^TW_FILESYSTEM;
+ {$EXTERNALSYM pTW_FILESYSTEM}
+
+ TTWFileSystem = TW_FILESYSTEM;
+ PTWFileSystem = pTW_FILESYSTEM;
+
+{ DAT_PASSTHRU, device dependant data to pass through Data Source }
+ TW_PASSTHRU = packed record
+ pCommand: TW_MEMREF; { Pointer to Command buffer }
+ CommandBytes: TW_UINT32; { Number of bytes in Command buffer }
+ Direction: TW_INT32; { One of the TWDR_xxxx values. Defines the direction of data flow }
+ pData: TW_MEMREF; { Pointer to Data buffer }
+ DataBytes: TW_UINT32; { Number of bytes in Data buffer }
+ DataBytesXfered: TW_UINT32; { Number of bytes successfully transferred }
+ end;
+ {$EXTERNALSYM TW_PASSTHRU}
+ pTW_PASSTHRU = ^TW_PASSTHRU;
+ {$EXTERNALSYM pTW_PASSTHRU}
+
+ TTWPassThru = TW_PASSTHRU;
+ PTWPassThru = pTW_PASSTHRU;
+
+{ DAT_SETUPAUDIOFILEXFER, information required to setup an audio file transfer }
+ TW_SETUPAUDIOFILEXFER = packed record
+ FileName: TW_STR255; { full path target file }
+ Format: TW_UINT16; { one of TWAF_xxxx }
+ VRefNum: TW_INT16;
+ end;
+ {$EXTERNALSYM TW_SETUPAUDIOFILEXFER}
+ pTW_SETUPAUDIOFILEXFER = ^TW_SETUPAUDIOFILEXFER;
+ {$EXTERNALSYM pTW_SETUPAUDIOFILEXFER}
+
+ TTWSetupAudioFileXFER = TW_SETUPAUDIOFILEXFER;
+ PTWSetupAudioFileXFER = pTW_SETUPAUDIOFILEXFER;
+
+{***************************************************************************
+ * Generic Constants *
+ *************************************************************************** }
+const
+ TWON_ARRAY = 3; { indicates TW_ARRAY container }
+ {$EXTERNALSYM TWON_ARRAY}
+ TWON_ENUMERATION = 4; { indicates TW_ENUMERATION container }
+ {$EXTERNALSYM TWON_ENUMERATION}
+ TWON_ONEVALUE = 5; { indicates TW_ONEVALUE container }
+ {$EXTERNALSYM TWON_ONEVALUE}
+ TWON_RANGE = 6; { indicates TW_RANGE container }
+ {$EXTERNALSYM TWON_RANGE}
+
+ TWON_ICONID = 962; { res Id of icon used in USERSELECT lbox }
+ {$EXTERNALSYM TWON_ICONID}
+ TWON_DSMID = 461; { res Id of the DSM version num resource }
+ {$EXTERNALSYM TWON_DSMID}
+ TWON_DSMCODEID = 63; { res Id of the Mac SM Code resource }
+ {$EXTERNALSYM TWON_DSMCODEID}
+
+ TWON_DONTCARE8 = $ff;
+ {$EXTERNALSYM TWON_DONTCARE8}
+ TWON_DONTCARE16 = $ffff;
+ {$EXTERNALSYM TWON_DONTCARE16}
+ TWON_DONTCARE32 = DWORD($ffffffff);
+ {$EXTERNALSYM TWON_DONTCARE32}
+
+{ Flags used in TW_MEMORY structure. }
+ TWMF_APPOWNS = $1;
+ {$EXTERNALSYM TWMF_APPOWNS}
+ TWMF_DSMOWNS = $2;
+ {$EXTERNALSYM TWMF_DSMOWNS}
+ TWMF_DSOWNS = $4;
+ {$EXTERNALSYM TWMF_DSOWNS}
+ TWMF_POINTER = $8;
+ {$EXTERNALSYM TWMF_POINTER}
+ TWMF_HANDLE = $10;
+ {$EXTERNALSYM TWMF_HANDLE}
+
+{ Palette types for TW_PALETTE8 }
+ TWPA_RGB = 0;
+ {$EXTERNALSYM TWPA_RGB}
+ TWPA_GRAY = 1;
+ {$EXTERNALSYM TWPA_GRAY}
+ TWPA_CMY = 2;
+ {$EXTERNALSYM TWPA_CMY}
+
+{ There are four containers used for capabilities negotiation:
+ * TWON_ONEVALUE, TWON_RANGE, TWON_ENUMERATION, TWON_ARRAY
+ * In each container structure ItemType can be TWTY_INT8, TWTY_INT16, etc.
+ * The kind of data stored in the container can be determined by doing
+ * DCItemSize[ItemType] where the following is defined in TWAIN glue code:
+ * DCItemSize[]= sizeof(TW_INT8),
+ * sizeof(TW_INT16),
+ * etc.
+ * sizeof(TW_UINT32) : ;
+ *
+ }
+
+ TWTY_INT8 = $0000; { Means Item is a TW_INT8 }
+ {$EXTERNALSYM TWTY_INT8}
+ TWTY_INT16 = $0001; { Means Item is a TW_INT16 }
+ {$EXTERNALSYM TWTY_INT16}
+ TWTY_INT32 = $0002; { Means Item is a TW_INT32 }
+ {$EXTERNALSYM TWTY_INT32}
+
+ TWTY_UINT8 = $0003; { Means Item is a TW_UINT8 }
+ {$EXTERNALSYM TWTY_UINT8}
+ TWTY_UINT16 = $0004; { Means Item is a TW_UINT16 }
+ {$EXTERNALSYM TWTY_UINT16}
+ TWTY_UINT32 = $0005; { Means Item is a TW_UINT32 }
+ {$EXTERNALSYM TWTY_UINT32}
+
+ TWTY_BOOL = $0006; { Means Item is a TW_BOOL }
+ {$EXTERNALSYM TWTY_BOOL}
+
+ TWTY_FIX32 = $0007; { Means Item is a TW_FIX32 }
+ {$EXTERNALSYM TWTY_FIX32}
+
+ TWTY_FRAME = $0008; { Means Item is a TW_FRAME }
+ {$EXTERNALSYM TWTY_FRAME}
+
+ TWTY_STR32 = $0009; { Means Item is a TW_STR32 }
+ {$EXTERNALSYM TWTY_STR32}
+ TWTY_STR64 = $000a; { Means Item is a TW_STR64 }
+ {$EXTERNALSYM TWTY_STR64}
+ TWTY_STR128 = $000b; { Means Item is a TW_STR128 }
+ {$EXTERNALSYM TWTY_STR128}
+ TWTY_STR255 = $000c; { Means Item is a TW_STR255 }
+ {$EXTERNALSYM TWTY_STR255}
+ TWTY_STR1024 = $000d; { Means Item is a TW_STR1024...added 1.9 }
+ {$EXTERNALSYM TWTY_STR1024}
+ TWTY_UNI512 = $000e; { Means Item is a TW_UNI512...added 1.9 }
+ {$EXTERNALSYM TWTY_UNI512}
+
+{***************************************************************************
+ * Capability Constants *
+ *************************************************************************** }
+
+{ ICAP_BITORDER values (BO_ means Bit Order) }
+ TWBO_LSBFIRST = 0;
+ {$EXTERNALSYM TWBO_LSBFIRST}
+ TWBO_MSBFIRST = 1;
+ {$EXTERNALSYM TWBO_MSBFIRST}
+
+{ ICAP_COMPRESSION values (CP_ means ComPression ) }
+ TWCP_NONE = 0;
+ {$EXTERNALSYM TWCP_NONE}
+ TWCP_PACKBITS = 1;
+ {$EXTERNALSYM TWCP_PACKBITS}
+ TWCP_GROUP31D = 2; { Follows CCITT spec (no End Of Line) }
+ {$EXTERNALSYM TWCP_GROUP31D}
+ TWCP_GROUP31DEOL= 3; { Follows CCITT spec (has End Of Line) }
+ {$EXTERNALSYM TWCP_GROUP31DEOL}
+ TWCP_GROUP32D = 4; { Follows CCITT spec (use cap for K Factor) }
+ {$EXTERNALSYM TWCP_GROUP32D}
+ TWCP_GROUP4 = 5; { Follows CCITT spec }
+ {$EXTERNALSYM TWCP_GROUP4}
+ TWCP_JPEG = 6; { Use capability for more info }
+ {$EXTERNALSYM TWCP_JPEG}
+ TWCP_LZW = 7; { Must license from Unisys and IBM to use }
+ {$EXTERNALSYM TWCP_LZW}
+ TWCP_JBIG = 8; { For Bitonal images -- Added 1.7 KHL }
+ {$EXTERNALSYM TWCP_JBIG}
+
+{ Added 1.8 }
+ TWCP_PNG = 9;
+ {$EXTERNALSYM TWCP_PNG}
+ TWCP_RLE4 = 10;
+ {$EXTERNALSYM TWCP_RLE4}
+ TWCP_RLE8 = 11;
+ {$EXTERNALSYM TWCP_RLE8}
+ TWCP_BITFIELDS = 12;
+ {$EXTERNALSYM TWCP_BITFIELDS}
+
+
+{ ICAP_IMAGEFILEFORMAT values (FF_means File Format) }
+ TWFF_TIFF = 0; { Tagged Image File Format }
+ {$EXTERNALSYM TWFF_TIFF}
+ TWFF_PICT = 1; { Macintosh PICT }
+ {$EXTERNALSYM TWFF_PICT}
+ TWFF_BMP = 2; { Windows Bitmap }
+ {$EXTERNALSYM TWFF_BMP}
+ TWFF_XBM = 3; { X-Windows Bitmap }
+ {$EXTERNALSYM TWFF_XBM}
+ TWFF_JFIF = 4; { JPEG File Interchange Format }
+ {$EXTERNALSYM TWFF_JFIF}
+ TWFF_FPX = 5; { Flash Pix }
+ {$EXTERNALSYM TWFF_FPX}
+ TWFF_TIFFMULTI= 6; { Multi-page tiff file }
+ {$EXTERNALSYM TWFF_TIFFMULTI}
+ TWFF_PNG = 7;
+ {$EXTERNALSYM TWFF_PNG}
+ TWFF_SPIFF = 8;
+ {$EXTERNALSYM TWFF_SPIFF}
+ TWFF_EXIF = 9;
+ {$EXTERNALSYM TWFF_EXIF}
+
+
+{ ICAP_FILTER values (FT_ means Filter Type) }
+ TWFT_RED = 0;
+ {$EXTERNALSYM TWFT_RED}
+ TWFT_GREEN = 1;
+ {$EXTERNALSYM TWFT_GREEN}
+ TWFT_BLUE = 2;
+ {$EXTERNALSYM TWFT_BLUE}
+ TWFT_NONE = 3;
+ {$EXTERNALSYM TWFT_NONE}
+ TWFT_WHITE = 4;
+ {$EXTERNALSYM TWFT_WHITE}
+ TWFT_CYAN = 5;
+ {$EXTERNALSYM TWFT_CYAN}
+ TWFT_MAGENTA = 6;
+ {$EXTERNALSYM TWFT_MAGENTA}
+ TWFT_YELLOW = 7;
+ {$EXTERNALSYM TWFT_YELLOW}
+ TWFT_BLACK = 8;
+ {$EXTERNALSYM TWFT_BLACK}
+
+{ ICAP_LIGHTPATH values (LP_ means Light Path) }
+ TWLP_REFLECTIVE = 0;
+ {$EXTERNALSYM TWLP_REFLECTIVE}
+ TWLP_TRANSMISSIVE = 1;
+ {$EXTERNALSYM TWLP_TRANSMISSIVE}
+
+{ ICAP_LIGHTSOURCE values (LS_ means Light Source) }
+ TWLS_RED = 0;
+ {$EXTERNALSYM TWLS_RED}
+ TWLS_GREEN = 1;
+ {$EXTERNALSYM TWLS_GREEN}
+ TWLS_BLUE = 2;
+ {$EXTERNALSYM TWLS_BLUE}
+ TWLS_NONE = 3;
+ {$EXTERNALSYM TWLS_NONE}
+ TWLS_WHITE = 4;
+ {$EXTERNALSYM TWLS_WHITE}
+ TWLS_UV = 5;
+ {$EXTERNALSYM TWLS_UV}
+ TWLS_IR = 6;
+ {$EXTERNALSYM TWLS_IR}
+
+{ ICAP_ORIENTATION values (OR_ means ORientation) }
+ TWOR_ROT0 = 0;
+ {$EXTERNALSYM TWOR_ROT0}
+ TWOR_ROT90 = 1;
+ {$EXTERNALSYM TWOR_ROT90}
+ TWOR_ROT180 = 2;
+ {$EXTERNALSYM TWOR_ROT180}
+ TWOR_ROT270 = 3;
+ {$EXTERNALSYM TWOR_ROT270}
+ TWOR_PORTRAIT = TWOR_ROT0;
+ {$EXTERNALSYM TWOR_PORTRAIT}
+ TWOR_LANDSCAPE= TWOR_ROT270;
+ {$EXTERNALSYM TWOR_LANDSCAPE}
+
+{ ICAP_PLANARCHUNKY values (PC_ means Planar/Chunky ) }
+ TWPC_CHUNKY = 0;
+ {$EXTERNALSYM TWPC_CHUNKY}
+ TWPC_PLANAR = 1;
+ {$EXTERNALSYM TWPC_PLANAR}
+
+{ ICAP_PIXELFLAVOR values (PF_ means Pixel Flavor) }
+ TWPF_CHOCOLATE = 0; { zero pixel represents darkest shade }
+ {$EXTERNALSYM TWPF_CHOCOLATE}
+ TWPF_VANILLA = 1; { zero pixel represents lightest shade }
+ {$EXTERNALSYM TWPF_VANILLA}
+
+{ ICAP_PIXELTYPE values (PT_ means Pixel Type) }
+ TWPT_BW = 0; { Black and White }
+ {$EXTERNALSYM TWPT_BW}
+ TWPT_GRAY = 1;
+ {$EXTERNALSYM TWPT_GRAY}
+ TWPT_RGB = 2;
+ {$EXTERNALSYM TWPT_RGB}
+ TWPT_PALETTE = 3;
+ {$EXTERNALSYM TWPT_PALETTE}
+ TWPT_CMY = 4;
+ {$EXTERNALSYM TWPT_CMY}
+ TWPT_CMYK = 5;
+ {$EXTERNALSYM TWPT_CMYK}
+ TWPT_YUV = 6;
+ {$EXTERNALSYM TWPT_YUV}
+ TWPT_YUVK = 7;
+ {$EXTERNALSYM TWPT_YUVK}
+ TWPT_CIEXYZ = 8;
+ {$EXTERNALSYM TWPT_CIEXYZ}
+
+{ ICAP_SUPPORTEDSIZES values (SS_ means Supported Sizes) }
+ TWSS_NONE = 0;
+ {$EXTERNALSYM TWSS_NONE}
+ TWSS_A4LETTER = 1;
+ {$EXTERNALSYM TWSS_A4LETTER}
+ TWSS_B5LETTER = 2;
+ {$EXTERNALSYM TWSS_B5LETTER}
+ TWSS_USLETTER = 3;
+ {$EXTERNALSYM TWSS_USLETTER}
+ TWSS_USLEGAL = 4;
+ {$EXTERNALSYM TWSS_USLEGAL}
+{ Added 1.5 }
+ TWSS_A5 = 5;
+ {$EXTERNALSYM TWSS_A5}
+ TWSS_B4 = 6;
+ {$EXTERNALSYM TWSS_B4}
+ TWSS_B6 = 7;
+ {$EXTERNALSYM TWSS_B6}
+// TWSS_B = 8;
+
+{ Added 1.7 }
+ TWSS_USLEDGER = 9;
+ {$EXTERNALSYM TWSS_USLEDGER}
+ TWSS_USEXECUTIVE = 10;
+ {$EXTERNALSYM TWSS_USEXECUTIVE}
+ TWSS_A3 = 11;
+ {$EXTERNALSYM TWSS_A3}
+ TWSS_B3 = 12;
+ {$EXTERNALSYM TWSS_B3}
+ TWSS_A6 = 13;
+ {$EXTERNALSYM TWSS_A6}
+ TWSS_C4 = 14;
+ {$EXTERNALSYM TWSS_C4}
+ TWSS_C5 = 15;
+ {$EXTERNALSYM TWSS_C5}
+ TWSS_C6 = 16;
+ {$EXTERNALSYM TWSS_C6}
+
+{ Added 1.8 }
+ TWSS_4A0 = 17;
+ {$EXTERNALSYM TWSS_4A0}
+ TWSS_2A0 = 18;
+ {$EXTERNALSYM TWSS_2A0}
+ TWSS_A0 = 19;
+ {$EXTERNALSYM TWSS_A0}
+ TWSS_A1 = 20;
+ {$EXTERNALSYM TWSS_A1}
+ TWSS_A2 = 21;
+ {$EXTERNALSYM TWSS_A2}
+ TWSS_A4 = TWSS_A4LETTER;
+ {$EXTERNALSYM TWSS_A4}
+ TWSS_A7 = 22;
+ {$EXTERNALSYM TWSS_A7}
+ TWSS_A8 = 23;
+ {$EXTERNALSYM TWSS_A8}
+ TWSS_A9 = 24;
+ {$EXTERNALSYM TWSS_A9}
+ TWSS_A10 = 25;
+ {$EXTERNALSYM TWSS_A10}
+ TWSS_ISOB0 = 26;
+ {$EXTERNALSYM TWSS_ISOB0}
+ TWSS_ISOB1 = 27;
+ {$EXTERNALSYM TWSS_ISOB1}
+ TWSS_ISOB2 = 28;
+ {$EXTERNALSYM TWSS_ISOB2}
+ TWSS_ISOB3 = TWSS_B3;
+ {$EXTERNALSYM TWSS_ISOB3}
+ TWSS_ISOB4 = TWSS_B4;
+ {$EXTERNALSYM TWSS_ISOB4}
+ TWSS_ISOB5 = 29;
+ {$EXTERNALSYM TWSS_ISOB5}
+ TWSS_ISOB6 = TWSS_B6;
+ {$EXTERNALSYM TWSS_ISOB6}
+ TWSS_ISOB7 = 30;
+ {$EXTERNALSYM TWSS_ISOB7}
+ TWSS_ISOB8 = 31;
+ {$EXTERNALSYM TWSS_ISOB8}
+ TWSS_ISOB9 = 32;
+ {$EXTERNALSYM TWSS_ISOB9}
+ TWSS_ISOB10 = 33;
+ {$EXTERNALSYM TWSS_ISOB10}
+ TWSS_JISB0 = 34;
+ {$EXTERNALSYM TWSS_JISB0}
+ TWSS_JISB1 = 35;
+ {$EXTERNALSYM TWSS_JISB1}
+ TWSS_JISB2 = 36;
+ {$EXTERNALSYM TWSS_JISB2}
+ TWSS_JISB3 = 37;
+ {$EXTERNALSYM TWSS_JISB3}
+ TWSS_JISB4 = 38;
+ {$EXTERNALSYM TWSS_JISB4}
+ TWSS_JISB5 = TWSS_B5LETTER;
+ {$EXTERNALSYM TWSS_JISB5}
+ TWSS_JISB6 = 39;
+ {$EXTERNALSYM TWSS_JISB6}
+ TWSS_JISB7 = 40;
+ {$EXTERNALSYM TWSS_JISB7}
+ TWSS_JISB8 = 41;
+ {$EXTERNALSYM TWSS_JISB8}
+ TWSS_JISB9 = 42;
+ {$EXTERNALSYM TWSS_JISB9}
+ TWSS_JISB10 = 43;
+ {$EXTERNALSYM TWSS_JISB10}
+ TWSS_C0 = 44;
+ {$EXTERNALSYM TWSS_C0}
+ TWSS_C1 = 45;
+ {$EXTERNALSYM TWSS_C1}
+ TWSS_C2 = 46;
+ {$EXTERNALSYM TWSS_C2}
+ TWSS_C3 = 47;
+ {$EXTERNALSYM TWSS_C3}
+ TWSS_C7 = 48;
+ {$EXTERNALSYM TWSS_C7}
+ TWSS_C8 = 49;
+ {$EXTERNALSYM TWSS_C8}
+ TWSS_C9 = 50;
+ {$EXTERNALSYM TWSS_C9}
+ TWSS_C10 = 51;
+ {$EXTERNALSYM TWSS_C10}
+ TWSS_USSTATEMENT = 52;
+ {$EXTERNALSYM TWSS_USSTATEMENT}
+ TWSS_BUSINESSCARD= 53;
+ {$EXTERNALSYM TWSS_BUSINESSCARD}
+
+{ ICAP_XFERMECH values (SX_ means Setup XFer) }
+ TWSX_NATIVE = 0;
+ {$EXTERNALSYM TWSX_NATIVE}
+ TWSX_FILE = 1;
+ {$EXTERNALSYM TWSX_FILE}
+ TWSX_MEMORY = 2;
+ {$EXTERNALSYM TWSX_MEMORY}
+ TWSX_FILE2 = 3; { added 1.9 }
+ {$EXTERNALSYM TWSX_FILE2}
+
+{ ICAP_UNITS values (UN_ means UNits) }
+ TWUN_INCHES = 0;
+ {$EXTERNALSYM TWUN_INCHES}
+ TWUN_CENTIMETERS = 1;
+ {$EXTERNALSYM TWUN_CENTIMETERS}
+ TWUN_PICAS = 2;
+ {$EXTERNALSYM TWUN_PICAS}
+ TWUN_POINTS = 3;
+ {$EXTERNALSYM TWUN_POINTS}
+ TWUN_TWIPS = 4;
+ {$EXTERNALSYM TWUN_TWIPS}
+ TWUN_PIXELS = 5;
+ {$EXTERNALSYM TWUN_PIXELS}
+
+{ Added 1.5 }
+{ ICAP_BITDEPTHREDUCTION values (BR_ means Bitdepth Reduction) }
+ TWBR_THRESHOLD = 0;
+ {$EXTERNALSYM TWBR_THRESHOLD}
+ TWBR_HALFTONE = 1;
+ {$EXTERNALSYM TWBR_HALFTONE}
+ TWBR_CUSTHALFTONE = 2;
+ {$EXTERNALSYM TWBR_CUSTHALFTONE}
+ TWBR_DIFFUSION = 3;
+ {$EXTERNALSYM TWBR_DIFFUSION}
+
+{ Added 1.7 }
+{ ICAP_DUPLEX values }
+ TWDX_NONE = 0;
+ {$EXTERNALSYM TWDX_NONE}
+ TWDX_1PASSDUPLEX = 1;
+ {$EXTERNALSYM TWDX_1PASSDUPLEX}
+ TWDX_2PASSDUPLEX = 2;
+ {$EXTERNALSYM TWDX_2PASSDUPLEX}
+
+{ Added 1.7 }
+{ TWEI_BARCODETYPE values }
+ TWBT_3OF9 = 0;
+ {$EXTERNALSYM TWBT_3OF9}
+ TWBT_2OF5INTERLEAVED = 1;
+ {$EXTERNALSYM TWBT_2OF5INTERLEAVED}
+ TWBT_2OF5NONINTERLEAVED= 2;
+ {$EXTERNALSYM TWBT_2OF5NONINTERLEAVED}
+ TWBT_CODE93 = 3;
+ {$EXTERNALSYM TWBT_CODE93}
+ TWBT_CODE128 = 4;
+ {$EXTERNALSYM TWBT_CODE128}
+ TWBT_UCC128 = 5;
+ {$EXTERNALSYM TWBT_UCC128}
+ TWBT_CODABAR = 6;
+ {$EXTERNALSYM TWBT_CODABAR}
+ TWBT_UPCA = 7;
+ {$EXTERNALSYM TWBT_UPCA}
+ TWBT_UPCE = 8;
+ {$EXTERNALSYM TWBT_UPCE}
+ TWBT_EAN8 = 9;
+ {$EXTERNALSYM TWBT_EAN8}
+ TWBT_EAN13 = 10;
+ {$EXTERNALSYM TWBT_EAN13}
+ TWBT_POSTNET = 11;
+ {$EXTERNALSYM TWBT_POSTNET}
+ TWBT_PDF417 = 12;
+ {$EXTERNALSYM TWBT_PDF417}
+
+{ Added 1.8 }
+ TWBT_2OF5INDUSTRIAL = 13;
+ {$EXTERNALSYM TWBT_2OF5INDUSTRIAL}
+ TWBT_2OF5MATRIX = 14;
+ {$EXTERNALSYM TWBT_2OF5MATRIX}
+ TWBT_2OF5DATALOGIC = 15;
+ {$EXTERNALSYM TWBT_2OF5DATALOGIC}
+ TWBT_2OF5IATA = 16;
+ {$EXTERNALSYM TWBT_2OF5IATA}
+ TWBT_3OF9FULLASCII = 17;
+ {$EXTERNALSYM TWBT_3OF9FULLASCII}
+ TWBT_CODABARWITHSTARTSTOP = 18;
+ {$EXTERNALSYM TWBT_CODABARWITHSTARTSTOP}
+ TWBT_MAXICODE = 19;
+ {$EXTERNALSYM TWBT_MAXICODE}
+
+{ Added 1.7 }
+{ TWEI_DESKEWSTATUS values }
+ TWDSK_SUCCESS = 0;
+ {$EXTERNALSYM TWDSK_SUCCESS}
+ TWDSK_REPORTONLY = 1;
+ {$EXTERNALSYM TWDSK_REPORTONLY}
+ TWDSK_FAIL = 2;
+ {$EXTERNALSYM TWDSK_FAIL}
+ TWDSK_DISABLED = 3;
+ {$EXTERNALSYM TWDSK_DISABLED}
+
+{ Added 1.7 }
+{ TWEI_PATCHCODE values }
+ TWPCH_PATCH1 = 0;
+ {$EXTERNALSYM TWPCH_PATCH1}
+ TWPCH_PATCH2 = 1;
+ {$EXTERNALSYM TWPCH_PATCH2}
+ TWPCH_PATCH3 = 2;
+ {$EXTERNALSYM TWPCH_PATCH3}
+ TWPCH_PATCH4 = 3;
+ {$EXTERNALSYM TWPCH_PATCH4}
+ TWPCH_PATCH6 = 4;
+ {$EXTERNALSYM TWPCH_PATCH6}
+ TWPCH_PATCHT = 5;
+ {$EXTERNALSYM TWPCH_PATCHT}
+
+{ Added 1.7 }
+{ CAP_JOBCONTROL values }
+ TWJC_NONE = 0;
+ {$EXTERNALSYM TWJC_NONE}
+ TWJC_JSIC = 1;
+ {$EXTERNALSYM TWJC_JSIC}
+ TWJC_JSIS = 2;
+ {$EXTERNALSYM TWJC_JSIS}
+ TWJC_JSXC = 3;
+ {$EXTERNALSYM TWJC_JSXC}
+ TWJC_JSXS = 4;
+ {$EXTERNALSYM TWJC_JSXS}
+
+{ Added 1.7 }
+{ TWEI_BARCODEROTATION values (BCOR_ means barcode rotation) }
+ TWBCOR_ROT0 = 0;
+ {$EXTERNALSYM TWBCOR_ROT0}
+ TWBCOR_ROT90 = 1;
+ {$EXTERNALSYM TWBCOR_ROT90}
+ TWBCOR_ROT180 = 2;
+ {$EXTERNALSYM TWBCOR_ROT180}
+ TWBCOR_ROT270 = 3;
+ {$EXTERNALSYM TWBCOR_ROT270}
+ TWBCOR_ROTX = 4;
+ {$EXTERNALSYM TWBCOR_ROTX}
+
+{ Added 1.8 }
+{ ACAP_AUDIOFILEFORMAT values (AF_ means audio format) }
+ TWAF_WAV = 0;
+ {$EXTERNALSYM TWAF_WAV}
+ TWAF_AIFF = 1;
+ {$EXTERNALSYM TWAF_AIFF}
+ TWAF_AU = 3;
+ {$EXTERNALSYM TWAF_AU}
+ TWAF_SND = 4;
+ {$EXTERNALSYM TWAF_SND}
+
+{ CAP_ALARMS values (AL_ means alarms) }
+ TWAL_ALARM = 0;
+ {$EXTERNALSYM TWAL_ALARM}
+ TWAL_FEEDERERROR = 1;
+ {$EXTERNALSYM TWAL_FEEDERERROR}
+ TWAL_FEEDERWARNING= 2;
+ {$EXTERNALSYM TWAL_FEEDERWARNING}
+ TWAL_BARCODE = 3;
+ {$EXTERNALSYM TWAL_BARCODE}
+ TWAL_DOUBLEFEED = 4;
+ {$EXTERNALSYM TWAL_DOUBLEFEED}
+ TWAL_JAM = 5;
+ {$EXTERNALSYM TWAL_JAM}
+ TWAL_PATCHCODE = 6;
+ {$EXTERNALSYM TWAL_PATCHCODE}
+ TWAL_POWER = 7;
+ {$EXTERNALSYM TWAL_POWER}
+ TWAL_SKEW = 8;
+ {$EXTERNALSYM TWAL_SKEW}
+
+{ CAP_CLEARBUFFERS values (CB_ means clear buffers) }
+ TWCB_AUTO = 0;
+ {$EXTERNALSYM TWCB_AUTO}
+ TWCB_CLEAR = 1;
+ {$EXTERNALSYM TWCB_CLEAR}
+ TWCB_NOCLEAR = 2;
+ {$EXTERNALSYM TWCB_NOCLEAR}
+
+{ CAP_DEVICEEVENT values (DE_ means device event) }
+ TWDE_CUSTOMEVENTS = $8000;
+ {$EXTERNALSYM TWDE_CUSTOMEVENTS}
+ TWDE_CHECKAUTOMATICCAPTURE = 0;
+ {$EXTERNALSYM TWDE_CHECKAUTOMATICCAPTURE}
+ TWDE_CHECKBATTERY = 1;
+ {$EXTERNALSYM TWDE_CHECKBATTERY}
+ TWDE_CHECKDEVICEONLINE = 2;
+ {$EXTERNALSYM TWDE_CHECKDEVICEONLINE}
+ TWDE_CHECKFLASH = 3;
+ {$EXTERNALSYM TWDE_CHECKFLASH}
+ TWDE_CHECKPOWERSUPPLY = 4;
+ {$EXTERNALSYM TWDE_CHECKPOWERSUPPLY}
+ TWDE_CHECKRESOLUTION = 5;
+ {$EXTERNALSYM TWDE_CHECKRESOLUTION}
+ TWDE_DEVICEADDED = 6;
+ {$EXTERNALSYM TWDE_DEVICEADDED}
+ TWDE_DEVICEOFFLINE = 7;
+ {$EXTERNALSYM TWDE_DEVICEOFFLINE}
+ TWDE_DEVICEREADY = 8;
+ {$EXTERNALSYM TWDE_DEVICEREADY}
+ TWDE_DEVICEREMOVED = 9;
+ {$EXTERNALSYM TWDE_DEVICEREMOVED}
+ TWDE_IMAGECAPTURED = 10;
+ {$EXTERNALSYM TWDE_IMAGECAPTURED}
+ TWDE_IMAGEDELETED = 11;
+ {$EXTERNALSYM TWDE_IMAGEDELETED}
+ TWDE_PAPERDOUBLEFEED = 12;
+ {$EXTERNALSYM TWDE_PAPERDOUBLEFEED}
+ TWDE_PAPERJAM = 13;
+ {$EXTERNALSYM TWDE_PAPERJAM}
+ TWDE_LAMPFAILURE = 14;
+ {$EXTERNALSYM TWDE_LAMPFAILURE}
+ TWDE_POWERSAVE = 15;
+ {$EXTERNALSYM TWDE_POWERSAVE}
+ TWDE_POWERSAVENOTIFY = 16;
+ {$EXTERNALSYM TWDE_POWERSAVENOTIFY}
+
+{ CAP_FEEDERALIGNMENT values (FA_ means feeder alignment) }
+ TWFA_NONE = 0;
+ {$EXTERNALSYM TWFA_NONE}
+ TWFA_LEFT = 1;
+ {$EXTERNALSYM TWFA_LEFT}
+ TWFA_CENTER = 2;
+ {$EXTERNALSYM TWFA_CENTER}
+ TWFA_RIGHT = 3;
+ {$EXTERNALSYM TWFA_RIGHT}
+
+{ CAP_FEEDERORDER values (FO_ means feeder order) }
+ TWFO_FIRSTPAGEFIRST = 0;
+ {$EXTERNALSYM TWFO_FIRSTPAGEFIRST}
+ TWFO_LASTPAGEFIRST = 1;
+ {$EXTERNALSYM TWFO_LASTPAGEFIRST}
+
+{ CAP_FILESYSTEM values (FS_ means file system) }
+ TWFS_FILESYSTEM = 0;
+ {$EXTERNALSYM TWFS_FILESYSTEM}
+ TWFS_RECURSIVEDELETE = 1;
+ {$EXTERNALSYM TWFS_RECURSIVEDELETE}
+
+{ CAP_POWERSUPPLY values (PS_ means power supply) }
+ TWPS_EXTERNAL = 0;
+ {$EXTERNALSYM TWPS_EXTERNAL}
+ TWPS_BATTERY = 1;
+ {$EXTERNALSYM TWPS_BATTERY}
+
+{ CAP_PRINTER values (PR_ means printer) }
+ TWPR_IMPRINTERTOPBEFORE = 0;
+ {$EXTERNALSYM TWPR_IMPRINTERTOPBEFORE}
+ TWPR_IMPRINTERTOPAFTER = 1;
+ {$EXTERNALSYM TWPR_IMPRINTERTOPAFTER}
+ TWPR_IMPRINTERBOTTOMBEFORE = 2;
+ {$EXTERNALSYM TWPR_IMPRINTERBOTTOMBEFORE}
+ TWPR_IMPRINTERBOTTOMAFTER = 3;
+ {$EXTERNALSYM TWPR_IMPRINTERBOTTOMAFTER}
+ TWPR_ENDORSERTOPBEFORE = 4;
+ {$EXTERNALSYM TWPR_ENDORSERTOPBEFORE}
+ TWPR_ENDORSERTOPAFTER = 5;
+ {$EXTERNALSYM TWPR_ENDORSERTOPAFTER}
+ TWPR_ENDORSERBOTTOMBEFORE = 6;
+ {$EXTERNALSYM TWPR_ENDORSERBOTTOMBEFORE}
+ TWPR_ENDORSERBOTTOMAFTER = 7;
+ {$EXTERNALSYM TWPR_ENDORSERBOTTOMAFTER}
+
+{ CAP_PRINTERMODE values (PM_ means printer mode) }
+ TWPM_SINGLESTRING = 0;
+ {$EXTERNALSYM TWPM_SINGLESTRING}
+ TWPM_MULTISTRING = 1;
+ {$EXTERNALSYM TWPM_MULTISTRING}
+ TWPM_COMPOUNDSTRING = 2;
+ {$EXTERNALSYM TWPM_COMPOUNDSTRING}
+
+{ ICAP_BARCODESEARCHMODE values (TWBD_ means search) }
+ TWBD_HORZ = 0;
+ {$EXTERNALSYM TWBD_HORZ}
+ TWBD_VERT = 1;
+ {$EXTERNALSYM TWBD_VERT}
+ TWBD_HORZVERT = 2;
+ {$EXTERNALSYM TWBD_HORZVERT}
+ TWBD_VERTHORZ = 3;
+ {$EXTERNALSYM TWBD_VERTHORZ}
+
+{ ICAP_FLASHUSED2 values (FL_ means flash) }
+ TWFL_NONE = 0;
+ {$EXTERNALSYM TWFL_NONE}
+ TWFL_OFF = 1;
+ {$EXTERNALSYM TWFL_OFF}
+ TWFL_ON = 2;
+ {$EXTERNALSYM TWFL_ON}
+ TWFL_AUTO = 3;
+ {$EXTERNALSYM TWFL_AUTO}
+ TWFL_REDEYE = 4;
+ {$EXTERNALSYM TWFL_REDEYE}
+
+{ ICAP_FLIPROTATION values (FR_ means flip rotation) }
+ TWFR_BOOK = 0;
+ {$EXTERNALSYM TWFR_BOOK}
+ TWFR_FANFOLD = 1;
+ {$EXTERNALSYM TWFR_FANFOLD}
+
+{ ICAP_IMAGEFILTER values (IF_ means image filter) }
+ TWIF_NONE = 0;
+ {$EXTERNALSYM TWIF_NONE}
+ TWIF_AUTO = 1;
+ {$EXTERNALSYM TWIF_AUTO}
+ TWIF_LOWPASS = 2;
+ {$EXTERNALSYM TWIF_LOWPASS}
+ TWIF_BANDPASS= 3;
+ {$EXTERNALSYM TWIF_BANDPASS}
+ TWIF_HIGHPASS= 4;
+ {$EXTERNALSYM TWIF_HIGHPASS}
+ TWIF_TEXT = TWIF_BANDPASS;
+ {$EXTERNALSYM TWIF_TEXT}
+ TWIF_FINELINE= TWIF_HIGHPASS;
+ {$EXTERNALSYM TWIF_FINELINE}
+
+{ ICAP_NOISEFILTER values (NF_ means noise filter) }
+ TWNF_NONE = 0;
+ {$EXTERNALSYM TWNF_NONE}
+ TWNF_AUTO = 1;
+ {$EXTERNALSYM TWNF_AUTO}
+ TWNF_LONEPIXEL = 2;
+ {$EXTERNALSYM TWNF_LONEPIXEL}
+ TWNF_MAJORITYRULE = 3;
+ {$EXTERNALSYM TWNF_MAJORITYRULE}
+
+{ ICAP_OVERSCAN values (OV_ means overscan) }
+ TWOV_NONE = 0;
+ {$EXTERNALSYM TWOV_NONE}
+ TWOV_AUTO = 1;
+ {$EXTERNALSYM TWOV_AUTO}
+ TWOV_TOPBOTTOM = 2;
+ {$EXTERNALSYM TWOV_TOPBOTTOM}
+ TWOV_LEFTRIGHT = 3;
+ {$EXTERNALSYM TWOV_LEFTRIGHT}
+ TWOV_ALL = 4;
+ {$EXTERNALSYM TWOV_ALL}
+
+{ TW_FILESYSTEM.FileType values (FT_ means file type) }
+ TWFY_CAMERA = 0;
+ {$EXTERNALSYM TWFY_CAMERA}
+ TWFY_CAMERATOP = 1;
+ {$EXTERNALSYM TWFY_CAMERATOP}
+ TWFY_CAMERABOTTOM = 2;
+ {$EXTERNALSYM TWFY_CAMERABOTTOM}
+ TWFY_CAMERAPREVIEW = 3;
+ {$EXTERNALSYM TWFY_CAMERAPREVIEW}
+ TWFY_DOMAIN = 4;
+ {$EXTERNALSYM TWFY_DOMAIN}
+ TWFY_HOST = 5;
+ {$EXTERNALSYM TWFY_HOST}
+ TWFY_DIRECTORY = 6;
+ {$EXTERNALSYM TWFY_DIRECTORY}
+ TWFY_IMAGE = 7;
+ {$EXTERNALSYM TWFY_IMAGE}
+ TWFY_UNKNOWN = 8;
+ {$EXTERNALSYM TWFY_UNKNOWN}
+
+ { ICAP_JPEGQUALITY values (JQ_ means jpeg quality) }
+ TWJQ_UNKNOWN = -4;
+ {$EXTERNALSYM TWJQ_UNKNOWN}
+ TWJQ_LOW = -3;
+ {$EXTERNALSYM TWJQ_LOW}
+ TWJQ_MEDIUM = -2;
+ {$EXTERNALSYM TWJQ_MEDIUM}
+ TWJQ_HIGH = -1;
+ {$EXTERNALSYM TWJQ_HIGH}
+
+{***************************************************************************
+ * Country Constants *
+ *************************************************************************** }
+
+ TWCY_AFGHANISTAN = 1001;
+ {$EXTERNALSYM TWCY_AFGHANISTAN}
+ TWCY_ALGERIA = 213;
+ {$EXTERNALSYM TWCY_ALGERIA}
+ TWCY_AMERICANSAMOA = 684;
+ {$EXTERNALSYM TWCY_AMERICANSAMOA}
+ TWCY_ANDORRA = 033;
+ {$EXTERNALSYM TWCY_ANDORRA}
+ TWCY_ANGOLA = 1002;
+ {$EXTERNALSYM TWCY_ANGOLA}
+ TWCY_ANGUILLA = 8090;
+ {$EXTERNALSYM TWCY_ANGUILLA}
+ TWCY_ANTIGUA = 8091;
+ {$EXTERNALSYM TWCY_ANTIGUA}
+ TWCY_ARGENTINA = 54;
+ {$EXTERNALSYM TWCY_ARGENTINA}
+ TWCY_ARUBA = 297;
+ {$EXTERNALSYM TWCY_ARUBA}
+ TWCY_ASCENSIONI = 247;
+ {$EXTERNALSYM TWCY_ASCENSIONI}
+ TWCY_AUSTRALIA = 61;
+ {$EXTERNALSYM TWCY_AUSTRALIA}
+ TWCY_AUSTRIA = 43;
+ {$EXTERNALSYM TWCY_AUSTRIA}
+ TWCY_BAHAMAS = 8092;
+ {$EXTERNALSYM TWCY_BAHAMAS}
+ TWCY_BAHRAIN = 973;
+ {$EXTERNALSYM TWCY_BAHRAIN}
+ TWCY_BANGLADESH = 880;
+ {$EXTERNALSYM TWCY_BANGLADESH}
+ TWCY_BARBADOS = 8093;
+ {$EXTERNALSYM TWCY_BARBADOS}
+ TWCY_BELGIUM = 32;
+ {$EXTERNALSYM TWCY_BELGIUM}
+ TWCY_BELIZE = 501;
+ {$EXTERNALSYM TWCY_BELIZE}
+ TWCY_BENIN = 229;
+ {$EXTERNALSYM TWCY_BENIN}
+ TWCY_BERMUDA = 8094;
+ {$EXTERNALSYM TWCY_BERMUDA}
+ TWCY_BHUTAN = 1003;
+ {$EXTERNALSYM TWCY_BHUTAN}
+ TWCY_BOLIVIA = 591;
+ {$EXTERNALSYM TWCY_BOLIVIA}
+ TWCY_BOTSWANA = 267;
+ {$EXTERNALSYM TWCY_BOTSWANA}
+ TWCY_BRITAIN = 6;
+ {$EXTERNALSYM TWCY_BRITAIN}
+ TWCY_BRITVIRGINIS = 8095;
+ {$EXTERNALSYM TWCY_BRITVIRGINIS}
+ TWCY_BRAZIL = 55;
+ {$EXTERNALSYM TWCY_BRAZIL}
+ TWCY_BRUNEI = 673;
+ {$EXTERNALSYM TWCY_BRUNEI}
+ TWCY_BULGARIA = 359;
+ {$EXTERNALSYM TWCY_BULGARIA}
+ TWCY_BURKINAFASO = 1004;
+ {$EXTERNALSYM TWCY_BURKINAFASO}
+ TWCY_BURMA = 1005;
+ {$EXTERNALSYM TWCY_BURMA}
+ TWCY_BURUNDI = 1006;
+ {$EXTERNALSYM TWCY_BURUNDI}
+ TWCY_CAMAROON = 237;
+ {$EXTERNALSYM TWCY_CAMAROON}
+ TWCY_CANADA = 2;
+ {$EXTERNALSYM TWCY_CANADA}
+ TWCY_CAPEVERDEIS = 238;
+ {$EXTERNALSYM TWCY_CAPEVERDEIS}
+ TWCY_CAYMANIS = 8096;
+ {$EXTERNALSYM TWCY_CAYMANIS}
+ TWCY_CENTRALAFREP = 1007;
+ {$EXTERNALSYM TWCY_CENTRALAFREP}
+ TWCY_CHAD = 1008;
+ {$EXTERNALSYM TWCY_CHAD}
+ TWCY_CHILE = 56;
+ {$EXTERNALSYM TWCY_CHILE}
+ TWCY_CHINA = 86;
+ {$EXTERNALSYM TWCY_CHINA}
+ TWCY_CHRISTMASIS = 1009;
+ {$EXTERNALSYM TWCY_CHRISTMASIS}
+ TWCY_COCOSIS = 1009;
+ {$EXTERNALSYM TWCY_COCOSIS}
+ TWCY_COLOMBIA = 57;
+ {$EXTERNALSYM TWCY_COLOMBIA}
+ TWCY_COMOROS = 1010;
+ {$EXTERNALSYM TWCY_COMOROS}
+ TWCY_CONGO = 1011;
+ {$EXTERNALSYM TWCY_CONGO}
+ TWCY_COOKIS = 1012;
+ {$EXTERNALSYM TWCY_COOKIS}
+ TWCY_COSTARICA = 506 ;
+ {$EXTERNALSYM TWCY_COSTARICA}
+ TWCY_CUBA = 005;
+ {$EXTERNALSYM TWCY_CUBA}
+ TWCY_CYPRUS = 357;
+ {$EXTERNALSYM TWCY_CYPRUS}
+ TWCY_CZECHOSLOVAKIA = 42;
+ {$EXTERNALSYM TWCY_CZECHOSLOVAKIA}
+ TWCY_DENMARK = 45;
+ {$EXTERNALSYM TWCY_DENMARK}
+ TWCY_DJIBOUTI = 1013;
+ {$EXTERNALSYM TWCY_DJIBOUTI}
+ TWCY_DOMINICA = 8097;
+ {$EXTERNALSYM TWCY_DOMINICA}
+ TWCY_DOMINCANREP = 8098;
+ {$EXTERNALSYM TWCY_DOMINCANREP}
+ TWCY_EASTERIS = 1014;
+ {$EXTERNALSYM TWCY_EASTERIS}
+ TWCY_ECUADOR = 593;
+ {$EXTERNALSYM TWCY_ECUADOR}
+ TWCY_EGYPT = 20;
+ {$EXTERNALSYM TWCY_EGYPT}
+ TWCY_ELSALVADOR = 503;
+ {$EXTERNALSYM TWCY_ELSALVADOR}
+ TWCY_EQGUINEA = 1015;
+ {$EXTERNALSYM TWCY_EQGUINEA}
+ TWCY_ETHIOPIA = 251;
+ {$EXTERNALSYM TWCY_ETHIOPIA}
+ TWCY_FALKLANDIS = 1016;
+ {$EXTERNALSYM TWCY_FALKLANDIS}
+ TWCY_FAEROEIS = 298;
+ {$EXTERNALSYM TWCY_FAEROEIS}
+ TWCY_FIJIISLANDS = 679;
+ {$EXTERNALSYM TWCY_FIJIISLANDS}
+ TWCY_FINLAND = 358;
+ {$EXTERNALSYM TWCY_FINLAND}
+ TWCY_FRANCE = 33;
+ {$EXTERNALSYM TWCY_FRANCE}
+ TWCY_FRANTILLES = 596;
+ {$EXTERNALSYM TWCY_FRANTILLES}
+ TWCY_FRGUIANA = 594;
+ {$EXTERNALSYM TWCY_FRGUIANA}
+ TWCY_FRPOLYNEISA = 689;
+ {$EXTERNALSYM TWCY_FRPOLYNEISA}
+ TWCY_FUTANAIS = 1043;
+ {$EXTERNALSYM TWCY_FUTANAIS}
+ TWCY_GABON = 241;
+ {$EXTERNALSYM TWCY_GABON}
+ TWCY_GAMBIA = 220;
+ {$EXTERNALSYM TWCY_GAMBIA}
+ TWCY_GERMANY = 49;
+ {$EXTERNALSYM TWCY_GERMANY}
+ TWCY_GHANA = 233;
+ {$EXTERNALSYM TWCY_GHANA}
+ TWCY_GIBRALTER = 350;
+ {$EXTERNALSYM TWCY_GIBRALTER}
+ TWCY_GREECE = 30;
+ {$EXTERNALSYM TWCY_GREECE}
+ TWCY_GREENLAND = 299;
+ {$EXTERNALSYM TWCY_GREENLAND}
+ TWCY_GRENADA = 8099;
+ {$EXTERNALSYM TWCY_GRENADA}
+ TWCY_GRENEDINES = 8015;
+ {$EXTERNALSYM TWCY_GRENEDINES}
+ TWCY_GUADELOUPE = 590;
+ {$EXTERNALSYM TWCY_GUADELOUPE}
+ TWCY_GUAM = 671;
+ {$EXTERNALSYM TWCY_GUAM}
+ TWCY_GUANTANAMOBAY = 5399;
+ {$EXTERNALSYM TWCY_GUANTANAMOBAY}
+ TWCY_GUATEMALA = 502;
+ {$EXTERNALSYM TWCY_GUATEMALA}
+ TWCY_GUINEA = 224;
+ {$EXTERNALSYM TWCY_GUINEA}
+ TWCY_GUINEABISSAU = 1017;
+ {$EXTERNALSYM TWCY_GUINEABISSAU}
+ TWCY_GUYANA = 592;
+ {$EXTERNALSYM TWCY_GUYANA}
+ TWCY_HAITI = 509;
+ {$EXTERNALSYM TWCY_HAITI}
+ TWCY_HONDURAS = 504;
+ {$EXTERNALSYM TWCY_HONDURAS}
+ TWCY_HONGKONG = 852 ;
+ {$EXTERNALSYM TWCY_HONGKONG}
+ TWCY_HUNGARY = 36;
+ {$EXTERNALSYM TWCY_HUNGARY}
+ TWCY_ICELAND = 354;
+ {$EXTERNALSYM TWCY_ICELAND}
+ TWCY_INDIA = 91;
+ {$EXTERNALSYM TWCY_INDIA}
+ TWCY_INDONESIA = 62;
+ {$EXTERNALSYM TWCY_INDONESIA}
+ TWCY_IRAN = 98;
+ {$EXTERNALSYM TWCY_IRAN}
+ TWCY_IRAQ = 964;
+ {$EXTERNALSYM TWCY_IRAQ}
+ TWCY_IRELAND = 353;
+ {$EXTERNALSYM TWCY_IRELAND}
+ TWCY_ISRAEL = 972;
+ {$EXTERNALSYM TWCY_ISRAEL}
+ TWCY_ITALY = 39;
+ {$EXTERNALSYM TWCY_ITALY}
+ TWCY_IVORYCOAST = 225 ;
+ {$EXTERNALSYM TWCY_IVORYCOAST}
+ TWCY_JAMAICA = 8010;
+ {$EXTERNALSYM TWCY_JAMAICA}
+ TWCY_JAPAN = 81;
+ {$EXTERNALSYM TWCY_JAPAN}
+ TWCY_JORDAN = 962;
+ {$EXTERNALSYM TWCY_JORDAN}
+ TWCY_KENYA = 254;
+ {$EXTERNALSYM TWCY_KENYA}
+ TWCY_KIRIBATI = 1018;
+ {$EXTERNALSYM TWCY_KIRIBATI}
+ TWCY_KOREA = 82;
+ {$EXTERNALSYM TWCY_KOREA}
+ TWCY_KUWAIT = 965;
+ {$EXTERNALSYM TWCY_KUWAIT}
+ TWCY_LAOS = 1019;
+ {$EXTERNALSYM TWCY_LAOS}
+ TWCY_LEBANON = 1020;
+ {$EXTERNALSYM TWCY_LEBANON}
+ TWCY_LIBERIA = 231;
+ {$EXTERNALSYM TWCY_LIBERIA}
+ TWCY_LIBYA = 218;
+ {$EXTERNALSYM TWCY_LIBYA}
+ TWCY_LIECHTENSTEIN = 41;
+ {$EXTERNALSYM TWCY_LIECHTENSTEIN}
+ TWCY_LUXENBOURG = 352;
+ {$EXTERNALSYM TWCY_LUXENBOURG}
+ TWCY_MACAO = 853;
+ {$EXTERNALSYM TWCY_MACAO}
+ TWCY_MADAGASCAR = 1021;
+ {$EXTERNALSYM TWCY_MADAGASCAR}
+ TWCY_MALAWI = 265;
+ {$EXTERNALSYM TWCY_MALAWI}
+ TWCY_MALAYSIA = 60;
+ {$EXTERNALSYM TWCY_MALAYSIA}
+ TWCY_MALDIVES = 960;
+ {$EXTERNALSYM TWCY_MALDIVES}
+ TWCY_MALI = 1022;
+ {$EXTERNALSYM TWCY_MALI}
+ TWCY_MALTA = 356;
+ {$EXTERNALSYM TWCY_MALTA}
+ TWCY_MARSHALLIS = 692;
+ {$EXTERNALSYM TWCY_MARSHALLIS}
+ TWCY_MAURITANIA = 1023;
+ {$EXTERNALSYM TWCY_MAURITANIA}
+ TWCY_MAURITIUS = 230;
+ {$EXTERNALSYM TWCY_MAURITIUS}
+ TWCY_MEXICO = 3;
+ {$EXTERNALSYM TWCY_MEXICO}
+ TWCY_MICRONESIA = 691;
+ {$EXTERNALSYM TWCY_MICRONESIA}
+ TWCY_MIQUELON = 508;
+ {$EXTERNALSYM TWCY_MIQUELON}
+ TWCY_MONACO = 33;
+ {$EXTERNALSYM TWCY_MONACO}
+ TWCY_MONGOLIA = 1024;
+ {$EXTERNALSYM TWCY_MONGOLIA}
+ TWCY_MONTSERRAT = 8011;
+ {$EXTERNALSYM TWCY_MONTSERRAT}
+ TWCY_MOROCCO = 212;
+ {$EXTERNALSYM TWCY_MOROCCO}
+ TWCY_MOZAMBIQUE = 1025;
+ {$EXTERNALSYM TWCY_MOZAMBIQUE}
+ TWCY_NAMIBIA = 264;
+ {$EXTERNALSYM TWCY_NAMIBIA}
+ TWCY_NAURU = 1026;
+ {$EXTERNALSYM TWCY_NAURU}
+ TWCY_NEPAL = 977;
+ {$EXTERNALSYM TWCY_NEPAL}
+ TWCY_NETHERLANDS = 31;
+ {$EXTERNALSYM TWCY_NETHERLANDS}
+ TWCY_NETHANTILLES = 599;
+ {$EXTERNALSYM TWCY_NETHANTILLES}
+ TWCY_NEVIS = 8012;
+ {$EXTERNALSYM TWCY_NEVIS}
+ TWCY_NEWCALEDONIA = 687;
+ {$EXTERNALSYM TWCY_NEWCALEDONIA}
+ TWCY_NEWZEALAND = 64;
+ {$EXTERNALSYM TWCY_NEWZEALAND}
+ TWCY_NICARAGUA = 505;
+ {$EXTERNALSYM TWCY_NICARAGUA}
+ TWCY_NIGER = 227;
+ {$EXTERNALSYM TWCY_NIGER}
+ TWCY_NIGERIA = 234;
+ {$EXTERNALSYM TWCY_NIGERIA}
+ TWCY_NIUE = 1027;
+ {$EXTERNALSYM TWCY_NIUE}
+ TWCY_NORFOLKI = 1028;
+ {$EXTERNALSYM TWCY_NORFOLKI}
+ TWCY_NORWAY = 47;
+ {$EXTERNALSYM TWCY_NORWAY}
+ TWCY_OMAN = 968;
+ {$EXTERNALSYM TWCY_OMAN}
+ TWCY_PAKISTAN = 92;
+ {$EXTERNALSYM TWCY_PAKISTAN}
+ TWCY_PALAU = 1029;
+ {$EXTERNALSYM TWCY_PALAU}
+ TWCY_PANAMA = 507;
+ {$EXTERNALSYM TWCY_PANAMA}
+ TWCY_PARAGUAY = 595;
+ {$EXTERNALSYM TWCY_PARAGUAY}
+ TWCY_PERU = 51;
+ {$EXTERNALSYM TWCY_PERU}
+ TWCY_PHILLIPPINES = 63;
+ {$EXTERNALSYM TWCY_PHILLIPPINES}
+ TWCY_PITCAIRNIS = 1030;
+ {$EXTERNALSYM TWCY_PITCAIRNIS}
+ TWCY_PNEWGUINEA = 675;
+ {$EXTERNALSYM TWCY_PNEWGUINEA}
+ TWCY_POLAND = 48;
+ {$EXTERNALSYM TWCY_POLAND}
+ TWCY_PORTUGAL = 351;
+ {$EXTERNALSYM TWCY_PORTUGAL}
+ TWCY_QATAR = 974;
+ {$EXTERNALSYM TWCY_QATAR}
+ TWCY_REUNIONI = 1031;
+ {$EXTERNALSYM TWCY_REUNIONI}
+ TWCY_ROMANIA = 40;
+ {$EXTERNALSYM TWCY_ROMANIA}
+ TWCY_RWANDA = 250;
+ {$EXTERNALSYM TWCY_RWANDA}
+ TWCY_SAIPAN = 670;
+ {$EXTERNALSYM TWCY_SAIPAN}
+ TWCY_SANMARINO = 39;
+ {$EXTERNALSYM TWCY_SANMARINO}
+ TWCY_SAOTOME = 1033;
+ {$EXTERNALSYM TWCY_SAOTOME}
+ TWCY_SAUDIARABIA = 966;
+ {$EXTERNALSYM TWCY_SAUDIARABIA}
+ TWCY_SENEGAL = 221;
+ {$EXTERNALSYM TWCY_SENEGAL}
+ TWCY_SEYCHELLESIS = 1034;
+ {$EXTERNALSYM TWCY_SEYCHELLESIS}
+ TWCY_SIERRALEONE = 1035;
+ {$EXTERNALSYM TWCY_SIERRALEONE}
+ TWCY_SINGAPORE = 65;
+ {$EXTERNALSYM TWCY_SINGAPORE}
+ TWCY_SOLOMONIS = 1036;
+ {$EXTERNALSYM TWCY_SOLOMONIS}
+ TWCY_SOMALI = 1037;
+ {$EXTERNALSYM TWCY_SOMALI}
+ TWCY_SOUTHAFRICA = 27 ;
+ {$EXTERNALSYM TWCY_SOUTHAFRICA}
+ TWCY_SPAIN = 34;
+ {$EXTERNALSYM TWCY_SPAIN}
+ TWCY_SRILANKA = 94;
+ {$EXTERNALSYM TWCY_SRILANKA}
+ TWCY_STHELENA = 1032;
+ {$EXTERNALSYM TWCY_STHELENA}
+ TWCY_STKITTS = 8013;
+ {$EXTERNALSYM TWCY_STKITTS}
+ TWCY_STLUCIA = 8014;
+ {$EXTERNALSYM TWCY_STLUCIA}
+ TWCY_STPIERRE = 508;
+ {$EXTERNALSYM TWCY_STPIERRE}
+ TWCY_STVINCENT = 8015;
+ {$EXTERNALSYM TWCY_STVINCENT}
+ TWCY_SUDAN = 1038;
+ {$EXTERNALSYM TWCY_SUDAN}
+ TWCY_SURINAME = 597;
+ {$EXTERNALSYM TWCY_SURINAME}
+ TWCY_SWAZILAND = 268;
+ {$EXTERNALSYM TWCY_SWAZILAND}
+ TWCY_SWEDEN = 46;
+ {$EXTERNALSYM TWCY_SWEDEN}
+ TWCY_SWITZERLAND = 41;
+ {$EXTERNALSYM TWCY_SWITZERLAND}
+ TWCY_SYRIA = 1039;
+ {$EXTERNALSYM TWCY_SYRIA}
+ TWCY_TAIWAN = 886;
+ {$EXTERNALSYM TWCY_TAIWAN}
+ TWCY_TANZANIA = 255;
+ {$EXTERNALSYM TWCY_TANZANIA}
+ TWCY_THAILAND = 66;
+ {$EXTERNALSYM TWCY_THAILAND}
+ TWCY_TOBAGO = 8016;
+ {$EXTERNALSYM TWCY_TOBAGO}
+ TWCY_TOGO = 228;
+ {$EXTERNALSYM TWCY_TOGO}
+ TWCY_TONGAIS = 676;
+ {$EXTERNALSYM TWCY_TONGAIS}
+ TWCY_TRINIDAD = 8016;
+ {$EXTERNALSYM TWCY_TRINIDAD}
+ TWCY_TUNISIA = 216;
+ {$EXTERNALSYM TWCY_TUNISIA}
+ TWCY_TURKEY = 90;
+ {$EXTERNALSYM TWCY_TURKEY}
+ TWCY_TURKSCAICOS = 8017;
+ {$EXTERNALSYM TWCY_TURKSCAICOS}
+ TWCY_TUVALU = 1040;
+ {$EXTERNALSYM TWCY_TUVALU}
+ TWCY_UGANDA = 256;
+ {$EXTERNALSYM TWCY_UGANDA}
+ TWCY_USSR = 7;
+ {$EXTERNALSYM TWCY_USSR}
+ TWCY_UAEMIRATES = 971;
+ {$EXTERNALSYM TWCY_UAEMIRATES}
+ TWCY_UNITEDKINGDOM = 44;
+ {$EXTERNALSYM TWCY_UNITEDKINGDOM}
+ TWCY_USA = 1;
+ {$EXTERNALSYM TWCY_USA}
+ TWCY_URUGUAY = 598;
+ {$EXTERNALSYM TWCY_URUGUAY}
+ TWCY_VANUATU = 1041;
+ {$EXTERNALSYM TWCY_VANUATU}
+ TWCY_VATICANCITY = 39;
+ {$EXTERNALSYM TWCY_VATICANCITY}
+ TWCY_VENEZUELA = 58;
+ {$EXTERNALSYM TWCY_VENEZUELA}
+ TWCY_WAKE = 1042;
+ {$EXTERNALSYM TWCY_WAKE}
+ TWCY_WALLISIS = 1043;
+ {$EXTERNALSYM TWCY_WALLISIS}
+ TWCY_WESTERNSAHARA = 1044;
+ {$EXTERNALSYM TWCY_WESTERNSAHARA}
+ TWCY_WESTERNSAMOA = 1045;
+ {$EXTERNALSYM TWCY_WESTERNSAMOA}
+ TWCY_YEMEN = 1046;
+ {$EXTERNALSYM TWCY_YEMEN}
+ TWCY_YUGOSLAVIA = 38;
+ {$EXTERNALSYM TWCY_YUGOSLAVIA}
+ TWCY_ZAIRE = 243;
+ {$EXTERNALSYM TWCY_ZAIRE}
+ TWCY_ZAMBIA = 260;
+ {$EXTERNALSYM TWCY_ZAMBIA}
+ TWCY_ZIMBABWE = 263;
+ {$EXTERNALSYM TWCY_ZIMBABWE}
+
+{ Added for 1.8 }
+ TWCY_ALBANIA = 355;
+ {$EXTERNALSYM TWCY_ALBANIA}
+ TWCY_ARMENIA = 374;
+ {$EXTERNALSYM TWCY_ARMENIA}
+ TWCY_AZERBAIJAN = 994;
+ {$EXTERNALSYM TWCY_AZERBAIJAN}
+ TWCY_BELARUS = 375;
+ {$EXTERNALSYM TWCY_BELARUS}
+ TWCY_BOSNIAHERZGO = 387;
+ {$EXTERNALSYM TWCY_BOSNIAHERZGO}
+ TWCY_CAMBODIA = 855;
+ {$EXTERNALSYM TWCY_CAMBODIA}
+ TWCY_CROATIA = 385;
+ {$EXTERNALSYM TWCY_CROATIA}
+ TWCY_CZECHREPUBLIC = 420;
+ {$EXTERNALSYM TWCY_CZECHREPUBLIC}
+ TWCY_DIEGOGARCIA = 246;
+ {$EXTERNALSYM TWCY_DIEGOGARCIA}
+ TWCY_ERITREA = 291;
+ {$EXTERNALSYM TWCY_ERITREA}
+ TWCY_ESTONIA = 372;
+ {$EXTERNALSYM TWCY_ESTONIA}
+ TWCY_GEORGIA = 995;
+ {$EXTERNALSYM TWCY_GEORGIA}
+ TWCY_LATVIA = 371;
+ {$EXTERNALSYM TWCY_LATVIA}
+ TWCY_LESOTHO = 266;
+ {$EXTERNALSYM TWCY_LESOTHO}
+ TWCY_LITHUANIA = 370;
+ {$EXTERNALSYM TWCY_LITHUANIA}
+ TWCY_MACEDONIA = 389;
+ {$EXTERNALSYM TWCY_MACEDONIA}
+ TWCY_MAYOTTEIS = 269;
+ {$EXTERNALSYM TWCY_MAYOTTEIS}
+ TWCY_MOLDOVA = 373;
+ {$EXTERNALSYM TWCY_MOLDOVA}
+ TWCY_MYANMAR = 95 ;
+ {$EXTERNALSYM TWCY_MYANMAR}
+ TWCY_NORTHKOREA = 850;
+ {$EXTERNALSYM TWCY_NORTHKOREA}
+ TWCY_PUERTORICO = 787;
+ {$EXTERNALSYM TWCY_PUERTORICO}
+ TWCY_RUSSIA = 7 ;
+ {$EXTERNALSYM TWCY_RUSSIA}
+ TWCY_SERBIA = 381;
+ {$EXTERNALSYM TWCY_SERBIA}
+ TWCY_SLOVAKIA = 421;
+ {$EXTERNALSYM TWCY_SLOVAKIA}
+ TWCY_SLOVENIA = 386;
+ {$EXTERNALSYM TWCY_SLOVENIA}
+ TWCY_SOUTHKOREA = 82 ;
+ {$EXTERNALSYM TWCY_SOUTHKOREA}
+ TWCY_UKRAINE = 380;
+ {$EXTERNALSYM TWCY_UKRAINE}
+ TWCY_USVIRGINIS = 340;
+ {$EXTERNALSYM TWCY_USVIRGINIS}
+ TWCY_VIETNAM = 84 ;
+ {$EXTERNALSYM TWCY_VIETNAM}
+
+{***************************************************************************
+ * Language Constants *
+ *************************************************************************** }
+
+ TWLG_DAN = 0; { Danish }
+ {$EXTERNALSYM TWLG_DAN}
+ TWLG_DUT = 1; { Dutch }
+ {$EXTERNALSYM TWLG_DUT}
+ TWLG_ENG = 2; { International English }
+ {$EXTERNALSYM TWLG_ENG}
+ TWLG_FCF = 3; { French Canadian }
+ {$EXTERNALSYM TWLG_FCF}
+ TWLG_FIN = 4; { Finnish }
+ {$EXTERNALSYM TWLG_FIN}
+ TWLG_FRN = 5; { French }
+ {$EXTERNALSYM TWLG_FRN}
+ TWLG_GER = 6; { German }
+ {$EXTERNALSYM TWLG_GER}
+ TWLG_ICE = 7; { Icelandic }
+ {$EXTERNALSYM TWLG_ICE}
+ TWLG_ITN = 8; { Italian }
+ {$EXTERNALSYM TWLG_ITN}
+ TWLG_NOR = 9; { Norwegian }
+ {$EXTERNALSYM TWLG_NOR}
+ TWLG_POR = 10; { Portuguese }
+ {$EXTERNALSYM TWLG_POR}
+ TWLG_SPA = 11; { Spanish }
+ {$EXTERNALSYM TWLG_SPA}
+ TWLG_SWE = 12; { Swedish }
+ {$EXTERNALSYM TWLG_SWE}
+ TWLG_USA = 13; { U.S. English }
+ {$EXTERNALSYM TWLG_USA}
+
+{ Added for 1.8 }
+ TWLG_USERLOCALE = -1;
+ {$EXTERNALSYM TWLG_USERLOCALE}
+ TWLG_AFRIKAANS = 14;
+ {$EXTERNALSYM TWLG_AFRIKAANS}
+ TWLG_ALBANIA = 15;
+ {$EXTERNALSYM TWLG_ALBANIA}
+ TWLG_ARABIC = 16;
+ {$EXTERNALSYM TWLG_ARABIC}
+ TWLG_ARABIC_ALGERIA = 17;
+ {$EXTERNALSYM TWLG_ARABIC_ALGERIA}
+ TWLG_ARABIC_BAHRAIN = 18;
+ {$EXTERNALSYM TWLG_ARABIC_BAHRAIN}
+ TWLG_ARABIC_EGYPT = 19;
+ {$EXTERNALSYM TWLG_ARABIC_EGYPT}
+ TWLG_ARABIC_IRAQ = 20;
+ {$EXTERNALSYM TWLG_ARABIC_IRAQ}
+ TWLG_ARABIC_JORDAN = 21;
+ {$EXTERNALSYM TWLG_ARABIC_JORDAN}
+ TWLG_ARABIC_KUWAIT = 22;
+ {$EXTERNALSYM TWLG_ARABIC_KUWAIT}
+ TWLG_ARABIC_LEBANON = 23;
+ {$EXTERNALSYM TWLG_ARABIC_LEBANON}
+ TWLG_ARABIC_LIBYA = 24;
+ {$EXTERNALSYM TWLG_ARABIC_LIBYA}
+ TWLG_ARABIC_MOROCCO = 25;
+ {$EXTERNALSYM TWLG_ARABIC_MOROCCO}
+ TWLG_ARABIC_OMAN = 26;
+ {$EXTERNALSYM TWLG_ARABIC_OMAN}
+ TWLG_ARABIC_QATAR = 27;
+ {$EXTERNALSYM TWLG_ARABIC_QATAR}
+ TWLG_ARABIC_SAUDIARABIA = 28;
+ {$EXTERNALSYM TWLG_ARABIC_SAUDIARABIA}
+ TWLG_ARABIC_SYRIA = 29;
+ {$EXTERNALSYM TWLG_ARABIC_SYRIA}
+ TWLG_ARABIC_TUNISIA = 30;
+ {$EXTERNALSYM TWLG_ARABIC_TUNISIA}
+ TWLG_ARABIC_UAE = 31; { United Arabic Emirates }
+ {$EXTERNALSYM TWLG_ARABIC_UAE}
+ TWLG_ARABIC_YEMEN = 32;
+ {$EXTERNALSYM TWLG_ARABIC_YEMEN}
+ TWLG_BASQUE = 33;
+ {$EXTERNALSYM TWLG_BASQUE}
+ TWLG_BYELORUSSIAN = 34;
+ {$EXTERNALSYM TWLG_BYELORUSSIAN}
+ TWLG_BULGARIAN = 35;
+ {$EXTERNALSYM TWLG_BULGARIAN}
+ TWLG_CATALAN = 36;
+ {$EXTERNALSYM TWLG_CATALAN}
+ TWLG_CHINESE = 37;
+ {$EXTERNALSYM TWLG_CHINESE}
+ TWLG_CHINESE_HONGKONG = 38;
+ {$EXTERNALSYM TWLG_CHINESE_HONGKONG}
+ TWLG_CHINESE_PRC = 39; { People's Republic of China }
+ {$EXTERNALSYM TWLG_CHINESE_PRC}
+ TWLG_CHINESE_SINGAPORE = 40;
+ {$EXTERNALSYM TWLG_CHINESE_SINGAPORE}
+ TWLG_CHINESE_SIMPLIFIED = 41;
+ {$EXTERNALSYM TWLG_CHINESE_SIMPLIFIED}
+ TWLG_CHINESE_TAIWAN = 42;
+ {$EXTERNALSYM TWLG_CHINESE_TAIWAN}
+ TWLG_CHINESE_TRADITIONAL= 43;
+ {$EXTERNALSYM TWLG_CHINESE_TRADITIONAL}
+ TWLG_CROATIA = 44;
+ {$EXTERNALSYM TWLG_CROATIA}
+ TWLG_CZECH = 45;
+ {$EXTERNALSYM TWLG_CZECH}
+ TWLG_DANISH = TWLG_DAN;
+ {$EXTERNALSYM TWLG_DANISH}
+ TWLG_DUTCH = TWLG_DUT;
+ {$EXTERNALSYM TWLG_DUTCH}
+ TWLG_DUTCH_BELGIAN = 46;
+ {$EXTERNALSYM TWLG_DUTCH_BELGIAN}
+ TWLG_ENGLISH = TWLG_ENG;
+ {$EXTERNALSYM TWLG_ENGLISH}
+ TWLG_ENGLISH_AUSTRALIAN = 47;
+ {$EXTERNALSYM TWLG_ENGLISH_AUSTRALIAN}
+ TWLG_ENGLISH_CANADIAN = 48;
+ {$EXTERNALSYM TWLG_ENGLISH_CANADIAN}
+ TWLG_ENGLISH_IRELAND = 49;
+ {$EXTERNALSYM TWLG_ENGLISH_IRELAND}
+ TWLG_ENGLISH_NEWZEALAND = 50;
+ {$EXTERNALSYM TWLG_ENGLISH_NEWZEALAND}
+ TWLG_ENGLISH_SOUTHAFRICA= 51;
+ {$EXTERNALSYM TWLG_ENGLISH_SOUTHAFRICA}
+ TWLG_ENGLISH_UK = 52;
+ {$EXTERNALSYM TWLG_ENGLISH_UK}
+ TWLG_ENGLISH_USA = TWLG_USA;
+ {$EXTERNALSYM TWLG_ENGLISH_USA}
+ TWLG_ESTONIAN = 53;
+ {$EXTERNALSYM TWLG_ESTONIAN}
+ TWLG_FAEROESE = 54;
+ {$EXTERNALSYM TWLG_FAEROESE}
+ TWLG_FARSI = 55;
+ {$EXTERNALSYM TWLG_FARSI}
+ TWLG_FINNISH = TWLG_FIN;
+ {$EXTERNALSYM TWLG_FINNISH}
+ TWLG_FRENCH = TWLG_FRN;
+ {$EXTERNALSYM TWLG_FRENCH}
+ TWLG_FRENCH_BELGIAN = 56;
+ {$EXTERNALSYM TWLG_FRENCH_BELGIAN}
+ TWLG_FRENCH_CANADIAN = TWLG_FCF;
+ {$EXTERNALSYM TWLG_FRENCH_CANADIAN}
+ TWLG_FRENCH_LUXEMBOURG = 57;
+ {$EXTERNALSYM TWLG_FRENCH_LUXEMBOURG}
+ TWLG_FRENCH_SWISS = 58;
+ {$EXTERNALSYM TWLG_FRENCH_SWISS}
+ TWLG_GERMAN = TWLG_GER;
+ {$EXTERNALSYM TWLG_GERMAN}
+ TWLG_GERMAN_AUSTRIAN = 59;
+ {$EXTERNALSYM TWLG_GERMAN_AUSTRIAN}
+ TWLG_GERMAN_LUXEMBOURG = 60;
+ {$EXTERNALSYM TWLG_GERMAN_LUXEMBOURG}
+ TWLG_GERMAN_LIECHTENSTEIN = 61;
+ {$EXTERNALSYM TWLG_GERMAN_LIECHTENSTEIN}
+ TWLG_GERMAN_SWISS = 62;
+ {$EXTERNALSYM TWLG_GERMAN_SWISS}
+ TWLG_GREEK = 63;
+ {$EXTERNALSYM TWLG_GREEK}
+ TWLG_HEBREW = 64;
+ {$EXTERNALSYM TWLG_HEBREW}
+ TWLG_HUNGARIAN = 65;
+ {$EXTERNALSYM TWLG_HUNGARIAN}
+ TWLG_ICELANDIC = TWLG_ICE;
+ {$EXTERNALSYM TWLG_ICELANDIC}
+ TWLG_INDONESIAN = 66;
+ {$EXTERNALSYM TWLG_INDONESIAN}
+ TWLG_ITALIAN = TWLG_ITN;
+ {$EXTERNALSYM TWLG_ITALIAN}
+ TWLG_ITALIAN_SWISS = 67;
+ {$EXTERNALSYM TWLG_ITALIAN_SWISS}
+ TWLG_JAPANESE = 68;
+ {$EXTERNALSYM TWLG_JAPANESE}
+ TWLG_KOREAN = 69;
+ {$EXTERNALSYM TWLG_KOREAN}
+ TWLG_KOREAN_JOHAB = 70;
+ {$EXTERNALSYM TWLG_KOREAN_JOHAB}
+ TWLG_LATVIAN = 71;
+ {$EXTERNALSYM TWLG_LATVIAN}
+ TWLG_LITHUANIAN = 72;
+ {$EXTERNALSYM TWLG_LITHUANIAN}
+ TWLG_NORWEGIAN = TWLG_NOR;
+ {$EXTERNALSYM TWLG_NORWEGIAN}
+ TWLG_NORWEGIAN_BOKMAL = 73;
+ {$EXTERNALSYM TWLG_NORWEGIAN_BOKMAL}
+ TWLG_NORWEGIAN_NYNORSK = 74;
+ {$EXTERNALSYM TWLG_NORWEGIAN_NYNORSK}
+ TWLG_POLISH = 75;
+ {$EXTERNALSYM TWLG_POLISH}
+ TWLG_PORTUGUESE = TWLG_POR;
+ {$EXTERNALSYM TWLG_PORTUGUESE}
+ TWLG_PORTUGUESE_BRAZIL = 76;
+ {$EXTERNALSYM TWLG_PORTUGUESE_BRAZIL}
+ TWLG_ROMANIAN = 77;
+ {$EXTERNALSYM TWLG_ROMANIAN}
+ TWLG_RUSSIAN = 78;
+ {$EXTERNALSYM TWLG_RUSSIAN}
+ TWLG_SERBIAN_LATIN = 79;
+ {$EXTERNALSYM TWLG_SERBIAN_LATIN}
+ TWLG_SLOVAK = 80;
+ {$EXTERNALSYM TWLG_SLOVAK}
+ TWLG_SLOVENIAN = 81;
+ {$EXTERNALSYM TWLG_SLOVENIAN}
+ TWLG_SPANISH = TWLG_SPA;
+ {$EXTERNALSYM TWLG_SPANISH}
+ TWLG_SPANISH_MEXICAN = 82;
+ {$EXTERNALSYM TWLG_SPANISH_MEXICAN}
+ TWLG_SPANISH_MODERN = 83;
+ {$EXTERNALSYM TWLG_SPANISH_MODERN}
+ TWLG_SWEDISH = TWLG_SWE;
+ {$EXTERNALSYM TWLG_SWEDISH}
+ TWLG_THAI = 84;
+ {$EXTERNALSYM TWLG_THAI}
+ TWLG_TURKISH = 85;
+ {$EXTERNALSYM TWLG_TURKISH}
+ TWLG_UKRANIAN = 86;
+ {$EXTERNALSYM TWLG_UKRANIAN}
+
+{ More stuff added for 1.8 }
+ TWLG_ASSAMESE = 87;
+ {$EXTERNALSYM TWLG_ASSAMESE}
+ TWLG_BENGALI = 88;
+ {$EXTERNALSYM TWLG_BENGALI}
+ TWLG_BIHARI = 89;
+ {$EXTERNALSYM TWLG_BIHARI}
+ TWLG_BODO = 90;
+ {$EXTERNALSYM TWLG_BODO}
+ TWLG_DOGRI = 91;
+ {$EXTERNALSYM TWLG_DOGRI}
+ TWLG_GUJARATI = 92;
+ {$EXTERNALSYM TWLG_GUJARATI}
+ TWLG_HARYANVI = 93;
+ {$EXTERNALSYM TWLG_HARYANVI}
+ TWLG_HINDI = 94;
+ {$EXTERNALSYM TWLG_HINDI}
+ TWLG_KANNADA = 95;
+ {$EXTERNALSYM TWLG_KANNADA}
+ TWLG_KASHMIRI = 96;
+ {$EXTERNALSYM TWLG_KASHMIRI}
+ TWLG_MALAYALAM = 97;
+ {$EXTERNALSYM TWLG_MALAYALAM}
+ TWLG_MARATHI = 98;
+ {$EXTERNALSYM TWLG_MARATHI}
+ TWLG_MARWARI = 99;
+ {$EXTERNALSYM TWLG_MARWARI}
+ TWLG_MEGHALAYAN = 100;
+ {$EXTERNALSYM TWLG_MEGHALAYAN}
+ TWLG_MIZO = 101;
+ {$EXTERNALSYM TWLG_MIZO}
+ TWLG_NAGA = 102;
+ {$EXTERNALSYM TWLG_NAGA}
+ TWLG_ORISSI = 103;
+ {$EXTERNALSYM TWLG_ORISSI}
+ TWLG_PUNJABI = 104;
+ {$EXTERNALSYM TWLG_PUNJABI}
+ TWLG_PUSHTU = 105;
+ {$EXTERNALSYM TWLG_PUSHTU}
+ TWLG_SERBIAN_CYRILLIC = 106;
+ {$EXTERNALSYM TWLG_SERBIAN_CYRILLIC}
+ TWLG_SIKKIMI = 107;
+ {$EXTERNALSYM TWLG_SIKKIMI}
+ TWLG_SWEDISH_FINLAND = 108;
+ {$EXTERNALSYM TWLG_SWEDISH_FINLAND}
+ TWLG_TAMIL = 109;
+ {$EXTERNALSYM TWLG_TAMIL}
+ TWLG_TELUGU = 110;
+ {$EXTERNALSYM TWLG_TELUGU}
+ TWLG_TRIPURI = 111;
+ {$EXTERNALSYM TWLG_TRIPURI}
+ TWLG_URDU = 112;
+ {$EXTERNALSYM TWLG_URDU}
+ TWLG_VIETNAMESE = 113;
+ {$EXTERNALSYM TWLG_VIETNAMESE}
+
+{***************************************************************************
+ * Data Groups *
+ *************************************************************************** }
+
+{ More Data Groups may be added in the future.
+ * Possible candidates include text, vector graphics, sound, etc.
+ * NOTE: Data Group constants must be powers of 2 as they are used
+ * as bitflags when Application asks DSM to present a list of DSs.
+ }
+
+ DG_CONTROL = $0001; { data pertaining to control }
+ {$EXTERNALSYM DG_CONTROL}
+ DG_IMAGE = $0002; { data pertaining to raster images }
+ {$EXTERNALSYM DG_IMAGE}
+{ Added 1.8 }
+ DG_AUDIO = $0004; { data pertaining to audio }
+ {$EXTERNALSYM DG_AUDIO}
+
+{***************************************************************************
+ * Data Argument Types *
+ *************************************************************************** }
+
+{ SDH - 03/23/95 - WATCH }
+{ The thunker requires knowledge about size of data being passed in the }
+{ lpData parameter to DS_Entry (which is not readily available due to }
+{ type LPVOID. Thus, we key off the DAT_ argument to determine the size. }
+{ This has a couple implications: }
+{ 1) Any additional DAT_ features require modifications to the thunk code }
+{ for thunker support. }
+{ 2) Any applications which use the custom capabailites are not supported }
+{ under thunking since we have no way of knowing what size data (if }
+{ any) is being passed. }
+
+ DAT_NULL = $0000; { No data or structure. }
+ {$EXTERNALSYM DAT_NULL}
+ DAT_CUSTOMBASE = $8000; { Base of custom DATs. }
+ {$EXTERNALSYM DAT_CUSTOMBASE}
+
+{ Data Argument Types for the DG_CONTROL Data Group. }
+ DAT_CAPABILITY = $0001; { TW_CAPABILITY }
+ {$EXTERNALSYM DAT_CAPABILITY}
+ DAT_EVENT = $0002; { TW_EVENT }
+ {$EXTERNALSYM DAT_EVENT}
+ DAT_IDENTITY = $0003; { TW_IDENTITY }
+ {$EXTERNALSYM DAT_IDENTITY}
+ DAT_PARENT = $0004; { TW_HANDLE, application win handle in Windows }
+ {$EXTERNALSYM DAT_PARENT}
+ DAT_PENDINGXFERS = $0005; { TW_PENDINGXFERS }
+ {$EXTERNALSYM DAT_PENDINGXFERS}
+ DAT_SETUPMEMXFER = $0006; { TW_SETUPMEMXFER }
+ {$EXTERNALSYM DAT_SETUPMEMXFER}
+ DAT_SETUPFILEXFER = $0007; { TW_SETUPFILEXFER }
+ {$EXTERNALSYM DAT_SETUPFILEXFER}
+ DAT_STATUS = $0008; { TW_STATUS }
+ {$EXTERNALSYM DAT_STATUS}
+ DAT_USERINTERFACE = $0009; { TW_USERINTERFACE }
+ {$EXTERNALSYM DAT_USERINTERFACE}
+ DAT_XFERGROUP = $000a; { TW_UINT32 }
+ {$EXTERNALSYM DAT_XFERGROUP}
+{ SDH - 03/21/95 - TWUNK }
+{ Additional message required for thunker to request the special }
+{ identity information. }
+ DAT_TWUNKIDENTITY = $000b; { TW_TWUNKIDENTITY }
+ {$EXTERNALSYM DAT_TWUNKIDENTITY}
+ DAT_CUSTOMDSDATA = $000c; { TW_CUSTOMDSDATA. }
+ {$EXTERNALSYM DAT_CUSTOMDSDATA}
+
+{ Added 1.8 }
+ DAT_DEVICEEVENT = $000d; { TW_DEVICEEVENT }
+ {$EXTERNALSYM DAT_DEVICEEVENT}
+ DAT_FILESYSTEM = $000e; { TW_FILESYSTEM }
+ {$EXTERNALSYM DAT_FILESYSTEM}
+ DAT_PASSTHRU = $000f; { TW_PASSTHRU }
+ {$EXTERNALSYM DAT_PASSTHRU}
+
+{ Data Argument Types for the DG_IMAGE Data Group. }
+ DAT_IMAGEINFO = $0101; { TW_IMAGEINFO }
+ {$EXTERNALSYM DAT_IMAGEINFO}
+ DAT_IMAGELAYOUT = $0102; { TW_IMAGELAYOUT }
+ {$EXTERNALSYM DAT_IMAGELAYOUT}
+ DAT_IMAGEMEMXFER = $0103; { TW_IMAGEMEMXFER }
+ {$EXTERNALSYM DAT_IMAGEMEMXFER}
+ DAT_IMAGENATIVEXFER = $0104; { TW_UINT32 loword is hDIB, PICHandle }
+ {$EXTERNALSYM DAT_IMAGENATIVEXFER}
+ DAT_IMAGEFILEXFER = $0105; { Null data }
+ {$EXTERNALSYM DAT_IMAGEFILEXFER}
+ DAT_CIECOLOR = $0106; { TW_CIECOLOR }
+ {$EXTERNALSYM DAT_CIECOLOR}
+ DAT_GRAYRESPONSE = $0107; { TW_GRAYRESPONSE }
+ {$EXTERNALSYM DAT_GRAYRESPONSE}
+ DAT_RGBRESPONSE = $0108; { TW_RGBRESPONSE }
+ {$EXTERNALSYM DAT_RGBRESPONSE}
+ DAT_JPEGCOMPRESSION = $0109; { TW_JPEGCOMPRESSION }
+ {$EXTERNALSYM DAT_JPEGCOMPRESSION}
+ DAT_PALETTE8 = $010a; { TW_PALETTE8 }
+ {$EXTERNALSYM DAT_PALETTE8}
+ DAT_EXTIMAGEINFO = $010b; { TW_EXTIMAGEINFO -- for 1.7 Spec. }
+ {$EXTERNALSYM DAT_EXTIMAGEINFO}
+
+{ Added 1.8 }
+{ Data Argument Types for the DG_AUDIO Data Group. }
+ DAT_AUDIOFILEXFER = $0201; { Null data }
+ {$EXTERNALSYM DAT_AUDIOFILEXFER}
+ DAT_AUDIOINFO = $0202; { TW_AUDIOINFO }
+ {$EXTERNALSYM DAT_AUDIOINFO}
+ DAT_AUDIONATIVEXFER = $0203; { TW_UINT32 handle to WAV, (AIFF Mac) }
+ {$EXTERNALSYM DAT_AUDIONATIVEXFER}
+
+{ Added 1.9 }
+ DAT_SETUPFILEXFER2 = $0301; { New file xfer operation }
+ {$EXTERNALSYM DAT_SETUPFILEXFER2}
+
+{***************************************************************************
+ * Messages *
+ *************************************************************************** }
+
+{ All message constants are unique.
+ * Messages are grouped according to which DATs they are used with. }
+
+ MSG_NULL = $0000; { Used in TW_EVENT structure }
+ {$EXTERNALSYM MSG_NULL}
+ MSG_CUSTOMBASE = $8000; { Base of custom messages }
+ {$EXTERNALSYM MSG_CUSTOMBASE}
+
+{ Generic messages may be used with any of several DATs. }
+ MSG_GET = $0001; { Get one or more values }
+ {$EXTERNALSYM MSG_GET}
+ MSG_GETCURRENT = $0002; { Get current value }
+ {$EXTERNALSYM MSG_GETCURRENT}
+ MSG_GETDEFAULT = $0003; { Get default (e.g. power up) value }
+ {$EXTERNALSYM MSG_GETDEFAULT}
+ MSG_GETFIRST = $0004; { Get first of a series of items, e.g. DSs }
+ {$EXTERNALSYM MSG_GETFIRST}
+ MSG_GETNEXT = $0005; { Iterate through a series of items. }
+ {$EXTERNALSYM MSG_GETNEXT}
+ MSG_SET = $0006; { Set one or more values }
+ {$EXTERNALSYM MSG_SET}
+ MSG_RESET = $0007; { Set current value to default value }
+ {$EXTERNALSYM MSG_RESET}
+ MSG_QUERYSUPPORT = $0008; { Get supported operations on the cap. }
+ {$EXTERNALSYM MSG_QUERYSUPPORT}
+
+{ Messages used with DAT_NULL }
+ MSG_XFERREADY = $0101; { The data source has data ready }
+ {$EXTERNALSYM MSG_XFERREADY}
+ MSG_CLOSEDSREQ = $0102; { Request for Application. to close DS }
+ {$EXTERNALSYM MSG_CLOSEDSREQ}
+ MSG_CLOSEDSOK = $0103; { Tell the Application. to save the state. }
+ {$EXTERNALSYM MSG_CLOSEDSOK}
+{ Added 1.8 }
+ MSG_DEVICEEVENT = $0104; { Some event has taken place }
+ {$EXTERNALSYM MSG_DEVICEEVENT}
+
+{ Messages used with a pointer to a DAT_STATUS structure }
+ MSG_CHECKSTATUS = $0201; { Get status information }
+ {$EXTERNALSYM MSG_CHECKSTATUS}
+
+{ Messages used with a pointer to DAT_PARENT data }
+ MSG_OPENDSM = $0301; { Open the DSM }
+ {$EXTERNALSYM MSG_OPENDSM}
+ MSG_CLOSEDSM = $0302; { Close the DSM }
+ {$EXTERNALSYM MSG_CLOSEDSM}
+
+{ Messages used with a pointer to a DAT_IDENTITY structure }
+ MSG_OPENDS = $0401; { Open a data source }
+ {$EXTERNALSYM MSG_OPENDS}
+ MSG_CLOSEDS = $0402; { Close a data source }
+ {$EXTERNALSYM MSG_CLOSEDS}
+ MSG_USERSELECT = $0403; { Put up a dialog of all DS }
+ {$EXTERNALSYM MSG_USERSELECT}
+
+{ Messages used with a pointer to a DAT_USERINTERFACE structure }
+ MSG_DISABLEDS = $0501; { Disable data transfer in the DS }
+ {$EXTERNALSYM MSG_DISABLEDS}
+ MSG_ENABLEDS = $0502; { Enable data transfer in the DS }
+ {$EXTERNALSYM MSG_ENABLEDS}
+ MSG_ENABLEDSUIONLY = $0503; { Enable for saving DS state only. }
+ {$EXTERNALSYM MSG_ENABLEDSUIONLY}
+
+{ Messages used with a pointer to a DAT_EVENT structure }
+ MSG_PROCESSEVENT = $0601;
+ {$EXTERNALSYM MSG_PROCESSEVENT}
+
+{ Messages used with a pointer to a DAT_PENDINGXFERS structure }
+ MSG_ENDXFER = $0701;
+ {$EXTERNALSYM MSG_ENDXFER}
+ MSG_STOPFEEDER = $0702;
+ {$EXTERNALSYM MSG_STOPFEEDER}
+
+{ Added 1.8 }
+{ Messages used with a pointer to a DAT_FILESYSTEM structure }
+ MSG_CHANGEDIRECTORY = $0801;
+ {$EXTERNALSYM MSG_CHANGEDIRECTORY}
+ MSG_CREATEDIRECTORY = $0802;
+ {$EXTERNALSYM MSG_CREATEDIRECTORY}
+ MSG_DELETE = $0803;
+ {$EXTERNALSYM MSG_DELETE}
+ MSG_FORMATMEDIA = $0804;
+ {$EXTERNALSYM MSG_FORMATMEDIA}
+ MSG_GETCLOSE = $0805;
+ {$EXTERNALSYM MSG_GETCLOSE}
+ MSG_GETFIRSTFILE = $0806;
+ {$EXTERNALSYM MSG_GETFIRSTFILE}
+ MSG_GETINFO = $0807;
+ {$EXTERNALSYM MSG_GETINFO}
+ MSG_GETNEXTFILE = $0808;
+ {$EXTERNALSYM MSG_GETNEXTFILE}
+ MSG_RENAME = $0809;
+ {$EXTERNALSYM MSG_RENAME}
+ MSG_COPY = $080A;
+ {$EXTERNALSYM MSG_COPY}
+ MSG_AUTOMATICCAPTUREDIRECTORY = $080B;
+ {$EXTERNALSYM MSG_AUTOMATICCAPTUREDIRECTORY}
+
+{ Messages used with a pointer to a DAT_PASSTHRU structure }
+ MSG_PASSTHRU = $0901;
+ {$EXTERNALSYM MSG_PASSTHRU}
+
+{***************************************************************************
+ * Capabilities *
+ *************************************************************************** }
+
+ CAP_CUSTOMBASE = $8000; { Base of custom capabilities }
+ {$EXTERNALSYM CAP_CUSTOMBASE}
+
+{ all data sources are REQUIRED to support these caps }
+ CAP_XFERCOUNT = $0001;
+ {$EXTERNALSYM CAP_XFERCOUNT}
+
+{ image data sources are REQUIRED to support these caps }
+ ICAP_COMPRESSION = $0100;
+ {$EXTERNALSYM ICAP_COMPRESSION}
+ ICAP_PIXELTYPE = $0101;
+ {$EXTERNALSYM ICAP_PIXELTYPE}
+ ICAP_UNITS = $0102; { default is TWUN_INCHES }
+ {$EXTERNALSYM ICAP_UNITS}
+ ICAP_XFERMECH = $0103;
+ {$EXTERNALSYM ICAP_XFERMECH}
+
+{ all data sources MAY support these caps }
+ CAP_AUTHOR = $1000;
+ {$EXTERNALSYM CAP_AUTHOR}
+ CAP_CAPTION = $1001;
+ {$EXTERNALSYM CAP_CAPTION}
+ CAP_FEEDERENABLED = $1002;
+ {$EXTERNALSYM CAP_FEEDERENABLED}
+ CAP_FEEDERLOADED = $1003;
+ {$EXTERNALSYM CAP_FEEDERLOADED}
+ CAP_TIMEDATE = $1004;
+ {$EXTERNALSYM CAP_TIMEDATE}
+ CAP_SUPPORTEDCAPS = $1005;
+ {$EXTERNALSYM CAP_SUPPORTEDCAPS}
+ CAP_EXTENDEDCAPS = $1006;
+ {$EXTERNALSYM CAP_EXTENDEDCAPS}
+ CAP_AUTOFEED = $1007;
+ {$EXTERNALSYM CAP_AUTOFEED}
+ CAP_CLEARPAGE = $1008;
+ {$EXTERNALSYM CAP_CLEARPAGE}
+ CAP_FEEDPAGE = $1009;
+ {$EXTERNALSYM CAP_FEEDPAGE}
+ CAP_REWINDPAGE = $100a;
+ {$EXTERNALSYM CAP_REWINDPAGE}
+ CAP_INDICATORS = $100b; { Added 1.1 }
+ {$EXTERNALSYM CAP_INDICATORS}
+ CAP_SUPPORTEDCAPSEXT = $100c; { Added 1.6 }
+ {$EXTERNALSYM CAP_SUPPORTEDCAPSEXT}
+ CAP_PAPERDETECTABLE = $100d; { Added 1.6 }
+ {$EXTERNALSYM CAP_PAPERDETECTABLE}
+ CAP_UICONTROLLABLE = $100e; { Added 1.6 }
+ {$EXTERNALSYM CAP_UICONTROLLABLE}
+ CAP_DEVICEONLINE = $100f; { Added 1.6 }
+ {$EXTERNALSYM CAP_DEVICEONLINE}
+ CAP_AUTOSCAN = $1010; { Added 1.6 }
+ {$EXTERNALSYM CAP_AUTOSCAN}
+ CAP_THUMBNAILSENABLED = $1011; { Added 1.7 }
+ {$EXTERNALSYM CAP_THUMBNAILSENABLED}
+ CAP_DUPLEX = $1012; { Added 1.7 }
+ {$EXTERNALSYM CAP_DUPLEX}
+ CAP_DUPLEXENABLED = $1013; { Added 1.7 }
+ {$EXTERNALSYM CAP_DUPLEXENABLED}
+ CAP_ENABLEDSUIONLY = $1014; { Added 1.7 }
+ {$EXTERNALSYM CAP_ENABLEDSUIONLY}
+ CAP_CUSTOMDSDATA = $1015; { Added 1.7 }
+ {$EXTERNALSYM CAP_CUSTOMDSDATA}
+ CAP_ENDORSER = $1016; { Added 1.7 }
+ {$EXTERNALSYM CAP_ENDORSER}
+ CAP_JOBCONTROL = $1017; { Added 1.7 }
+ {$EXTERNALSYM CAP_JOBCONTROL}
+ CAP_ALARMS = $1018; { Added 1.8 }
+ {$EXTERNALSYM CAP_ALARMS}
+ CAP_ALARMVOLUME = $1019; { Added 1.8 }
+ {$EXTERNALSYM CAP_ALARMVOLUME}
+ CAP_AUTOMATICCAPTURE = $101a; { Added 1.8 }
+ {$EXTERNALSYM CAP_AUTOMATICCAPTURE}
+ CAP_TIMEBEFOREFIRSTCAPTURE = $101b; { Added 1.8 }
+ {$EXTERNALSYM CAP_TIMEBEFOREFIRSTCAPTURE}
+ CAP_TIMEBETWEENCAPTURES = $101c; { Added 1.8 }
+ {$EXTERNALSYM CAP_TIMEBETWEENCAPTURES}
+ CAP_CLEARBUFFERS = $101d; { Added 1.8 }
+ {$EXTERNALSYM CAP_CLEARBUFFERS}
+ CAP_MAXBATCHBUFFERS = $101e; { Added 1.8 }
+ {$EXTERNALSYM CAP_MAXBATCHBUFFERS}
+ CAP_DEVICETIMEDATE = $101f; { Added 1.8 }
+ {$EXTERNALSYM CAP_DEVICETIMEDATE}
+ CAP_POWERSUPPLY = $1020; { Added 1.8 }
+ {$EXTERNALSYM CAP_POWERSUPPLY}
+ CAP_CAMERAPREVIEWUI = $1021; { Added 1.8 }
+ {$EXTERNALSYM CAP_CAMERAPREVIEWUI}
+ CAP_DEVICEEVENT = $1022; { Added 1.8 }
+ {$EXTERNALSYM CAP_DEVICEEVENT}
+ CAP_SERIALNUMBER = $1024; { Added 1.8 }
+ {$EXTERNALSYM CAP_SERIALNUMBER}
+ CAP_PRINTER = $1026; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTER}
+ CAP_PRINTERENABLED = $1027; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERENABLED}
+ CAP_PRINTERINDEX = $1028; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERINDEX}
+ CAP_PRINTERMODE = $1029; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERMODE}
+ CAP_PRINTERSTRING = $102a; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERSTRING}
+ CAP_PRINTERSUFFIX = $102b; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERSUFFIX}
+ CAP_LANGUAGE = $102c; { Added 1.8 }
+ {$EXTERNALSYM CAP_LANGUAGE}
+ CAP_FEEDERALIGNMENT = $102d; { Added 1.8 }
+ {$EXTERNALSYM CAP_FEEDERALIGNMENT}
+ CAP_FEEDERORDER = $102e; { Added 1.8 }
+ {$EXTERNALSYM CAP_FEEDERORDER}
+ CAP_REACQUIREALLOWED = $1030; { Added 1.8 }
+ {$EXTERNALSYM CAP_REACQUIREALLOWED}
+ CAP_BATTERYMINUTES = $1032; { Added 1.8 }
+ {$EXTERNALSYM CAP_BATTERYMINUTES}
+ CAP_BATTERYPERCENTAGE = $1033; { Added 1.8 }
+ {$EXTERNALSYM CAP_BATTERYPERCENTAGE}
+
+{ image data sources MAY support these caps }
+ ICAP_AUTOBRIGHT = $1100;
+ {$EXTERNALSYM ICAP_AUTOBRIGHT}
+ ICAP_BRIGHTNESS = $1101;
+ {$EXTERNALSYM ICAP_BRIGHTNESS}
+ ICAP_CONTRAST = $1103;
+ {$EXTERNALSYM ICAP_CONTRAST}
+ ICAP_CUSTHALFTONE = $1104;
+ {$EXTERNALSYM ICAP_CUSTHALFTONE}
+ ICAP_EXPOSURETIME = $1105;
+ {$EXTERNALSYM ICAP_EXPOSURETIME}
+ ICAP_FILTER = $1106;
+ {$EXTERNALSYM ICAP_FILTER}
+ ICAP_FLASHUSED = $1107;
+ {$EXTERNALSYM ICAP_FLASHUSED}
+ ICAP_GAMMA = $1108;
+ {$EXTERNALSYM ICAP_GAMMA}
+ ICAP_HALFTONES = $1109;
+ {$EXTERNALSYM ICAP_HALFTONES}
+ ICAP_HIGHLIGHT = $110a;
+ {$EXTERNALSYM ICAP_HIGHLIGHT}
+ ICAP_IMAGEFILEFORMAT = $110c;
+ {$EXTERNALSYM ICAP_IMAGEFILEFORMAT}
+ ICAP_LAMPSTATE = $110d;
+ {$EXTERNALSYM ICAP_LAMPSTATE}
+ ICAP_LIGHTSOURCE = $110e;
+ {$EXTERNALSYM ICAP_LIGHTSOURCE}
+ ICAP_ORIENTATION = $1110;
+ {$EXTERNALSYM ICAP_ORIENTATION}
+ ICAP_PHYSICALWIDTH = $1111;
+ {$EXTERNALSYM ICAP_PHYSICALWIDTH}
+ ICAP_PHYSICALHEIGHT = $1112;
+ {$EXTERNALSYM ICAP_PHYSICALHEIGHT}
+ ICAP_SHADOW = $1113;
+ {$EXTERNALSYM ICAP_SHADOW}
+ ICAP_FRAMES = $1114;
+ {$EXTERNALSYM ICAP_FRAMES}
+ ICAP_XNATIVERESOLUTION = $1116;
+ {$EXTERNALSYM ICAP_XNATIVERESOLUTION}
+ ICAP_YNATIVERESOLUTION = $1117;
+ {$EXTERNALSYM ICAP_YNATIVERESOLUTION}
+ ICAP_XRESOLUTION = $1118;
+ {$EXTERNALSYM ICAP_XRESOLUTION}
+ ICAP_YRESOLUTION = $1119;
+ {$EXTERNALSYM ICAP_YRESOLUTION}
+ ICAP_MAXFRAMES = $111a;
+ {$EXTERNALSYM ICAP_MAXFRAMES}
+ ICAP_TILES = $111b;
+ {$EXTERNALSYM ICAP_TILES}
+ ICAP_BITORDER = $111c;
+ {$EXTERNALSYM ICAP_BITORDER}
+ ICAP_CCITTKFACTOR = $111d;
+ {$EXTERNALSYM ICAP_CCITTKFACTOR}
+ ICAP_LIGHTPATH = $111e;
+ {$EXTERNALSYM ICAP_LIGHTPATH}
+ ICAP_PIXELFLAVOR = $111f;
+ {$EXTERNALSYM ICAP_PIXELFLAVOR}
+ ICAP_PLANARCHUNKY = $1120;
+ {$EXTERNALSYM ICAP_PLANARCHUNKY}
+ ICAP_ROTATION = $1121;
+ {$EXTERNALSYM ICAP_ROTATION}
+ ICAP_SUPPORTEDSIZES = $1122;
+ {$EXTERNALSYM ICAP_SUPPORTEDSIZES}
+ ICAP_THRESHOLD = $1123;
+ {$EXTERNALSYM ICAP_THRESHOLD}
+ ICAP_XSCALING = $1124;
+ {$EXTERNALSYM ICAP_XSCALING}
+ ICAP_YSCALING = $1125;
+ {$EXTERNALSYM ICAP_YSCALING}
+ ICAP_BITORDERCODES = $1126;
+ {$EXTERNALSYM ICAP_BITORDERCODES}
+ ICAP_PIXELFLAVORCODES = $1127;
+ {$EXTERNALSYM ICAP_PIXELFLAVORCODES}
+ ICAP_JPEGPIXELTYPE = $1128;
+ {$EXTERNALSYM ICAP_JPEGPIXELTYPE}
+ ICAP_TIMEFILL = $112a;
+ {$EXTERNALSYM ICAP_TIMEFILL}
+ ICAP_BITDEPTH = $112b;
+ {$EXTERNALSYM ICAP_BITDEPTH}
+ ICAP_BITDEPTHREDUCTION = $112c; { Added 1.5 }
+ {$EXTERNALSYM ICAP_BITDEPTHREDUCTION}
+ ICAP_UNDEFINEDIMAGESIZE = $112d; { Added 1.6 }
+ {$EXTERNALSYM ICAP_UNDEFINEDIMAGESIZE}
+ ICAP_IMAGEDATASET = $112e; { Added 1.7 }
+ {$EXTERNALSYM ICAP_IMAGEDATASET}
+ ICAP_EXTIMAGEINFO = $112f; { Added 1.7 }
+ {$EXTERNALSYM ICAP_EXTIMAGEINFO}
+ ICAP_MINIMUMHEIGHT = $1130; { Added 1.7 }
+ {$EXTERNALSYM ICAP_MINIMUMHEIGHT}
+ ICAP_MINIMUMWIDTH = $1131; { Added 1.7 }
+ {$EXTERNALSYM ICAP_MINIMUMWIDTH}
+ ICAP_FLIPROTATION = $1136; { Added 1.8 }
+ {$EXTERNALSYM ICAP_FLIPROTATION}
+ ICAP_BARCODEDETECTIONENABLED = $1137; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODEDETECTIONENABLED}
+ ICAP_SUPPORTEDBARCODETYPES = $1138; { Added 1.8 }
+ {$EXTERNALSYM ICAP_SUPPORTEDBARCODETYPES}
+ ICAP_BARCODEMAXSEARCHPRIORITIES = $1139; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODEMAXSEARCHPRIORITIES}
+ ICAP_BARCODESEARCHPRIORITIES = $113a; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODESEARCHPRIORITIES}
+ ICAP_BARCODESEARCHMODE = $113b; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODESEARCHMODE}
+ ICAP_BARCODEMAXRETRIES = $113c; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODEMAXRETRIES}
+ ICAP_BARCODETIMEOUT = $113d; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODETIMEOUT}
+ ICAP_ZOOMFACTOR = $113e; { Added 1.8 }
+ {$EXTERNALSYM ICAP_ZOOMFACTOR}
+ ICAP_PATCHCODEDETECTIONENABLED = $113f; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODEDETECTIONENABLED}
+ ICAP_SUPPORTEDPATCHCODETYPES = $1140; { Added 1.8 }
+ {$EXTERNALSYM ICAP_SUPPORTEDPATCHCODETYPES}
+ ICAP_PATCHCODEMAXSEARCHPRIORITIES= $1141; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODEMAXSEARCHPRIORITIES}
+ ICAP_PATCHCODESEARCHPRIORITIES = $1142; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODESEARCHPRIORITIES}
+ ICAP_PATCHCODESEARCHMODE = $1143; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODESEARCHMODE}
+ ICAP_PATCHCODEMAXRETRIES = $1144; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODEMAXRETRIES}
+ ICAP_PATCHCODETIMEOUT = $1145; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODETIMEOUT}
+ ICAP_FLASHUSED2 = $1146; { Added 1.8 }
+ {$EXTERNALSYM ICAP_FLASHUSED2}
+ ICAP_IMAGEFILTER = $1147; { Added 1.8 }
+ {$EXTERNALSYM ICAP_IMAGEFILTER}
+ ICAP_NOISEFILTER = $1148; { Added 1.8 }
+ {$EXTERNALSYM ICAP_NOISEFILTER}
+ ICAP_OVERSCAN = $1149; { Added 1.8 }
+ {$EXTERNALSYM ICAP_OVERSCAN}
+ ICAP_AUTOMATICBORDERDETECTION = $1150; { Added 1.8 }
+ {$EXTERNALSYM ICAP_AUTOMATICBORDERDETECTION}
+ ICAP_AUTOMATICDESKEW = $1151; { Added 1.8 }
+ {$EXTERNALSYM ICAP_AUTOMATICDESKEW}
+ ICAP_AUTOMATICROTATE = $1152; { Added 1.8 }
+ {$EXTERNALSYM ICAP_AUTOMATICROTATE}
+ ICAP_JPEGQUALITY = $1153; { Added 1.9 }
+ {$EXTERNALSYM ICAP_JPEGQUALITY}
+
+{ image data sources MAY support these audio caps }
+ ACAP_AUDIOFILEFORMAT = $1201; { Added 1.8 }
+ {$EXTERNALSYM ACAP_AUDIOFILEFORMAT}
+ ACAP_XFERMECH = $1202; { Added 1.8 }
+ {$EXTERNALSYM ACAP_XFERMECH}
+
+{ -----------------------------------------------------------------------
+
+ Version 1.7: Following is Extended Image Info Attributes.
+ July 1997
+ KHL
+
+ ----------------------------------------------------------------------- }
+
+ TWEI_BARCODEX = $1200;
+ {$EXTERNALSYM TWEI_BARCODEX}
+ TWEI_BARCODEY = $1201;
+ {$EXTERNALSYM TWEI_BARCODEY}
+ TWEI_BARCODETEXT = $1202;
+ {$EXTERNALSYM TWEI_BARCODETEXT}
+ TWEI_BARCODETYPE = $1203;
+ {$EXTERNALSYM TWEI_BARCODETYPE}
+ TWEI_DESHADETOP = $1204;
+ {$EXTERNALSYM TWEI_DESHADETOP}
+ TWEI_DESHADELEFT = $1205;
+ {$EXTERNALSYM TWEI_DESHADELEFT}
+ TWEI_DESHADEHEIGHT = $1206;
+ {$EXTERNALSYM TWEI_DESHADEHEIGHT}
+ TWEI_DESHADEWIDTH = $1207;
+ {$EXTERNALSYM TWEI_DESHADEWIDTH}
+ TWEI_DESHADESIZE = $1208;
+ {$EXTERNALSYM TWEI_DESHADESIZE}
+ TWEI_SPECKLESREMOVED = $1209;
+ {$EXTERNALSYM TWEI_SPECKLESREMOVED}
+ TWEI_HORZLINEXCOORD = $120A;
+ {$EXTERNALSYM TWEI_HORZLINEXCOORD}
+ TWEI_HORZLINEYCOORD = $120B;
+ {$EXTERNALSYM TWEI_HORZLINEYCOORD}
+ TWEI_HORZLINELENGTH = $120C;
+ {$EXTERNALSYM TWEI_HORZLINELENGTH}
+ TWEI_HORZLINETHICKNESS = $120D;
+ {$EXTERNALSYM TWEI_HORZLINETHICKNESS}
+ TWEI_VERTLINEXCOORD = $120E;
+ {$EXTERNALSYM TWEI_VERTLINEXCOORD}
+ TWEI_VERTLINEYCOORD = $120F;
+ {$EXTERNALSYM TWEI_VERTLINEYCOORD}
+ TWEI_VERTLINELENGTH = $1210;
+ {$EXTERNALSYM TWEI_VERTLINELENGTH}
+ TWEI_VERTLINETHICKNESS = $1211;
+ {$EXTERNALSYM TWEI_VERTLINETHICKNESS}
+ TWEI_PATCHCODE = $1212;
+ {$EXTERNALSYM TWEI_PATCHCODE}
+ TWEI_ENDORSEDTEXT = $1213;
+ {$EXTERNALSYM TWEI_ENDORSEDTEXT}
+ TWEI_FORMCONFIDENCE = $1214;
+ {$EXTERNALSYM TWEI_FORMCONFIDENCE}
+ TWEI_FORMTEMPLATEMATCH = $1215;
+ {$EXTERNALSYM TWEI_FORMTEMPLATEMATCH}
+ TWEI_FORMTEMPLATEPAGEMATCH = $1216;
+ {$EXTERNALSYM TWEI_FORMTEMPLATEPAGEMATCH}
+ TWEI_FORMHORZDOCOFFSET = $1217;
+ {$EXTERNALSYM TWEI_FORMHORZDOCOFFSET}
+ TWEI_FORMVERTDOCOFFSET = $1218;
+ {$EXTERNALSYM TWEI_FORMVERTDOCOFFSET}
+ TWEI_BARCODECOUNT = $1219;
+ {$EXTERNALSYM TWEI_BARCODECOUNT}
+ TWEI_BARCODECONFIDENCE = $121A;
+ {$EXTERNALSYM TWEI_BARCODECONFIDENCE}
+ TWEI_BARCODEROTATION = $121B;
+ {$EXTERNALSYM TWEI_BARCODEROTATION}
+ TWEI_BARCODETEXTLENGTH = $121C;
+ {$EXTERNALSYM TWEI_BARCODETEXTLENGTH}
+ TWEI_DESHADECOUNT = $121D;
+ {$EXTERNALSYM TWEI_DESHADECOUNT}
+ TWEI_DESHADEBLACKCOUNTOLD = $121E;
+ {$EXTERNALSYM TWEI_DESHADEBLACKCOUNTOLD}
+ TWEI_DESHADEBLACKCOUNTNEW = $121F;
+ {$EXTERNALSYM TWEI_DESHADEBLACKCOUNTNEW}
+ TWEI_DESHADEBLACKRLMIN = $1220;
+ {$EXTERNALSYM TWEI_DESHADEBLACKRLMIN}
+ TWEI_DESHADEBLACKRLMAX = $1221;
+ {$EXTERNALSYM TWEI_DESHADEBLACKRLMAX}
+ TWEI_DESHADEWHITECOUNTOLD = $1222;
+ {$EXTERNALSYM TWEI_DESHADEWHITECOUNTOLD}
+ TWEI_DESHADEWHITECOUNTNEW = $1223;
+ {$EXTERNALSYM TWEI_DESHADEWHITECOUNTNEW}
+ TWEI_DESHADEWHITERLMIN = $1224;
+ {$EXTERNALSYM TWEI_DESHADEWHITERLMIN}
+ TWEI_DESHADEWHITERLAVE = $1225;
+ {$EXTERNALSYM TWEI_DESHADEWHITERLAVE}
+ TWEI_DESHADEWHITERLMAX = $1226;
+ {$EXTERNALSYM TWEI_DESHADEWHITERLMAX}
+ TWEI_BLACKSPECKLESREMOVED = $1227;
+ {$EXTERNALSYM TWEI_BLACKSPECKLESREMOVED}
+ TWEI_WHITESPECKLESREMOVED = $1228;
+ {$EXTERNALSYM TWEI_WHITESPECKLESREMOVED}
+ TWEI_HORZLINECOUNT = $1229;
+ {$EXTERNALSYM TWEI_HORZLINECOUNT}
+ TWEI_VERTLINECOUNT = $122A;
+ {$EXTERNALSYM TWEI_VERTLINECOUNT}
+ TWEI_DESKEWSTATUS = $122B;
+ {$EXTERNALSYM TWEI_DESKEWSTATUS}
+ TWEI_SKEWORIGINALANGLE = $122C;
+ {$EXTERNALSYM TWEI_SKEWORIGINALANGLE}
+ TWEI_SKEWFINALANGLE = $122D;
+ {$EXTERNALSYM TWEI_SKEWFINALANGLE}
+ TWEI_SKEWCONFIDENCE = $122E;
+ {$EXTERNALSYM TWEI_SKEWCONFIDENCE}
+ TWEI_SKEWWINDOWX1 = $122F;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX1}
+ TWEI_SKEWWINDOWY1 = $1230;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY1}
+ TWEI_SKEWWINDOWX2 = $1231;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX2}
+ TWEI_SKEWWINDOWY2 = $1232;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY2}
+ TWEI_SKEWWINDOWX3 = $1233;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX3}
+ TWEI_SKEWWINDOWY3 = $1234;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY3}
+ TWEI_SKEWWINDOWX4 = $1235;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX4}
+ TWEI_SKEWWINDOWY4 = $1236;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY4}
+ TWEI_BOOKNAME = $1238; { added 1.9 }
+ {$EXTERNALSYM TWEI_BOOKNAME}
+ TWEI_CHAPTERNUMBER = $1239; { added 1.9 }
+ {$EXTERNALSYM TWEI_CHAPTERNUMBER}
+ TWEI_DOCUMENTNUMBER = $123A; { added 1.9 }
+ {$EXTERNALSYM TWEI_DOCUMENTNUMBER}
+ TWEI_PAGENUMBER = $123B; { added 1.9 }
+ {$EXTERNALSYM TWEI_PAGENUMBER}
+ TWEI_CAMERA = $123C; { added 1.9 }
+ {$EXTERNALSYM TWEI_CAMERA}
+ TWEI_FRAMENUMBER = $123D; { added 1.9 }
+ {$EXTERNALSYM TWEI_FRAMENUMBER}
+ TWEI_FRAME = $123E; { added 1.9 }
+ {$EXTERNALSYM TWEI_FRAME}
+ TWEI_PIXELFLAVOR = $123F; { added 1.9 }
+ {$EXTERNALSYM TWEI_PIXELFLAVOR}
+
+ TWEJ_NONE = $0000;
+ {$EXTERNALSYM TWEJ_NONE}
+ TWEJ_MIDSEPARATOR = $0001;
+ {$EXTERNALSYM TWEJ_MIDSEPARATOR}
+ TWEJ_PATCH1 = $0002;
+ {$EXTERNALSYM TWEJ_PATCH1}
+ TWEJ_PATCH2 = $0003;
+ {$EXTERNALSYM TWEJ_PATCH2}
+ TWEJ_PATCH3 = $0004;
+ {$EXTERNALSYM TWEJ_PATCH3}
+ TWEJ_PATCH4 = $0005;
+ {$EXTERNALSYM TWEJ_PATCH4}
+ TWEJ_PATCH6 = $0006;
+ {$EXTERNALSYM TWEJ_PATCH6}
+ TWEJ_PATCHT = $0007;
+ {$EXTERNALSYM TWEJ_PATCHT}
+
+ { Added 1.8 }
+ { TW_PASSTHRU.Direction values }
+ TWDR_GET = 1;
+ {$EXTERNALSYM TWDR_GET}
+ TWDR_SET = 2;
+ {$EXTERNALSYM TWDR_SET}
+
+{**************************************************************************
+ * Return Codes and Condition Codes section *
+ ************************************************************************** }
+
+{ Return Codes: DSM_Entry and DS_Entry may return any one of these values. }
+ TWRC_CUSTOMBASE = $8000;
+ {$EXTERNALSYM TWRC_CUSTOMBASE}
+
+ TWRC_SUCCESS = 0;
+ {$EXTERNALSYM TWRC_SUCCESS}
+ TWRC_FAILURE = 1; { Application may get TW_STATUS for info on failure }
+ {$EXTERNALSYM TWRC_FAILURE}
+ TWRC_CHECKSTATUS = 2; { "tried hard": ; get status }
+ {$EXTERNALSYM TWRC_CHECKSTATUS}
+ TWRC_CANCEL = 3;
+ {$EXTERNALSYM TWRC_CANCEL}
+ TWRC_DSEVENT = 4;
+ {$EXTERNALSYM TWRC_DSEVENT}
+ TWRC_NOTDSEVENT = 5;
+ {$EXTERNALSYM TWRC_NOTDSEVENT}
+ TWRC_XFERDONE = 6;
+ {$EXTERNALSYM TWRC_XFERDONE}
+ TWRC_ENDOFLIST = 7; { After MSG_GETNEXT if nothing left }
+ {$EXTERNALSYM TWRC_ENDOFLIST}
+ TWRC_INFONOTSUPPORTED = 8;
+ {$EXTERNALSYM TWRC_INFONOTSUPPORTED}
+ TWRC_DATANOTAVAILABLE = 9;
+ {$EXTERNALSYM TWRC_DATANOTAVAILABLE}
+
+{ Condition Codes: Application gets these by doing DG_CONTROL DAT_STATUS MSG_GET. }
+ TWCC_CUSTOMBASE = $8000;
+ {$EXTERNALSYM TWCC_CUSTOMBASE}
+
+ TWCC_SUCCESS = 0; { It worked! }
+ {$EXTERNALSYM TWCC_SUCCESS}
+ TWCC_BUMMER = 1; { Failure due to unknown causes }
+ {$EXTERNALSYM TWCC_BUMMER}
+ TWCC_LOWMEMORY = 2; { Not enough memory to perform operation }
+ {$EXTERNALSYM TWCC_LOWMEMORY}
+ TWCC_NODS = 3; { No Data Source }
+ {$EXTERNALSYM TWCC_NODS}
+ TWCC_MAXCONNECTIONS = 4; { DS is connected to max possible applications }
+ {$EXTERNALSYM TWCC_MAXCONNECTIONS}
+ TWCC_OPERATIONERROR = 5; { DS or DSM reported error, application shouldn't }
+ {$EXTERNALSYM TWCC_OPERATIONERROR}
+ TWCC_BADCAP = 6; { Unknown capability }
+ {$EXTERNALSYM TWCC_BADCAP}
+ TWCC_BADPROTOCOL = 9; { Unrecognized MSG DG DAT combination }
+ {$EXTERNALSYM TWCC_BADPROTOCOL}
+ TWCC_BADVALUE = 10; { Data parameter out of range }
+ {$EXTERNALSYM TWCC_BADVALUE}
+ TWCC_SEQERROR = 11; { DG DAT MSG out of expected sequence }
+ {$EXTERNALSYM TWCC_SEQERROR}
+ TWCC_BADDEST = 12; { Unknown destination Application/Source in DSM_Entry }
+ {$EXTERNALSYM TWCC_BADDEST}
+ TWCC_CAPUNSUPPORTED = 13; { Capability not supported by source }
+ {$EXTERNALSYM TWCC_CAPUNSUPPORTED}
+ TWCC_CAPBADOPERATION = 14; { Operation not supported by capability }
+ {$EXTERNALSYM TWCC_CAPBADOPERATION}
+ TWCC_CAPSEQERROR = 15; { Capability has dependancy on other capability }
+ {$EXTERNALSYM TWCC_CAPSEQERROR}
+
+{ Added 1.8 }
+ TWCC_DENIED = 16; { File System operation is denied (file is protected) }
+ {$EXTERNALSYM TWCC_DENIED}
+ TWCC_FILEEXISTS = 17; { Operation failed because file already exists. }
+ {$EXTERNALSYM TWCC_FILEEXISTS}
+ TWCC_FILENOTFOUND = 18; { File not found }
+ {$EXTERNALSYM TWCC_FILENOTFOUND}
+ TWCC_NOTEMPTY = 19; { Operation failed because directory is not empty }
+ {$EXTERNALSYM TWCC_NOTEMPTY}
+ TWCC_PAPERJAM = 20; { The feeder is jammed }
+ {$EXTERNALSYM TWCC_PAPERJAM}
+ TWCC_PAPERDOUBLEFEED = 21; { The feeder detected multiple pages }
+ {$EXTERNALSYM TWCC_PAPERDOUBLEFEED}
+ TWCC_FILEWRITEERROR = 22; { Error writing the file (meant for things like disk full conditions) }
+ {$EXTERNALSYM TWCC_FILEWRITEERROR}
+ TWCC_CHECKDEVICEONLINE = 23; { The device went offline prior to or during this operation }
+ {$EXTERNALSYM TWCC_CHECKDEVICEONLINE}
+
+
+{ bit patterns: for query the operation that are supported by the data source on a capability }
+{ Application gets these through DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT }
+{ Added 1.6 }
+ TWQC_GET = $0001;
+ {$EXTERNALSYM TWQC_GET}
+ TWQC_SET = $0002;
+ {$EXTERNALSYM TWQC_SET}
+ TWQC_GETDEFAULT = $0004;
+ {$EXTERNALSYM TWQC_GETDEFAULT}
+ TWQC_GETCURRENT = $0008;
+ {$EXTERNALSYM TWQC_GETCURRENT}
+ TWQC_RESET = $0010;
+ {$EXTERNALSYM TWQC_RESET}
+
+{***************************************************************************
+ * Entry Points *
+ *************************************************************************** }
+
+{*********************************************************************
+ * Function: DSM_Entry, the only entry point into the Data Source Manager.
+ *
+ * Parameters:
+ * pOrigin Identifies the source module of the message. This could
+ * identify an Application, a Source, or the Source Manager.
+ *
+ * pDest Identifies the destination module for the message.
+ * This could identify an application or a data source.
+ * If this is NULL, the message goes to the Source Manager.
+ *
+ * DG The Data Group.
+ * Example: DG_IMAGE.
+ *
+ * DAT The Data Attribute Type.
+ * Example: DAT_IMAGEMEMXFER.
+ *
+ * MSG The message. Messages are interpreted by the destination module
+ * with respect to the Data Group and the Data Attribute Type.
+ * Example: MSG_GET.
+ *
+ * pData A pointer to the data structure or variable identified
+ * by the Data Attribute Type.
+ * Example: (TW_MEMREF)&ImageMemXfer
+ * where ImageMemXfer is a TW_IMAGEMEMXFER structure.
+ *
+ * Returns:
+ * ReturnCode
+ * Example: TWRC_SUCCESS.
+ *
+ ******************************************************************* }
+type
+ {$EXTERNALSYM DSMENTRYPROC}
+ DSMENTRYPROC = function(pOrigin: pTW_IDENTITY; pDest: pTW_IDENTITY;
+ DG: TW_UINT32; DAT: TW_UINT16; MSG: TW_UINT16;
+ pData: TW_MEMREF): TW_UINT16; stdcall;
+
+ TDSMEntryProc = DSMENTRYPROC;
+
+var
+ DSM_Entry: TDSMEntryProc = nil;
+
+{*********************************************************************
+ * Function: DS_Entry, the entry point provided by a Data Source.
+ *
+ * Parameters:
+ * pOrigin Identifies the source module of the message. This could
+ * identify an application or the Data Source Manager.
+ *
+ * DG The Data Group.
+ * Example: DG_IMAGE.
+ *
+ * DAT The Data Attribute Type.
+ * Example: DAT_IMAGEMEMXFER.
+ *
+ * MSG The message. Messages are interpreted by the data source
+ * with respect to the Data Group and the Data Attribute Type.
+ * Example: MSG_GET.
+ *
+ * pData A pointer to the data structure or variable identified
+ * by the Data Attribute Type.
+ * Example: (TW_MEMREF)&ImageMemXfer
+ * where ImageMemXfer is a TW_IMAGEMEMXFER structure.
+ *
+ * Returns:
+ * ReturnCode
+ * Example: TWRC_SUCCESS.
+ *
+ * Note:
+ * The DSPROC type is only used by an application when it calls
+ * a Data Source directly, bypassing the Data Source Manager.
+ *
+ ******************************************************************* }
+type
+ DSENTRYPROC = function(pOrigin: pTW_IDENTITY; DG: TW_UINT32; DAT: TW_UINT16;
+ MSG: TW_UINT16; pData: TW_MEMREF): TW_UINT16; stdcall;
+ {$EXTERNALSYM DSENTRYPROC}
+
+ TDSEntryProc = DSENTRYPROC;
+
+var
+ DS_Entry: TDSEntryProc = nil;
+
+implementation
+
+end.
+
diff --git a/T03贸易布匹检验/delphitwain/.svn/text-base/delphifans.com.nfo.svn-base b/T03贸易布匹检验/delphitwain/.svn/text-base/delphifans.com.nfo.svn-base
new file mode 100644
index 0000000..cbe431f
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/.svn/text-base/delphifans.com.nfo.svn-base
@@ -0,0 +1,25 @@
+
+ Vcl
+ '
+ ' Tips
+ Source
+
+ Tools
+ _..,----,.._
+ .-;'-.,____,.-';
+ (( | |
+ `)) DelphiFans ;
+ ` \ /
+ .-' `,.____.,' '-.
+ ( '------' )
+ `-=..________..--'
+
+ enjoy by
+ DelphiFans.com
+
+ http://www.delphifans.com
+
+
+
+
+ Update Everyday...
diff --git a/T03贸易布匹检验/delphitwain/DelphiTwain.chm b/T03贸易布匹检验/delphitwain/DelphiTwain.chm
new file mode 100644
index 0000000..2c30fd0
Binary files /dev/null and b/T03贸易布匹检验/delphitwain/DelphiTwain.chm differ
diff --git a/T03贸易布匹检验/delphitwain/DelphiTwain.inc b/T03贸易布匹检验/delphitwain/DelphiTwain.inc
new file mode 100644
index 0000000..7e3f851
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/DelphiTwain.inc
@@ -0,0 +1,8 @@
+{.$DEFINE DONTUSEVCL}
+
+{$IFDEF VER80}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER90}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER93}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER100}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFDEF VER110}{$DEFINE DELPHI_4_PRIOR}{$ENDIF}
+{$IFNDEF DELPHI_4_PRIOR}{$DEFINE DEFAULTPARAM}{$ENDIF}
diff --git a/T03贸易布匹检验/delphitwain/DelphiTwain.pas b/T03贸易布匹检验/delphitwain/DelphiTwain.pas
new file mode 100644
index 0000000..0705f57
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/DelphiTwain.pas
@@ -0,0 +1,2862 @@
+{DELPHI IMPLEMENTATION OF TWAIN INTERFACE}
+{december 2003? initially created by Gustavo Daud}
+
+{This is my newest contribution for Delphi comunity, a powerfull}
+{implementation of latest Twain features. As you know, twain is }
+{the most common library to acquire images from most acquisition}
+{devices such as Scanners and Web-Cameras.}
+
+{Twain library is a bit different from other libraries, because}
+{most of the hard work can be done by a a single method. Also it}
+{automatically changes in the application message loop, which is}
+{not a simple task, at least in delphi VCL.}
+
+{It is not 100% sure to to Twain not to be installed in Windows,}
+{as it ships with Windows and later and with most of the }
+{acquisition device drivers (automatically with their installation)}
+{This library dynamically calls the library, avoiding the application}
+{hand when it is not present.}
+
+{Also, as in most of my other components, I included a trigger}
+{to allow the component to work without the heavy delphi VCL}
+{for small final executables. To enable, edit DelphiTwain.inc}
+
+{20/01/2004 - Some updates and bug fixes by Nemeth Peter}
+
+{$INCLUDE DelphiTwain.inc}
+
+unit DelphiTwain;
+
+interface
+
+{Used units}
+uses
+ Twain, Windows {$IFNDEF DONTUSEVCL}, Classes, SysUtils, Graphics{$ENDIF},
+ DelphiTwainUtils;
+
+const
+ {Name of the Twain library for 32 bits enviroment}
+ TWAINLIBRARY = 'TWAIN_32.DLL';
+ VIRTUALWIN_CLASSNAME = 'DELPHITWAIN_VIRTUALWINDOW';
+
+const
+ {Error codes}
+ ERROR_BASE = 300;
+ ERROR_INT16: TW_INT16 = HIGH(TW_INT16);
+
+type
+ {From twain}
+ TW_STR255 = Twain.TW_STR255;
+
+ {Forward declaration}
+ TDelphiTwain = class;
+
+ {Component kinds}
+ {$IFDEF DONTUSEVCL} TTwainComponent = TObject;
+ {$ELSE} TTwainComponent = TComponent; {$ENDIF}
+
+ {File formats}
+ TTwainFormat = (tfTIFF, tfPict, tfBMP, tfXBM, tfJPEG, tfFPX,
+ tfTIFFMulti, tfPNG, tfSPIFF, tfEXIF, tfUnknown);
+ {Twain units}
+ TTwainUnit = (tuInches, tuCentimeters, tuPicas, tuPoints, tuTwips,
+ tuPixels, tuUnknown);
+ TTwainUnitSet = set of TTwainUnit;
+ {Twain pixel flavor}
+ TTwainPixelFlavor = (tpfChocolate, tpfVanilla, tpfUnknown);
+ TTwainPixelFlavorSet = set of TTwainPixelFlavor;
+ {Twain pixel type}
+ TTwainPixelType = (tbdBw, tbdGray, tbdRgb, tbdPalette, tbdCmy, tbdCmyk,
+ tbdYuv, tbdYuvk, tbdCieXYZ, tbdUnknown);
+ TTwainPixelTypeSet = set of TTwainPixelType;
+ {Twain bit depth}
+ TTwainBitDepth = array of TW_UINT16;
+ {Twain resolutions}
+ TTwainResolution = array of Extended;
+
+ {Events}
+ TOnTwainError = procedure(Sender: TObject; const Index: Integer; ErrorCode,
+ Additional: Integer) of object;
+ TOnTwainAcquire = procedure(Sender: TObject; const Index: Integer; Image:
+ {$IFNDEF DONTUSEVCL}TBitmap{$ELSE}HBitmap{$ENDIF};
+ var Cancel: Boolean) of object;
+ TOnAcquireProgress = procedure(Sender: TObject; const Index: Integer;
+ const Image: HBitmap; const Current, Total: Integer) of object;
+ TOnSourceNotify = procedure(Sender: TObject; const Index: Integer) of object;
+ TOnSourceFileTransfer = procedure(Sender: TObject; const Index: Integer;
+ Filename: TW_STR255; Format: TTwainFormat; var Cancel: Boolean) of object;
+
+ {Avaliable twain languages}
+ TTwainLanguage = ({-1}tlUserLocale, tlDanish, tlDutch, tlInternationalEnglish,
+ tlFrenchCanadian, tlFinnish, tlFrench, tlGerman, tlIcelandic, tlItalian,
+ tlNorwegian, tlPortuguese, tlSpanish, tlSwedish, tlUsEnglish,
+ tlAfrikaans, tlAlbania, tlArabic, tlArabicAlgeria, tlArabicBahrain, {18}
+ tlArabicEgypt, tlArabicIraq, tlArabJordan, tlArabicKuwait,
+ tlArabicLebanon, tlArabicLibya, tlArabicMorocco, tlArabicOman,
+ tlArabicQatar, tlArabicSaudiarabia, tlArabicSyria, tlArabicTunisia,
+ tlArabicUae, tlArabicYemen, tlBasque, tlByelorussian, tlBulgarian, {35}
+ tlCatalan, tlChinese, tlChineseHongkong, tlChinesePeoplesRepublic,
+ tlChineseSingapore, tlChineseSimplified, tlChineseTwain, {42}
+ tlChineseTraditional, tlCroatia, tlCzech, tlDutchBelgian, {46}
+ tlEnglishAustralian, tlEnglishCanadian, tlEnglishIreland,
+ tlEnglishNewZealand, tlEnglishSouthAfrica, tlEnglishUk, {52}
+ tlEstonian, tlFaeroese, tlFarsi, tlFrenchBelgian, tlFrenchLuxembourg, {57}
+ tlFrenchSwiss, tlGermanAustrian, tlGermanLuxembourg, tlGermanLiechtenstein,
+ tlGermanSwiss, tlGreek, tlHebrew, tlHungarian, tlIndonesian, {66}
+ tlItalianSwiss, tlJapanese, tlKorean, tlKoreanJohab, tlLatvian, {71}
+ tlLithuanian, tlNorewgianBokmal, tlNorwegianNynorsk, tlPolish, {75}
+ tlPortugueseBrazil, tlRomanian, tlRussian, tlSerbianLatin,
+ tlSlovak, tlSlovenian, tlSpanishMexican, tlSpanishModern, tlThai,
+ tlTurkish, tlUkranian, tlAssamese, tlBengali, tlBihari, tlBodo,
+ tlDogri, tlGujarati {92}, tlHarayanvi, tlHindi, tlKannada, tlKashmiri,
+ tlMalayalam, tlMarathi, tlMarwari, tlMeghalayan, tlMizo, tlNaga {102},
+ tlOrissi, tlPunjabi, tlPushtu, tlSerbianCyrillic, tlSikkimi,
+ tlSwidishFinland, tlTamil, tlTelugu, tlTripuri, tlUrdu, tlVietnamese);
+ {Twain supported groups}
+ TTwainGroups = set of (tgControl, tgImage, tgAudio);
+
+ {Transfer mode for twain}
+ TTwainTransferMode = (ttmFile, ttmNative, ttmMemory);
+
+ {rect for LAYOUT; npeter 2004.01.12.}
+ TTwainRect =
+ record
+ Left: double;
+ Top: double;
+ Right: double;
+ Bottom: double;
+ end;
+
+ {Object to handle TW_IDENTITY}
+ TTwainIdentity = class{$IFNDEF DONTUSEVCL}(TPersistent){$ENDIF}
+ private
+ {Structure which should be filled}
+ Structure: TW_IDENTITY;
+ {Owner}
+ fOwner: {$IFNDEF DONTUSEVCL}TComponent{$ELSE}TObject{$ENDIF};
+ {Returns/sets application language property}
+ function GetLanguage(): TTwainLanguage;
+ procedure SetLanguage(const Value: TTwainLanguage);
+ {Returns/sets text values}
+ function GetString(const Index: integer): String;
+ procedure SetString(const Index: Integer; const Value: String);
+ {Returns/sets avaliable groups}
+ function GetGroups(): TTwainGroups;
+ procedure SetGroups(const Value: TTwainGroups);
+ protected
+ {$IFNDEF DONTUSEVCL}function GetOwner(): TPersistent; override;{$ENDIF}
+ public
+ {Object being created}
+ {$IFNDEF DONTUSEVCL} constructor Create(AOwner: TComponent);
+ {$ELSE} constructor Create(AOwner: TObject); {$ENDIF}
+ {Copy properties from another TTwainIdentity}
+ {$IFDEF DONTUSEVCL} procedure Assign(Source: TObject); {$ELSE}
+ procedure Assign(Source: TPersistent); override; {$ENDIF}
+ published
+ {Application major version}
+ property MajorVersion: TW_UINT16 read Structure.Version.MajorNum
+ write Structure.Version.MajorNum;
+ {Application minor version}
+ property MinorVersion: TW_UINT16 read Structure.Version.MinorNum
+ write Structure.Version.MinorNum;
+ {Language}
+ property Language: TTwainLanguage read GetLanguage write SetLanguage;
+ {Country code}
+ property CountryCode: word read Structure.Version.Country write
+ Structure.Version.Country;
+ {Supported groups}
+ property Groups: TTwainGroups read GetGroups write SetGroups;
+ {Text values}
+ property VersionInfo: String index 0 read GetString write
+ SetString;
+ property Manufacturer: String index 1 read GetString write
+ SetString;
+ property ProductFamily: String index 2 read GetString write
+ SetString;
+ property ProductName: String index 3 read GetString write
+ SetString;
+ end;
+
+ {Return set for capability retrieving/setting}
+ TCapabilityRet = (crSuccess, crUnsupported, crBadOperation, crDependencyError,
+ crLowMemory, crInvalidState, crInvalidContainer);
+ {Kinds of capability retrieving}
+ TRetrieveCap = (rcGet, rcGetCurrent, rcGetDefault, rcReset);
+ {Capability list type}
+ TGetCapabilityList = array of string;
+ TSetCapabilityList = array of pointer;
+
+ {Source object}
+ TTwainSource = class(TTwainIdentity)
+ private
+ {Holds the item index}
+ fIndex: Integer;
+ {Transfer mode for the images}
+ fTransferMode: TTwainTransferMode;
+ {Stores if user interface should be shown}
+ fShowUI: Boolean;
+ {Stores if the source window is modal}
+ fModal: Boolean;
+ {Stores if the source is enabled}
+ fEnabled: Boolean;
+ {Stores if the source is loaded}
+ fLoaded: Boolean;
+ {Stores the owner}
+ fOwner: TDelphiTwain;
+ {Used with property SourceManagerLoaded to test if the source manager}
+ {is loaded or not.}
+ function GetSourceManagerLoaded(): Boolean;
+ {Returns a pointer to the application}
+ function GetAppInfo(): pTW_IDENTITY;
+ {Sets if the source is loaded}
+ procedure SetLoaded(const Value: Boolean);
+ {Sets if the source is enabled}
+ procedure SetEnabled(const Value: Boolean);
+ {Returns a pointer to the source pTW_IDENTITY}
+ function GetStructure: pTW_IDENTITY;
+ {Returns a resolution}
+ function GetResolution(Capability: TW_UINT16; var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+ protected
+ {Reads a native image}
+ procedure ReadNative(Handle: TW_UINT32; var Cancel: Boolean);
+ {Reads the file image}
+ procedure ReadFile(Name: TW_STR255; Format: TW_UINT16; var Cancel: Boolean);
+ {Call event for memory image}
+ procedure ReadMemory(Image: HBitmap; var Cancel: Boolean);
+ protected
+ {Prepare image memory transference}
+ function PrepareMemXfer(var BitmapHandle: HBitmap;
+ var PixelType: TW_INT16): TW_UINT16;
+ {Transfer image memory}
+ function TransferImageMemory(var ImageHandle: HBitmap;
+ PixelType: TW_INT16): TW_UINT16;
+ {Returns a pointer to the TW_IDENTITY for the application}
+ property AppInfo: pTW_IDENTITY read GetAppInfo;
+ {Method to transfer the images}
+ procedure TransferImages();
+ {Message received in the event loop}
+ function ProcessMessage(const Msg: TMsg): Boolean;
+ {Returns if the source manager is loaded}
+ property SourceManagerLoaded: Boolean read GetSourceManagerLoaded;
+ {Source configuration methods}
+ {************************}
+ protected
+ {Gets an item and returns it in a string}
+ procedure GetItem(var Return: String; ItemType: TW_UINT16; Data: Pointer);
+ {Converts from a result to a TCapabilityRec}
+ function ResultToCapabilityRec(const Value: TW_UINT16): TCapabilityRet;
+ {Sets a capability}
+ function SetCapabilityRec(const Capability, ConType: TW_UINT16;
+ Data: HGLOBAL): TCapabilityRet;
+ public
+ {Returns a capability strucutre}
+ function GetCapabilityRec(const Capability: TW_UINT16;
+ var Handle: HGLOBAL; Mode: TRetrieveCap;
+ var Container: TW_UINT16): TCapabilityRet;
+ {************************}
+ {Returns an one value capability}
+ function GetOneValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var Value: string;
+ Mode: TRetrieveCap{$IFDEF DEFAULTPARAM}=rcGet{$ENDIF};
+ MemHandle: HGLOBAL{$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {Returns an range capability}
+ function GetRangeValue(Capability: TW_UINT16; var ItemType: TW_UINT16;
+ var Min, Max, Step, Default, Current: String;
+ MemHandle: HGLOBAL{$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {Returns an enumeration capability}
+ function GetEnumerationValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var List: TGetCapabilityList; var Current,
+ Default: Integer; Mode: TRetrieveCap{$IFDEF DEFAULTPARAM}=rcGet{$ENDIF};
+ MemHandle: HGLOBAL{$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {Returns an array capability}
+ function GetArrayValue(Capability: TW_UINT16; var ItemType: TW_UINT16;
+ var List: TGetCapabilityList; MemHandle: HGLOBAL
+ {$IFDEF DEFAULTPARAM}=0{$ENDIF}): TCapabilityRet;
+ {************************}
+ {Sets an one value capability}
+ function SetOneValue(Capability: TW_UINT16; ItemType: TW_UINT16;
+ Value: Pointer): TCapabilityRet;
+ {Sets a range capability}
+ function SetRangeValue(Capability, ItemType: TW_UINT16; Min, Max, Step,
+ Current: TW_UINT32): TCapabilityRet;
+ {Sets an enumeration capability}
+ function SetEnumerationValue(Capability, ItemType: TW_UINT16;
+ CurrentIndex: TW_UINT32; List: TSetCapabilityList): TCapabilityRet;
+ {Sets an array capability}
+ function SetArrayValue(Capability, ItemType: TW_UINT16;
+ List: TSetCapabilityList): TCapabilityRet;
+ public
+ {Setup file transfer}
+ function SetupFileTransfer(Filename: String; Format: TTwainFormat): Boolean;
+ protected
+ {Used with property PendingXfers}
+ function GetPendingXfers(): TW_INT16;
+ public
+ {Set source transfer mode}
+ function ChangeTransferMode(NewMode: TTwainTransferMode): TCapabilityRet;
+ {Returns return status information}
+ function GetReturnStatus(): TW_UINT16;
+ {Capability setting}
+ {Set the number of images that the application wants to receive}
+ function SetCapXferCount(Value: SmallInt): TCapabilityRet;
+ {Returns the number of images that the source will return}
+ function GetCapXferCount(var Return: SmallInt;
+ Mode: TRetrieveCap{$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Retrieve the unit measure for all quantities}
+ function GetICapUnits(var Return: TTwainUnit;
+ var Supported: TTwainUnitSet; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set the unit measure}
+ function SetICapUnits(Value: TTwainUnit): TCapabilityRet;
+ {npeter 2004.01.12 begin}
+ function SetImagelayoutFrame(const fLeft,fTop,fRight,
+ fBottom: double): TCapabilityRet;
+ function SetIndicators(Value: boolean): TCapabilityRet;
+ {npeter 2004.01.12 end}
+ {Retrieve the pixel flavor values}
+ function GetIPixelFlavor(var Return: TTwainPixelFlavor;
+ var Supported: TTwainPixelFlavorSet; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set the pixel flavor values}
+ function SetIPixelFlavor(Value: TTwainPixelFlavor): TCapabilityRet;
+ {Returns bitdepth values}
+ function GetIBitDepth(var Return: Word;
+ var Supported: TTwainBitDepth; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set current bitdepth value}
+ function SetIBitDepth(Value: Word): TCapabilityRet;
+ {Returns pixel type values}
+ function GetIPixelType(var Return: TTwainPixelType;
+ var Supported: TTwainPixelTypeSet; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Set the pixel type value}
+ function SetIPixelType(Value: TTwainPixelType): TCapabilityRet;
+ {Returns X and Y resolutions}
+ function GetIXResolution(var Return: Extended; var Values: TTwainResolution;
+ Mode: TRetrieveCap {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ function GetIYResolution(var Return: Extended; var Values: TTwainResolution;
+ Mode: TRetrieveCap {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Sets X and X resolutions}
+ function SetIXResolution(Value: Extended): TCapabilityRet;
+ function SetIYResolution(Value: Extended): TCapabilityRet;
+ {Returns physical width and height}
+ function GetIPhysicalWidth(var Return: Extended; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ function GetIPhysicalHeight(var Return: Extended; Mode: TRetrieveCap
+ {$IFDEF DEFAULTPARAM}=rcGet{$ENDIF}): TCapabilityRet;
+ {Returns if user interface is controllable}
+ function GetUIControllable(var Return: Boolean): TCapabilityRet;
+ {Returns feeder is loaded or not}
+ function GetFeederLoaded(var Return: Boolean): TCapabilityRet;
+ {Returns/sets if feeder is enabled}
+ function GetFeederEnabled(var Return: Boolean): TCapabilityRet;
+ function SetFeederEnabled(Value: WordBool): TCapabilityRet;
+ {Returns/sets if auto feed is enabled}
+ function GetAutofeed(var Return: Boolean): TCapabilityRet;
+ function SetAutoFeed(Value: WordBool): TCapabilityRet;
+ {Returns number of pending transfer}
+ property PendingXfers: TW_INT16 read GetPendingXfers;
+ public
+ {Enables the source}
+ function EnableSource(ShowUI, Modal: Boolean): Boolean;
+ {Disables the source}
+ function DisableSource: Boolean;
+ {Loads the source}
+ function LoadSource(): Boolean;
+ {Unloads the source}
+ function UnloadSource(): Boolean;
+ {Returns a pointer to the source identity}
+ property SourceIdentity: pTW_IDENTITY read GetStructure;
+ {Returns/sets if the source is enabled}
+ property Enabled: Boolean read fEnabled write SetEnabled;
+ {Returns/sets if this source is loaded}
+ property Loaded: Boolean read fLoaded write SetLoaded;
+ {Object being created/destroyed}
+ constructor Create(AOwner: TDelphiTwain);
+ destructor Destroy; override;
+ {Returns owner}
+ property Owner: TDelphiTwain read fOwner;
+ {Source window is modal}
+ property Modal: Boolean read fModal write fModal;
+ {Sets if user interface should be shown}
+ property ShowUI: Boolean read fShowUI write fShowUI;
+ {Transfer mode for transfering images from the source to}
+ {the component and finally to the application}
+ property TransferMode: TTwainTransferMode read fTransferMode
+ write fTransferMode;
+ {Returns the item index}
+ property Index: Integer read fIndex;
+ {Convert properties from write/read to read only}
+ {(read description on TTwainIdentity source)}
+ property MajorVersion: TW_UINT16 read Structure.Version.MajorNum;
+ property MinorVersion: TW_UINT16 read Structure.Version.MinorNum;
+ property Language: TTwainLanguage read GetLanguage;
+ property CountryCode: word read Structure.Version.Country;
+ property Groups: TTwainGroups read GetGroups;
+ property VersionInfo: String index 0 read GetString;
+ property Manufacturer: String index 1 read GetString;
+ property ProductFamily: String index 2 read GetString;
+ property ProductName: String index 3 read GetString;
+ end;
+
+ {Component part}
+ TDelphiTwain = class(TTwainComponent)
+ private
+ {Should contain the number of Twain sources loaded}
+ fSourcesLoaded: Integer;
+ {Contains if the select source dialog is being displayed}
+ SelectDialogDisplayed: Boolean;
+ private
+ {Event pointer holders}
+ fOnSourceDisable: TOnSourceNotify;
+ fOnAcquireCancel: TOnSourceNotify;
+ fOnTwainAcquire: TOnTwainAcquire;
+ fOnSourceSetupFileXfer: TOnSourceNotify;
+ fOnSourceFileTransfer: TOnSourceFileTransfer;
+ fOnAcquireError: TOnTwainError;
+ fOnAcquireProgress: TOnAcquireProgress;
+ private
+ {Temp variable to allow SourceCount to be displayed in delphi}
+ {property editor}
+ fDummySourceCount: integer;
+ {Contains list of source devices}
+ DeviceList: TPointerList;
+ {Contains a pointer to the structure with the application}
+ {information}
+ AppInfo: pTW_IDENTITY;
+ {Holds the object to allow the user to set the application information}
+ fInfo: TTwainIdentity;
+ {Holds the handle for the virtual window which will receive}
+ {twain message notifications}
+ VirtualWindow: THandle;
+ {Will hold Twain library handle}
+ fHandle: HInst;
+ {Holds if the component has enumerated the devices}
+ fHasEnumerated: Boolean;
+ {Holds twain dll procedure handle}
+ fTwainProc: TDSMEntryProc;
+ {Holds the transfer mode to be used}
+ fTransferMode: TTwainTransferMode;
+ {Contains if the library is loaded}
+ fLibraryLoaded: Boolean;
+ {Contains if the source manager was loaded}
+ fSourceManagerLoaded: Boolean;
+ {Procedure to load and unload twain library and update property}
+ procedure SetLibraryLoaded(const Value: Boolean);
+ {Procedure to load or unloaded the twain source manager}
+ procedure SetSourceManagerLoaded(const Value: Boolean);
+ {Updates the application information object}
+ procedure SetInfo(const Value: TTwainIdentity);
+ {Returns the number of sources}
+ function GetSourceCount(): Integer;
+ {Returns a source from the list}
+ function GetSource(Index: Integer): TTwainSource;
+ {Finds a matching source index}
+ function FindSource(Value: pTW_IDENTITY): Integer;
+ protected
+ {Returns the default source}
+ function GetDefaultSource: Integer;
+ {Creates the virtual window}
+ procedure CreateVirtualWindow();
+ {Clears the list of sources}
+ procedure ClearDeviceList();
+ public
+ {Allows Twain to display a dialog to let the user choose any source}
+ {and returns the source index in the list}
+ function SelectSource(): Integer;
+ {Returns the number of loaded sources}
+ property SourcesLoaded: Integer read fSourcesLoaded;
+ {Enumerate the avaliable devices after Source Manager is loaded}
+ function EnumerateDevices(): Boolean;
+ {Object being created}
+ {$IFNDEF DONTUSEVCL}
+ constructor Create(AOwner: TComponent);override;
+ {$ELSE}
+ constructor Create;
+ {$ENDIF}
+ {Object being destroyed}
+ destructor Destroy(); override;
+ {Loads twain library and returns if it loaded sucessfully}
+ function LoadLibrary(): Boolean;
+ {Unloads twain and returns if it unloaded sucessfully}
+ function UnloadLibrary(): Boolean;
+ {Loads twain source manager}
+ function LoadSourceManager(): Boolean;
+ {Unloads the source manager}
+ function UnloadSourceManager(forced: boolean): Boolean;
+ {Returns the application TW_IDENTITY}
+ property AppIdentity: pTW_IDENTITY read AppInfo;
+ {Returns Twain library handle}
+ property Handle: HInst read fHandle;
+ {Returns a pointer to Twain only procedure}
+ property TwainProc: TDSMEntryProc read fTwainProc;
+ {Holds if the component has enumerated the devices}
+ property HasEnumerated: Boolean read fHasEnumerated;
+ {Returns a source}
+ property Source[Index: Integer]: TTwainSource read GetSource;
+ published
+ {Events}
+ {Source being disabled}
+ property OnSourceDisable: TOnSourceNotify read fOnSourceDisable
+ write fOnSourceDisable;
+ {Acquire cancelled}
+ property OnAcquireCancel: TOnSourceNotify read fOnAcquireCancel
+ write fOnAcquireCancel;
+ {Image acquired}
+ property OnTwainAcquire: TOnTwainAcquire read fOnTwainAcquire
+ write fOnTwainAcquire;
+ {User should set information to prepare for the file transfer}
+ property OnSourceSetupFileXfer: TOnSourceNotify read fOnSourceSetupFileXfer
+ write fOnSourceSetupFileXfer;
+ {File transfered}
+ property OnSourceFileTransfer: TOnSourceFileTransfer read
+ fOnSourceFileTransfer write fOnSourceFileTransfer;
+ {Acquire error}
+ property OnAcquireError: TOnTwainError read fOnAcquireError
+ write fOnAcquireError;
+ {Acquire progress, for memory transfers}
+ property OnAcquireProgress: TOnAcquireProgress read fOnAcquireProgress
+ write fOnAcquireProgress;
+ published
+ {Default transfer mode to be used with sources}
+ property TransferMode: TTwainTransferMode read fTransferMode
+ write fTransferMode;
+ {Returns the number of sources, after Library and Source Manager}
+ {has being loaded}
+ property SourceCount: Integer read GetSourceCount write fDummySourceCount;
+ {User should fill the application information}
+ property Info: TTwainIdentity read fInfo write SetInfo;
+ {Loads or unload Twain library}
+ property LibraryLoaded: Boolean read fLibraryLoaded write SetLibraryLoaded;
+ {Loads or unloads the source manager}
+ property SourceManagerLoaded: Boolean read fSourceManagerLoaded write
+ SetSourceManagerLoaded;
+ end;
+
+{Puts a string inside a TW_STR255}
+function StrToStr255(Value: String): TW_STR255;
+{This method returns if Twain is installed in the current machine}
+function IsTwainInstalled(): Boolean;
+{Called by Delphi to register the component}
+procedure Register();
+{Returns the size of a twain type}
+function TWTypeSize(TypeName: TW_UINT16): Integer;
+
+implementation
+
+{Units used bellow}
+uses
+ Messages;
+
+{Called by Delphi to register the component}
+procedure Register();
+begin
+ {$IFNDEF DONTUSEVCL}
+ RegisterComponents('NP', [TDelphiTwain]);
+ {$ENDIF}
+end;
+
+{Returns the size of a twain type}
+function TWTypeSize(TypeName: TW_UINT16): Integer;
+begin
+ {Test the type to return the size}
+ case TypeName of
+ TWTY_INT8 : Result := sizeof(TW_INT8);
+ TWTY_UINT8 : Result := sizeof(TW_UINT8);
+ TWTY_INT16 : Result := sizeof(TW_INT16);
+ TWTY_UINT16: Result := sizeof(TW_UINT16);
+ TWTY_INT32 : Result := sizeof(TW_INT32);
+ TWTY_UINT32: Result := sizeof(TW_UINT32);
+ TWTY_FIX32 : Result := sizeof(TW_FIX32);
+ TWTY_FRAME : Result := sizeof(TW_FRAME);
+ TWTY_STR32 : Result := sizeof(TW_STR32);
+ TWTY_STR64 : Result := sizeof(TW_STR64);
+ TWTY_STR128: Result := sizeof(TW_STR128);
+ TWTY_STR255: Result := sizeof(TW_STR255);
+ //npeter: the following types were not implemented
+ //especially the bool caused problems
+ TWTY_BOOL: Result := sizeof(TW_BOOL);
+ TWTY_UNI512: Result := sizeof(TW_UNI512);
+ TWTY_STR1024: Result := sizeof(TW_STR1024);
+ else Result := 0;
+ end {case}
+end;
+
+{Puts a string inside a TW_STR255}
+function StrToStr255(Value: String): TW_STR255;
+begin
+ {Clean result}
+ Fillchar(Result, sizeof(TW_STR255), #0);
+ {If value fits inside the TW_STR255, copy memory}
+ if Length(Value) <= sizeof(TW_STR255) then
+ CopyMemory(@Result[0], @Value[1], Length(Value))
+ else CopyMemory(@Result[0], @Value[1], sizeof(TW_STR255));
+end;
+
+{Returns full Twain directory (usually in Windows directory)}
+function GetTwainDirectory(): String;
+var
+ i: TDirectoryKind;
+ Dir: String;
+begin
+ {Searches in all the directories}
+ FOR i := LOW(TDirectoryKind) TO HIGH(TDirectoryKind) DO
+ begin
+
+ {Directory to search}
+ Dir := GetCustomDirectory(i);
+ {Tests if the file exists in this directory}
+ if FileExists(Dir + TWAINLIBRARY) then
+ begin
+ {In case it exists, returns this directory and exit}
+ {the for loop}
+ Result := Dir;
+ Break;
+ end {if FileExists}
+
+ end {FOR i}
+end;
+
+{This method returns if Twain is installed in the current machine}
+function IsTwainInstalled(): Boolean;
+begin
+ {If GetTwainDirectory function returns an empty string, it means}
+ {that Twain was not found}
+ Result := (GetTwainDirectory() <> '');
+end;
+
+{ TTwainIdentity object implementation }
+
+{Object being created}
+{$IFNDEF DONTUSEVCL} constructor TTwainIdentity.Create(AOwner: TComponent);
+{$ELSE} constructor TTwainIdentity.Create(AOwner: TObject); {$ENDIF}
+begin
+ {Allows ancestor to work}
+ inherited Create;
+
+ {Set initial properties}
+ FillChar(Structure, sizeof(Structure), #0);
+ Language := tlUserLocale;
+ CountryCode := 1;
+ MajorVersion := 1;
+ VersionInfo := 'Application name';
+ Structure.ProtocolMajor := TWON_PROTOCOLMAJOR;
+ Structure.ProtocolMinor := TWON_PROTOCOLMINOR;
+ Groups := [tgImage, tgControl];
+ Manufacturer := 'Application manufacturer';
+ ProductFamily := 'App product family';
+ ProductName := 'App product name';
+
+ fOwner := AOwner; {Copy owner pointer}
+end;
+
+{$IFNDEF DONTUSEVCL}
+function TTwainIdentity.GetOwner(): TPersistent;
+begin
+ Result := fOwner;
+end;
+{$ENDIF}
+
+{Sets a text value}
+procedure TTwainIdentity.SetString(const Index: Integer;
+ const Value: String);
+var
+ PropStr: PChar;
+begin
+ {Select and copy pointer}
+ case Index of
+ 0: PropStr := @Structure.Version.Info[0];
+ 1: PropStr := @Structure.Manufacturer[0];
+ 2: PropStr := @Structure.ProductFamily[0];
+ else PropStr := @Structure.ProductName[0];
+ end {case};
+
+ {Set value}
+ Fillchar(PropStr^, sizeof(TW_STR32), #0);
+ if Length(Value) > sizeof(TW_STR32) then
+ CopyMemory(PropStr, @Value[1], sizeof(TW_STR32))
+ else
+ CopyMemory(PropStr, @Value[1], Length(Value));
+end;
+
+{Returns a text value}
+function TTwainIdentity.GetString(const Index: Integer): String;
+begin
+ {Test for the required property}
+ case Index of
+ 0: Result := Structure.Version.Info;
+ 1: Result := Structure.Manufacturer;
+ 2: Result := Structure.ProductFamily;
+ else Result := Structure.ProductName;
+ end {case}
+end;
+
+{Returns application language property}
+function TTwainIdentity.GetLanguage(): TTwainLanguage;
+begin
+ Result := TTwainLanguage(Structure.Version.Language + 1);
+end;
+
+{Sets application language property}
+procedure TTwainIdentity.SetLanguage(const Value: TTwainLanguage);
+begin
+ Structure.Version.Language := Word(Value) - 1;
+end;
+
+{Copy properties from another TTwainIdentity}
+{$IFDEF DONTUSEVCL} procedure TTwainIdentity.Assign(Source: TObject);
+{$ELSE} procedure TTwainIdentity.Assign(Source: TPersistent); {$ENDIF}
+begin
+ {The source should also be a TTwainIdentity}
+ if Source is TTwainIdentity then
+ {Copy properties}
+ Structure := TTwainIdentity(Source).Structure
+ else
+ {$IFNDEF DONTUSEVCL}inherited; {$ENDIF}
+end;
+
+{Returns avaliable groups}
+function TTwainIdentity.GetGroups(): TTwainGroups;
+begin
+ {Convert from Structure.SupportedGroups to TTwainGroups}
+ Include(Result, tgControl);
+ if DG_IMAGE AND Structure.SupportedGroups <> 0 then
+ Include(Result, tgImage);
+ if DG_AUDIO AND Structure.SupportedGroups <> 0 then
+ Include(Result, tgAudio);
+end;
+
+{Sets avaliable groups}
+procedure TTwainIdentity.SetGroups(const Value: TTwainGroups);
+begin
+ {Convert from TTwainGroups to Structure.SupportedGroups}
+ Structure.SupportedGroups := DG_CONTROL;
+ if tgImage in Value then
+ Structure.SupportedGroups := Structure.SupportedGroups or DG_IMAGE;
+ if tgAudio in Value then
+ Structure.SupportedGroups := Structure.SupportedGroups or DG_AUDIO;
+end;
+
+{ TDelphiTwain component implementation }
+
+{Loads twain library and returns if it loaded sucessfully}
+function TDelphiTwain.LoadLibrary(): Boolean;
+var
+ TwainDirectory: String;
+begin
+ {The library must not be already loaded}
+ if (not LibraryLoaded) then
+ begin
+ Result := FALSE; {Initially returns FALSE}
+ {Searches for Twain directory}
+ TwainDirectory := GetTwainDirectory();
+ {Continue only if twain is installed in an known directory}
+ if TwainDirectory <> '' then
+ begin
+
+ fHandle := Windows.LoadLibrary(PChar(TwainDirectory + TWAINLIBRARY));
+ {If the library was sucessfully loaded}
+ if (fHandle <> INVALID_HANDLE_VALUE) then
+ begin
+
+ {Obtains method handle}
+ @fTwainProc := GetProcAddress(fHandle, MAKEINTRESOURCE(1));
+ {Returns TRUE/FALSE if the method was obtained}
+ Result := (@fTwainProc <> nil);
+
+ {If the method was not obtained, also free the library}
+ if not Result then
+ begin
+ {Free the handle and clears the variable}
+ Windows.FreeLibrary(fHandle);
+ fHandle := 0;
+ end {if not Result}
+ end
+ else
+ {If it was not loaded, clears handle value}
+ fHandle := 0;
+
+ end {if TwainDirectory <> ''};
+
+ end
+ else
+ {If it was already loaded, returns true, since that is}
+ {what was supposed to happen}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then fLibraryLoaded := TRUE;
+end;
+
+
+{Unloads twain and returns if it unloaded sucessfully}
+function TDelphiTwain.UnloadLibrary(): Boolean;
+begin
+ {The library must not be already unloaded}
+ if (LibraryLoaded) then
+ begin
+ {Unloads the source manager}
+ SourceManagerLoaded := FALSE;
+ {Just call windows method to unload}
+ Result := Windows.FreeLibrary(Handle);
+ {If it was sucessfull, also clears handle value}
+ if Result then fHandle := 0;
+ {Updates property}
+ fLibraryLoaded := not Result;
+ end
+ else
+ {If it was already unloaded, returns true, since that is}
+ {what was supposed to happen}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then fLibraryLoaded := FALSE;
+end;
+
+{Enumerate the avaliable devices after Source Manager is loaded}
+function TDelphiTwain.EnumerateDevices(): Boolean;
+var
+ NewSource: TTwainSource;
+ CallRes : TW_UINT16;
+begin
+ {Booth library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded) then
+ begin
+ {Clears the preview list of sources}
+ ClearDeviceList();
+
+ {Allocate new identity and tries to enumerate}
+ NewSource := TTwainSource.Create(Self);
+ CallRes := TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_GETFIRST, @NewSource.Structure);
+ if CallRes = TWRC_SUCCESS then
+ repeat
+
+ {Add this item to the list}
+ DeviceList.Add(NewSource);
+ {Allocate memory for the next}
+ NewSource := TTwainSource.Create(Self);
+ NewSource.TransferMode := Self.TransferMode;
+ NewSource.fIndex := DeviceList.Count;
+
+ {Try to get the next item}
+ until TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_GETNEXT, @NewSource.Structure) <> TWRC_SUCCESS;
+
+ {Set that the component has enumerated the devices}
+ {if everything went correctly}
+ Result := TRUE;
+ fHasEnumerated := Result;
+
+ {Dispose un-needed source object}
+ NewSource.Free;
+
+ end
+ else Result := FALSE; {If library and source manager aren't loaded}
+end;
+
+{Procedure to load and unload twain library and update property}
+procedure TDelphiTwain.SetLibraryLoaded(const Value: Boolean);
+begin
+ {The value must be changing to activate}
+ if (Value <> fLibraryLoaded) then
+ begin
+ {Depending on the parameter load/unload the library and updates}
+ {property whenever it loaded or unloaded sucessfully}
+ if Value then LoadLibrary()
+ else {if not Value then} UnloadLibrary();
+
+ end {if (Value <> fLibraryLoaded)}
+end;
+
+{Loads twain source manager}
+function TDelphiTwain.LoadSourceManager(): Boolean;
+begin
+ {The library must be loaded}
+ if LibraryLoaded and not SourceManagerLoaded then
+ {Loads source manager}
+ Result := (fTwainProc(AppInfo, nil, DG_CONTROL, DAT_PARENT,
+ MSG_OPENDSM, @VirtualWindow) = TWRC_SUCCESS)
+ else
+ {The library is not loaded, thus the source manager could}
+ {not be loaded}
+ Result := FALSE or SourceManagerLoaded;
+
+ {In case the method was sucessful, updates property}
+ if Result then fSourceManagerLoaded := TRUE;
+end;
+
+{UnLoads twain source manager}
+function TDelphiTwain.UnloadSourceManager(forced: boolean): Boolean;
+begin
+ {The library must be loaded}
+ if LibraryLoaded and SourceManagerLoaded then
+ begin
+ {Clears the list of sources}
+ ClearDeviceList();
+ {Unload source manager}
+ if not forced then
+ Result := (TwainProc(AppInfo, nil, DG_CONTROL, DAT_PARENT, MSG_CLOSEDSM, @VirtualWindow) = TWRC_SUCCESS)
+ else result:=true;
+ end
+ else
+ {The library is not loaded, meaning that the Source Manager isn't either}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then fSourceManagerLoaded := FALSE;
+end;
+
+{Procedure to load or unloaded the twain source manager}
+procedure TDelphiTwain.SetSourceManagerLoaded(const Value: Boolean);
+begin
+ {The library must be loaded to have access to the method}
+ if LibraryLoaded and (Value <> fSourceManagerLoaded) then
+ begin
+ {Load/unload the source manager}
+ if Value then LoadSourceManager()
+ else {if not Value then} UnloadSourceManager(false);
+ end {if LibraryLoaded}
+end;
+
+{Clears the list of sources}
+procedure TDelphiTwain.ClearDeviceList();
+var
+ i: Integer;
+begin
+ {Deallocate pTW_IDENTITY}
+ FOR i := 0 TO DeviceList.Count - 1 DO
+ TTwainSource(DeviceList.Item[i]).Free;
+ {Clears the list}
+ DeviceList.Clear;
+ {Set trigger to tell that it has not enumerated again yet}
+ fHasEnumerated := FALSE;
+
+end;
+
+{Finds a matching source index}
+function TDelphiTwain.FindSource(Value: pTW_IDENTITY): Integer;
+var
+ i : Integer;
+begin
+ Result := -1; {Default result}
+
+ {Search for this source in the list}
+ for i := 0 TO SourceCount - 1 DO
+ if CompareMem(@Source[i].Structure, pChar(Value), SizeOf(TW_IDENTITY)) then
+ begin
+ {Return index and exit}
+ Result := i;
+ break;
+ end; {if CompareMem, for i}
+end;
+
+{Allows Twain to display a dialog to let the user choose any source}
+{and returns the source index in the list}
+function TDelphiTwain.SelectSource: Integer;
+var
+ Identity: TW_IDENTITY;
+begin
+ Result := -1; {Default result}
+ {Booth library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded and not SelectDialogDisplayed) then
+ begin
+ {Don't allow this dialog to be displayed twice}
+ SelectDialogDisplayed := TRUE;
+
+ {Call twain to display the dialog}
+ if TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY, MSG_USERSELECT,
+ @Identity) = TWRC_SUCCESS then
+ Result := FindSource(@Identity);
+
+ {Ended using}
+ SelectDialogDisplayed := FALSE
+ end {(LibraryLoaded and SourceManagerLoaded)}
+end;
+
+{Returns the number of sources}
+function TDelphiTwain.GetSourceCount(): Integer;
+begin
+ {Library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded) then
+ begin
+ {Enumerate devices, if needed}
+ if not HasEnumerated then EnumerateDevices();
+ {Returns}
+ Result := DeviceList.Count;
+ end
+ {In case library and source manager aren't loaded, returns 0}
+ else Result := 0
+end;
+
+{Returns the default source}
+function TDelphiTwain.GetDefaultSource: Integer;
+var
+ Identity: TW_IDENTITY;
+begin
+ {Call twain to display the dialog}
+ if SourceManagerLoaded and (TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_GETDEFAULT, @Identity) = TWRC_SUCCESS) then
+ Result := FindSource(@Identity)
+ else Result := 0 {Returns}
+end;
+
+{Returns a source from the list}
+function TDelphiTwain.GetSource(Index: Integer): TTwainSource;
+begin
+ {Booth library and source manager must be loaded}
+ if (LibraryLoaded and SourceManagerLoaded) then
+ begin
+
+ {If index is in range, returns}
+ {(Call to SourceCount property enumerates the devices, if needed)}
+ if Index in [0..SourceCount - 1] then
+ Result := DeviceList.Item[Index]
+ else if (Index = -1) and (SourceCount > 0) then
+ Result := DeviceList.Item[GetDefaultSource]
+ {Unknown object, returns nil}
+ else Result := nil;
+
+ end
+ {In case either the library or the source manager aren't}
+ {loaded, it returns nil}
+ else Result := nil
+end;
+
+{Object being created}
+constructor TDelphiTwain.Create{$IFNDEF DONTUSEVCL}(AOwner: TComponent){$ENDIF};
+begin
+ {Let the ancestor class also handle the call}
+ inherited;
+
+ {Create source list}
+ DeviceList := TPointerList.Create;
+ {Clear variables}
+ fSourcesLoaded := 0;
+ fHandle := 0;
+ @fTwainProc := nil;
+ SelectDialogDisplayed := FALSE;
+ fSourceManagerLoaded := FALSE;
+ fHasEnumerated := FALSE;
+ fTransferMode := ttmMemory;
+ {Creates the virtual window which will intercept messages}
+ {from Twain}
+ CreateVirtualWindow();
+ {Creates the object to allow the user to set the application}
+ {information to inform twain source manager and sources}
+ fInfo := TTwainIdentity.Create(Self);
+ AppInfo := @fInfo.Structure;
+end;
+
+{Object being destroyed}
+destructor TDelphiTwain.Destroy;
+begin
+ {Full unload the library}
+ LibraryLoaded := FALSE;
+ {Free the virtual window handle}
+ DestroyWindow(VirtualWindow);
+ {Free the object}
+ fInfo.Free;
+ {Clears and free source list}
+ ClearDeviceList();
+ DeviceList.Free();
+ {Let ancestor class handle}
+ inherited Destroy;
+end;
+
+{Creates the virtual window}
+procedure TDelphiTwain.CreateVirtualWindow;
+begin
+ {Creates the window and passes a pointer to the class object}
+ VirtualWindow := CreateWindow(VIRTUALWIN_CLASSNAME, 'Delphi Twain virtual ' +
+ 'window', 0, 10, 10, 100, 100, 0, 0, hInstance, Self);
+end;
+
+{Updates the application information object}
+procedure TDelphiTwain.SetInfo(const Value: TTwainIdentity);
+begin
+ {Assign one object to another}
+ fInfo.Assign(Value);
+end;
+
+{ TTwainSource object implementation }
+
+{Used with property SourceManagerLoaded to test if the source manager}
+{is loaded or not.}
+function TTwainSource.GetSourceManagerLoaded: Boolean;
+begin
+ {Obtain information from owner TDelphiTwain}
+ Result := Owner.SourceManagerLoaded;
+end;
+
+{Sets if the source is loaded}
+procedure TTwainSource.SetLoaded(const Value: Boolean);
+begin
+ {Value should be changing}
+ if (Value <> fLoaded) then
+ begin
+ {Loads or unloads the source}
+ if Value then LoadSource()
+ else {if not Value then} UnloadSource();
+ end {if (Value <> fLoaded)}
+end;
+
+{Sets if the source is enabled}
+procedure TTwainSource.SetEnabled(const Value: Boolean);
+begin
+ {Source must be already enabled and value changing}
+ if (Loaded) and (Value <> fEnabled) then
+ begin
+ {Enables/disables}
+ if Value then EnableSource(ShowUI, Modal)
+ else {if not Value then} DisableSource();
+ end {if (Loaded) and (Value <> fEnabled)}
+end;
+
+{Enables the source}
+function TTwainSource.EnableSource(ShowUI, Modal: Boolean): Boolean;
+var
+ twUserInterface: TW_USERINTERFACE;
+begin
+ {Source must be loaded and the value changing}
+ if (Loaded) and (not Enabled) then
+ begin
+ {Builds UserInterface structure}
+ twUserInterface.ShowUI := ShowUI;
+ twUserInterface.ModalUI := Modal;
+ twUserInterface.hParent := owner.VirtualWindow;
+ //npeter may be it is better to send messages to VirtualWindow
+ //I am not sure, but it seems more stable with a HP TWAIN driver
+ //it was: := GetActiveWindow;
+ fEnabled := TRUE;
+ {Call method}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_USERINTERFACE, MSG_ENABLEDS, @twUserInterface) in
+ [TWRC_SUCCESS, TWRC_CHECKSTATUS]);
+ end
+ else {If it's either not loaded or already enabled}
+ {If it is not loaded}
+ Result := FALSE or Enabled;
+
+ {Updates property}
+ if (Result = TRUE) then fEnabled := TRUE;
+end;
+
+{Disables the source}
+function TTwainSource.DisableSource(): Boolean;
+var
+ twUserInterface: TW_USERINTERFACE;
+begin
+ {Source must be loaded and the value changing}
+ if (Loaded) and (Enabled) then
+ begin
+
+ {Call method}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_USERINTERFACE, MSG_DISABLEDS, @twUserInterface) = TWRC_SUCCESS);
+ {Call notification event if being used}
+ if (Result) and (Assigned(Owner.OnSourceDisable)) then
+ Owner.OnSourceDisable(Owner, Index);
+
+ end
+ else {If it's either not loaded or already disabled}
+ {If it is not loaded}
+ Result := TRUE;
+
+ {Updates property}
+ if (Result = TRUE) then fEnabled := FALSE;
+end;
+
+{Loads the source}
+function TTwainSource.LoadSource: Boolean;
+begin
+ {Only loads if it is not already loaded}
+ if Not Loaded then
+ begin
+ Result := (Owner.TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_OPENDS, @Structure) = TWRC_SUCCESS);
+ {Increase the loaded sources count variable}
+ if Result then inc(Owner.fSourcesLoaded);
+ end
+ else
+ {If it was already loaded, returns true}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ if Result then
+ fLoaded := TRUE;
+
+end;
+
+{Unloads the source}
+function TTwainSource.UnloadSource: Boolean;
+begin
+ {Only unloads if it is loaded}
+ if Loaded then
+ begin
+ {If the source was enabled, disable it}
+ DisableSource();
+ {Call method to load}
+ Result := (Owner.TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
+ MSG_CLOSEDS, @Structure) = TWRC_SUCCESS);
+ {Decrease the loaded sources count variable}
+ if Result then dec(Owner.fSourcesLoaded);
+ end
+ else
+ {If it was already unloaded, returns true}
+ Result := TRUE;
+
+ {In case the method was sucessful, updates property}
+ fLoaded := FALSE;
+end;
+
+{Object being destroyed}
+destructor TTwainSource.Destroy;
+begin
+ {If loaded, unloads source}
+ UnloadSource();
+ {Let ancestor class process}
+ inherited Destroy;
+end;
+
+{Returns a pointer to the application}
+function TTwainSource.GetAppInfo: pTW_IDENTITY;
+begin
+ Result := Owner.AppInfo;
+end;
+
+{Returns a pointer to the source identity}
+function TTwainSource.GetStructure: pTW_IDENTITY;
+begin
+ Result := @Structure;
+end;
+
+{Object being created}
+constructor TTwainSource.Create(AOwner: TDelphiTwain);
+begin
+ {Allows ancestor class to process}
+ inherited Create(AOwner);
+
+ {Initial values}
+ fTransferMode := ttmNative;
+ fLoaded := FALSE;
+ fShowUI := TRUE;
+ fEnabled := FALSE;
+ fModal := TRUE;
+ {Stores owner}
+ fOwner := AOwner;
+end;
+
+{Set source transfer mode}
+function TTwainSource.ChangeTransferMode(
+ NewMode: TTwainTransferMode): TCapabilityRet;
+const
+ TransferModeToTwain: Array[TTwainTransferMode] of TW_UINT16 =
+ (TWSX_FILE, TWSX_NATIVE, TWSX_MEMORY);
+var
+ Value: TW_UINT16;
+begin
+ {Set transfer mode method}
+ Value := TransferModeToTwain[NewMode];
+ Result := SetOneValue(ICAP_XFERMECH, TWTY_UINT16, @Value);
+ TransferMode := NewMode;
+end;
+
+{Message received in the event loop}
+function TTwainSource.ProcessMessage(const Msg: TMsg): Boolean;
+var
+ twEvent: TW_EVENT;
+begin
+ {Make twEvent structure}
+ twEvent.TWMessage := MSG_NULL;
+ twEvent.pEvent := TW_MEMREF(@Msg);
+ {Call Twain procedure to handle message}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_EVENT,
+ MSG_PROCESSEVENT, @twEvent) = TWRC_DSEVENT);
+
+ {If it is a message from the source, process}
+ if Result then
+ case twEvent.TWMessage of
+ {No message from the source}
+ MSG_NULL: exit;
+ {Requested to close the source}
+ MSG_CLOSEDSREQ:
+ begin
+ {Call notification event}
+ if (Assigned(Owner.OnAcquireCancel)) then
+ Owner.OnAcquireCancel(Owner, Index);
+ {Disable the source}
+ DisableSource();
+ end;
+ {Ready to transfer the images}
+ MSG_XFERREADY:
+ {Call method to transfer}
+ TransferImages();
+
+ MSG_CLOSEDSOK:
+ result:=true;
+
+ MSG_DEVICEEVENT:
+ result:=true;
+
+ end {case twEvent.TWMessage}
+end;
+
+{Returns return status information}
+function TTwainSource.GetReturnStatus: TW_UINT16;
+var
+ StatusInfo: TW_STATUS;
+begin
+ {The source must be loaded in order to get the status}
+ if Loaded then
+ begin
+ {Call method to get the information}
+ Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_STATUS, MSG_GET,
+ @StatusInfo);
+ Result := StatusInfo.ConditionCode;
+ end else Result := 0 {In case it was called while the source was not loaded}
+end;
+
+{Converts from a result to a TCapabilityRec}
+function TTwainSource.ResultToCapabilityRec(
+ const Value: TW_UINT16): TCapabilityRet;
+begin
+
+ {Test result code to return}
+ case Value of
+ {Successull, copy handle and return a success value}
+ TWRC_SUCCESS: Result := crSuccess;
+ {Error, get more on the error, and return result}
+ {case} else
+ case GetReturnStatus() of
+ TWCC_CAPUNSUPPORTED: Result := crUnsupported;
+ TWCC_CAPBADOPERATION: Result := crBadOperation;
+ TWCC_CAPSEQERROR: Result := crDependencyError;
+ TWCC_LOWMEMORY: Result := crLowMemory;
+ TWCC_SEQERROR: Result := crInvalidState;
+ else Result := crBadOperation;
+ end {case GetReturnStatus of}
+ end {case};
+
+end;
+
+{Sets a capability}
+function TTwainSource.SetCapabilityRec(const Capability,
+ ConType: TW_UINT16; Data: HGlobal): TCapabilityRet;
+var
+ CapabilityInfo: TW_CAPABILITY;
+begin
+ {Source must be loaded to set}
+ if Loaded then
+ begin
+
+ {Fill structure}
+ CapabilityInfo.Cap := Capability;
+ CapabilityInfo.ConType := ConType;
+ CapabilityInfo.hContainer := Data;
+
+ {Call method and store return}
+ Result := ResultToCapabilityRec(Owner.TwainProc(AppInfo, @Structure,
+ DG_CONTROL, DAT_CAPABILITY, MSG_SET, @CapabilityInfo));
+
+ end
+ else Result := crInvalidState {In case the source is not loaded}
+end;
+
+{Returns a capability strucutre}
+function TTwainSource.GetCapabilityRec( const Capability: TW_UINT16;
+ var Handle: HGLOBAL; Mode: TRetrieveCap;
+ var Container: TW_UINT16): TCapabilityRet;
+const
+ ModeToTwain: Array[TRetrieveCap] of TW_UINT16 = (MSG_GET, MSG_GETCURRENT,
+ MSG_GETDEFAULT, MSG_RESET);
+var
+ CapabilityInfo: TW_CAPABILITY;
+begin
+ {Source must be loaded}
+ if Loaded then
+ begin
+
+ {Fill structure}
+ CapabilityInfo.Cap := Capability;
+ CapabilityInfo.ConType := TWON_DONTCARE16;
+ CapabilityInfo.hContainer := 0;
+
+ {Call method and store return}
+ Result := ResultToCapabilityRec(Owner.TwainProc(AppInfo, @Structure,
+ DG_CONTROL, DAT_CAPABILITY, ModeToTwain[Mode], @CapabilityInfo));
+
+ if Result = crSuccess then
+ begin
+ Handle := CapabilityInfo.hContainer;
+ Container := CapabilityInfo.ConType;
+ end
+ end {if not Loaded}
+ else Result := crInvalidState {In case the source is not loaded}
+end;
+
+{Gets an item and returns it in a string}
+procedure TTwainSource.GetItem(var Return: String; ItemType: TW_UINT16;
+ Data: Pointer);
+begin
+ {Test the item type}
+ case ItemType of
+ TWTY_INT8 : Return := IntToStr(pTW_INT8(Data)^);
+ TWTY_UINT8 : Return := IntToStr(pTW_UINT8(Data)^);
+ TWTY_INT16,
+ 44 {TWTY_HANDLE} : Return := IntToStr(pTW_INT16(Data)^);
+ TWTY_UINT16,
+ TWTY_BOOL : Return := IntToStr(pTW_UINT16(Data)^);
+ TWTY_INT32 : Return := IntToStr(pTW_INT32(Data)^);
+ TWTY_UINT32,
+ 43 {TWTY_MEMREF} : Return := IntToStr(pTW_UINT32(Data)^);
+ {Floating integer type}
+ TWTY_FIX32:
+ with pTW_FIX32(Data)^ do
+ //npeter bugfix:
+ //it is better to use the actual decimal separator
+ //and not a wired in value!
+ //If not, you may get error on strtofloat
+ //original: Return := IntToStr(Whole) + ',' + IntToStr(Frac);
+ Return := IntToStr(Whole)+ IntToStr(Frac); // + decimalseparator
+ {String types, which are all ended by a null char (#0)}
+ TWTY_STR32,
+ TWTY_STR64,
+ TWTY_STR128,
+ TWTY_STR255 : Return := PChar(Data);
+
+ end {case ItemType}
+end;
+
+{Returns an array capability}
+function TTwainSource.GetArrayValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var List: TGetCapabilityList;
+ MemHandle: HGLOBAL): TCapabilityRet;
+var
+ ArrayV : pTW_ARRAY;
+ ItemSize : Integer;
+ Data : PChar;
+ CurItem : Integer;
+ Value : String;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, rcGet, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_ARRAY;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_ARRAY) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ ArrayV := GlobalLock(MemHandle);
+
+ {Fill return properties}
+ ItemType := ArrayV^.ItemType;
+
+ {Prepare to list items}
+ ItemSize := TWTypeSize(ItemType);
+ Data := @ArrayV^.ItemList[0];
+ SetLength(List, ArrayV^.NumItems);
+
+ {Copy items}
+ for CurItem := 0 TO ArrayV^.NumItems - 1 do
+ begin
+ {Obtain this item}
+ GetItem(Value, ItemType, Data);
+ List[CurItem] := Value;
+ {Move memory to the next}
+ inc(Data, ItemSize);
+ end;
+
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Returns an enumeration capability}
+function TTwainSource.GetEnumerationValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var List: TGetCapabilityList;
+ var Current, Default: Integer; Mode: TRetrieveCap;
+ MemHandle: HGLOBAL): TCapabilityRet;
+var
+ EnumV : pTW_ENUMERATION;
+ ItemSize : Integer;
+ Data : PChar;
+ CurItem : Integer;
+ Value : String;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, Mode, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_ENUMERATION;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_ENUMERATION) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ EnumV := GlobalLock(MemHandle);
+
+ {Fill return properties}
+ Current := EnumV^.CurrentIndex;
+ Default := EnumV^.DefaultIndex;
+ ItemType := EnumV^.ItemType;
+
+ {Prepare to list items}
+ ItemSize := TWTypeSize(ItemType);
+ Data := @EnumV^.ItemList[0];
+ SetLength(List, EnumV^.NumItems);
+
+ {Copy items}
+ for CurItem := 0 TO EnumV^.NumItems - 1 do
+ begin
+ {Obtain this item}
+ GetItem(Value, ItemType, Data);
+ List[CurItem] := Value;
+ {Move memory to the next}
+ inc(Data, ItemSize);
+ end;
+
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Returns a range capability}
+function TTwainSource.GetRangeValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var Min, Max, Step, Default,
+ Current: String; MemHandle: HGLOBAL): TCapabilityRet;
+var
+ RangeV : pTW_RANGE;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, rcGet, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_RANGE;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_RANGE) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ RangeV := GlobalLock(MemHandle);
+ {Fill return}
+ ItemType := RangeV^.ItemType;
+ GetItem(Min, ItemType, @RangeV^.MinValue);
+ GetItem(Max, ItemType, @RangeV^.MaxValue);
+ GetItem(Step, ItemType, @RangeV^.StepSize);
+ GetItem(Default, ItemType, @RangeV^.DefaultValue);
+ GetItem(Current, ItemType, @RangeV^.CurrentValue);
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Returns an one value capability}
+function TTwainSource.GetOneValue(Capability: TW_UINT16;
+ var ItemType: TW_UINT16; var Value: String;
+ Mode: TRetrieveCap; MemHandle: HGLOBAL): TCapabilityRet;
+var
+ OneV : pTW_ONEVALUE;
+ Container: TW_UINT16;
+begin
+ {Call method to get the memory to the return}
+ if MemHandle = 0 then
+ Result := GetCapabilityRec(Capability, MemHandle, Mode, Container)
+ else
+ begin
+ Result := crSuccess;
+ Container := TWON_ONEVALUE;
+ end;
+
+ if (Result = crSuccess) and (Container <> TWON_ONEVALUE) then
+ begin
+ Result := crInvalidContainer;
+ GlobalFree(MemHandle);
+ Exit;
+ end;
+
+ {If result was sucessfull and memory was allocated}
+ if (Result = crSuccess) then
+ begin
+ {Obtain structure pointer}
+ OneV := GlobalLock(MemHandle);
+ {Fill return}
+ ItemType := OneV^.ItemType;
+ GetItem(Value, OneV^.ItemType, @OneV^.Item);
+
+ {Unlock memory and unallocate}
+ GlobalUnlock(MemHandle);
+ GlobalFree(MemHandle);
+ end {if (Result = crSuccess)}
+end;
+
+{Sets an one value capability}
+function TTwainSource.SetOneValue(Capability: TW_UINT16;
+ ItemType: TW_UINT16; Value: Pointer): TCapabilityRet;
+var
+ Data: HGLOBAL;
+ OneV: pTW_ONEVALUE;
+ ItemSize,ItemSize2: Integer;
+begin
+ {Allocate enough memory for the TW_ONEVALUE and obtain pointer}
+ ItemSize := TWTypeSize(ItemType);
+ //npeter: TW_ONEVALUE minimal size !!!
+ //I think to meet the specifications the
+ //Item's size must be at least sizeof(TW_UINT32)!
+ //when I did it, some mistic errors on some drivers went gone
+ if ItemSize 0 do
+ begin
+ {In case the total bytes received now have more than we}
+ {need to complete the line}
+ if Xfer.BytesWritten + DataSize > LineLength then
+ begin
+ Readed := LineLength - DataSize;
+ CopyMemory(Ptr, Xfer.Memory.TheMem, LineLength - DataSize);
+ end
+ else
+ {Otherwise, continue completing the line}
+ begin
+ Readed := Xfer.BytesWritten;
+ CopyMemory(Ptr, Xfer.Memory.TheMem, Readed);
+ end;
+
+ {Adjust}
+ inc(DataSize, Readed); inc(Ptr, Readed);
+ dec(Xfer.BytesWritten, Readed);
+ Cardinal(Xfer.Memory.TheMem) :=
+ Cardinal(Xfer.Memory.TheMem) + Readed;
+
+ {Reached end of line}
+ if DataSize >= LineLength then
+ begin
+ {Fix RGB to BGR}
+ if PixelType = TWPT_RGB then
+ begin
+ ItemPtr := LinePtr;
+ FOR Index := 1 TO ImageInfo.bmWidth DO
+ begin
+ Temp := ItemPtr^.rgbtRed;
+ ItemPtr^.rgbtRed := ItemPtr^.rgbtBlue;
+ ItemPtr^.rgbtBlue := Temp;
+ inc(ItemPtr);
+ end {FOR Index};
+ end {if PixelType = TWPT_RGB};
+
+ {Adjust pointers}
+ Cardinal(LinePtr) := Cardinal(LinePtr) - LineLength;
+ Ptr := LinePtr; dec(CurLine); DataSize := 0;
+
+ {Call event}
+ if Assigned(Owner.OnAcquireProgress) then
+ Owner.OnAcquireProgress(Self, Self.Index, ImageHandle,
+ Cardinal(ImageInfo.bmHeight) - CurLine - 1,
+ ImageInfo.bmHeight - 1);
+
+ end {if DataSize >= LineLength}
+
+ end {while Xfer.BytesWritten > 0};
+
+
+ {Set again pointer to write to}
+ Xfer.Memory.TheMem := AllocPtr;
+ end {TWRC_SUCCESS};
+
+ until Result <> TWRC_SUCCESS;
+
+ {Free allocated memory}
+ FreeMem(AllocPtr, Setup.Preferred);
+
+ {Some error ocurred, free memory and returns}
+ if Result <> TWRC_XFERDONE then
+ DeleteObject(ImageHandle);
+end;
+
+{Prepare image memory transference}
+function TTwainSource.PrepareMemXfer(var BitmapHandle: HBitmap;
+ var PixelType: TW_INT16): TW_UINT16;
+const
+ PixelColor: Array[TTwainPixelFlavor] of Array[0..1] of Byte =
+ ((0, $FF), ($FF, 00), (0, $FF));
+var
+ Handle: HGlobal;
+ Info: TW_IMAGEINFO;
+ Setup: TW_SETUPMEMXFER;
+ structsize, index, Size, Blocks: Integer;
+ XRes, YRes: Extended;
+ Pal : TW_PALETTE8;
+ vUnit : TTwainUnit;
+ vUnits: TTwainUnitSet;
+ Dib : pBitmapInfo;
+ PixelFlavor: TTwainPixelFlavor;
+ PixelFlavors: TTwainPixelFlavorSet;
+ DC: HDC;
+ Data : Pointer;
+begin
+ {First of all, get information on the image being acquired}
+ Result := Owner.TwainProc(AppInfo, @Structure, DG_IMAGE, DAT_IMAGEINFO,
+ MSG_GET, @Info);
+ if Result <> TWRC_SUCCESS then exit;
+
+ {Calculate image size}
+ with Info do
+ size := ((((ImageWidth * BitsPerPixel + 31) div 32)*4) * info.ImageLength);
+
+ {Obtain image buffer transference sizes}
+ Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_SETUPMEMXFER,
+ MSG_GET, @Setup);
+ blocks := (size div Integer(setup.Preferred));
+ size := (blocks + 1) * Integer(setup.Preferred);
+
+ {Prepare new bitmap}
+ structsize := size + sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD);
+
+ Handle := GlobalAlloc(GHND, StructSize);
+ Dib := GlobalLock(Handle);
+ Fillchar(Dib^, structsize, #0);
+ {Fill image information}
+ Dib^.bmiHeader.biSize := sizeof(BITMAPINFOHEADER);
+ Dib^.bmiHeader.biWidth := info.ImageWidth;
+ Dib^.bmiHeader.biHeight := info.ImageLength;
+ {Only 1 plane supported}
+ Dib^.bmiHeader.biPlanes := 1;
+ Dib^.bmiHeader.biBitCount := info.BitsPerPixel;
+ {No compression}
+ Dib^.bmiHeader.biCompression := BI_RGB;
+ Dib^.bmiHeader.biSizeImage := Size;
+
+ {Adjust units}
+ XRes := Fix32ToFloat(Info.XResolution);
+ YRes := Fix32ToFloat(Info.YResolution);
+ GetICapUnits(vUnit, vUnits);
+ case vUnit of
+ tuInches: begin
+ Dib^.bmiHeader.biXPelsPerMeter := Trunc((XRes*2.54)*100);
+ Dib^.bmiHeader.biYPelsPerMeter := Trunc((YRes*2.54)*100);
+ end;
+ tuCentimeters: begin
+ Dib^.bmiHeader.biXPelsPerMeter := Trunc(XRes*100);
+ Dib^.bmiHeader.biYPelsPerMeter := Trunc(YRes*100);
+ end
+ else begin
+ Dib^.bmiHeader.biXPelsPerMeter := 0;
+ Dib^.bmiHeader.biYPelsPerMeter := 0;
+ end
+ end {case vUnits of};
+
+ {Now it should setup the palette to be used by the image}
+ {by either building a definied palette or retrieving the}
+ {image's one}
+ case (Info.PixelType) of
+ TWPT_BW:
+ begin
+ {Only two colors are used}
+ Dib^.bmiHeader.biClrUsed := 2;
+ Dib^.bmiHeader.biClrImportant := 0;
+ {Try obtaining the pixel flavor}
+ if GetIPixelFlavor(PixelFlavor, PixelFlavors) <> crSuccess then
+ PixelFlavor := tpfChocolate;
+ {Set palette colors}
+ for Index := 0 to 1 do
+ begin
+ Dib^.bmiColors[Index].rgbRed := PixelColor[PixelFlavor][Index];
+ Dib^.bmiColors[Index].rgbGreen := PixelColor[PixelFlavor][Index];
+ Dib^.bmiColors[Index].rgbBlue := PixelColor[PixelFlavor][Index];
+ Dib^.bmiColors[Index].rgbReserved := 0;
+ end;
+
+ end;
+ TWPT_GRAY:
+ begin
+ {Creates a 256 shades of gray palette}
+ Dib^.bmiHeader.biClrUsed := 256;
+ for index := 0 to 255 do
+ begin
+ Dib^.bmiColors[index].rgbRed := index;
+ Dib^.bmiColors[index].rgbGreen := index;
+ Dib^.bmiColors[index].rgbBlue := index;
+ Dib^.bmiColors[index].rgbReserved := 0;
+ end {for i}
+ end;
+ TWPT_RGB: Dib^.bmiHeader.biClrUsed := 0;
+ else
+ begin
+ {Try obtaining the palette}
+ if Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_PALETTE8,
+ MSG_GET, @Pal) <> TWRC_SUCCESS then
+ begin
+ {If the source did not provide a palette, uses shades of gray here}
+ Dib^.bmiHeader.biClrUsed := 256;
+ for index := 0 to 255 do
+ begin
+ Dib^.bmiColors[index].rgbRed := index;
+ Dib^.bmiColors[index].rgbGreen := index;
+ Dib^.bmiColors[index].rgbBlue := index;
+ Dib^.bmiColors[index].rgbReserved := 0;
+ end {for i}
+ end
+ else
+ begin
+ {Uses source palette here}
+ Dib^.bmiHeader.biClrUsed := Pal.NumColors;
+ for Index := 0 TO Pal.NumColors - 1 do
+ begin
+ Dib^.bmiColors[index].rgbRed := pal.Colors[index].Channel1;
+ Dib^.bmiColors[index].rgbGreen := pal.Colors[index].Channel2;
+ Dib^.bmiColors[index].rgbBlue := pal.Colors[index].Channel3;
+ Dib^.bmiColors[index].rgbReserved := 0;
+ end {for Index}
+ end {if Owner.TwainProc(AppInfo...}
+
+ end {case else};
+ end {case Info.PixelType};
+
+ {Creates the bitmap}
+ DC := GetDC(Owner.VirtualWindow);
+ Cardinal(Data) := Cardinal(Dib) + Dib^.bmiHeader.biSize +
+ (Dib^.bmiHeader.biClrUsed * sizeof(RGBQUAD));
+ BitmapHandle := CreateDIBSection(DC, Dib^, DIB_RGB_COLORS, Data, 0, 0);
+ ReleaseDC(Owner.VirtualWindow, DC);
+ PixelType := Info.PixelType;
+
+ {Unlock and free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+end;
+
+{Method to transfer the images}
+procedure TTwainSource.TransferImages();
+var
+ {To test if the image transfer is done}
+ Cancel, Done : Boolean;
+ {Return code from Twain method}
+ rc : TW_UINT16;
+ {Handle to the native Device independent Image (DIB)}
+ hNative: TW_UINT32;
+ {Pending transfers structure}
+ PendingXfers: TW_PENDINGXFERS;
+ {File transfer info}
+ Info: TW_SETUPFILEXFER;
+ {Image handle and pointer}
+ ImageHandle: HBitmap;
+ PixelType : TW_INT16;
+begin
+ {Set the transfer mode}
+ //npeter:
+ //on a HP driver I got error events
+ //when it was set above state 5;
+ //commented out
+ // ChangeTransferMode(TransferMode);
+
+ Cancel := FALSE; {Testing if it was cancelled}
+ Done := FALSE; {Initialize done variable}
+
+ {Obtain all the images from the source}
+ repeat
+ {Transfer depending on the transfer mode}
+ case TransferMode of
+ {Native transfer, the source creates the image thru a device}
+ {dependent image}
+ ttmNative:
+ begin
+ {Call method to obtain the image}
+ hNative := 0;
+ rc := Owner.TwainProc(AppInfo, @Structure, DG_IMAGE,
+ DAT_IMAGENATIVEXFER, MSG_GET, @hNative);
+ end {case ttmNative};
+ {File transfering, the source should create a file with}
+ {the acquired image}
+ ttmFile:
+ begin
+ {Event to allow user to set the file transfer information}
+ if Assigned(Owner.OnSourceSetupFileXfer) then
+ Owner.OnSourceSetupFileXfer(Owner, Index);
+ Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_SETUPFILEXFER,
+ MSG_GET, @Info);
+ {Call method to make source acquire and create file}
+ rc := Owner.TwainProc(AppInfo, @Structure, DG_IMAGE,
+ DAT_IMAGEFILEXFER, MSG_GET, nil);
+ end {case ttmFile};
+ {Memory buffer transfers}
+ ttmMemory:
+ begin
+ {Prepare for memory transference}
+ rc := PrepareMemXfer(ImageHandle, PixelType);
+ {If the image was sucessfully prepared to be transfered, it's}
+ {now time to transfer it}
+ if rc = TWRC_SUCCESS then rc := TransferImageMemory(ImageHandle,
+ PixelType);
+ end
+ {Unknown transfer mode ?}
+ else Rc := 0;
+ end;
+
+ {Twain call to transfer image return}
+ case rc of
+ {Transfer sucessfully done}
+ TWRC_XFERDONE:
+ case TransferMode of
+ {Native transfer sucessfull}
+ ttmNative: ReadNative(hNative, Cancel);
+ {File transfer sucessfull}
+ ttmFile: ReadFile(Info.FileName, Info.Format, Cancel);
+ {Memory transfer sucessfull}
+ ttmMemory: ReadMemory(ImageHandle, Cancel);
+ end {case TransferMode, TWRC_XFERDONE};
+ {User cancelled the transfers}
+ TWRC_CANCEL:
+ begin
+ {Acknowledge end of transfer}
+ Done := TRUE;
+ {Call event, if avaliable}
+ if Assigned(Owner.OnAcquireCancel) then
+ Owner.OnAcquireCancel(Owner, Index)
+ end
+ else {Unknown return or error}
+ if Assigned(Owner.OnAcquireError) then
+ Owner.OnAcquireError(Owner, Index, Rc, GetReturnStatus())
+ end;
+
+ {Check if there are pending transfers}
+ if not Done then
+ Done := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_PENDINGXFERS, MSG_ENDXFER, @PendingXfers) <> TWRC_SUCCESS) or
+ (PendingXfers.Count = 0);
+
+ {If user has cancelled}
+ if not Done and Cancel then
+ Done := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_PENDINGXFERS, MSG_RESET, @PendingXfers) = TWRC_SUCCESS);
+
+ until Done;
+
+ {Disable source}
+ Enabled := False;
+end;
+
+{Returns the number of colors in the DIB}
+function DibNumColors (pv: Pointer): Word;
+var
+ Bits: Integer;
+ lpbi: PBITMAPINFOHEADER absolute pv;
+ lpbc: PBITMAPCOREHEADER absolute pv;
+begin
+ //With the BITMAPINFO format headers, the size of the palette
+ //is in biClrUsed, whereas in the BITMAPCORE - style headers, it
+ //is dependent on the bits per pixel ( = 2 raised to the power of
+ //bits/pixel).
+ if (lpbi^.biSize <> sizeof(BITMAPCOREHEADER)) then
+ begin
+ if (lpbi^.biClrUsed <> 0) then
+ begin
+ result := lpbi^.biClrUsed;
+ exit;
+ end;
+ Bits := lpbi^.biBitCount;
+ end
+ else
+ Bits := lpbc^.bcBitCount;
+
+ {Test bits to return}
+ case (Bits) of
+ 1: Result := 2;
+ 4: Result := 16;
+ 8: Result := 256;
+ else Result := 0;
+ end {case};
+
+end;
+
+{Converts from TWain TW_UINT16 to TTwainFormat}
+function TwainToTTwainFormat(Value: TW_UINT16): TTwainFormat;
+begin
+ Case Value of
+ TWFF_TIFF : Result := tfTIFF;
+ TWFF_PICT : Result := tfPict;
+ TWFF_BMP : Result := tfBMP;
+ TWFF_XBM : Result := tfXBM;
+ TWFF_JFIF : Result := tfJPEG;
+ TWFF_FPX : Result := tfFPX;
+ TWFF_TIFFMULTI: Result := tfTIFFMulti;
+ TWFF_PNG : Result := tfPNG;
+ TWFF_SPIFF : Result := tfSPIFF;
+ TWFF_EXIF : Result := tfEXIF;
+ else Result := tfUnknown;
+ end {case Value of}
+end;
+
+{Reads the file image}
+procedure TTwainSource.ReadFile(Name: TW_STR255; Format: TW_UINT16;
+ var Cancel: Boolean);
+begin
+ {Call event, if set}
+ if Assigned(Owner.OnSourceFileTransfer) then
+ Owner.OnSourceFileTransfer(Self, Index, Name, TwainToTTwainFormat(Format),
+ Cancel);
+end;
+
+{Call event for memory image}
+procedure TTwainSource.ReadMemory(Image: HBitmap; var Cancel: Boolean);
+{$IFNDEF DONTUSEVCL} var BitmapObj: TBitmap;{$ENDIF}
+begin
+
+ if Assigned(Owner.OnTwainAcquire) then
+ {$IFDEF DONTUSEVCL}
+ Owner.OnTwainAcquire(Owner, Index, Image, Cancel); {$ELSE}
+ begin
+ BitmapObj := TBitmap.Create;
+ BitmapObj.Handle := Image;
+ Owner.OnTwainAcquire(Owner, Index, BitmapObj, Cancel);
+ BitmapObj.Free;
+ end; {$ENDIF}
+end;
+
+{Reads a native image}
+procedure TTwainSource.ReadNative(Handle: TW_UINT32; var Cancel: Boolean);
+var
+ DibInfo: ^TBITMAPINFO;
+ ColorTableSize: Integer;
+ lpBits: PChar;
+ DC: HDC;
+ BitmapHandle: HBitmap;
+ {$IFNDEF DONTUSEVCL}BitmapObj: TBitmap;{$ENDIF}
+begin
+
+ {Get image information pointer and size}
+ DibInfo := GlobalLock(Handle);
+ ColorTableSize := (DibNumColors(DibInfo) * SizeOf(RGBQUAD));
+
+ {Get data memory position}
+ lpBits := PChar(DibInfo);
+ Inc(lpBits, DibInfo.bmiHeader.biSize);
+ Inc(lpBits, ColorTableSize);
+
+ {Creates the bitmap}
+ DC := GetDC(Owner.VirtualWindow);
+ BitmapHandle := CreateDIBitmap(DC, DibInfo.bmiHeader, CBM_INIT,
+ lpBits, DibInfo^, DIB_RGB_COLORS);
+ ReleaseDC(Owner.VirtualWindow, DC);
+
+ if Assigned(Owner.OnTwainAcquire) then
+ {$IFDEF DONTUSEVCL}
+ Owner.OnTwainAcquire(Owner, Index, BitmapHandle, Cancel); {$ELSE}
+ begin
+ BitmapObj := TBitmap.Create;
+ BitmapObj.Handle := BitmapHandle;
+ Owner.OnTwainAcquire(Owner, Index, BitmapObj, Cancel);
+ BitmapObj.Free;
+ end; {$ENDIF}
+
+ {Free bitmap}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+end;
+
+{Setup file transfer}
+function TTwainSource.SetupFileTransfer(Filename: String;
+ Format: TTwainFormat): Boolean;
+const
+ FormatToTwain: Array[TTwainFormat] of TW_UINT16 = (TWFF_TIFF,
+ TWFF_PICT, TWFF_BMP, TWFF_XBM, TWFF_JFIF, TWFF_FPX, TWFF_TIFFMULTI,
+ TWFF_PNG, TWFF_SPIFF, TWFF_EXIF, 0);
+var
+ FileTransferInfo: TW_SETUPFILEXFER;
+begin
+ {Source must be loaded to set things}
+ if (Loaded) then
+ begin
+ {Prepare structure}
+ FileTransferInfo.FileName := StrToStr255(FileName);
+ FileTransferInfo.Format := FormatToTwain[Format];
+
+ {Call method}
+ Result := (Owner.TwainProc(AppInfo, @Structure, DG_CONTROL,
+ DAT_SETUPFILEXFER, MSG_SET, @FileTransferInfo) = TWRC_SUCCESS);
+ end
+ else Result := FALSE; {Could not set file transfer with source unloaded}
+end;
+
+{Set the number of images that the application wants to receive}
+function TTwainSource.SetCapXferCount(Value: SmallInt): TCapabilityRet;
+begin
+ {Call method to set the value}
+ Result := SetOneValue(CAP_XFERCOUNT, TWTY_UINT16, @Value);
+end;
+
+{Returns the number of images that the source will return}
+function TTwainSource.GetCapXferCount(var Return: SmallInt;
+ Mode: TRetrieveCap): TCapabilityRet;
+var
+ {Will hold the capability information}
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Call method to return information}
+ Result := GetOneValue(CAP_XFERCOUNT, ItemType, Value, Mode);
+ {Item type must be of TW_UINT16}
+ if (Result = crSuccess) and (ItemType <> TWTY_INT16) then
+ Result := crUnsupported;
+ {If everything gone ok, fill result}
+ if Result = crSuccess then Return := StrToIntDef(Value, -1);
+end;
+
+{Set the unit measure}
+function TTwainSource.SetICapUnits(Value: TTwainUnit): TCapabilityRet;
+//npeter
+//the TTwainUnit is byte!!!
+//so we have to convert it to TW_UINT16
+//before this fix I was not able to set this capability
+//on a HP driver
+const Transfer: Array[TTwainUnit] of TW_UINT16 =
+ (TWUN_INCHES, TWUN_CENTIMETERS, TWUN_PICAS, TWUN_POINTS, TWUN_TWIPS, TWUN_PIXELS, TWUN_INCHES);
+var
+ iValue: TW_UINT16;
+begin
+ ivalue:=Transfer[Value];
+ Result := SetOneValue(ICAP_UNITS, TWTY_UINT16, @iValue);
+end;
+
+{Convert from Twain to TTwainPixelFlavor}
+function TwainToTTwainPixelFlavor(Value: TW_UINT16): TTwainPixelFlavor;
+begin
+ {Test the value to make the convertion}
+ case Value of
+ TWPF_CHOCOLATE: Result := tpfChocolate;
+ TWPF_VANILLA : Result := tpfVanilla;
+ else Result := tpfUnknown;
+ end {case Value}
+end;
+
+{Convert from Twain to TTwainUnit}
+function TwainToTTwainUnit(Value: TW_UINT16): TTwainUnit;
+begin
+ {Test the value to make the convertion}
+ case Value of
+ TWUN_INCHES : Result := tuInches;
+ TWUN_CENTIMETERS: Result := tuCentimeters;
+ TWUN_PICAS : Result := tuPicas;
+ TWUN_POINTS : Result := tuPoints;
+ TWUN_TWIPS : Result := tuTwips;
+ TWUN_PIXELS : Result := tuPixels;
+ else Result := tuUnknown;
+ end {case Value}
+end;
+
+{Retrieve the unit measure for all quantities}
+function TTwainSource.GetICapUnits(var Return: TTwainUnit;
+ var Supported: TTwainUnitSet; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call method to get result}
+ Result := GetEnumerationValue(ICAP_UNITS, ItemType, List, Current, Default,
+ Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {If it was sucessfull, return values}
+ if Result = crSuccess then
+ begin
+ {Make list}
+ for i := Low(List) to High(List) do
+ Include(Supported, TwainToTTwainUnit(StrToIntDef(List[i], -1)));
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then
+ Return := TwainToTTwainUnit(StrToIntDef(List[Default], -1))
+ else
+ Return := TwainToTTwainUnit(StrToIntDef(List[Current], -1));
+ end {if Result = crSuccess}
+
+end;
+
+{Retrieve the pixel flavor values}
+function TTwainSource.GetIPixelFlavor(var Return: TTwainPixelFlavor;
+ var Supported: TTwainPixelFlavorSet; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call method to get result}
+ Result := GetEnumerationValue(ICAP_PIXELFLAVOR, ItemType, List, Current,
+ Default, Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {If it was sucessfull, return values}
+ if Result = crSuccess then
+ begin
+ {Make list}
+ for i := Low(List) to High(List) do
+ Include(Supported, TwainToTTwainPixelFlavor(StrToIntDef(List[i], -1)));
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then
+ Return := TwainToTTwainPixelFlavor(StrToIntDef(List[Default], -1))
+ else
+ Return := TwainToTTwainPixelFlavor(StrToIntDef(List[Current], -1));
+ end {if Result = crSuccess}
+end;
+
+function TTwainSource.SetIPixelFlavor(Value: TTwainPixelFlavor): TCapabilityRet;
+//npeter
+//the TTwainPixelFlavor is byte!!!
+//so we have to convert it to TW_UINT16
+//before this fix I was not able to set this capability
+//on a HP driver
+const Transfer: array [TTwainPixelFlavor] of TW_UINT16 = (TWPF_CHOCOLATE,TWPF_VANILLA,TWPF_CHOCOLATE);
+var iValue: TW_UINT16;
+begin
+ iValue:=Transfer[value];
+ Result := SetOneValue(ICAP_PIXELFLAVOR, TWTY_UINT16, @iValue);
+end;
+
+{Convert from Twain to TTwainPixelType}
+function TwainToTTwainPixelType(Value: TW_UINT16): TTwainPixelType;
+begin
+ {Test the value to make the convertion}
+ case Value of
+ TWPT_BW : Result := tbdBw;
+ TWPT_GRAY : Result := tbdGray;
+ TWPT_RGB : Result := tbdRgb;
+ TWPT_PALETTE : Result := tbdPalette;
+ TWPT_CMY : Result := tbdCmy;
+ TWPT_CMYK : Result := tbdCmyk;
+ TWPT_YUV : Result := tbdYuv;
+ TWPT_YUVK : Result := tbdYuvk;
+ TWPT_CIEXYZ : Result := tbdCieXYZ;
+ else Result := tbdUnknown;
+ end {case Value}
+end;
+
+{Returns pixel type values}
+function TTwainSource.GetIPixelType(var Return: TTwainPixelType;
+ var Supported: TTwainPixelTypeSet; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call method to get result}
+ Result := GetEnumerationValue(ICAP_PIXELTYPE, ItemType, List, Current,
+ Default, Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {If it was sucessfull, return values}
+ if Result = crSuccess then
+ begin
+ {Make list}
+ for i := Low(List) to High(List) do
+ Include(Supported, TwainToTTwainPixelType(StrToIntDef(List[i], -1)));
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then
+ Return := TwainToTTwainPixelType(StrToIntDef(List[Default], -1))
+ else
+ Return := TwainToTTwainPixelType(StrToIntDef(List[Current], -1));
+ end {if Result = crSuccess}
+end;
+
+{Set the pixel type value}
+function TTwainSource.SetIPixelType(Value: TTwainPixelType): TCapabilityRet;
+//npeter
+//the TTwainPixelType is byte!!!
+//so we have to convert it to TW_UINT16
+//before this fix occasionally I was not able to set this capability
+//on a HP driver
+var ivalue: smallint;
+begin
+ ivalue:=ord(value);
+ Result := SetOneValue(ICAP_PIXELTYPE, TWTY_UINT16, @iValue);
+end;
+
+{Returns bitdepth values}
+function TTwainSource.GetIBitDepth(var Return: Word;
+ var Supported: TTwainBitDepth; Mode: TRetrieveCap): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ List : TGetCapabilityList;
+ Current, i,
+ Default : Integer;
+begin
+ {Call GetOneValue to obtain this property}
+ Result := GetEnumerationValue(ICAP_BITDEPTH, ItemType, List, Current,
+ Default, Mode);
+ if ItemType <> TWTY_UINT16 then Result := crUnsupported;
+
+ {In case everything went ok, fill parameters}
+ if Result = crSuccess then
+ begin
+ {Build bit depth list}
+ SetLength(Supported, Length(List));
+ FOR i := LOW(List) TO HIGH(List) DO
+ Supported[i] := StrToIntDef(List[i], -1);
+ {Return values depending on the mode}
+ if Mode = rcGetDefault then Return := StrToIntDef(List[Default], -1)
+ else Return := StrToIntDef(List[Current], -1);
+ end {if Result = crSuccess}
+end;
+
+{Set current bitdepth value}
+function TTwainSource.SetIBitDepth(Value: Word): TCapabilityRet;
+begin
+ Result := SetOneValue(ICAP_BITDEPTH, TWTY_UINT16, @Value);
+end;
+
+{Returns physical width}
+function TTwainSource.GetIPhysicalWidth(var Return: Extended;
+ Mode: TRetrieveCap): TCapabilityRet;
+var
+ Handle: HGlobal;
+ OneV : pTW_ONEVALUE;
+ Container: TW_UINT16;
+begin
+ {Obtain handle to data from this capability}
+ Result := GetCapabilityRec(ICAP_PHYSICALWIDTH, Handle, Mode, Container);
+ if Result = crSuccess then
+ begin
+ {Obtain data}
+ OneV := GlobalLock(Handle);
+ if OneV^.ItemType <> TWTY_FIX32 then Result := crUnsupported
+ else Return := Fix32ToFloat(pTW_FIX32(@OneV^.Item)^);
+ {Free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+ end;
+end;
+
+{Returns physical height}
+function TTwainSource.GetIPhysicalHeight(var Return: Extended;
+ Mode: TRetrieveCap): TCapabilityRet;
+var
+ Handle: HGlobal;
+ OneV : pTW_ONEVALUE;
+ Container: TW_UINT16;
+begin
+ {Obtain handle to data from this capability}
+ Result := GetCapabilityRec(ICAP_PHYSICALHEIGHT, Handle, Mode, Container);
+ if Result = crSuccess then
+ begin
+ {Obtain data}
+ OneV := GlobalLock(Handle);
+ if OneV^.ItemType <> TWTY_FIX32 then Result := crUnsupported
+ else Return := Fix32ToFloat(pTW_FIX32(@OneV^.Item)^);
+ {Free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+ end;
+end;
+
+{Returns a resolution}
+function TTwainSource.GetResolution(Capability: TW_UINT16; var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+var
+ Handle: HGlobal;
+ EnumV: pTW_ENUMERATION;
+ Container: TW_UINT16;
+ Item: pTW_FIX32;
+ i : Integer;
+begin
+ {Obtain handle to data from this capability}
+ Result := GetCapabilityRec(Capability, Handle, Mode, Container);
+ if Result = crSuccess then
+ begin
+ {Obtain data}
+ //npeter
+ //the "if" is just for sure!
+ if (Container<>TWON_ENUMERATION) and (Container<>TWON_ARRAY) then
+ begin
+ result:=crUnsupported;
+ exit;
+ end;
+
+ EnumV := GlobalLock(Handle);
+ if EnumV^.ItemType <> TWTY_FIX32 then Result := crUnsupported
+ else begin
+ {Set array size and pointer to the first item}
+ Item := @EnumV^.ItemList[0];
+ SetLength(Values, EnumV^.NumItems);
+ {Fill array}
+ FOR i := 1 TO EnumV^.NumItems DO
+ begin
+ {Fill array with the item}
+ Values[i - 1] := Fix32ToFloat(Item^);
+ {Move to next item}
+ inc(Item);
+ end {FOR i};
+
+ {Fill return}
+
+ //npeter
+ //DefaultIndex and CurrentIndex valid for enum only!
+ //I got nice AV with an old Mustek scanner which uses TWON_ARRAY
+ //i return 0 in this case (may be not the best solution, but not AV at least :-)
+ if (Container<>TWON_ARRAY) then
+ begin
+ if Mode = rcGetDefault then Return := Values[EnumV^.DefaultIndex]
+ else Return := Values[EnumV^.CurrentIndex];
+ end
+ else return:=0;
+ end;
+ {Free data}
+ GlobalUnlock(Handle);
+ GlobalFree(Handle);
+ end;
+end;
+
+{Sets X resolution}
+function TTwainSource.SetIXResolution(Value: Extended): TCapabilityRet;
+var
+ Fix32: TW_FIX32;
+begin
+ Fix32 := FloatToFix32(Value);
+ Result := SetOneValue(ICAP_XRESOLUTION, TWTY_FIX32, @Fix32);
+end;
+
+{Sets Y resolution}
+function TTwainSource.SetIYResolution(Value: Extended): TCapabilityRet;
+var
+ Fix32: TW_FIX32;
+begin
+ Fix32 := FloatToFix32(Value);
+ Result := SetOneValue(ICAP_YRESOLUTION, TWTY_FIX32, @Fix32);
+end;
+
+{Returns X resolution}
+function TTwainSource.GetIXResolution(var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+begin
+ Result := GetResolution(ICAP_XRESOLUTION, Return, Values, Mode);
+end;
+
+{Returns Y resolution}
+function TTwainSource.GetIYResolution(var Return: Extended;
+ var Values: TTwainResolution; Mode: TRetrieveCap): TCapabilityRet;
+begin
+ Result := GetResolution(ICAP_YRESOLUTION, Return, Values, Mode);
+end;
+
+{Returns if user interface is controllable}
+function TTwainSource.GetUIControllable(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_UICONTROLLABLE, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Returns if feeder is loaded}
+function TTwainSource.GetFeederLoaded(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_FEEDERLOADED, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Returns if feeder is enabled}
+function TTwainSource.GetFeederEnabled(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_FEEDERENABLED, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Set if feeder is enabled}
+function TTwainSource.SetFeederEnabled(Value: WordBool): TCapabilityRet;
+begin
+ {Call SetOneValue to set value}
+ Result := SetOneValue(CAP_FEEDERENABLED, TWTY_BOOL, @Value);
+end;
+
+
+{Returns if autofeed is enabled}
+function TTwainSource.GetAutofeed(var Return: Boolean): TCapabilityRet;
+var
+ ItemType: TW_UINT16;
+ Value : String;
+begin
+ {Try to obtain value and make sure it is of type TW_BOOL}
+ Result := GetOneValue(CAP_AUTOFEED, ItemType, Value, rcGet);
+ if (Result = crSuccess) and (ItemType <> TWTY_BOOL) then
+ Result := crUnsupported;
+ {Return value, by checked the return value from GetOneValue}
+ if Result = crSuccess then Return := (Value = '1');
+end;
+
+{Set if autofeed is enabled}
+function TTwainSource.SetAutoFeed(Value: WordBool): TCapabilityRet;
+begin
+ {Call SetOneValue to set value}
+ Result := SetOneValue(CAP_AUTOFEED, TWTY_BOOL, @Value);
+end;
+
+
+{Used with property PendingXfers}
+function TTwainSource.GetPendingXfers: TW_INT16;
+var
+ PendingXfers: TW_PENDINGXFERS;
+begin
+ if Loaded and Enabled then
+ begin
+ {Call method to retrieve}
+ if Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_PENDINGXFERS,
+ MSG_GET, @PendingXfers) = TWRC_SUCCESS then
+ Result := PendingXfers.Count
+ else Result := ERROR_INT16; {Some error ocurred while calling message}
+ end
+ else Result := ERROR_INT16; {Source not loaded/enabled}
+end;
+
+{Returns a TMsg structure}
+function MakeMsg(const Handle: THandle; uMsg: UINT; wParam: WPARAM;
+ lParam: LPARAM): TMsg;
+begin
+ {Fill structure with the parameters}
+ Result.hwnd := Handle;
+ Result.message := uMsg;
+ Result.wParam := wParam;
+ Result.lParam := lParam;
+ GetCursorPos(Result.pt);
+end;
+
+{Virtual window procedure handler}
+function VirtualWinProc(Handle: THandle; uMsg: UINT; wParam: WPARAM;
+ lParam: LPARAM): LResult; stdcall;
+
+ {Returns the TDelphiTwain object}
+ function Obj: TDelphiTwain;
+ begin
+ Longint(Result) := GetWindowLong(Handle, GWL_USERDATA);
+ end {function};
+
+var
+ Twain: TDelphiTwain;
+ i : Integer;
+ Msg : TMsg;
+begin
+ {Tests for the message}
+ case uMsg of
+ {Creation of the window}
+ WM_CREATE:
+ {Stores the TDelphiTwain object handle}
+ with pCreateStruct(lParam)^ do
+ SetWindowLong(Handle, GWL_USERDATA, Longint(lpCreateParams));
+ {case} else
+ begin
+ {Try to obtain the current object pointer}
+ Twain := Obj;
+
+ if Assigned(Twain) then
+ {If there are sources loaded, we need to verify}
+ {this message}
+ if (Twain.SourcesLoaded > 0) then
+ begin
+ {Convert parameters to a TMsg}
+ Msg := MakeMsg(Handle, uMsg, wParam, lParam);
+ {Tell about this message}
+ FOR i := 0 TO Twain.SourceCount - 1 DO
+ if ((Twain.Source[i].Loaded) and (Twain.Source[i].Enabled)) then
+ if Twain.Source[i].ProcessMessage(Msg) then
+ begin
+ {Case this was a message from the source, there is}
+ {no need for the default procedure to process}
+ Result := 0;
+ Exit;
+ end;
+
+ end {if (Twain.SourcesLoaded > 0)}
+
+
+ end {case Else}
+ end {case uMsg of};
+
+ {Calls method to handle}
+ Result := DefWindowProc(Handle, uMsg, wParam, lParam);
+end;
+
+
+//npeter: 2004.01.12
+//sets the acquired area
+function TTwainSource.SetImagelayoutFrame(const fLeft, fTop, fRight,
+ fBottom: double): TCapabilityRet;
+var ImageLayout: TW_IMAGELAYOUT;
+begin
+ if not Loaded then
+ begin
+ Result := crInvalidState; {In case the source is not loaded}
+ exit;
+ end;
+
+ fillchar(ImageLayout,sizeof(TW_IMAGELAYOUT),0);
+ with ImageLayout.Frame do
+ begin
+ Left:=FloatToFIX32(fLeft);
+ Top:=FloatToFIX32(fTop);
+ Right:=FloatToFIX32(fRight);
+ Bottom:=FloatToFIX32(fBottom);
+ end;
+ {Call method and store return}
+ Result := ResultToCapabilityRec(Owner.TwainProc(AppInfo, @Structure,
+ DG_IMAGE, DAT_IMAGELAYOUT, MSG_SET, @ImageLayout));
+end;
+
+//npeter: 2004.01.12
+//enable/disable progress indicators
+function TTwainSource.SetIndicators(Value: boolean): TCapabilityRet;
+begin
+ {Call SetOneValue to set value}
+ Result := SetOneValue(CAP_INDICATORS, TWTY_BOOL, @Value);
+end;
+
+
+{Information for the virtual window class}
+var
+ VirtualWinClass: TWNDClass;
+
+
+initialization
+ {Registers the virtual window class}
+ VirtualWinClass.hInstance := hInstance;
+ VirtualWinClass.style := 0;
+ VirtualWinClass.lpfnWndProc := @VirtualWinProc;
+ VirtualWinClass.cbClsExtra := 0;
+ VirtualWinClass.cbWndExtra := 0;
+ VirtualWinClass.hIcon := 0;
+ VirtualWinClass.hCursor := 0;
+ VirtualWinClass.hbrBackground := COLOR_WINDOW + 1;
+ VirtualWinClass.lpszMenuName := '';
+ VirtualWinClass.lpszClassName := VIRTUALWIN_CLASSNAME;
+ Windows.RegisterClass(VirtualWinClass);
+finalization
+ {Unregisters the virtual window class}
+ Windows.UnregisterClass(VIRTUALWIN_CLASSNAME, hInstance);
+end.
diff --git a/T03贸易布匹检验/delphitwain/DelphiTwainUtils.pas b/T03贸易布匹检验/delphitwain/DelphiTwainUtils.pas
new file mode 100644
index 0000000..4bb4230
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/DelphiTwainUtils.pas
@@ -0,0 +1,379 @@
+{GENERAL METHODS USED BY TWAIN DELPHI}
+{december 2001, made by Gustavo Daud}
+
+{This unit contains general methods used by Delphi}
+{Twain component. Some of the methods bellow aren't}
+{directly related to Twain, but are pieces needed}
+{to implement the component.}
+
+unit DelphiTwainUtils;
+
+{$INCLUDE DELPHITWAIN.INC}
+
+interface
+
+uses
+ Twain;
+
+type
+ {Kinds of directories to be obtained with GetCustomDirectory}
+ TDirectoryKind = (dkWindows, dkSystem, dkCurrent, dkApplication, dkTemp);
+
+ {Class to store a list of pointers}
+ TPointerList = class
+ private
+ {Stores pointer to the allocated data}
+ Data: Pointer;
+ {Contains number of additional items allocated every time}
+ {it needs more data to store}
+ fAdditionalBlock: Integer;
+ {Contains the number of items in the list}
+ fCount: Integer;
+ {Contains number of allocated items}
+ fAllocated: Integer;
+ {Allocate/deallocate memory to have enough memory}
+ {to hold the new number of items}
+ procedure SetAllocated(const Value: Integer);
+ {Sets the AdditionalBlock property}
+ procedure SetAdditionalBlock(const Value: Integer);
+ {Set the number of items in the list}
+ procedure SetCount(const Value: Integer);
+ function GetItem(Index: Integer): Pointer;
+ procedure PutItem(Index: Integer; const Value: Pointer);
+ public
+ {Add a new item}
+ procedure Add(Value: Pointer);
+ {Clear all the items in the list}
+ procedure Clear;
+ {Object being created or destroyed}
+ constructor Create;
+ destructor Destroy; override;
+ {Returns/sets an item value}
+ property Item[Index: Integer]: Pointer read GetItem write PutItem; default;
+ {Returns the number of items}
+ property Count: Integer read fCount write SetCount;
+ {Number of allocated items}
+ property Allocated: Integer read fAllocated write SetAllocated;
+ {Additional items to alloc when it needs more memory}
+ property AdditionalBlock: Integer read fAdditionalBlock write
+ SetAdditionalBlock;
+ end;
+
+{Returns custom Microsoft Windows directories}
+function GetCustomDirectory(const DirectoryKind: TDirectoryKind): String;
+{Returns the last error string from Microsoft Windows}
+function GetLastErrorText(): String;
+{Returns if the directory exists}
+function DirectoryExists(const Directory: String): Boolean;
+{Returns if the file exists}
+function FileExists(const FilePath: String): Boolean;
+{Extracts the file directory part}
+function ExtractDirectory(const FilePath: String): String;
+{Convert from integer to string}
+{$IFDEF DONTUSEVCL}function IntToStr(Value: Integer): String;{$ENDIF}
+{$IFDEF DONTUSEVCL}function StrToIntDef(Value: String;
+ Default: Integer): Integer;{$ENDIF}
+{$IFDEF DONTUSEVCL}function CompareMem(P1, P2: pChar;
+ Size: Integer): Boolean;{$ENDIF}
+{Convert from twain Fix32 to extended}
+function Fix32ToFloat(Value: TW_FIX32): Extended;
+{Convert from extended to Fix32}
+function FloatToFix32 (floater: extended): TW_FIX32;
+
+implementation
+
+{Units used bellow}
+uses
+ Windows;
+
+{$IFDEF DONTUSEVCL}
+ function CompareMem(P1, P2: pChar; Size: Integer): Boolean;
+ var
+ i: Integer;
+ begin
+ {Default result}
+ Result := TRUE;
+ {Search each byte}
+ FOR i := 1 TO Size DO
+ begin
+ {Compare booth bytes}
+ if P1^ <> P2^ then
+ begin
+ Result := FALSE;
+ Exit;
+ end; {if P1^ <> P2^}
+ {Move to next byte}
+ Inc(P1); Inc(P2);
+ end {FOR i}
+ end {function};
+{$ENDIF}
+
+{$IFDEF DONTUSEVCL}
+ function IntToStr(Value: Integer): String;
+ begin
+ Str(Value, Result);
+ end;
+{$ENDIF}
+
+{$IFDEF DONTUSEVCL}
+ function StrToIntDef(Value: String; Default: Integer): Integer;
+ var Code: Integer;
+ begin
+ {Try converting from string to integer}
+ Val(Value, Result, Code);
+ {If any error ocurred, returns default value}
+ if Code <> 0 then Result := Default;
+ end;
+{$ENDIF}
+
+
+{Convert from extended to Fix32}
+function FloatToFix32 (floater: extended): TW_FIX32;
+var
+ fracpart : extended;
+begin
+ //Obtain numerical part by truncating the float number
+ Result.Whole := trunc(floater);
+ //Obtain fracional part by subtracting float number by
+ //numerical part. Also we make sure the number is not
+ //negative by multipling by -1 if it is negative
+ fracpart := floater - result.Whole;
+ if fracpart < 0 then fracpart := fracpart * -1;
+ //Multiply by 10 until there is no fracional part any longer
+ while FracPart - trunc(FracPart) <> 0 do fracpart := fracpart * 10;
+ //Return fracional part
+ Result.Frac := trunc(fracpart);
+end;
+
+{Convert from twain Fix32 to extended}
+function Fix32ToFloat(Value: TW_FIX32): Extended;
+begin
+ Result := Value.Whole + (Value.Frac / 65536.0);
+end;
+
+{Returns the last position for any of the characters in the parameter}
+function LastPosition(const Text, characters: String): Integer;
+var
+ x, y: Integer; {For loop variables}
+begin
+ Result := Length(Text); {Initial result}
+
+ {Search each character in the text}
+ FOR x := 1 TO Length(Text) DO
+ begin
+ {Test for each character}
+ FOR y := 1 TO Length(characters) DO
+ if Text[x] = characters[y] then
+ Result := x;
+ end {for x}
+end;
+
+{Extracts the file directory}
+function ExtractDirectory(const FilePath: String): String;
+begin
+ {Searches for the last \ or : characters}
+ {ex: c:\windows\system32\yfile.ext or c:autoexec.bat}
+ Result := Copy(FilePath, 1, LastPosition(FilePath, '\:'));
+end;
+
+{Returns if the file exists}
+function FileExists(const FilePath: String): Boolean;
+var
+ FindData : TWin32FindData;
+ FindHandle: THandle;
+begin
+ {Searches for the file}
+ FindHandle := FindFirstFile(PChar(FilePath), FindData);
+ Result := (FindHandle <> INVALID_HANDLE_VALUE);
+ {In case it found, closes the FindFirstFile handle}
+ if Result then FindClose(FindHandle);
+end;
+
+{Returns if the directory exists}
+function DirectoryExists(const Directory: String): Boolean;
+var
+ Attr: DWORD;
+begin
+ {Calls GetFileAttributes to verify}
+ Attr := GetFileAttributes(PChar(Directory));
+ Result := (Attr <> $FFFFFFFF) and (Attr and FILE_ATTRIBUTE_DIRECTORY <> 0);
+end;
+
+{Makes an language identifier using the two ids}
+function MAKELANGID(p, s: WORD): DWORD;
+begin
+ Result := (s shl 10) or p;
+end;
+
+{Returns the last error string from Microsoft Windows}}
+function GetLastErrorText(): String;
+var
+ Buffer: Array[Byte] of Char;
+ Len : DWORD;
+begin
+ {Calls format message to translate from the error code ID to}
+ {a text understandable error}
+ Len := Windows.FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or
+ FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), Buffer, sizeof(Buffer), nil);
+ {Remove this chars from the ending of the result}
+ while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do Dec(Len);
+ {Fills result}
+ SetString(Result, Buffer, Len);
+end;
+
+{Includes a trailing backslash in the end of the directory; if necessary}
+procedure IncludeTrailingBackslash(var Directory: String);
+begin
+ {If there isn't already a backslash, add one}
+ if Directory[Length(Directory)] <> '\' then
+ Directory := Directory + '\'
+end;
+
+{Returns custom Microsoft Windows directories}
+function GetCustomDirectory(const DirectoryKind: TDirectoryKind): String;
+const
+ {Default maximum size for directories}
+ DEF_DIRLEN = MAX_PATH;
+
+ {Calls appropriate method and returns necessary size}
+ function CallDirectoryMethod(Buffer: Pointer; Size: UINT): UINT;
+ begin
+ {Test the directory needed by the parameter}
+ case DirectoryKind of
+ {Windows directory}
+ dkWindows: Result := Windows.GetWindowsDirectory(Buffer, Size);
+ {System directory}
+ dkSystem : Result := Windows.GetSystemDirectory(Buffer, Size);
+ {Current directory}
+ dkCurrent: Result := Windows.GetCurrentDirectory(Size, Buffer);
+ {Application directory}
+ dkApplication: Result := Windows.GetModuleFileName(0, Buffer, Size);
+ {Temp directory}
+ dkTemp : Result := Windows.GetTempPath(Size, Buffer);
+ {Unknown directory}
+ else Result := 0;
+ end {case}
+ end;
+
+var
+ DirectoryLen: UINT;
+begin
+ {Set length of the resulting buffer to MAX_PATH to try to hold}
+ {windows directory}
+ SetLength(Result, DEF_DIRLEN + 1);
+ {Tries to obtain the windows directory and stores the size}
+ DirectoryLen := CallDirectoryMethod(@Result[1], DEF_DIRLEN);
+
+ {In case it was not enough to hold windows directory, enlarge}
+ if DirectoryLen > DEF_DIRLEN then
+ begin
+ {Try again, now with the right size}
+ SetLength(Result, DirectoryLen + 1);
+ CallDirectoryMethod(@Result[1], DirectoryLen);
+ end
+ else {Otherwise, adjust the result to excluded unused data}
+ SetLength(Result, DirectoryLen);
+
+ {In case the user searched for the application directory}
+ {extracts just the directory part}
+ if DirectoryKind = dkApplication then
+ Result := ExtractDirectory(Result);
+ {Add a trailing backslash to end of the directory name}
+ IncludeTrailingBackslash(Result);
+end;
+
+{ TPointerList object implementation }
+
+{Add a new item}
+procedure TPointerList.Add(Value: Pointer);
+begin
+ {Increase number of items and update new item}
+ Count := Count + 1;
+ Item[Count - 1] := Value;
+end;
+
+{Clear all the items in the list}
+procedure TPointerList.Clear;
+begin
+ {Set number of items to 0 and initialize again allocated items}
+ Count := 0;
+ Allocated := AdditionalBlock;
+end;
+
+{TPointerList being created}
+constructor TPointerList.Create;
+begin
+ {Let ancestor receive the call}
+ inherited Create;
+
+ {Allocate a number of items}
+ fAdditionalBlock := 10;
+ fAllocated := fAdditionalBlock;
+ GetMem(Data, (fAllocated * sizeof(Pointer)));
+end;
+
+{TPointerList being destroyed}
+destructor TPointerList.Destroy;
+begin
+ {Deallocate data}
+ FreeMem(Data, (fAllocated * sizeof(Pointer)));
+
+ {Let ancestor receive and finish}
+ inherited Destroy;
+end;
+
+{Returns an item from the list}
+function TPointerList.GetItem(Index: Integer): Pointer;
+begin
+ {Check item bounds and return item}
+ if Index in [0..Count - 1] then
+ Longint(Result) := pLongint(Longint(Data) + (Index * sizeof(Pointer)))^
+ else Result := nil; {Otherwise returns nil}
+end;
+
+{Sets an item from the list}
+procedure TPointerList.PutItem(Index: Integer; const Value: Pointer);
+begin
+ {Check item bounds and sets item}
+ if Index in [0..Count - 1] then
+ pLongint(Longint(Data) + (Index * sizeof(Pointer)))^ := Longint(Value);
+end;
+
+{Sets the AdditionalBlock property}
+procedure TPointerList.SetAdditionalBlock(const Value: Integer);
+begin
+ {Value must be a positive number greater than 0}
+ if (Value > 0) then
+ fAdditionalBlock := Value;
+end;
+
+{Allocate/deallocate memory to have enough memory to hold}
+{the new number of items}
+procedure TPointerList.SetAllocated(const Value: Integer);
+begin
+ {Must be always greater than 0 the number of allocated items}
+ {And it also should not be smaller than count}
+ if (Value > 0) and (Value <= Count) then
+ begin
+ {Just realloc memory and update property variable}
+ ReallocMem(Data, (Value * sizeof(Pointer)));
+ fAllocated := Value;
+ end {if (Value <> 0)}
+end;
+
+{Set the number of items in the list}
+procedure TPointerList.SetCount(const Value: Integer);
+begin
+ {Value must be 0 or greater}
+ if (Value >= 0) then
+ begin
+ {If there is no more memory to hold data, allocate some more}
+ while (Value > fAllocated) do
+ Allocated := Allocated + fAdditionalBlock;
+ {Update property}
+ fCount := Value;
+ end {if (Value >= 0)}
+end;
+
+end.
diff --git a/T03贸易布匹检验/delphitwain/Twain.pas b/T03贸易布匹检验/delphitwain/Twain.pas
new file mode 100644
index 0000000..d83e956
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/Twain.pas
@@ -0,0 +1,3225 @@
+{******************************************************************}
+{ }
+{ Borland Delphi Runtime Library }
+{ Twain interface unit }
+{ }
+{ Portions created by TWAIN Working Group, }
+{ see Copyright statement from original file below }
+{ }
+{ The original file is: twain.h, released March 15, 2000. }
+{ The original Pascal code is: twain.pas, released 20. Dez 1999. }
+{ The initial developer of the Pascal code is: Uli Tessel (UT) }
+{ (UliTessel@swol.de) with help of Matthias Thoma (MT) }
+{ (ma.thoma@gmx.de) }
+{ Translation cleaned up and updated to twain 1.9 by: }
+{ Martin Olsson (MO), mnemo@home.se }
+{ }
+{ Obtained through: }
+{ Joint Endeavour of Delphi Innovators (Project JEDI) }
+{ }
+{ You may retrieve the latest version of this file at the Project }
+{ JEDI home page, located at http://delphi-jedi.org }
+{ }
+{ The contents of this file are used with permission, subject to }
+{ the Mozilla Public License Version 1.1 (the "License"); you may }
+{ not use this file except in compliance with the License. You may }
+{ obtain a copy of the License at }
+{ http://www.mozilla.org/MPL/MPL-1.1.html }
+{ }
+{ Software distributed under the License is distributed on an }
+{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
+{ implied. See the License for the specific language governing }
+{ rights and limitations under the License. }
+{ }
+{******************************************************************}
+
+{ ========================================================================
+
+ Copyright (C) 1991, 1992 TWAIN Working Group: Aldus, Caere, Eastman-Kodak,
+ Hewlett-Packard and Logitech Corporations. All rights reserved.
+
+ Copyright (C) 1997 TWAIN Working Group: Bell+Howell, Canon, DocuMagix,
+ Fujitsu, Genoa Technology, Hewlett-Packard, Kofax Imaging Products, and
+ Ricoh Corporation. All rights reserved.
+
+ Copyright 1998 TWAIN Working Group: Adobe Systems Incorporated,
+ Canon Information Systems, Eastman Kodak Company,
+ Fujitsu Computer Products of America, Genoa Technology,
+ Hewlett-Packard Company, Intel Corporation, Kofax Image Products,
+ JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation.
+ All rights reserved.
+
+ Copyright 2000 TWAIN Working Group: Adobe Systems Incorporated,
+ Canon Information Systems, Digimarc Corporation, Eastman Kodak Company,
+ Fujitsu Computer Products of America, Hewlett-Packard Company,
+ JFL Peripheral Solutions Inc., Ricoh Corporation, and Xerox Corporation.
+ All rights reserved.
+
+ TWAIN.h - This is the definitive include file for applications and
+ data sources written to the TWAIN specification.
+ It defines constants, data structures, messages etc.
+ for the public interface to TWAIN.
+
+ Revision History:
+ version 1.0, March 6, 1992. TWAIN 1.0.
+ version 1.1, January 1993. Tech Notes 1.1
+ version 1.5, June 1993. Specification Update 1.5
+ Change DC to TW
+ Change filename from DC.H to TWAIN.H
+ version 1.5, July 1993. Remove spaces from country identifiers
+
+ version 1.7, July 1997 Added Capabilities and data structure for
+ document imaging and digital cameras.
+ KHL.
+ version 1.7, July 1997 Inserted Borland compatibile structure packing
+ directives provided by Mentor. JMH
+ version 1.7, Aug 1997 Expanded file tabs to spaces.
+ NOTE: future authors should be sure to have
+ their editors set to automatically expand tabs
+ to spaces (original tab setting was 4 spaces).
+ version 1.7, Sept 1997 Added job control values
+ Added return codes
+ version 1.7, Sept 1997 changed definition of pRGBRESPONSE to
+ pTW_RGBRESPONSE
+ version 1.7 Aug 1998 Added missing TWEI_BARCODEROTATION values
+ TWBCOR_ types JMH
+ version 1.8 August 1998 Added new types and definitions required
+ for 1.8 Specification JMH
+ version 1.8 January 1999 Changed search mode from SRCH_ to TWBD_ as
+ in 1.8 Specification, added TWBT_MAXICODE JMH
+ version 1.8 January 1999 Removed undocumented duplicate AUTO JMH
+ version 1.8 March 1999 Removed undocumented 1.8 caps:
+ CAP_FILESYSTEM
+ CAP_PAPERBINDING
+ CAP_PASSTHRU
+ CAP_POWERDOWNTIME
+ ICAP_AUTODISCARDBLANKPAGES
+ * CAP_PAGEMULTIPLEACQUIRE - is CAP_REACQUIREALLOWED,
+ requires spec change. JMH
+ Added Mac structure packing modifications JMH
+ version 1.9 March 2000 Added new types and definations required
+ for 1.9 Specification MLM
+ version 1.9 March 2000 Added ICAP_JPEGQUALITY, TWJQ_ values,
+ updated TWON_PROTOCOLMINOR for Release v1.9 MN
+
+ ======================================================================== }
+
+{
+ Revision History for translation:
+
+ Version 1.8.0: 29.08.99 - UT
+ Initial translation, based on twain.h, version 1.8
+
+ Version 1.8.1: 12.09.99 - UT
+ SizeOf for all structures checked and corrected.
+ (Alignment is 2 Bytes for the C Code and 'packed record' uses
+ 1 Byte alignment. Only types using TW_xINT8 are affected)
+
+ Version 1.8.2: 19.12.99 UT
+ Added MPL and the other JEDI Statements
+ Added EXTERNALSYMS to support C++ Builder
+ Created the .PAR file (no Unicode things are used by the TWAIN API?)
+ A bit better formatting of the source
+
+ Version 1.8.3: 20.12.99
+ MT: Added Delphi-Aliases to the structures (like TTWFrame = TW_FRAME)
+ UT: Added missing Externalyms for some constants
+
+ Version 1.9.0: 01.12.00
+ MO: Updated translation to conform with twain.h 1.9
+ MO: Cleaned up style to to fit JEDI standards
+}
+
+unit Twain;
+
+interface
+
+{$HPPEMIT '#include ' }
+
+uses
+ Windows;
+
+{***************************************************************************
+ * TWAIN Version *
+ *************************************************************************** }
+
+const
+ TWON_PROTOCOLMINOR = 9; { Changed for Version 1.9 }
+ {$EXTERNALSYM TWON_PROTOCOLMINOR}
+ TWON_PROTOCOLMAJOR = 1;
+ {$EXTERNALSYM TWON_PROTOCOLMAJOR}
+
+{***************************************************************************
+ * Platform Dependent Definitions and Typedefs *
+ *************************************************************************** }
+
+type
+ TW_HANDLE = THandle;
+ {$EXTERNALSYM TW_HANDLE}
+ TTWHandle = TW_HANDLE;
+ TW_MEMREF = Pointer;
+ {$EXTERNALSYM TW_MEMREF}
+ TTWMemRef = TW_MEMREF;
+
+{***************************************************************************
+ * Type Definitions *
+ *************************************************************************** }
+
+{ String types. These include room for the strings and a NULL char, *
+* or, on the Mac, a length byte followed by the string. *
+* TW_STR255 must hold less than 256 chars so length fits in first byte. }
+type
+ TW_STR32 = array[0..33] of Char; // char TW_STR32[34]
+ {$EXTERNALSYM TW_STR32}
+ pTW_STR32 = ^TW_STR32;
+ {$EXTERNALSYM pTW_STR32}
+ TTWStr32 = TW_STR32;
+ PTWStr32 = pTW_STR32;
+
+ TW_STR64 = array[0..65] of Char; // char TW_STR64[66]
+ {$EXTERNALSYM TW_STR64}
+ pTW_STR64 = ^TW_STR64;
+ {$EXTERNALSYM pTW_STR64}
+ TTWStr64 = TW_STR64;
+ PTWStr64 = pTW_STR64;
+
+ TW_STR128 = array[0..129] of Char; // char TW_STR128[130]
+ {$EXTERNALSYM TW_STR128}
+ pTW_STR128 = ^TW_STR128;
+ {$EXTERNALSYM pTW_STR128}
+ TTWStr128 = TW_STR128;
+ PTWStr128 = pTW_STR128;
+
+ TW_STR255 = array[0..255] of Char; // char TW_STR255[256]
+ {$EXTERNALSYM TW_STR255}
+ pTW_STR255 = ^TW_STR255;
+ {$EXTERNALSYM pTW_STR255}
+ TTWStr255 = TW_STR255;
+ PTWStr255 = pTW_STR255;
+
+ TW_STR1024 = array[0..1025] of Char; // char TW_STR1024[1026]
+ {$EXTERNALSYM TW_STR1024}
+ pTW_STR1024 = ^TW_STR1024;
+ {$EXTERNALSYM pTW_STR1024}
+ TTWStr1024 = TW_STR1024; // added 1.9
+ PTWStr1024 = pTW_STR1024;
+
+ TW_UNI512 = array[0..511] of WideChar; // wchar_t TW_UNI512[512]
+ {$EXTERNALSYM TW_UNI512}
+ pTW_UNI512 = ^TW_UNI512;
+ {$EXTERNALSYM pTW_UNI512}
+ TTWUni512 = TW_UNI512; // added 1.9
+ PTWUni512 = pTW_UNI512;
+
+{ Numeric types. }
+ TW_INT8 = ShortInt; // char TW_INT8
+ {$EXTERNALSYM TW_INT8}
+ pTW_INT8 = ^TW_INT8;
+ {$EXTERNALSYM pTW_INT8}
+ TTWInt8 = TW_INT8;
+ PTWInt8 = pTW_INT8;
+
+ TW_INT16 = SmallInt; // short TW_INT16
+ {$EXTERNALSYM TW_INT16}
+ pTW_INT16 = ^TW_INT16;
+ {$EXTERNALSYM pTW_INT16}
+ TTWInt16 = TW_INT16;
+ PTWInt16 = pTW_INT16;
+
+ TW_INT32 = LongInt; // long TW_INT32
+ {$EXTERNALSYM TW_INT32}
+ pTW_INT32 = ^TW_INT32;
+ {$EXTERNALSYM pTW_INT32}
+ TTWInt32 = TW_INT32;
+ PTWInt32 = pTW_INT32;
+
+ TW_UINT8 = Byte; // unsigned char TW_UINT8
+ {$EXTERNALSYM TW_UINT8}
+ pTW_UINT8 = ^TW_UINT8;
+ {$EXTERNALSYM pTW_UINT8}
+ TTWUInt8 = TW_UINT8;
+ PTWUInt8 = pTW_UINT8;
+
+ TW_UINT16 = Word; // unsigned short TW_UINT16
+ {$EXTERNALSYM TW_UINT16}
+ pTW_UINT16 = ^TW_UINT16;
+ {$EXTERNALSYM pTW_UINT16}
+ TTWUInt16 = TW_UINT16;
+ PTWUInt16 = pTW_UINT16;
+
+ TW_UINT32 = ULONG; // unsigned long TW_UINT32
+ {$EXTERNALSYM TW_UINT32}
+ pTW_UINT32 = ^TW_UINT32;
+ {$EXTERNALSYM pTW_UINT32}
+ TTWUInt32 = TW_UINT32;
+ PTWUInt32 = pTW_UINT32;
+
+ TW_BOOL = WordBool; // unsigned short TW_BOOL
+ {$EXTERNALSYM TW_BOOL}
+ pTW_BOOL = ^TW_BOOL;
+ {$EXTERNALSYM pTW_BOOL}
+ TTWBool = TW_BOOL;
+ PTWBool = pTW_BOOL;
+
+{ Fixed point structure type. }
+type
+ TW_FIX32 = packed record
+ Whole: TW_INT16; { maintains the sign }
+ Frac: TW_UINT16;
+ end;
+ {$EXTERNALSYM TW_FIX32}
+ pTW_FIX32 = ^TW_FIX32;
+ {$EXTERNALSYM pTW_FIX32}
+
+ TTWFix32 = TW_Fix32;
+ PTWFix32 = pTW_FIX32;
+
+{***************************************************************************
+ * Structure Definitions *
+ *************************************************************************** }
+
+{ No DAT needed. }
+type
+ TW_CIEPOINT = packed record
+ X: TW_FIX32;
+ Y: TW_FIX32;
+ Z: TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_CIEPOINT}
+ pTW_CIEPOINT = ^TW_CIEPOINT;
+ {$EXTERNALSYM pTW_CIEPOINT}
+
+ TTWCiePoint = TW_CIEPOINT;
+ PTWCiePoint = pTW_CIEPOINT;
+
+
+{ No DAT needed. }
+ TW_DECODEFUNCTION = packed record
+ StartIn: TW_FIX32;
+ BreakIn: TW_FIX32;
+ EndIn: TW_FIX32;
+ StartOut: TW_FIX32;
+ BreakOut: TW_FIX32;
+ EndOut: TW_FIX32;
+ Gamma: TW_FIX32;
+ SampleCount: TW_FIX32; { if =0 use the gamma }
+ end;
+ {$EXTERNALSYM TW_DECODEFUNCTION}
+ pTW_DECODEFUNCTION = ^TW_DECODEFUNCTION;
+ {$EXTERNALSYM pTW_DECODEFUNCTION}
+
+ TTWDecodeFunction = TW_DECODEFUNCTION;
+ PTWDecodeFunction = pTW_DECODEFUNCTION;
+
+
+{ No DAT needed. }
+ TW_ELEMENT8 = packed record
+ Index: TW_UINT8; { Value used to index into the color table. }
+ Channel1: TW_UINT8; { First tri-stimulus value (e.g Red) }
+ Channel2: TW_UINT8; { Second tri-stimulus value (e.g Green) }
+ Channel3: TW_UINT8; { Third tri-stimulus value (e.g Blue) }
+ end;
+ {$EXTERNALSYM TW_ELEMENT8}
+ pTW_ELEMENT8 = ^TW_ELEMENT8;
+ {$EXTERNALSYM pTW_ELEMENT8}
+
+ TTWElement8 = TW_ELEMENT8;
+ PTWElement8 = pTW_ELEMENT8;
+
+{ No DAT. Defines a frame rectangle in ICAP_UNITS coordinates. }
+ TW_FRAME = packed record
+ Left: TW_FIX32;
+ Top: TW_FIX32;
+ Right: TW_FIX32;
+ Bottom: TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_FRAME}
+ pTW_FRAME = ^TW_FRAME;
+ {$EXTERNALSYM pTW_FRAME}
+
+ PTWFrame = pTW_FRAME;
+ TTWFrame = TW_FRAME;
+
+
+{ No DAT needed. Used to manage memory buffers. }
+ TW_MEMORY = packed record
+ Flags: TW_UINT32; { Any combination of the TWMF_ constants. }
+ Length: TW_UINT32; { Number of bytes stored in buffer TheMem. }
+ TheMem: TW_MEMREF; { Pointer or handle to the allocated memory buffer. }
+ end;
+ {$EXTERNALSYM TW_MEMORY}
+ pTW_MEMORY = ^TW_MEMORY;
+ {$EXTERNALSYM pTW_MEMORY}
+
+ TTWMemory = TW_MEMORY;
+ PTWMemory = pTW_MEMORY;
+
+
+{ No DAT needed. }
+ TW_TRANSFORMSTAGE = packed record
+ Decode: array[0..2] of TW_DECODEFUNCTION;
+ Mix: array[0..2, 0..2] of TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_TRANSFORMSTAGE}
+ pTW_TRANSFORMSTAGE = ^TW_TRANSFORMSTAGE;
+ {$EXTERNALSYM pTW_TRANSFORMSTAGE}
+
+ TTWTransformStage = TW_TRANSFORMSTAGE;
+ PTWTransformStage = pTW_TRANSFORMSTAGE;
+
+{ No DAT needed. Describes version of software currently running. }
+ TW_VERSION = packed record
+ MajorNum: TW_UINT16; { Major revision number of the software. }
+ MinorNum: TW_UINT16; { Incremental revision number of the software. }
+ Language: TW_UINT16; { e.g. TWLG_SWISSFRENCH }
+ Country: TW_UINT16; { e.g. TWCY_SWITZERLAND }
+ Info: TW_STR32; { e.g. "1.0b3 Beta release" }
+ end;
+ {$EXTERNALSYM TW_VERSION}
+ pTW_VERSION = ^TW_VERSION;
+ {$EXTERNALSYM pTW_VERSION}
+
+ PTWVersion = pTW_VERSION;
+ TTWVersion = TW_VERSION;
+
+{ TWON_ARRAY. Container for array of values (a simplified TW_ENUMERATION) }
+ TW_ARRAY = packed record
+ ItemType: TW_UINT16;
+ NumItems: TW_UINT32; { How many items in ItemList }
+ ItemList: array[0..1] of TW_UINT8; { Array of ItemType values starts here }
+ // UT: ..1 for alignment to 2 Byte Packing, so sizeof is correct
+ end;
+ {$EXTERNALSYM TW_ARRAY}
+ pTW_ARRAY = ^TW_ARRAY;
+ {$EXTERNALSYM pTW_ARRAY}
+
+ TTWArray = TW_ARRAY;
+ PTWArray = pTW_ARRAY;
+
+
+{ TWON_ENUMERATION. Container for a collection of values. }
+ TW_ENUMERATION = packed record
+ ItemType: TW_UINT16;
+ NumItems: TW_UINT32; { How many items in ItemList }
+ CurrentIndex: TW_UINT32; { Current value is in ItemList[CurrentIndex] }
+ DefaultIndex: TW_UINT32; { Powerup value is in ItemList[DefaultIndex] }
+ ItemList: array[0..1] of TW_UINT8; { Array of ItemType values starts here }
+ // UT: ..1 for alignment to 2 Byte Packing, so sizeof is correct
+ end;
+ {$EXTERNALSYM TW_ENUMERATION}
+ pTW_ENUMERATION = ^TW_ENUMERATION;
+ {$EXTERNALSYM pTW_ENUMERATION}
+
+ TTWEnumeration = TW_ENUMERATION;
+ PTWEnumeration = pTW_ENUMERATION;
+
+{ TWON_ONEVALUE. Container for one value. }
+ TW_ONEVALUE = packed record
+ ItemType: TW_UINT16;
+ Item: TW_UINT32;
+ end;
+ {$EXTERNALSYM TW_ONEVALUE}
+ pTW_ONEVALUE = ^TW_ONEVALUE;
+ {$EXTERNALSYM pTW_ONEVALUE}
+
+ TTWOneValue = TW_ONEVALUE;
+ PTWOneValue = pTW_ONEVALUE;
+
+{ TWON_RANGE. Container for a range of values. }
+ TW_RANGE = packed record
+ ItemType: TW_UINT16;
+ MinValue: TW_UINT32; { Starting value in the range. }
+ MaxValue: TW_UINT32; { Final value in the range. }
+ StepSize: TW_UINT32; { Increment from MinValue to MaxValue. }
+ DefaultValue: TW_UINT32; { Power-up value. }
+ CurrentValue: TW_UINT32; { The value that is currently in effect. }
+ end;
+ {$EXTERNALSYM TW_RANGE}
+ pTW_RANGE = ^TW_RANGE;
+ {$EXTERNALSYM pTW_RANGE}
+
+ TTWRange = TW_RANGE;
+ PTWRange = pTW_RANGE;
+
+{ DAT_CAPABILITY. Used by application to get/set capability from/in a data source. }
+ TW_CAPABILITY = packed record
+ Cap: TW_UINT16; { id of capability to set or get, e.g. CAP_BRIGHTNESS }
+ ConType: TW_UINT16; { TWON_ONEVALUE, _RANGE, _ENUMERATION or _ARRAY }
+ hContainer: TW_HANDLE;{ Handle to container of type Dat }
+ end;
+ {$EXTERNALSYM TW_CAPABILITY}
+ pTW_CAPABILITY = ^TW_CAPABILITY;
+ {$EXTERNALSYM pTW_CAPABILITY}
+
+ TTWCapability = TW_CAPABILITY;
+ PTWCapability = pTW_CAPABILITY;
+
+
+{ DAT_CIECOLOR. }
+ TW_CIECOLOR = packed record
+ ColorSpace: TW_UINT16;
+ LowEndian: TW_INT16;
+ DeviceDependent: TW_INT16;
+ VersionNumber: TW_INT32;
+ StageABC: TW_TRANSFORMSTAGE;
+ StageLMN: TW_TRANSFORMSTAGE;
+ WhitePoint: TW_CIEPOINT;
+ BlackPoint: TW_CIEPOINT;
+ WhitePaper: TW_CIEPOINT;
+ BlackInk: TW_CIEPOINT;
+ Samples: array[0..0] of TW_FIX32;
+ end;
+ {$EXTERNALSYM TW_CIECOLOR}
+ pTW_CIECOLOR = ^TW_CIECOLOR;
+ {$EXTERNALSYM pTW_CIECOLOR}
+
+ TTWCieColor = TW_CIECOLOR;
+ PTWCieColor = pTW_CIECOLOR;
+
+{ DAT_EVENT. For passing events down from the application to the DS. }
+ TW_EVENT = packed record
+ pEvent: TW_MEMREF; { Windows pMSG or Mac pEvent. }
+ TWMessage: TW_UINT16; { TW msg from data source, e.g. MSG_XFERREADY }
+ end;
+ {$EXTERNALSYM TW_EVENT}
+ pTW_EVENT = ^TW_EVENT;
+ {$EXTERNALSYM pTW_EVENT}
+
+ TTWEvent = TW_EVENT;
+ PTWEvent = pTW_EVENT;
+
+{ DAT_GRAYRESPONSE }
+ TW_GRAYRESPONSE = packed record
+ Response: array[0..0] of TW_ELEMENT8;
+ end;
+ {$EXTERNALSYM TW_GRAYRESPONSE}
+ pTW_GRAYRESPONSE = ^TW_GRAYRESPONSE;
+ {$EXTERNALSYM pTW_GRAYRESPONSE}
+
+ TTWGrayResponse = TW_GRAYRESPONSE;
+ PTWGrayResponse = pTW_GRAYRESPONSE;
+
+{ DAT_IDENTITY. Identifies the program/library/code resource. }
+ TW_IDENTITY = packed record
+ Id: TW_UINT32; { Unique number. In Windows, application hWnd }
+ Version: TW_VERSION ; { Identifies the piece of code }
+ ProtocolMajor: TW_UINT16; { Application and DS must set to TWON_PROTOCOLMAJOR }
+ ProtocolMinor: TW_UINT16; { Application and DS must set to TWON_PROTOCOLMINOR }
+ SupportedGroups: TW_UINT32; { Bit field OR combination of DG_ constants }
+ Manufacturer: TW_STR32; { Manufacturer name, e.g. "Hewlett-Packard" }
+ ProductFamily: TW_STR32; { Product family name, e.g. "ScanJet" }
+ ProductName: TW_STR32; { Product name, e.g. "ScanJet Plus" }
+ end;
+ {$EXTERNALSYM TW_IDENTITY}
+ pTW_IDENTITY = ^TW_IDENTITY;
+ {$EXTERNALSYM pTW_IDENTITY}
+
+ TTWIdentity = TW_IDENTITY;
+ PTWIdentity = pTW_IDENTITY;
+
+{ DAT_IMAGEINFO. Application gets detailed image info from DS with this. }
+ TW_IMAGEINFO = packed record
+ XResolution: TW_FIX32; { Resolution in the horizontal }
+ YResolution: TW_FIX32; { Resolution in the vertical }
+ ImageWidth: TW_INT32; { Columns in the image, -1 if unknown by DS }
+ ImageLength: TW_INT32; { Rows in the image, -1 if unknown by DS }
+ SamplesPerPixel: TW_INT16; { Number of samples per pixel, 3 for RGB }
+ BitsPerSample: array[0..7] of TW_INT16; { Number of bits for each sample }
+ BitsPerPixel: TW_INT16; { Number of bits for each padded pixel }
+ Planar: TW_BOOL; { True if Planar, False if chunky }
+ PixelType: TW_INT16; { How to interp data: ; photo interp (TWPT_) }
+ Compression: TW_UINT16; { How the data is compressed (TWCP_xxxx) }
+ end;
+ {$EXTERNALSYM TW_IMAGEINFO}
+ pTW_IMAGEINFO = ^TW_IMAGEINFO;
+ {$EXTERNALSYM pTW_IMAGEINFO}
+
+ TTWImageInfo = TW_IMAGEINFO;
+ PTWImageInfo = pTW_IMAGEINFO;
+
+{ DAT_IMAGELAYOUT. Provides image layout information in current units. }
+ TW_IMAGELAYOUT = packed record
+ Frame: TW_FRAME; { Frame coords within larger document }
+ DocumentNumber: TW_UINT32;
+ PageNumber: TW_UINT32; { Reset when you go to next document }
+ FrameNumber: TW_UINT32; { Reset when you go to next page }
+ end;
+ {$EXTERNALSYM TW_IMAGELAYOUT}
+ pTW_IMAGELAYOUT = ^TW_IMAGELAYOUT;
+ {$EXTERNALSYM pTW_IMAGELAYOUT}
+
+ TTWImageLayout = TW_IMAGELAYOUT;
+ PTWImageLayout = pTW_IMAGELAYOUT;
+
+{ DAT_IMAGEMEMXFER. Used to pass image data (e.g. in strips) from DS to application. }
+ TW_IMAGEMEMXFER = packed record
+ Compression: TW_UINT16; { How the data is compressed }
+ BytesPerRow: TW_UINT32; { Number of bytes in a row of data }
+ Columns: TW_UINT32; { How many columns }
+ Rows: TW_UINT32; { How many rows }
+ XOffset: TW_UINT32; { How far from the side of the image }
+ YOffset: TW_UINT32; { How far from the top of the image }
+ BytesWritten: TW_UINT32;{ How many bytes written in Memory }
+ Memory: TW_MEMORY; { Mem struct used to pass actual image data }
+ end;
+ {$EXTERNALSYM TW_IMAGEMEMXFER}
+ pTW_IMAGEMEMXFER = ^TW_IMAGEMEMXFER;
+ {$EXTERNALSYM pTW_IMAGEMEMXFER}
+
+ TTWImageMemXFER = TW_IMAGEMEMXFER;
+ PTWImageMemXFER = pTW_IMAGEMEMXFER;
+
+{ Changed in 1.1: QuantTable, HuffmanDC, HuffmanAC TW_MEMREF -> TW_MEMORY }
+{ DAT_JPEGCOMPRESSION. Based on JPEG Draft International Std, ver 10918-1. }
+ TW_JPEGCOMPRESSION = packed record
+ ColorSpace: TW_UINT16; { One of the TWPT_xxxx values }
+ SubSampling: TW_UINT32; { Two word "array" for subsampling values }
+ NumComponents: TW_UINT16; { Number of color components in image }
+ RestartFrequency: TW_UINT16; { Frequency of restart marker codes in MDU's }
+ QuantMap: array[0..3] of TW_UINT16; { Mapping of components to QuantTables }
+ QuantTable: array[0..3] of TW_MEMORY; { Quantization tables }
+ HuffmanMap: array[0..3] of TW_UINT16; { Mapping of components to Huffman tables }
+ HuffmanDC: array[0..1] of TW_MEMORY; { DC Huffman tables }
+ HuffmanAC: array[0..1] of TW_MEMORY; { AC Huffman tables }
+ end;
+ {$EXTERNALSYM TW_JPEGCOMPRESSION}
+ pTW_JPEGCOMPRESSION = ^TW_JPEGCOMPRESSION;
+ {$EXTERNALSYM pTW_JPEGCOMPRESSION}
+
+ TTWJPEGCompression = TW_JPEGCOMPRESSION;
+ PTWJPEGCompression = pTW_JPEGCOMPRESSION;
+
+{ DAT_PALETTE8. Color palette when TWPT_PALETTE pixels xfer'd in mem buf. }
+ TW_PALETTE8 = packed record
+ NumColors: TW_UINT16; { Number of colors in the color table. }
+ PaletteType: TW_UINT16; { TWPA_xxxx, specifies type of palette. }
+ Colors: array[0..255] of TW_ELEMENT8; { Array of palette values starts here. }
+ end;
+ {$EXTERNALSYM TW_PALETTE8}
+ pTW_PALETTE8 = ^TW_PALETTE8;
+ {$EXTERNALSYM pTW_PALETTE8}
+
+ TTWPalette8 = TW_PALETTE8;
+ PTWPalette8 = pTW_PALETTE8;
+
+{ DAT_PENDINGXFERS. Used with MSG_ENDXFER to indicate additional data. }
+ TW_PENDINGXFERS = packed record
+ Count: TW_UINT16;
+ case boolean of
+ False: (EOJ: TW_UINT32);
+ True: (Reserved: TW_UINT32);
+ end;
+ {$EXTERNALSYM TW_PENDINGXFERS}
+ pTW_PENDINGXFERS = ^TW_PENDINGXFERS;
+ {$EXTERNALSYM pTW_PENDINGXFERS}
+
+ TTWPendingXFERS = TW_PENDINGXFERS;
+ PTWPendingXFERS = pTW_PENDINGXFERS;
+
+
+{ DAT_RGBRESPONSE }
+ TW_RGBRESPONSE = packed record
+ Response: array[0..0] of TW_ELEMENT8;
+ end;
+ {$EXTERNALSYM TW_RGBRESPONSE}
+ pTW_RGBRESPONSE = ^TW_RGBRESPONSE;
+ {$EXTERNALSYM pTW_RGBRESPONSE}
+
+ TTWRGBResponse = TW_RGBRESPONSE;
+ PTWRGBResponse = pTW_RGBRESPONSE;
+
+{ DAT_SETUPFILEXFER. Sets up DS to application data transfer via a file. }
+ TW_SETUPFILEXFER = packed record
+ FileName: TW_STR255;
+ Format: TW_UINT16; { Any TWFF_ constant }
+ VRefNum: TW_INT16; { Used for Mac only }
+ end;
+ {$EXTERNALSYM TW_SETUPFILEXFER}
+ pTW_SETUPFILEXFER = ^TW_SETUPFILEXFER;
+ {$EXTERNALSYM pTW_SETUPFILEXFER}
+
+ TTWSetupFileXFER = TW_SETUPFILEXFER;
+ PTWSetupFileXFER = pTW_SETUPFILEXFER;
+
+
+{ DAT_SETUPFILEXFER2. Sets up DS to application data transfer via a file. }
+{ Added 1.9 }
+ TW_SETUPFILEXFER2 = packed record
+ FileName: TW_MEMREF; { Pointer to file name text }
+ FileNameType: TW_UINT16; { TWTY_STR1024 or TWTY_UNI512 }
+ Format: TW_UINT16; { Any TWFF_ constant }
+ VRefNum: TW_INT16; { Used for Mac only }
+ parID: TW_UINT32; { Used for Mac only }
+ end;
+ {$EXTERNALSYM pTW_SETUPFILEXFER2}
+ pTW_SETUPFILEXFER2 = ^TW_SETUPFILEXFER2;
+ {$EXTERNALSYM pTW_SETUPFILEXFER2}
+
+ TTWSetupFileXFER2 = TW_SETUPFILEXFER2;
+ PTWSetupFileXFER2 = pTW_SETUPFILEXFER2;
+
+
+{ DAT_SETUPMEMXFER. Sets up DS to application data transfer via a memory buffer. }
+ TW_SETUPMEMXFER = packed record
+ MinBufSize: TW_UINT32;
+ MaxBufSize: TW_UINT32;
+ Preferred: TW_UINT32;
+ end;
+ {$EXTERNALSYM TW_SETUPMEMXFER}
+ pTW_SETUPMEMXFER = ^TW_SETUPMEMXFER;
+ {$EXTERNALSYM pTW_SETUPMEMXFER}
+
+ TTWSetupMemXFER = TW_SETUPMEMXFER;
+ PTWSetupMemXFER = pTW_SETUPMEMXFER;
+
+{ DAT_STATUS. Application gets detailed status info from a data source with this. }
+ TW_STATUS = packed record
+ ConditionCode: TW_UINT16; { Any TWCC_ constant }
+ Reserved: TW_UINT16; { Future expansion space }
+ end;
+ {$EXTERNALSYM TW_STATUS}
+ pTW_STATUS = ^TW_STATUS;
+ {$EXTERNALSYM pTW_STATUS}
+
+ TTWStatus = TW_STATUS;
+ PTWStatus = pTW_STATUS;
+
+{ DAT_USERINTERFACE. Coordinates UI between application and data source. }
+ TW_USERINTERFACE = packed record
+ ShowUI: TW_BOOL; { TRUE if DS should bring up its UI }
+ ModalUI: TW_BOOL; { For Mac only - true if the DS's UI is modal }
+ hParent: TW_HANDLE; { For windows only - Application window handle }
+ end;
+ {$EXTERNALSYM TW_USERINTERFACE}
+ pTW_USERINTERFACE = ^TW_USERINTERFACE;
+ {$EXTERNALSYM pTW_USERINTERFACE}
+
+ TTWUserInterface = TW_USERINTERFACE;
+ PTWUserInterface = pTW_USERINTERFACE;
+
+{ SDH - 03/21/95 - TWUNK }
+{ DAT_TWUNKIDENTITY. Provides DS identity and 'other' information necessary }
+{ across thunk link. }
+ TW_TWUNKIDENTITY = packed record
+ identity: TW_IDENTITY; { Identity of data source. }
+ dsPath: TW_STR255; { Full path and file name of data source. }
+ end;
+ {$EXTERNALSYM TW_TWUNKIDENTITY}
+ pTW_TWUNKIDENTITY = ^TW_TWUNKIDENTITY;
+ {$EXTERNALSYM pTW_TWUNKIDENTITY}
+
+ TTWTwunkIdentity = TW_TWUNKIDENTITY;
+ PTWTwunkIdentity = pTW_TWUNKIDENTITY;
+
+{ SDH - 03/21/95 - TWUNK }
+{ Provides DS_Entry parameters over thunk link. }
+ TW_TWUNKDSENTRYPARAMS = packed record
+ destFlag: TW_INT8; { TRUE if dest is not NULL }
+ alignment: TW_INT8; // UT: Packed to two byte alignment
+ dest: TW_IDENTITY; { Identity of data source (if used) }
+ dataGroup: TW_INT32; { DSM_Entry dataGroup parameter }
+ dataArgType: TW_INT16; { DSM_Entry dataArgType parameter }
+ message: TW_INT16; { DSM_Entry message parameter }
+ pDataSize: TW_INT32; { Size of pData (0 if NULL) }
+ //pData: TW_MEMREF; { Based on implementation specifics, a }
+ { pData parameter makes no sense in this }
+ { structure, but data (if provided) will be }
+ { appended in the data block. }
+ end;
+ {$EXTERNALSYM TW_TWUNKDSENTRYPARAMS}
+ pTW_TWUNKDSENTRYPARAMS = ^TW_TWUNKDSENTRYPARAMS;
+ {$EXTERNALSYM pTW_TWUNKDSENTRYPARAMS}
+
+ TTWTwunkDSEntryParams = TW_TWUNKDSENTRYPARAMS;
+ PTWTwunkDSEntryParams = pTW_TWUNKDSENTRYPARAMS;
+
+{ SDH - 03/21/95 - TWUNK }
+{ Provides DS_Entry results over thunk link. }
+ TW_TWUNKDSENTRYRETURN = packed record
+ returnCode: TW_UINT16; { Thunker DsEntry return code. }
+ conditionCode: TW_UINT16; { Thunker DsEntry condition code. }
+ pDataSize: TW_INT32; { Size of pData (0 if NULL) }
+ //pData: TW_MEMREF; { Based on implementation specifics, a }
+ { pData parameter makes no sense in this }
+ { structure, but data (if provided) will be }
+ { appended in the data block. }
+ end;
+ {$EXTERNALSYM TW_TWUNKDSENTRYRETURN}
+ pTW_TWUNKDSENTRYRETURN = ^TW_TWUNKDSENTRYRETURN;
+ {$EXTERNALSYM pTW_TWUNKDSENTRYRETURN}
+
+ TTWTwunkDSEntryReturn = TW_TWUNKDSENTRYRETURN;
+ PTWTwunkDSEntryReturn = pTW_TWUNKDSENTRYRETURN;
+
+{ WJD - 950818 }
+{ Added for 1.6 Specification }
+{ TWAIN 1.6 CAP_SUPPORTEDCAPSEXT structure }
+ TW_CAPEXT = packed record
+ Cap: TW_UINT16; { Which CAP/ICAP info is relevant to }
+ Properties: TW_UINT16; { Messages this CAP/ICAP supports }
+ end;
+ {$EXTERNALSYM TW_CAPEXT}
+ pTW_CAPEXT = ^TW_CAPEXT;
+ {$EXTERNALSYM pTW_CAPEXT}
+
+ TTWCapExt = TW_CAPEXT;
+ PTWCapExt = pTW_CAPEXT;
+
+{ -----------------------------------------------------------------------
+
+ Version 1.7: Added Following data structure for Document Imaging
+ July 1997 Enhancement.
+ KHL TW_CUSTOMDSDATA -- For Saving and Restoring Source's
+ state.
+ TW_INFO -- Each attribute for extended image
+ information.
+ TW_EXTIMAGEINFO -- Extended image information structure.
+
+ ----------------------------------------------------------------------- }
+
+ TW_CUSTOMDSDATA = packed record
+ InfoLength: TW_UINT32; { Length of Information in bytes. }
+ hData: TW_HANDLE; { Place holder for data, DS Allocates }
+ end;
+ {$EXTERNALSYM TW_CUSTOMDSDATA}
+ pTW_CUSTOMDSDATA = ^TW_CUSTOMDSDATA;
+ {$EXTERNALSYM pTW_CUSTOMDSDATA}
+
+ TTWCustomDSData = TW_CUSTOMDSDATA;
+ PTWCustomDSData = pTW_CUSTOMDSDATA;
+
+ TW_INFO = packed record
+ InfoID: TW_UINT16;
+ ItemType: TW_UINT16;
+ NumItems: TW_UINT16;
+ CondCode: TW_UINT16;
+ Item: TW_UINT32;
+ end;
+ {$EXTERNALSYM TW_INFO}
+ pTW_INFO = ^TW_INFO;
+ {$EXTERNALSYM pTW_INFO}
+
+ TTWInfo = TW_INFO;
+ PTWInfo = pTW_INFO;
+
+ TW_EXTIMAGEINFO = packed record
+ NumInfos: TW_UINT32;
+ Info: array[0..0] of TW_INFO;
+ end;
+ {$EXTERNALSYM TW_EXTIMAGEINFO}
+ pTW_EXTIMAGEINFO = ^TW_EXTIMAGEINFO;
+ {$EXTERNALSYM pTW_EXTIMAGEINFO}
+
+ TTWExtImageInfo = TW_EXTIMAGEINFO;
+ PTWExtImageInfo = pTW_EXTIMAGEINFO;
+
+{ Added 1.8 }
+
+{ DAT_AUDIOINFO, information about audio data }
+ TW_AUDIOINFO = packed record
+ Name: TW_STR255; { name of audio data }
+ Reserved: TW_UINT32; { reserved space }
+ end;
+ {$EXTERNALSYM TW_AUDIOINFO}
+ pTW_AUDIOINFO = ^TW_AUDIOINFO;
+ {$EXTERNALSYM pTW_AUDIOINFO}
+
+ TTWAudioInfo = TW_AUDIOINFO;
+ PTWAudioInfo = pTW_AUDIOINFO;
+
+{ DAT_DEVICEEVENT, information about events }
+ TW_DEVICEEVENT = packed record
+ Event: TW_UINT32; { One of the TWDE_xxxx values. }
+ DeviceName: TW_STR255; { The name of the device that generated the event }
+ BatteryMinutes: TW_UINT32; { Battery Minutes Remaining }
+ BatteryPercentage: TW_INT16; { Battery Percentage Remaining }
+ PowerSupply: TW_INT32; { Power Supply }
+ XResolution: TW_FIX32; { Resolution }
+ YResolution: TW_FIX32; { Resolution }
+ FlashUsed2: TW_UINT32; { Flash Used2 }
+ AutomaticCapture: TW_UINT32; { Automatic Capture }
+ TimeBeforeFirstCapture: TW_UINT32; { Automatic Capture }
+ TimeBetweenCaptures: TW_UINT32; { Automatic Capture }
+ end;
+ {$EXTERNALSYM TW_DEVICEEVENT}
+ pTW_DEVICEEVENT = ^TW_DEVICEEVENT;
+ {$EXTERNALSYM pTW_DEVICEEVENT}
+
+ TTWDeviceEvent = TW_DEVICEEVENT;
+ PTWDeviceEvent = pTW_DEVICEEVENT;
+
+{ DAT_FILESYSTEM, information about TWAIN file system }
+ TW_FILESYSTEM = packed record
+ { DG_CONTROL / DAT_FILESYSTEM / MSG_xxxx fields }
+ InputName: TW_STR255; { The name of the input or source file }
+ OutputName: TW_STR255; { The result of an operation or the name of a destination file }
+ Context: TW_MEMREF; { Source specific data used to remember state information }
+ { DG_CONTROL / DAT_FILESYSTEM / MSG_DELETE field }
+ Recursive: Integer;{int} { recursively delete all sub-directories }
+ { DG_CONTROL / DAT_FILESYSTEM / MSG_GETINFO fields }
+ FileType: TW_INT32; { One of the TWFT_xxxx values }
+ Size: TW_UINT32; { Size of current FileType }
+ CreateTimeDate: TW_STR32; { creation date of the file }
+ ModifiedTimeDate: TW_STR32;{ last date the file was modified }
+ FreeSpace: TW_UINT32; { bytes of free space on the current device }
+ NewImageSize: TW_INT32; { estimate of the amount of space a new image would take up }
+ NumberOfFiles: TW_UINT32; { number of files, depends on FileType }
+ NumberOfSnippets: TW_UINT32; { number of audio snippets }
+ DeviceGroupMask: TW_UINT32; { used to group cameras (ex: front/rear bitonal, front/rear grayscale...) }
+ Reserved: array[0..507] of Char; { }
+ end;
+ {$EXTERNALSYM TW_FILESYSTEM}
+ pTW_FILESYSTEM = ^TW_FILESYSTEM;
+ {$EXTERNALSYM pTW_FILESYSTEM}
+
+ TTWFileSystem = TW_FILESYSTEM;
+ PTWFileSystem = pTW_FILESYSTEM;
+
+{ DAT_PASSTHRU, device dependant data to pass through Data Source }
+ TW_PASSTHRU = packed record
+ pCommand: TW_MEMREF; { Pointer to Command buffer }
+ CommandBytes: TW_UINT32; { Number of bytes in Command buffer }
+ Direction: TW_INT32; { One of the TWDR_xxxx values. Defines the direction of data flow }
+ pData: TW_MEMREF; { Pointer to Data buffer }
+ DataBytes: TW_UINT32; { Number of bytes in Data buffer }
+ DataBytesXfered: TW_UINT32; { Number of bytes successfully transferred }
+ end;
+ {$EXTERNALSYM TW_PASSTHRU}
+ pTW_PASSTHRU = ^TW_PASSTHRU;
+ {$EXTERNALSYM pTW_PASSTHRU}
+
+ TTWPassThru = TW_PASSTHRU;
+ PTWPassThru = pTW_PASSTHRU;
+
+{ DAT_SETUPAUDIOFILEXFER, information required to setup an audio file transfer }
+ TW_SETUPAUDIOFILEXFER = packed record
+ FileName: TW_STR255; { full path target file }
+ Format: TW_UINT16; { one of TWAF_xxxx }
+ VRefNum: TW_INT16;
+ end;
+ {$EXTERNALSYM TW_SETUPAUDIOFILEXFER}
+ pTW_SETUPAUDIOFILEXFER = ^TW_SETUPAUDIOFILEXFER;
+ {$EXTERNALSYM pTW_SETUPAUDIOFILEXFER}
+
+ TTWSetupAudioFileXFER = TW_SETUPAUDIOFILEXFER;
+ PTWSetupAudioFileXFER = pTW_SETUPAUDIOFILEXFER;
+
+{***************************************************************************
+ * Generic Constants *
+ *************************************************************************** }
+const
+ TWON_ARRAY = 3; { indicates TW_ARRAY container }
+ {$EXTERNALSYM TWON_ARRAY}
+ TWON_ENUMERATION = 4; { indicates TW_ENUMERATION container }
+ {$EXTERNALSYM TWON_ENUMERATION}
+ TWON_ONEVALUE = 5; { indicates TW_ONEVALUE container }
+ {$EXTERNALSYM TWON_ONEVALUE}
+ TWON_RANGE = 6; { indicates TW_RANGE container }
+ {$EXTERNALSYM TWON_RANGE}
+
+ TWON_ICONID = 962; { res Id of icon used in USERSELECT lbox }
+ {$EXTERNALSYM TWON_ICONID}
+ TWON_DSMID = 461; { res Id of the DSM version num resource }
+ {$EXTERNALSYM TWON_DSMID}
+ TWON_DSMCODEID = 63; { res Id of the Mac SM Code resource }
+ {$EXTERNALSYM TWON_DSMCODEID}
+
+ TWON_DONTCARE8 = $ff;
+ {$EXTERNALSYM TWON_DONTCARE8}
+ TWON_DONTCARE16 = $ffff;
+ {$EXTERNALSYM TWON_DONTCARE16}
+ TWON_DONTCARE32 = DWORD($ffffffff);
+ {$EXTERNALSYM TWON_DONTCARE32}
+
+{ Flags used in TW_MEMORY structure. }
+ TWMF_APPOWNS = $1;
+ {$EXTERNALSYM TWMF_APPOWNS}
+ TWMF_DSMOWNS = $2;
+ {$EXTERNALSYM TWMF_DSMOWNS}
+ TWMF_DSOWNS = $4;
+ {$EXTERNALSYM TWMF_DSOWNS}
+ TWMF_POINTER = $8;
+ {$EXTERNALSYM TWMF_POINTER}
+ TWMF_HANDLE = $10;
+ {$EXTERNALSYM TWMF_HANDLE}
+
+{ Palette types for TW_PALETTE8 }
+ TWPA_RGB = 0;
+ {$EXTERNALSYM TWPA_RGB}
+ TWPA_GRAY = 1;
+ {$EXTERNALSYM TWPA_GRAY}
+ TWPA_CMY = 2;
+ {$EXTERNALSYM TWPA_CMY}
+
+{ There are four containers used for capabilities negotiation:
+ * TWON_ONEVALUE, TWON_RANGE, TWON_ENUMERATION, TWON_ARRAY
+ * In each container structure ItemType can be TWTY_INT8, TWTY_INT16, etc.
+ * The kind of data stored in the container can be determined by doing
+ * DCItemSize[ItemType] where the following is defined in TWAIN glue code:
+ * DCItemSize[]= sizeof(TW_INT8),
+ * sizeof(TW_INT16),
+ * etc.
+ * sizeof(TW_UINT32) : ;
+ *
+ }
+
+ TWTY_INT8 = $0000; { Means Item is a TW_INT8 }
+ {$EXTERNALSYM TWTY_INT8}
+ TWTY_INT16 = $0001; { Means Item is a TW_INT16 }
+ {$EXTERNALSYM TWTY_INT16}
+ TWTY_INT32 = $0002; { Means Item is a TW_INT32 }
+ {$EXTERNALSYM TWTY_INT32}
+
+ TWTY_UINT8 = $0003; { Means Item is a TW_UINT8 }
+ {$EXTERNALSYM TWTY_UINT8}
+ TWTY_UINT16 = $0004; { Means Item is a TW_UINT16 }
+ {$EXTERNALSYM TWTY_UINT16}
+ TWTY_UINT32 = $0005; { Means Item is a TW_UINT32 }
+ {$EXTERNALSYM TWTY_UINT32}
+
+ TWTY_BOOL = $0006; { Means Item is a TW_BOOL }
+ {$EXTERNALSYM TWTY_BOOL}
+
+ TWTY_FIX32 = $0007; { Means Item is a TW_FIX32 }
+ {$EXTERNALSYM TWTY_FIX32}
+
+ TWTY_FRAME = $0008; { Means Item is a TW_FRAME }
+ {$EXTERNALSYM TWTY_FRAME}
+
+ TWTY_STR32 = $0009; { Means Item is a TW_STR32 }
+ {$EXTERNALSYM TWTY_STR32}
+ TWTY_STR64 = $000a; { Means Item is a TW_STR64 }
+ {$EXTERNALSYM TWTY_STR64}
+ TWTY_STR128 = $000b; { Means Item is a TW_STR128 }
+ {$EXTERNALSYM TWTY_STR128}
+ TWTY_STR255 = $000c; { Means Item is a TW_STR255 }
+ {$EXTERNALSYM TWTY_STR255}
+ TWTY_STR1024 = $000d; { Means Item is a TW_STR1024...added 1.9 }
+ {$EXTERNALSYM TWTY_STR1024}
+ TWTY_UNI512 = $000e; { Means Item is a TW_UNI512...added 1.9 }
+ {$EXTERNALSYM TWTY_UNI512}
+
+{***************************************************************************
+ * Capability Constants *
+ *************************************************************************** }
+
+{ ICAP_BITORDER values (BO_ means Bit Order) }
+ TWBO_LSBFIRST = 0;
+ {$EXTERNALSYM TWBO_LSBFIRST}
+ TWBO_MSBFIRST = 1;
+ {$EXTERNALSYM TWBO_MSBFIRST}
+
+{ ICAP_COMPRESSION values (CP_ means ComPression ) }
+ TWCP_NONE = 0;
+ {$EXTERNALSYM TWCP_NONE}
+ TWCP_PACKBITS = 1;
+ {$EXTERNALSYM TWCP_PACKBITS}
+ TWCP_GROUP31D = 2; { Follows CCITT spec (no End Of Line) }
+ {$EXTERNALSYM TWCP_GROUP31D}
+ TWCP_GROUP31DEOL= 3; { Follows CCITT spec (has End Of Line) }
+ {$EXTERNALSYM TWCP_GROUP31DEOL}
+ TWCP_GROUP32D = 4; { Follows CCITT spec (use cap for K Factor) }
+ {$EXTERNALSYM TWCP_GROUP32D}
+ TWCP_GROUP4 = 5; { Follows CCITT spec }
+ {$EXTERNALSYM TWCP_GROUP4}
+ TWCP_JPEG = 6; { Use capability for more info }
+ {$EXTERNALSYM TWCP_JPEG}
+ TWCP_LZW = 7; { Must license from Unisys and IBM to use }
+ {$EXTERNALSYM TWCP_LZW}
+ TWCP_JBIG = 8; { For Bitonal images -- Added 1.7 KHL }
+ {$EXTERNALSYM TWCP_JBIG}
+
+{ Added 1.8 }
+ TWCP_PNG = 9;
+ {$EXTERNALSYM TWCP_PNG}
+ TWCP_RLE4 = 10;
+ {$EXTERNALSYM TWCP_RLE4}
+ TWCP_RLE8 = 11;
+ {$EXTERNALSYM TWCP_RLE8}
+ TWCP_BITFIELDS = 12;
+ {$EXTERNALSYM TWCP_BITFIELDS}
+
+
+{ ICAP_IMAGEFILEFORMAT values (FF_means File Format) }
+ TWFF_TIFF = 0; { Tagged Image File Format }
+ {$EXTERNALSYM TWFF_TIFF}
+ TWFF_PICT = 1; { Macintosh PICT }
+ {$EXTERNALSYM TWFF_PICT}
+ TWFF_BMP = 2; { Windows Bitmap }
+ {$EXTERNALSYM TWFF_BMP}
+ TWFF_XBM = 3; { X-Windows Bitmap }
+ {$EXTERNALSYM TWFF_XBM}
+ TWFF_JFIF = 4; { JPEG File Interchange Format }
+ {$EXTERNALSYM TWFF_JFIF}
+ TWFF_FPX = 5; { Flash Pix }
+ {$EXTERNALSYM TWFF_FPX}
+ TWFF_TIFFMULTI= 6; { Multi-page tiff file }
+ {$EXTERNALSYM TWFF_TIFFMULTI}
+ TWFF_PNG = 7;
+ {$EXTERNALSYM TWFF_PNG}
+ TWFF_SPIFF = 8;
+ {$EXTERNALSYM TWFF_SPIFF}
+ TWFF_EXIF = 9;
+ {$EXTERNALSYM TWFF_EXIF}
+
+
+{ ICAP_FILTER values (FT_ means Filter Type) }
+ TWFT_RED = 0;
+ {$EXTERNALSYM TWFT_RED}
+ TWFT_GREEN = 1;
+ {$EXTERNALSYM TWFT_GREEN}
+ TWFT_BLUE = 2;
+ {$EXTERNALSYM TWFT_BLUE}
+ TWFT_NONE = 3;
+ {$EXTERNALSYM TWFT_NONE}
+ TWFT_WHITE = 4;
+ {$EXTERNALSYM TWFT_WHITE}
+ TWFT_CYAN = 5;
+ {$EXTERNALSYM TWFT_CYAN}
+ TWFT_MAGENTA = 6;
+ {$EXTERNALSYM TWFT_MAGENTA}
+ TWFT_YELLOW = 7;
+ {$EXTERNALSYM TWFT_YELLOW}
+ TWFT_BLACK = 8;
+ {$EXTERNALSYM TWFT_BLACK}
+
+{ ICAP_LIGHTPATH values (LP_ means Light Path) }
+ TWLP_REFLECTIVE = 0;
+ {$EXTERNALSYM TWLP_REFLECTIVE}
+ TWLP_TRANSMISSIVE = 1;
+ {$EXTERNALSYM TWLP_TRANSMISSIVE}
+
+{ ICAP_LIGHTSOURCE values (LS_ means Light Source) }
+ TWLS_RED = 0;
+ {$EXTERNALSYM TWLS_RED}
+ TWLS_GREEN = 1;
+ {$EXTERNALSYM TWLS_GREEN}
+ TWLS_BLUE = 2;
+ {$EXTERNALSYM TWLS_BLUE}
+ TWLS_NONE = 3;
+ {$EXTERNALSYM TWLS_NONE}
+ TWLS_WHITE = 4;
+ {$EXTERNALSYM TWLS_WHITE}
+ TWLS_UV = 5;
+ {$EXTERNALSYM TWLS_UV}
+ TWLS_IR = 6;
+ {$EXTERNALSYM TWLS_IR}
+
+{ ICAP_ORIENTATION values (OR_ means ORientation) }
+ TWOR_ROT0 = 0;
+ {$EXTERNALSYM TWOR_ROT0}
+ TWOR_ROT90 = 1;
+ {$EXTERNALSYM TWOR_ROT90}
+ TWOR_ROT180 = 2;
+ {$EXTERNALSYM TWOR_ROT180}
+ TWOR_ROT270 = 3;
+ {$EXTERNALSYM TWOR_ROT270}
+ TWOR_PORTRAIT = TWOR_ROT0;
+ {$EXTERNALSYM TWOR_PORTRAIT}
+ TWOR_LANDSCAPE= TWOR_ROT270;
+ {$EXTERNALSYM TWOR_LANDSCAPE}
+
+{ ICAP_PLANARCHUNKY values (PC_ means Planar/Chunky ) }
+ TWPC_CHUNKY = 0;
+ {$EXTERNALSYM TWPC_CHUNKY}
+ TWPC_PLANAR = 1;
+ {$EXTERNALSYM TWPC_PLANAR}
+
+{ ICAP_PIXELFLAVOR values (PF_ means Pixel Flavor) }
+ TWPF_CHOCOLATE = 0; { zero pixel represents darkest shade }
+ {$EXTERNALSYM TWPF_CHOCOLATE}
+ TWPF_VANILLA = 1; { zero pixel represents lightest shade }
+ {$EXTERNALSYM TWPF_VANILLA}
+
+{ ICAP_PIXELTYPE values (PT_ means Pixel Type) }
+ TWPT_BW = 0; { Black and White }
+ {$EXTERNALSYM TWPT_BW}
+ TWPT_GRAY = 1;
+ {$EXTERNALSYM TWPT_GRAY}
+ TWPT_RGB = 2;
+ {$EXTERNALSYM TWPT_RGB}
+ TWPT_PALETTE = 3;
+ {$EXTERNALSYM TWPT_PALETTE}
+ TWPT_CMY = 4;
+ {$EXTERNALSYM TWPT_CMY}
+ TWPT_CMYK = 5;
+ {$EXTERNALSYM TWPT_CMYK}
+ TWPT_YUV = 6;
+ {$EXTERNALSYM TWPT_YUV}
+ TWPT_YUVK = 7;
+ {$EXTERNALSYM TWPT_YUVK}
+ TWPT_CIEXYZ = 8;
+ {$EXTERNALSYM TWPT_CIEXYZ}
+
+{ ICAP_SUPPORTEDSIZES values (SS_ means Supported Sizes) }
+ TWSS_NONE = 0;
+ {$EXTERNALSYM TWSS_NONE}
+ TWSS_A4LETTER = 1;
+ {$EXTERNALSYM TWSS_A4LETTER}
+ TWSS_B5LETTER = 2;
+ {$EXTERNALSYM TWSS_B5LETTER}
+ TWSS_USLETTER = 3;
+ {$EXTERNALSYM TWSS_USLETTER}
+ TWSS_USLEGAL = 4;
+ {$EXTERNALSYM TWSS_USLEGAL}
+{ Added 1.5 }
+ TWSS_A5 = 5;
+ {$EXTERNALSYM TWSS_A5}
+ TWSS_B4 = 6;
+ {$EXTERNALSYM TWSS_B4}
+ TWSS_B6 = 7;
+ {$EXTERNALSYM TWSS_B6}
+// TWSS_B = 8;
+
+{ Added 1.7 }
+ TWSS_USLEDGER = 9;
+ {$EXTERNALSYM TWSS_USLEDGER}
+ TWSS_USEXECUTIVE = 10;
+ {$EXTERNALSYM TWSS_USEXECUTIVE}
+ TWSS_A3 = 11;
+ {$EXTERNALSYM TWSS_A3}
+ TWSS_B3 = 12;
+ {$EXTERNALSYM TWSS_B3}
+ TWSS_A6 = 13;
+ {$EXTERNALSYM TWSS_A6}
+ TWSS_C4 = 14;
+ {$EXTERNALSYM TWSS_C4}
+ TWSS_C5 = 15;
+ {$EXTERNALSYM TWSS_C5}
+ TWSS_C6 = 16;
+ {$EXTERNALSYM TWSS_C6}
+
+{ Added 1.8 }
+ TWSS_4A0 = 17;
+ {$EXTERNALSYM TWSS_4A0}
+ TWSS_2A0 = 18;
+ {$EXTERNALSYM TWSS_2A0}
+ TWSS_A0 = 19;
+ {$EXTERNALSYM TWSS_A0}
+ TWSS_A1 = 20;
+ {$EXTERNALSYM TWSS_A1}
+ TWSS_A2 = 21;
+ {$EXTERNALSYM TWSS_A2}
+ TWSS_A4 = TWSS_A4LETTER;
+ {$EXTERNALSYM TWSS_A4}
+ TWSS_A7 = 22;
+ {$EXTERNALSYM TWSS_A7}
+ TWSS_A8 = 23;
+ {$EXTERNALSYM TWSS_A8}
+ TWSS_A9 = 24;
+ {$EXTERNALSYM TWSS_A9}
+ TWSS_A10 = 25;
+ {$EXTERNALSYM TWSS_A10}
+ TWSS_ISOB0 = 26;
+ {$EXTERNALSYM TWSS_ISOB0}
+ TWSS_ISOB1 = 27;
+ {$EXTERNALSYM TWSS_ISOB1}
+ TWSS_ISOB2 = 28;
+ {$EXTERNALSYM TWSS_ISOB2}
+ TWSS_ISOB3 = TWSS_B3;
+ {$EXTERNALSYM TWSS_ISOB3}
+ TWSS_ISOB4 = TWSS_B4;
+ {$EXTERNALSYM TWSS_ISOB4}
+ TWSS_ISOB5 = 29;
+ {$EXTERNALSYM TWSS_ISOB5}
+ TWSS_ISOB6 = TWSS_B6;
+ {$EXTERNALSYM TWSS_ISOB6}
+ TWSS_ISOB7 = 30;
+ {$EXTERNALSYM TWSS_ISOB7}
+ TWSS_ISOB8 = 31;
+ {$EXTERNALSYM TWSS_ISOB8}
+ TWSS_ISOB9 = 32;
+ {$EXTERNALSYM TWSS_ISOB9}
+ TWSS_ISOB10 = 33;
+ {$EXTERNALSYM TWSS_ISOB10}
+ TWSS_JISB0 = 34;
+ {$EXTERNALSYM TWSS_JISB0}
+ TWSS_JISB1 = 35;
+ {$EXTERNALSYM TWSS_JISB1}
+ TWSS_JISB2 = 36;
+ {$EXTERNALSYM TWSS_JISB2}
+ TWSS_JISB3 = 37;
+ {$EXTERNALSYM TWSS_JISB3}
+ TWSS_JISB4 = 38;
+ {$EXTERNALSYM TWSS_JISB4}
+ TWSS_JISB5 = TWSS_B5LETTER;
+ {$EXTERNALSYM TWSS_JISB5}
+ TWSS_JISB6 = 39;
+ {$EXTERNALSYM TWSS_JISB6}
+ TWSS_JISB7 = 40;
+ {$EXTERNALSYM TWSS_JISB7}
+ TWSS_JISB8 = 41;
+ {$EXTERNALSYM TWSS_JISB8}
+ TWSS_JISB9 = 42;
+ {$EXTERNALSYM TWSS_JISB9}
+ TWSS_JISB10 = 43;
+ {$EXTERNALSYM TWSS_JISB10}
+ TWSS_C0 = 44;
+ {$EXTERNALSYM TWSS_C0}
+ TWSS_C1 = 45;
+ {$EXTERNALSYM TWSS_C1}
+ TWSS_C2 = 46;
+ {$EXTERNALSYM TWSS_C2}
+ TWSS_C3 = 47;
+ {$EXTERNALSYM TWSS_C3}
+ TWSS_C7 = 48;
+ {$EXTERNALSYM TWSS_C7}
+ TWSS_C8 = 49;
+ {$EXTERNALSYM TWSS_C8}
+ TWSS_C9 = 50;
+ {$EXTERNALSYM TWSS_C9}
+ TWSS_C10 = 51;
+ {$EXTERNALSYM TWSS_C10}
+ TWSS_USSTATEMENT = 52;
+ {$EXTERNALSYM TWSS_USSTATEMENT}
+ TWSS_BUSINESSCARD= 53;
+ {$EXTERNALSYM TWSS_BUSINESSCARD}
+
+{ ICAP_XFERMECH values (SX_ means Setup XFer) }
+ TWSX_NATIVE = 0;
+ {$EXTERNALSYM TWSX_NATIVE}
+ TWSX_FILE = 1;
+ {$EXTERNALSYM TWSX_FILE}
+ TWSX_MEMORY = 2;
+ {$EXTERNALSYM TWSX_MEMORY}
+ TWSX_FILE2 = 3; { added 1.9 }
+ {$EXTERNALSYM TWSX_FILE2}
+
+{ ICAP_UNITS values (UN_ means UNits) }
+ TWUN_INCHES = 0;
+ {$EXTERNALSYM TWUN_INCHES}
+ TWUN_CENTIMETERS = 1;
+ {$EXTERNALSYM TWUN_CENTIMETERS}
+ TWUN_PICAS = 2;
+ {$EXTERNALSYM TWUN_PICAS}
+ TWUN_POINTS = 3;
+ {$EXTERNALSYM TWUN_POINTS}
+ TWUN_TWIPS = 4;
+ {$EXTERNALSYM TWUN_TWIPS}
+ TWUN_PIXELS = 5;
+ {$EXTERNALSYM TWUN_PIXELS}
+
+{ Added 1.5 }
+{ ICAP_BITDEPTHREDUCTION values (BR_ means Bitdepth Reduction) }
+ TWBR_THRESHOLD = 0;
+ {$EXTERNALSYM TWBR_THRESHOLD}
+ TWBR_HALFTONE = 1;
+ {$EXTERNALSYM TWBR_HALFTONE}
+ TWBR_CUSTHALFTONE = 2;
+ {$EXTERNALSYM TWBR_CUSTHALFTONE}
+ TWBR_DIFFUSION = 3;
+ {$EXTERNALSYM TWBR_DIFFUSION}
+
+{ Added 1.7 }
+{ ICAP_DUPLEX values }
+ TWDX_NONE = 0;
+ {$EXTERNALSYM TWDX_NONE}
+ TWDX_1PASSDUPLEX = 1;
+ {$EXTERNALSYM TWDX_1PASSDUPLEX}
+ TWDX_2PASSDUPLEX = 2;
+ {$EXTERNALSYM TWDX_2PASSDUPLEX}
+
+{ Added 1.7 }
+{ TWEI_BARCODETYPE values }
+ TWBT_3OF9 = 0;
+ {$EXTERNALSYM TWBT_3OF9}
+ TWBT_2OF5INTERLEAVED = 1;
+ {$EXTERNALSYM TWBT_2OF5INTERLEAVED}
+ TWBT_2OF5NONINTERLEAVED= 2;
+ {$EXTERNALSYM TWBT_2OF5NONINTERLEAVED}
+ TWBT_CODE93 = 3;
+ {$EXTERNALSYM TWBT_CODE93}
+ TWBT_CODE128 = 4;
+ {$EXTERNALSYM TWBT_CODE128}
+ TWBT_UCC128 = 5;
+ {$EXTERNALSYM TWBT_UCC128}
+ TWBT_CODABAR = 6;
+ {$EXTERNALSYM TWBT_CODABAR}
+ TWBT_UPCA = 7;
+ {$EXTERNALSYM TWBT_UPCA}
+ TWBT_UPCE = 8;
+ {$EXTERNALSYM TWBT_UPCE}
+ TWBT_EAN8 = 9;
+ {$EXTERNALSYM TWBT_EAN8}
+ TWBT_EAN13 = 10;
+ {$EXTERNALSYM TWBT_EAN13}
+ TWBT_POSTNET = 11;
+ {$EXTERNALSYM TWBT_POSTNET}
+ TWBT_PDF417 = 12;
+ {$EXTERNALSYM TWBT_PDF417}
+
+{ Added 1.8 }
+ TWBT_2OF5INDUSTRIAL = 13;
+ {$EXTERNALSYM TWBT_2OF5INDUSTRIAL}
+ TWBT_2OF5MATRIX = 14;
+ {$EXTERNALSYM TWBT_2OF5MATRIX}
+ TWBT_2OF5DATALOGIC = 15;
+ {$EXTERNALSYM TWBT_2OF5DATALOGIC}
+ TWBT_2OF5IATA = 16;
+ {$EXTERNALSYM TWBT_2OF5IATA}
+ TWBT_3OF9FULLASCII = 17;
+ {$EXTERNALSYM TWBT_3OF9FULLASCII}
+ TWBT_CODABARWITHSTARTSTOP = 18;
+ {$EXTERNALSYM TWBT_CODABARWITHSTARTSTOP}
+ TWBT_MAXICODE = 19;
+ {$EXTERNALSYM TWBT_MAXICODE}
+
+{ Added 1.7 }
+{ TWEI_DESKEWSTATUS values }
+ TWDSK_SUCCESS = 0;
+ {$EXTERNALSYM TWDSK_SUCCESS}
+ TWDSK_REPORTONLY = 1;
+ {$EXTERNALSYM TWDSK_REPORTONLY}
+ TWDSK_FAIL = 2;
+ {$EXTERNALSYM TWDSK_FAIL}
+ TWDSK_DISABLED = 3;
+ {$EXTERNALSYM TWDSK_DISABLED}
+
+{ Added 1.7 }
+{ TWEI_PATCHCODE values }
+ TWPCH_PATCH1 = 0;
+ {$EXTERNALSYM TWPCH_PATCH1}
+ TWPCH_PATCH2 = 1;
+ {$EXTERNALSYM TWPCH_PATCH2}
+ TWPCH_PATCH3 = 2;
+ {$EXTERNALSYM TWPCH_PATCH3}
+ TWPCH_PATCH4 = 3;
+ {$EXTERNALSYM TWPCH_PATCH4}
+ TWPCH_PATCH6 = 4;
+ {$EXTERNALSYM TWPCH_PATCH6}
+ TWPCH_PATCHT = 5;
+ {$EXTERNALSYM TWPCH_PATCHT}
+
+{ Added 1.7 }
+{ CAP_JOBCONTROL values }
+ TWJC_NONE = 0;
+ {$EXTERNALSYM TWJC_NONE}
+ TWJC_JSIC = 1;
+ {$EXTERNALSYM TWJC_JSIC}
+ TWJC_JSIS = 2;
+ {$EXTERNALSYM TWJC_JSIS}
+ TWJC_JSXC = 3;
+ {$EXTERNALSYM TWJC_JSXC}
+ TWJC_JSXS = 4;
+ {$EXTERNALSYM TWJC_JSXS}
+
+{ Added 1.7 }
+{ TWEI_BARCODEROTATION values (BCOR_ means barcode rotation) }
+ TWBCOR_ROT0 = 0;
+ {$EXTERNALSYM TWBCOR_ROT0}
+ TWBCOR_ROT90 = 1;
+ {$EXTERNALSYM TWBCOR_ROT90}
+ TWBCOR_ROT180 = 2;
+ {$EXTERNALSYM TWBCOR_ROT180}
+ TWBCOR_ROT270 = 3;
+ {$EXTERNALSYM TWBCOR_ROT270}
+ TWBCOR_ROTX = 4;
+ {$EXTERNALSYM TWBCOR_ROTX}
+
+{ Added 1.8 }
+{ ACAP_AUDIOFILEFORMAT values (AF_ means audio format) }
+ TWAF_WAV = 0;
+ {$EXTERNALSYM TWAF_WAV}
+ TWAF_AIFF = 1;
+ {$EXTERNALSYM TWAF_AIFF}
+ TWAF_AU = 3;
+ {$EXTERNALSYM TWAF_AU}
+ TWAF_SND = 4;
+ {$EXTERNALSYM TWAF_SND}
+
+{ CAP_ALARMS values (AL_ means alarms) }
+ TWAL_ALARM = 0;
+ {$EXTERNALSYM TWAL_ALARM}
+ TWAL_FEEDERERROR = 1;
+ {$EXTERNALSYM TWAL_FEEDERERROR}
+ TWAL_FEEDERWARNING= 2;
+ {$EXTERNALSYM TWAL_FEEDERWARNING}
+ TWAL_BARCODE = 3;
+ {$EXTERNALSYM TWAL_BARCODE}
+ TWAL_DOUBLEFEED = 4;
+ {$EXTERNALSYM TWAL_DOUBLEFEED}
+ TWAL_JAM = 5;
+ {$EXTERNALSYM TWAL_JAM}
+ TWAL_PATCHCODE = 6;
+ {$EXTERNALSYM TWAL_PATCHCODE}
+ TWAL_POWER = 7;
+ {$EXTERNALSYM TWAL_POWER}
+ TWAL_SKEW = 8;
+ {$EXTERNALSYM TWAL_SKEW}
+
+{ CAP_CLEARBUFFERS values (CB_ means clear buffers) }
+ TWCB_AUTO = 0;
+ {$EXTERNALSYM TWCB_AUTO}
+ TWCB_CLEAR = 1;
+ {$EXTERNALSYM TWCB_CLEAR}
+ TWCB_NOCLEAR = 2;
+ {$EXTERNALSYM TWCB_NOCLEAR}
+
+{ CAP_DEVICEEVENT values (DE_ means device event) }
+ TWDE_CUSTOMEVENTS = $8000;
+ {$EXTERNALSYM TWDE_CUSTOMEVENTS}
+ TWDE_CHECKAUTOMATICCAPTURE = 0;
+ {$EXTERNALSYM TWDE_CHECKAUTOMATICCAPTURE}
+ TWDE_CHECKBATTERY = 1;
+ {$EXTERNALSYM TWDE_CHECKBATTERY}
+ TWDE_CHECKDEVICEONLINE = 2;
+ {$EXTERNALSYM TWDE_CHECKDEVICEONLINE}
+ TWDE_CHECKFLASH = 3;
+ {$EXTERNALSYM TWDE_CHECKFLASH}
+ TWDE_CHECKPOWERSUPPLY = 4;
+ {$EXTERNALSYM TWDE_CHECKPOWERSUPPLY}
+ TWDE_CHECKRESOLUTION = 5;
+ {$EXTERNALSYM TWDE_CHECKRESOLUTION}
+ TWDE_DEVICEADDED = 6;
+ {$EXTERNALSYM TWDE_DEVICEADDED}
+ TWDE_DEVICEOFFLINE = 7;
+ {$EXTERNALSYM TWDE_DEVICEOFFLINE}
+ TWDE_DEVICEREADY = 8;
+ {$EXTERNALSYM TWDE_DEVICEREADY}
+ TWDE_DEVICEREMOVED = 9;
+ {$EXTERNALSYM TWDE_DEVICEREMOVED}
+ TWDE_IMAGECAPTURED = 10;
+ {$EXTERNALSYM TWDE_IMAGECAPTURED}
+ TWDE_IMAGEDELETED = 11;
+ {$EXTERNALSYM TWDE_IMAGEDELETED}
+ TWDE_PAPERDOUBLEFEED = 12;
+ {$EXTERNALSYM TWDE_PAPERDOUBLEFEED}
+ TWDE_PAPERJAM = 13;
+ {$EXTERNALSYM TWDE_PAPERJAM}
+ TWDE_LAMPFAILURE = 14;
+ {$EXTERNALSYM TWDE_LAMPFAILURE}
+ TWDE_POWERSAVE = 15;
+ {$EXTERNALSYM TWDE_POWERSAVE}
+ TWDE_POWERSAVENOTIFY = 16;
+ {$EXTERNALSYM TWDE_POWERSAVENOTIFY}
+
+{ CAP_FEEDERALIGNMENT values (FA_ means feeder alignment) }
+ TWFA_NONE = 0;
+ {$EXTERNALSYM TWFA_NONE}
+ TWFA_LEFT = 1;
+ {$EXTERNALSYM TWFA_LEFT}
+ TWFA_CENTER = 2;
+ {$EXTERNALSYM TWFA_CENTER}
+ TWFA_RIGHT = 3;
+ {$EXTERNALSYM TWFA_RIGHT}
+
+{ CAP_FEEDERORDER values (FO_ means feeder order) }
+ TWFO_FIRSTPAGEFIRST = 0;
+ {$EXTERNALSYM TWFO_FIRSTPAGEFIRST}
+ TWFO_LASTPAGEFIRST = 1;
+ {$EXTERNALSYM TWFO_LASTPAGEFIRST}
+
+{ CAP_FILESYSTEM values (FS_ means file system) }
+ TWFS_FILESYSTEM = 0;
+ {$EXTERNALSYM TWFS_FILESYSTEM}
+ TWFS_RECURSIVEDELETE = 1;
+ {$EXTERNALSYM TWFS_RECURSIVEDELETE}
+
+{ CAP_POWERSUPPLY values (PS_ means power supply) }
+ TWPS_EXTERNAL = 0;
+ {$EXTERNALSYM TWPS_EXTERNAL}
+ TWPS_BATTERY = 1;
+ {$EXTERNALSYM TWPS_BATTERY}
+
+{ CAP_PRINTER values (PR_ means printer) }
+ TWPR_IMPRINTERTOPBEFORE = 0;
+ {$EXTERNALSYM TWPR_IMPRINTERTOPBEFORE}
+ TWPR_IMPRINTERTOPAFTER = 1;
+ {$EXTERNALSYM TWPR_IMPRINTERTOPAFTER}
+ TWPR_IMPRINTERBOTTOMBEFORE = 2;
+ {$EXTERNALSYM TWPR_IMPRINTERBOTTOMBEFORE}
+ TWPR_IMPRINTERBOTTOMAFTER = 3;
+ {$EXTERNALSYM TWPR_IMPRINTERBOTTOMAFTER}
+ TWPR_ENDORSERTOPBEFORE = 4;
+ {$EXTERNALSYM TWPR_ENDORSERTOPBEFORE}
+ TWPR_ENDORSERTOPAFTER = 5;
+ {$EXTERNALSYM TWPR_ENDORSERTOPAFTER}
+ TWPR_ENDORSERBOTTOMBEFORE = 6;
+ {$EXTERNALSYM TWPR_ENDORSERBOTTOMBEFORE}
+ TWPR_ENDORSERBOTTOMAFTER = 7;
+ {$EXTERNALSYM TWPR_ENDORSERBOTTOMAFTER}
+
+{ CAP_PRINTERMODE values (PM_ means printer mode) }
+ TWPM_SINGLESTRING = 0;
+ {$EXTERNALSYM TWPM_SINGLESTRING}
+ TWPM_MULTISTRING = 1;
+ {$EXTERNALSYM TWPM_MULTISTRING}
+ TWPM_COMPOUNDSTRING = 2;
+ {$EXTERNALSYM TWPM_COMPOUNDSTRING}
+
+{ ICAP_BARCODESEARCHMODE values (TWBD_ means search) }
+ TWBD_HORZ = 0;
+ {$EXTERNALSYM TWBD_HORZ}
+ TWBD_VERT = 1;
+ {$EXTERNALSYM TWBD_VERT}
+ TWBD_HORZVERT = 2;
+ {$EXTERNALSYM TWBD_HORZVERT}
+ TWBD_VERTHORZ = 3;
+ {$EXTERNALSYM TWBD_VERTHORZ}
+
+{ ICAP_FLASHUSED2 values (FL_ means flash) }
+ TWFL_NONE = 0;
+ {$EXTERNALSYM TWFL_NONE}
+ TWFL_OFF = 1;
+ {$EXTERNALSYM TWFL_OFF}
+ TWFL_ON = 2;
+ {$EXTERNALSYM TWFL_ON}
+ TWFL_AUTO = 3;
+ {$EXTERNALSYM TWFL_AUTO}
+ TWFL_REDEYE = 4;
+ {$EXTERNALSYM TWFL_REDEYE}
+
+{ ICAP_FLIPROTATION values (FR_ means flip rotation) }
+ TWFR_BOOK = 0;
+ {$EXTERNALSYM TWFR_BOOK}
+ TWFR_FANFOLD = 1;
+ {$EXTERNALSYM TWFR_FANFOLD}
+
+{ ICAP_IMAGEFILTER values (IF_ means image filter) }
+ TWIF_NONE = 0;
+ {$EXTERNALSYM TWIF_NONE}
+ TWIF_AUTO = 1;
+ {$EXTERNALSYM TWIF_AUTO}
+ TWIF_LOWPASS = 2;
+ {$EXTERNALSYM TWIF_LOWPASS}
+ TWIF_BANDPASS= 3;
+ {$EXTERNALSYM TWIF_BANDPASS}
+ TWIF_HIGHPASS= 4;
+ {$EXTERNALSYM TWIF_HIGHPASS}
+ TWIF_TEXT = TWIF_BANDPASS;
+ {$EXTERNALSYM TWIF_TEXT}
+ TWIF_FINELINE= TWIF_HIGHPASS;
+ {$EXTERNALSYM TWIF_FINELINE}
+
+{ ICAP_NOISEFILTER values (NF_ means noise filter) }
+ TWNF_NONE = 0;
+ {$EXTERNALSYM TWNF_NONE}
+ TWNF_AUTO = 1;
+ {$EXTERNALSYM TWNF_AUTO}
+ TWNF_LONEPIXEL = 2;
+ {$EXTERNALSYM TWNF_LONEPIXEL}
+ TWNF_MAJORITYRULE = 3;
+ {$EXTERNALSYM TWNF_MAJORITYRULE}
+
+{ ICAP_OVERSCAN values (OV_ means overscan) }
+ TWOV_NONE = 0;
+ {$EXTERNALSYM TWOV_NONE}
+ TWOV_AUTO = 1;
+ {$EXTERNALSYM TWOV_AUTO}
+ TWOV_TOPBOTTOM = 2;
+ {$EXTERNALSYM TWOV_TOPBOTTOM}
+ TWOV_LEFTRIGHT = 3;
+ {$EXTERNALSYM TWOV_LEFTRIGHT}
+ TWOV_ALL = 4;
+ {$EXTERNALSYM TWOV_ALL}
+
+{ TW_FILESYSTEM.FileType values (FT_ means file type) }
+ TWFY_CAMERA = 0;
+ {$EXTERNALSYM TWFY_CAMERA}
+ TWFY_CAMERATOP = 1;
+ {$EXTERNALSYM TWFY_CAMERATOP}
+ TWFY_CAMERABOTTOM = 2;
+ {$EXTERNALSYM TWFY_CAMERABOTTOM}
+ TWFY_CAMERAPREVIEW = 3;
+ {$EXTERNALSYM TWFY_CAMERAPREVIEW}
+ TWFY_DOMAIN = 4;
+ {$EXTERNALSYM TWFY_DOMAIN}
+ TWFY_HOST = 5;
+ {$EXTERNALSYM TWFY_HOST}
+ TWFY_DIRECTORY = 6;
+ {$EXTERNALSYM TWFY_DIRECTORY}
+ TWFY_IMAGE = 7;
+ {$EXTERNALSYM TWFY_IMAGE}
+ TWFY_UNKNOWN = 8;
+ {$EXTERNALSYM TWFY_UNKNOWN}
+
+ { ICAP_JPEGQUALITY values (JQ_ means jpeg quality) }
+ TWJQ_UNKNOWN = -4;
+ {$EXTERNALSYM TWJQ_UNKNOWN}
+ TWJQ_LOW = -3;
+ {$EXTERNALSYM TWJQ_LOW}
+ TWJQ_MEDIUM = -2;
+ {$EXTERNALSYM TWJQ_MEDIUM}
+ TWJQ_HIGH = -1;
+ {$EXTERNALSYM TWJQ_HIGH}
+
+{***************************************************************************
+ * Country Constants *
+ *************************************************************************** }
+
+ TWCY_AFGHANISTAN = 1001;
+ {$EXTERNALSYM TWCY_AFGHANISTAN}
+ TWCY_ALGERIA = 213;
+ {$EXTERNALSYM TWCY_ALGERIA}
+ TWCY_AMERICANSAMOA = 684;
+ {$EXTERNALSYM TWCY_AMERICANSAMOA}
+ TWCY_ANDORRA = 033;
+ {$EXTERNALSYM TWCY_ANDORRA}
+ TWCY_ANGOLA = 1002;
+ {$EXTERNALSYM TWCY_ANGOLA}
+ TWCY_ANGUILLA = 8090;
+ {$EXTERNALSYM TWCY_ANGUILLA}
+ TWCY_ANTIGUA = 8091;
+ {$EXTERNALSYM TWCY_ANTIGUA}
+ TWCY_ARGENTINA = 54;
+ {$EXTERNALSYM TWCY_ARGENTINA}
+ TWCY_ARUBA = 297;
+ {$EXTERNALSYM TWCY_ARUBA}
+ TWCY_ASCENSIONI = 247;
+ {$EXTERNALSYM TWCY_ASCENSIONI}
+ TWCY_AUSTRALIA = 61;
+ {$EXTERNALSYM TWCY_AUSTRALIA}
+ TWCY_AUSTRIA = 43;
+ {$EXTERNALSYM TWCY_AUSTRIA}
+ TWCY_BAHAMAS = 8092;
+ {$EXTERNALSYM TWCY_BAHAMAS}
+ TWCY_BAHRAIN = 973;
+ {$EXTERNALSYM TWCY_BAHRAIN}
+ TWCY_BANGLADESH = 880;
+ {$EXTERNALSYM TWCY_BANGLADESH}
+ TWCY_BARBADOS = 8093;
+ {$EXTERNALSYM TWCY_BARBADOS}
+ TWCY_BELGIUM = 32;
+ {$EXTERNALSYM TWCY_BELGIUM}
+ TWCY_BELIZE = 501;
+ {$EXTERNALSYM TWCY_BELIZE}
+ TWCY_BENIN = 229;
+ {$EXTERNALSYM TWCY_BENIN}
+ TWCY_BERMUDA = 8094;
+ {$EXTERNALSYM TWCY_BERMUDA}
+ TWCY_BHUTAN = 1003;
+ {$EXTERNALSYM TWCY_BHUTAN}
+ TWCY_BOLIVIA = 591;
+ {$EXTERNALSYM TWCY_BOLIVIA}
+ TWCY_BOTSWANA = 267;
+ {$EXTERNALSYM TWCY_BOTSWANA}
+ TWCY_BRITAIN = 6;
+ {$EXTERNALSYM TWCY_BRITAIN}
+ TWCY_BRITVIRGINIS = 8095;
+ {$EXTERNALSYM TWCY_BRITVIRGINIS}
+ TWCY_BRAZIL = 55;
+ {$EXTERNALSYM TWCY_BRAZIL}
+ TWCY_BRUNEI = 673;
+ {$EXTERNALSYM TWCY_BRUNEI}
+ TWCY_BULGARIA = 359;
+ {$EXTERNALSYM TWCY_BULGARIA}
+ TWCY_BURKINAFASO = 1004;
+ {$EXTERNALSYM TWCY_BURKINAFASO}
+ TWCY_BURMA = 1005;
+ {$EXTERNALSYM TWCY_BURMA}
+ TWCY_BURUNDI = 1006;
+ {$EXTERNALSYM TWCY_BURUNDI}
+ TWCY_CAMAROON = 237;
+ {$EXTERNALSYM TWCY_CAMAROON}
+ TWCY_CANADA = 2;
+ {$EXTERNALSYM TWCY_CANADA}
+ TWCY_CAPEVERDEIS = 238;
+ {$EXTERNALSYM TWCY_CAPEVERDEIS}
+ TWCY_CAYMANIS = 8096;
+ {$EXTERNALSYM TWCY_CAYMANIS}
+ TWCY_CENTRALAFREP = 1007;
+ {$EXTERNALSYM TWCY_CENTRALAFREP}
+ TWCY_CHAD = 1008;
+ {$EXTERNALSYM TWCY_CHAD}
+ TWCY_CHILE = 56;
+ {$EXTERNALSYM TWCY_CHILE}
+ TWCY_CHINA = 86;
+ {$EXTERNALSYM TWCY_CHINA}
+ TWCY_CHRISTMASIS = 1009;
+ {$EXTERNALSYM TWCY_CHRISTMASIS}
+ TWCY_COCOSIS = 1009;
+ {$EXTERNALSYM TWCY_COCOSIS}
+ TWCY_COLOMBIA = 57;
+ {$EXTERNALSYM TWCY_COLOMBIA}
+ TWCY_COMOROS = 1010;
+ {$EXTERNALSYM TWCY_COMOROS}
+ TWCY_CONGO = 1011;
+ {$EXTERNALSYM TWCY_CONGO}
+ TWCY_COOKIS = 1012;
+ {$EXTERNALSYM TWCY_COOKIS}
+ TWCY_COSTARICA = 506 ;
+ {$EXTERNALSYM TWCY_COSTARICA}
+ TWCY_CUBA = 005;
+ {$EXTERNALSYM TWCY_CUBA}
+ TWCY_CYPRUS = 357;
+ {$EXTERNALSYM TWCY_CYPRUS}
+ TWCY_CZECHOSLOVAKIA = 42;
+ {$EXTERNALSYM TWCY_CZECHOSLOVAKIA}
+ TWCY_DENMARK = 45;
+ {$EXTERNALSYM TWCY_DENMARK}
+ TWCY_DJIBOUTI = 1013;
+ {$EXTERNALSYM TWCY_DJIBOUTI}
+ TWCY_DOMINICA = 8097;
+ {$EXTERNALSYM TWCY_DOMINICA}
+ TWCY_DOMINCANREP = 8098;
+ {$EXTERNALSYM TWCY_DOMINCANREP}
+ TWCY_EASTERIS = 1014;
+ {$EXTERNALSYM TWCY_EASTERIS}
+ TWCY_ECUADOR = 593;
+ {$EXTERNALSYM TWCY_ECUADOR}
+ TWCY_EGYPT = 20;
+ {$EXTERNALSYM TWCY_EGYPT}
+ TWCY_ELSALVADOR = 503;
+ {$EXTERNALSYM TWCY_ELSALVADOR}
+ TWCY_EQGUINEA = 1015;
+ {$EXTERNALSYM TWCY_EQGUINEA}
+ TWCY_ETHIOPIA = 251;
+ {$EXTERNALSYM TWCY_ETHIOPIA}
+ TWCY_FALKLANDIS = 1016;
+ {$EXTERNALSYM TWCY_FALKLANDIS}
+ TWCY_FAEROEIS = 298;
+ {$EXTERNALSYM TWCY_FAEROEIS}
+ TWCY_FIJIISLANDS = 679;
+ {$EXTERNALSYM TWCY_FIJIISLANDS}
+ TWCY_FINLAND = 358;
+ {$EXTERNALSYM TWCY_FINLAND}
+ TWCY_FRANCE = 33;
+ {$EXTERNALSYM TWCY_FRANCE}
+ TWCY_FRANTILLES = 596;
+ {$EXTERNALSYM TWCY_FRANTILLES}
+ TWCY_FRGUIANA = 594;
+ {$EXTERNALSYM TWCY_FRGUIANA}
+ TWCY_FRPOLYNEISA = 689;
+ {$EXTERNALSYM TWCY_FRPOLYNEISA}
+ TWCY_FUTANAIS = 1043;
+ {$EXTERNALSYM TWCY_FUTANAIS}
+ TWCY_GABON = 241;
+ {$EXTERNALSYM TWCY_GABON}
+ TWCY_GAMBIA = 220;
+ {$EXTERNALSYM TWCY_GAMBIA}
+ TWCY_GERMANY = 49;
+ {$EXTERNALSYM TWCY_GERMANY}
+ TWCY_GHANA = 233;
+ {$EXTERNALSYM TWCY_GHANA}
+ TWCY_GIBRALTER = 350;
+ {$EXTERNALSYM TWCY_GIBRALTER}
+ TWCY_GREECE = 30;
+ {$EXTERNALSYM TWCY_GREECE}
+ TWCY_GREENLAND = 299;
+ {$EXTERNALSYM TWCY_GREENLAND}
+ TWCY_GRENADA = 8099;
+ {$EXTERNALSYM TWCY_GRENADA}
+ TWCY_GRENEDINES = 8015;
+ {$EXTERNALSYM TWCY_GRENEDINES}
+ TWCY_GUADELOUPE = 590;
+ {$EXTERNALSYM TWCY_GUADELOUPE}
+ TWCY_GUAM = 671;
+ {$EXTERNALSYM TWCY_GUAM}
+ TWCY_GUANTANAMOBAY = 5399;
+ {$EXTERNALSYM TWCY_GUANTANAMOBAY}
+ TWCY_GUATEMALA = 502;
+ {$EXTERNALSYM TWCY_GUATEMALA}
+ TWCY_GUINEA = 224;
+ {$EXTERNALSYM TWCY_GUINEA}
+ TWCY_GUINEABISSAU = 1017;
+ {$EXTERNALSYM TWCY_GUINEABISSAU}
+ TWCY_GUYANA = 592;
+ {$EXTERNALSYM TWCY_GUYANA}
+ TWCY_HAITI = 509;
+ {$EXTERNALSYM TWCY_HAITI}
+ TWCY_HONDURAS = 504;
+ {$EXTERNALSYM TWCY_HONDURAS}
+ TWCY_HONGKONG = 852 ;
+ {$EXTERNALSYM TWCY_HONGKONG}
+ TWCY_HUNGARY = 36;
+ {$EXTERNALSYM TWCY_HUNGARY}
+ TWCY_ICELAND = 354;
+ {$EXTERNALSYM TWCY_ICELAND}
+ TWCY_INDIA = 91;
+ {$EXTERNALSYM TWCY_INDIA}
+ TWCY_INDONESIA = 62;
+ {$EXTERNALSYM TWCY_INDONESIA}
+ TWCY_IRAN = 98;
+ {$EXTERNALSYM TWCY_IRAN}
+ TWCY_IRAQ = 964;
+ {$EXTERNALSYM TWCY_IRAQ}
+ TWCY_IRELAND = 353;
+ {$EXTERNALSYM TWCY_IRELAND}
+ TWCY_ISRAEL = 972;
+ {$EXTERNALSYM TWCY_ISRAEL}
+ TWCY_ITALY = 39;
+ {$EXTERNALSYM TWCY_ITALY}
+ TWCY_IVORYCOAST = 225 ;
+ {$EXTERNALSYM TWCY_IVORYCOAST}
+ TWCY_JAMAICA = 8010;
+ {$EXTERNALSYM TWCY_JAMAICA}
+ TWCY_JAPAN = 81;
+ {$EXTERNALSYM TWCY_JAPAN}
+ TWCY_JORDAN = 962;
+ {$EXTERNALSYM TWCY_JORDAN}
+ TWCY_KENYA = 254;
+ {$EXTERNALSYM TWCY_KENYA}
+ TWCY_KIRIBATI = 1018;
+ {$EXTERNALSYM TWCY_KIRIBATI}
+ TWCY_KOREA = 82;
+ {$EXTERNALSYM TWCY_KOREA}
+ TWCY_KUWAIT = 965;
+ {$EXTERNALSYM TWCY_KUWAIT}
+ TWCY_LAOS = 1019;
+ {$EXTERNALSYM TWCY_LAOS}
+ TWCY_LEBANON = 1020;
+ {$EXTERNALSYM TWCY_LEBANON}
+ TWCY_LIBERIA = 231;
+ {$EXTERNALSYM TWCY_LIBERIA}
+ TWCY_LIBYA = 218;
+ {$EXTERNALSYM TWCY_LIBYA}
+ TWCY_LIECHTENSTEIN = 41;
+ {$EXTERNALSYM TWCY_LIECHTENSTEIN}
+ TWCY_LUXENBOURG = 352;
+ {$EXTERNALSYM TWCY_LUXENBOURG}
+ TWCY_MACAO = 853;
+ {$EXTERNALSYM TWCY_MACAO}
+ TWCY_MADAGASCAR = 1021;
+ {$EXTERNALSYM TWCY_MADAGASCAR}
+ TWCY_MALAWI = 265;
+ {$EXTERNALSYM TWCY_MALAWI}
+ TWCY_MALAYSIA = 60;
+ {$EXTERNALSYM TWCY_MALAYSIA}
+ TWCY_MALDIVES = 960;
+ {$EXTERNALSYM TWCY_MALDIVES}
+ TWCY_MALI = 1022;
+ {$EXTERNALSYM TWCY_MALI}
+ TWCY_MALTA = 356;
+ {$EXTERNALSYM TWCY_MALTA}
+ TWCY_MARSHALLIS = 692;
+ {$EXTERNALSYM TWCY_MARSHALLIS}
+ TWCY_MAURITANIA = 1023;
+ {$EXTERNALSYM TWCY_MAURITANIA}
+ TWCY_MAURITIUS = 230;
+ {$EXTERNALSYM TWCY_MAURITIUS}
+ TWCY_MEXICO = 3;
+ {$EXTERNALSYM TWCY_MEXICO}
+ TWCY_MICRONESIA = 691;
+ {$EXTERNALSYM TWCY_MICRONESIA}
+ TWCY_MIQUELON = 508;
+ {$EXTERNALSYM TWCY_MIQUELON}
+ TWCY_MONACO = 33;
+ {$EXTERNALSYM TWCY_MONACO}
+ TWCY_MONGOLIA = 1024;
+ {$EXTERNALSYM TWCY_MONGOLIA}
+ TWCY_MONTSERRAT = 8011;
+ {$EXTERNALSYM TWCY_MONTSERRAT}
+ TWCY_MOROCCO = 212;
+ {$EXTERNALSYM TWCY_MOROCCO}
+ TWCY_MOZAMBIQUE = 1025;
+ {$EXTERNALSYM TWCY_MOZAMBIQUE}
+ TWCY_NAMIBIA = 264;
+ {$EXTERNALSYM TWCY_NAMIBIA}
+ TWCY_NAURU = 1026;
+ {$EXTERNALSYM TWCY_NAURU}
+ TWCY_NEPAL = 977;
+ {$EXTERNALSYM TWCY_NEPAL}
+ TWCY_NETHERLANDS = 31;
+ {$EXTERNALSYM TWCY_NETHERLANDS}
+ TWCY_NETHANTILLES = 599;
+ {$EXTERNALSYM TWCY_NETHANTILLES}
+ TWCY_NEVIS = 8012;
+ {$EXTERNALSYM TWCY_NEVIS}
+ TWCY_NEWCALEDONIA = 687;
+ {$EXTERNALSYM TWCY_NEWCALEDONIA}
+ TWCY_NEWZEALAND = 64;
+ {$EXTERNALSYM TWCY_NEWZEALAND}
+ TWCY_NICARAGUA = 505;
+ {$EXTERNALSYM TWCY_NICARAGUA}
+ TWCY_NIGER = 227;
+ {$EXTERNALSYM TWCY_NIGER}
+ TWCY_NIGERIA = 234;
+ {$EXTERNALSYM TWCY_NIGERIA}
+ TWCY_NIUE = 1027;
+ {$EXTERNALSYM TWCY_NIUE}
+ TWCY_NORFOLKI = 1028;
+ {$EXTERNALSYM TWCY_NORFOLKI}
+ TWCY_NORWAY = 47;
+ {$EXTERNALSYM TWCY_NORWAY}
+ TWCY_OMAN = 968;
+ {$EXTERNALSYM TWCY_OMAN}
+ TWCY_PAKISTAN = 92;
+ {$EXTERNALSYM TWCY_PAKISTAN}
+ TWCY_PALAU = 1029;
+ {$EXTERNALSYM TWCY_PALAU}
+ TWCY_PANAMA = 507;
+ {$EXTERNALSYM TWCY_PANAMA}
+ TWCY_PARAGUAY = 595;
+ {$EXTERNALSYM TWCY_PARAGUAY}
+ TWCY_PERU = 51;
+ {$EXTERNALSYM TWCY_PERU}
+ TWCY_PHILLIPPINES = 63;
+ {$EXTERNALSYM TWCY_PHILLIPPINES}
+ TWCY_PITCAIRNIS = 1030;
+ {$EXTERNALSYM TWCY_PITCAIRNIS}
+ TWCY_PNEWGUINEA = 675;
+ {$EXTERNALSYM TWCY_PNEWGUINEA}
+ TWCY_POLAND = 48;
+ {$EXTERNALSYM TWCY_POLAND}
+ TWCY_PORTUGAL = 351;
+ {$EXTERNALSYM TWCY_PORTUGAL}
+ TWCY_QATAR = 974;
+ {$EXTERNALSYM TWCY_QATAR}
+ TWCY_REUNIONI = 1031;
+ {$EXTERNALSYM TWCY_REUNIONI}
+ TWCY_ROMANIA = 40;
+ {$EXTERNALSYM TWCY_ROMANIA}
+ TWCY_RWANDA = 250;
+ {$EXTERNALSYM TWCY_RWANDA}
+ TWCY_SAIPAN = 670;
+ {$EXTERNALSYM TWCY_SAIPAN}
+ TWCY_SANMARINO = 39;
+ {$EXTERNALSYM TWCY_SANMARINO}
+ TWCY_SAOTOME = 1033;
+ {$EXTERNALSYM TWCY_SAOTOME}
+ TWCY_SAUDIARABIA = 966;
+ {$EXTERNALSYM TWCY_SAUDIARABIA}
+ TWCY_SENEGAL = 221;
+ {$EXTERNALSYM TWCY_SENEGAL}
+ TWCY_SEYCHELLESIS = 1034;
+ {$EXTERNALSYM TWCY_SEYCHELLESIS}
+ TWCY_SIERRALEONE = 1035;
+ {$EXTERNALSYM TWCY_SIERRALEONE}
+ TWCY_SINGAPORE = 65;
+ {$EXTERNALSYM TWCY_SINGAPORE}
+ TWCY_SOLOMONIS = 1036;
+ {$EXTERNALSYM TWCY_SOLOMONIS}
+ TWCY_SOMALI = 1037;
+ {$EXTERNALSYM TWCY_SOMALI}
+ TWCY_SOUTHAFRICA = 27 ;
+ {$EXTERNALSYM TWCY_SOUTHAFRICA}
+ TWCY_SPAIN = 34;
+ {$EXTERNALSYM TWCY_SPAIN}
+ TWCY_SRILANKA = 94;
+ {$EXTERNALSYM TWCY_SRILANKA}
+ TWCY_STHELENA = 1032;
+ {$EXTERNALSYM TWCY_STHELENA}
+ TWCY_STKITTS = 8013;
+ {$EXTERNALSYM TWCY_STKITTS}
+ TWCY_STLUCIA = 8014;
+ {$EXTERNALSYM TWCY_STLUCIA}
+ TWCY_STPIERRE = 508;
+ {$EXTERNALSYM TWCY_STPIERRE}
+ TWCY_STVINCENT = 8015;
+ {$EXTERNALSYM TWCY_STVINCENT}
+ TWCY_SUDAN = 1038;
+ {$EXTERNALSYM TWCY_SUDAN}
+ TWCY_SURINAME = 597;
+ {$EXTERNALSYM TWCY_SURINAME}
+ TWCY_SWAZILAND = 268;
+ {$EXTERNALSYM TWCY_SWAZILAND}
+ TWCY_SWEDEN = 46;
+ {$EXTERNALSYM TWCY_SWEDEN}
+ TWCY_SWITZERLAND = 41;
+ {$EXTERNALSYM TWCY_SWITZERLAND}
+ TWCY_SYRIA = 1039;
+ {$EXTERNALSYM TWCY_SYRIA}
+ TWCY_TAIWAN = 886;
+ {$EXTERNALSYM TWCY_TAIWAN}
+ TWCY_TANZANIA = 255;
+ {$EXTERNALSYM TWCY_TANZANIA}
+ TWCY_THAILAND = 66;
+ {$EXTERNALSYM TWCY_THAILAND}
+ TWCY_TOBAGO = 8016;
+ {$EXTERNALSYM TWCY_TOBAGO}
+ TWCY_TOGO = 228;
+ {$EXTERNALSYM TWCY_TOGO}
+ TWCY_TONGAIS = 676;
+ {$EXTERNALSYM TWCY_TONGAIS}
+ TWCY_TRINIDAD = 8016;
+ {$EXTERNALSYM TWCY_TRINIDAD}
+ TWCY_TUNISIA = 216;
+ {$EXTERNALSYM TWCY_TUNISIA}
+ TWCY_TURKEY = 90;
+ {$EXTERNALSYM TWCY_TURKEY}
+ TWCY_TURKSCAICOS = 8017;
+ {$EXTERNALSYM TWCY_TURKSCAICOS}
+ TWCY_TUVALU = 1040;
+ {$EXTERNALSYM TWCY_TUVALU}
+ TWCY_UGANDA = 256;
+ {$EXTERNALSYM TWCY_UGANDA}
+ TWCY_USSR = 7;
+ {$EXTERNALSYM TWCY_USSR}
+ TWCY_UAEMIRATES = 971;
+ {$EXTERNALSYM TWCY_UAEMIRATES}
+ TWCY_UNITEDKINGDOM = 44;
+ {$EXTERNALSYM TWCY_UNITEDKINGDOM}
+ TWCY_USA = 1;
+ {$EXTERNALSYM TWCY_USA}
+ TWCY_URUGUAY = 598;
+ {$EXTERNALSYM TWCY_URUGUAY}
+ TWCY_VANUATU = 1041;
+ {$EXTERNALSYM TWCY_VANUATU}
+ TWCY_VATICANCITY = 39;
+ {$EXTERNALSYM TWCY_VATICANCITY}
+ TWCY_VENEZUELA = 58;
+ {$EXTERNALSYM TWCY_VENEZUELA}
+ TWCY_WAKE = 1042;
+ {$EXTERNALSYM TWCY_WAKE}
+ TWCY_WALLISIS = 1043;
+ {$EXTERNALSYM TWCY_WALLISIS}
+ TWCY_WESTERNSAHARA = 1044;
+ {$EXTERNALSYM TWCY_WESTERNSAHARA}
+ TWCY_WESTERNSAMOA = 1045;
+ {$EXTERNALSYM TWCY_WESTERNSAMOA}
+ TWCY_YEMEN = 1046;
+ {$EXTERNALSYM TWCY_YEMEN}
+ TWCY_YUGOSLAVIA = 38;
+ {$EXTERNALSYM TWCY_YUGOSLAVIA}
+ TWCY_ZAIRE = 243;
+ {$EXTERNALSYM TWCY_ZAIRE}
+ TWCY_ZAMBIA = 260;
+ {$EXTERNALSYM TWCY_ZAMBIA}
+ TWCY_ZIMBABWE = 263;
+ {$EXTERNALSYM TWCY_ZIMBABWE}
+
+{ Added for 1.8 }
+ TWCY_ALBANIA = 355;
+ {$EXTERNALSYM TWCY_ALBANIA}
+ TWCY_ARMENIA = 374;
+ {$EXTERNALSYM TWCY_ARMENIA}
+ TWCY_AZERBAIJAN = 994;
+ {$EXTERNALSYM TWCY_AZERBAIJAN}
+ TWCY_BELARUS = 375;
+ {$EXTERNALSYM TWCY_BELARUS}
+ TWCY_BOSNIAHERZGO = 387;
+ {$EXTERNALSYM TWCY_BOSNIAHERZGO}
+ TWCY_CAMBODIA = 855;
+ {$EXTERNALSYM TWCY_CAMBODIA}
+ TWCY_CROATIA = 385;
+ {$EXTERNALSYM TWCY_CROATIA}
+ TWCY_CZECHREPUBLIC = 420;
+ {$EXTERNALSYM TWCY_CZECHREPUBLIC}
+ TWCY_DIEGOGARCIA = 246;
+ {$EXTERNALSYM TWCY_DIEGOGARCIA}
+ TWCY_ERITREA = 291;
+ {$EXTERNALSYM TWCY_ERITREA}
+ TWCY_ESTONIA = 372;
+ {$EXTERNALSYM TWCY_ESTONIA}
+ TWCY_GEORGIA = 995;
+ {$EXTERNALSYM TWCY_GEORGIA}
+ TWCY_LATVIA = 371;
+ {$EXTERNALSYM TWCY_LATVIA}
+ TWCY_LESOTHO = 266;
+ {$EXTERNALSYM TWCY_LESOTHO}
+ TWCY_LITHUANIA = 370;
+ {$EXTERNALSYM TWCY_LITHUANIA}
+ TWCY_MACEDONIA = 389;
+ {$EXTERNALSYM TWCY_MACEDONIA}
+ TWCY_MAYOTTEIS = 269;
+ {$EXTERNALSYM TWCY_MAYOTTEIS}
+ TWCY_MOLDOVA = 373;
+ {$EXTERNALSYM TWCY_MOLDOVA}
+ TWCY_MYANMAR = 95 ;
+ {$EXTERNALSYM TWCY_MYANMAR}
+ TWCY_NORTHKOREA = 850;
+ {$EXTERNALSYM TWCY_NORTHKOREA}
+ TWCY_PUERTORICO = 787;
+ {$EXTERNALSYM TWCY_PUERTORICO}
+ TWCY_RUSSIA = 7 ;
+ {$EXTERNALSYM TWCY_RUSSIA}
+ TWCY_SERBIA = 381;
+ {$EXTERNALSYM TWCY_SERBIA}
+ TWCY_SLOVAKIA = 421;
+ {$EXTERNALSYM TWCY_SLOVAKIA}
+ TWCY_SLOVENIA = 386;
+ {$EXTERNALSYM TWCY_SLOVENIA}
+ TWCY_SOUTHKOREA = 82 ;
+ {$EXTERNALSYM TWCY_SOUTHKOREA}
+ TWCY_UKRAINE = 380;
+ {$EXTERNALSYM TWCY_UKRAINE}
+ TWCY_USVIRGINIS = 340;
+ {$EXTERNALSYM TWCY_USVIRGINIS}
+ TWCY_VIETNAM = 84 ;
+ {$EXTERNALSYM TWCY_VIETNAM}
+
+{***************************************************************************
+ * Language Constants *
+ *************************************************************************** }
+
+ TWLG_DAN = 0; { Danish }
+ {$EXTERNALSYM TWLG_DAN}
+ TWLG_DUT = 1; { Dutch }
+ {$EXTERNALSYM TWLG_DUT}
+ TWLG_ENG = 2; { International English }
+ {$EXTERNALSYM TWLG_ENG}
+ TWLG_FCF = 3; { French Canadian }
+ {$EXTERNALSYM TWLG_FCF}
+ TWLG_FIN = 4; { Finnish }
+ {$EXTERNALSYM TWLG_FIN}
+ TWLG_FRN = 5; { French }
+ {$EXTERNALSYM TWLG_FRN}
+ TWLG_GER = 6; { German }
+ {$EXTERNALSYM TWLG_GER}
+ TWLG_ICE = 7; { Icelandic }
+ {$EXTERNALSYM TWLG_ICE}
+ TWLG_ITN = 8; { Italian }
+ {$EXTERNALSYM TWLG_ITN}
+ TWLG_NOR = 9; { Norwegian }
+ {$EXTERNALSYM TWLG_NOR}
+ TWLG_POR = 10; { Portuguese }
+ {$EXTERNALSYM TWLG_POR}
+ TWLG_SPA = 11; { Spanish }
+ {$EXTERNALSYM TWLG_SPA}
+ TWLG_SWE = 12; { Swedish }
+ {$EXTERNALSYM TWLG_SWE}
+ TWLG_USA = 13; { U.S. English }
+ {$EXTERNALSYM TWLG_USA}
+
+{ Added for 1.8 }
+ TWLG_USERLOCALE = -1;
+ {$EXTERNALSYM TWLG_USERLOCALE}
+ TWLG_AFRIKAANS = 14;
+ {$EXTERNALSYM TWLG_AFRIKAANS}
+ TWLG_ALBANIA = 15;
+ {$EXTERNALSYM TWLG_ALBANIA}
+ TWLG_ARABIC = 16;
+ {$EXTERNALSYM TWLG_ARABIC}
+ TWLG_ARABIC_ALGERIA = 17;
+ {$EXTERNALSYM TWLG_ARABIC_ALGERIA}
+ TWLG_ARABIC_BAHRAIN = 18;
+ {$EXTERNALSYM TWLG_ARABIC_BAHRAIN}
+ TWLG_ARABIC_EGYPT = 19;
+ {$EXTERNALSYM TWLG_ARABIC_EGYPT}
+ TWLG_ARABIC_IRAQ = 20;
+ {$EXTERNALSYM TWLG_ARABIC_IRAQ}
+ TWLG_ARABIC_JORDAN = 21;
+ {$EXTERNALSYM TWLG_ARABIC_JORDAN}
+ TWLG_ARABIC_KUWAIT = 22;
+ {$EXTERNALSYM TWLG_ARABIC_KUWAIT}
+ TWLG_ARABIC_LEBANON = 23;
+ {$EXTERNALSYM TWLG_ARABIC_LEBANON}
+ TWLG_ARABIC_LIBYA = 24;
+ {$EXTERNALSYM TWLG_ARABIC_LIBYA}
+ TWLG_ARABIC_MOROCCO = 25;
+ {$EXTERNALSYM TWLG_ARABIC_MOROCCO}
+ TWLG_ARABIC_OMAN = 26;
+ {$EXTERNALSYM TWLG_ARABIC_OMAN}
+ TWLG_ARABIC_QATAR = 27;
+ {$EXTERNALSYM TWLG_ARABIC_QATAR}
+ TWLG_ARABIC_SAUDIARABIA = 28;
+ {$EXTERNALSYM TWLG_ARABIC_SAUDIARABIA}
+ TWLG_ARABIC_SYRIA = 29;
+ {$EXTERNALSYM TWLG_ARABIC_SYRIA}
+ TWLG_ARABIC_TUNISIA = 30;
+ {$EXTERNALSYM TWLG_ARABIC_TUNISIA}
+ TWLG_ARABIC_UAE = 31; { United Arabic Emirates }
+ {$EXTERNALSYM TWLG_ARABIC_UAE}
+ TWLG_ARABIC_YEMEN = 32;
+ {$EXTERNALSYM TWLG_ARABIC_YEMEN}
+ TWLG_BASQUE = 33;
+ {$EXTERNALSYM TWLG_BASQUE}
+ TWLG_BYELORUSSIAN = 34;
+ {$EXTERNALSYM TWLG_BYELORUSSIAN}
+ TWLG_BULGARIAN = 35;
+ {$EXTERNALSYM TWLG_BULGARIAN}
+ TWLG_CATALAN = 36;
+ {$EXTERNALSYM TWLG_CATALAN}
+ TWLG_CHINESE = 37;
+ {$EXTERNALSYM TWLG_CHINESE}
+ TWLG_CHINESE_HONGKONG = 38;
+ {$EXTERNALSYM TWLG_CHINESE_HONGKONG}
+ TWLG_CHINESE_PRC = 39; { People's Republic of China }
+ {$EXTERNALSYM TWLG_CHINESE_PRC}
+ TWLG_CHINESE_SINGAPORE = 40;
+ {$EXTERNALSYM TWLG_CHINESE_SINGAPORE}
+ TWLG_CHINESE_SIMPLIFIED = 41;
+ {$EXTERNALSYM TWLG_CHINESE_SIMPLIFIED}
+ TWLG_CHINESE_TAIWAN = 42;
+ {$EXTERNALSYM TWLG_CHINESE_TAIWAN}
+ TWLG_CHINESE_TRADITIONAL= 43;
+ {$EXTERNALSYM TWLG_CHINESE_TRADITIONAL}
+ TWLG_CROATIA = 44;
+ {$EXTERNALSYM TWLG_CROATIA}
+ TWLG_CZECH = 45;
+ {$EXTERNALSYM TWLG_CZECH}
+ TWLG_DANISH = TWLG_DAN;
+ {$EXTERNALSYM TWLG_DANISH}
+ TWLG_DUTCH = TWLG_DUT;
+ {$EXTERNALSYM TWLG_DUTCH}
+ TWLG_DUTCH_BELGIAN = 46;
+ {$EXTERNALSYM TWLG_DUTCH_BELGIAN}
+ TWLG_ENGLISH = TWLG_ENG;
+ {$EXTERNALSYM TWLG_ENGLISH}
+ TWLG_ENGLISH_AUSTRALIAN = 47;
+ {$EXTERNALSYM TWLG_ENGLISH_AUSTRALIAN}
+ TWLG_ENGLISH_CANADIAN = 48;
+ {$EXTERNALSYM TWLG_ENGLISH_CANADIAN}
+ TWLG_ENGLISH_IRELAND = 49;
+ {$EXTERNALSYM TWLG_ENGLISH_IRELAND}
+ TWLG_ENGLISH_NEWZEALAND = 50;
+ {$EXTERNALSYM TWLG_ENGLISH_NEWZEALAND}
+ TWLG_ENGLISH_SOUTHAFRICA= 51;
+ {$EXTERNALSYM TWLG_ENGLISH_SOUTHAFRICA}
+ TWLG_ENGLISH_UK = 52;
+ {$EXTERNALSYM TWLG_ENGLISH_UK}
+ TWLG_ENGLISH_USA = TWLG_USA;
+ {$EXTERNALSYM TWLG_ENGLISH_USA}
+ TWLG_ESTONIAN = 53;
+ {$EXTERNALSYM TWLG_ESTONIAN}
+ TWLG_FAEROESE = 54;
+ {$EXTERNALSYM TWLG_FAEROESE}
+ TWLG_FARSI = 55;
+ {$EXTERNALSYM TWLG_FARSI}
+ TWLG_FINNISH = TWLG_FIN;
+ {$EXTERNALSYM TWLG_FINNISH}
+ TWLG_FRENCH = TWLG_FRN;
+ {$EXTERNALSYM TWLG_FRENCH}
+ TWLG_FRENCH_BELGIAN = 56;
+ {$EXTERNALSYM TWLG_FRENCH_BELGIAN}
+ TWLG_FRENCH_CANADIAN = TWLG_FCF;
+ {$EXTERNALSYM TWLG_FRENCH_CANADIAN}
+ TWLG_FRENCH_LUXEMBOURG = 57;
+ {$EXTERNALSYM TWLG_FRENCH_LUXEMBOURG}
+ TWLG_FRENCH_SWISS = 58;
+ {$EXTERNALSYM TWLG_FRENCH_SWISS}
+ TWLG_GERMAN = TWLG_GER;
+ {$EXTERNALSYM TWLG_GERMAN}
+ TWLG_GERMAN_AUSTRIAN = 59;
+ {$EXTERNALSYM TWLG_GERMAN_AUSTRIAN}
+ TWLG_GERMAN_LUXEMBOURG = 60;
+ {$EXTERNALSYM TWLG_GERMAN_LUXEMBOURG}
+ TWLG_GERMAN_LIECHTENSTEIN = 61;
+ {$EXTERNALSYM TWLG_GERMAN_LIECHTENSTEIN}
+ TWLG_GERMAN_SWISS = 62;
+ {$EXTERNALSYM TWLG_GERMAN_SWISS}
+ TWLG_GREEK = 63;
+ {$EXTERNALSYM TWLG_GREEK}
+ TWLG_HEBREW = 64;
+ {$EXTERNALSYM TWLG_HEBREW}
+ TWLG_HUNGARIAN = 65;
+ {$EXTERNALSYM TWLG_HUNGARIAN}
+ TWLG_ICELANDIC = TWLG_ICE;
+ {$EXTERNALSYM TWLG_ICELANDIC}
+ TWLG_INDONESIAN = 66;
+ {$EXTERNALSYM TWLG_INDONESIAN}
+ TWLG_ITALIAN = TWLG_ITN;
+ {$EXTERNALSYM TWLG_ITALIAN}
+ TWLG_ITALIAN_SWISS = 67;
+ {$EXTERNALSYM TWLG_ITALIAN_SWISS}
+ TWLG_JAPANESE = 68;
+ {$EXTERNALSYM TWLG_JAPANESE}
+ TWLG_KOREAN = 69;
+ {$EXTERNALSYM TWLG_KOREAN}
+ TWLG_KOREAN_JOHAB = 70;
+ {$EXTERNALSYM TWLG_KOREAN_JOHAB}
+ TWLG_LATVIAN = 71;
+ {$EXTERNALSYM TWLG_LATVIAN}
+ TWLG_LITHUANIAN = 72;
+ {$EXTERNALSYM TWLG_LITHUANIAN}
+ TWLG_NORWEGIAN = TWLG_NOR;
+ {$EXTERNALSYM TWLG_NORWEGIAN}
+ TWLG_NORWEGIAN_BOKMAL = 73;
+ {$EXTERNALSYM TWLG_NORWEGIAN_BOKMAL}
+ TWLG_NORWEGIAN_NYNORSK = 74;
+ {$EXTERNALSYM TWLG_NORWEGIAN_NYNORSK}
+ TWLG_POLISH = 75;
+ {$EXTERNALSYM TWLG_POLISH}
+ TWLG_PORTUGUESE = TWLG_POR;
+ {$EXTERNALSYM TWLG_PORTUGUESE}
+ TWLG_PORTUGUESE_BRAZIL = 76;
+ {$EXTERNALSYM TWLG_PORTUGUESE_BRAZIL}
+ TWLG_ROMANIAN = 77;
+ {$EXTERNALSYM TWLG_ROMANIAN}
+ TWLG_RUSSIAN = 78;
+ {$EXTERNALSYM TWLG_RUSSIAN}
+ TWLG_SERBIAN_LATIN = 79;
+ {$EXTERNALSYM TWLG_SERBIAN_LATIN}
+ TWLG_SLOVAK = 80;
+ {$EXTERNALSYM TWLG_SLOVAK}
+ TWLG_SLOVENIAN = 81;
+ {$EXTERNALSYM TWLG_SLOVENIAN}
+ TWLG_SPANISH = TWLG_SPA;
+ {$EXTERNALSYM TWLG_SPANISH}
+ TWLG_SPANISH_MEXICAN = 82;
+ {$EXTERNALSYM TWLG_SPANISH_MEXICAN}
+ TWLG_SPANISH_MODERN = 83;
+ {$EXTERNALSYM TWLG_SPANISH_MODERN}
+ TWLG_SWEDISH = TWLG_SWE;
+ {$EXTERNALSYM TWLG_SWEDISH}
+ TWLG_THAI = 84;
+ {$EXTERNALSYM TWLG_THAI}
+ TWLG_TURKISH = 85;
+ {$EXTERNALSYM TWLG_TURKISH}
+ TWLG_UKRANIAN = 86;
+ {$EXTERNALSYM TWLG_UKRANIAN}
+
+{ More stuff added for 1.8 }
+ TWLG_ASSAMESE = 87;
+ {$EXTERNALSYM TWLG_ASSAMESE}
+ TWLG_BENGALI = 88;
+ {$EXTERNALSYM TWLG_BENGALI}
+ TWLG_BIHARI = 89;
+ {$EXTERNALSYM TWLG_BIHARI}
+ TWLG_BODO = 90;
+ {$EXTERNALSYM TWLG_BODO}
+ TWLG_DOGRI = 91;
+ {$EXTERNALSYM TWLG_DOGRI}
+ TWLG_GUJARATI = 92;
+ {$EXTERNALSYM TWLG_GUJARATI}
+ TWLG_HARYANVI = 93;
+ {$EXTERNALSYM TWLG_HARYANVI}
+ TWLG_HINDI = 94;
+ {$EXTERNALSYM TWLG_HINDI}
+ TWLG_KANNADA = 95;
+ {$EXTERNALSYM TWLG_KANNADA}
+ TWLG_KASHMIRI = 96;
+ {$EXTERNALSYM TWLG_KASHMIRI}
+ TWLG_MALAYALAM = 97;
+ {$EXTERNALSYM TWLG_MALAYALAM}
+ TWLG_MARATHI = 98;
+ {$EXTERNALSYM TWLG_MARATHI}
+ TWLG_MARWARI = 99;
+ {$EXTERNALSYM TWLG_MARWARI}
+ TWLG_MEGHALAYAN = 100;
+ {$EXTERNALSYM TWLG_MEGHALAYAN}
+ TWLG_MIZO = 101;
+ {$EXTERNALSYM TWLG_MIZO}
+ TWLG_NAGA = 102;
+ {$EXTERNALSYM TWLG_NAGA}
+ TWLG_ORISSI = 103;
+ {$EXTERNALSYM TWLG_ORISSI}
+ TWLG_PUNJABI = 104;
+ {$EXTERNALSYM TWLG_PUNJABI}
+ TWLG_PUSHTU = 105;
+ {$EXTERNALSYM TWLG_PUSHTU}
+ TWLG_SERBIAN_CYRILLIC = 106;
+ {$EXTERNALSYM TWLG_SERBIAN_CYRILLIC}
+ TWLG_SIKKIMI = 107;
+ {$EXTERNALSYM TWLG_SIKKIMI}
+ TWLG_SWEDISH_FINLAND = 108;
+ {$EXTERNALSYM TWLG_SWEDISH_FINLAND}
+ TWLG_TAMIL = 109;
+ {$EXTERNALSYM TWLG_TAMIL}
+ TWLG_TELUGU = 110;
+ {$EXTERNALSYM TWLG_TELUGU}
+ TWLG_TRIPURI = 111;
+ {$EXTERNALSYM TWLG_TRIPURI}
+ TWLG_URDU = 112;
+ {$EXTERNALSYM TWLG_URDU}
+ TWLG_VIETNAMESE = 113;
+ {$EXTERNALSYM TWLG_VIETNAMESE}
+
+{***************************************************************************
+ * Data Groups *
+ *************************************************************************** }
+
+{ More Data Groups may be added in the future.
+ * Possible candidates include text, vector graphics, sound, etc.
+ * NOTE: Data Group constants must be powers of 2 as they are used
+ * as bitflags when Application asks DSM to present a list of DSs.
+ }
+
+ DG_CONTROL = $0001; { data pertaining to control }
+ {$EXTERNALSYM DG_CONTROL}
+ DG_IMAGE = $0002; { data pertaining to raster images }
+ {$EXTERNALSYM DG_IMAGE}
+{ Added 1.8 }
+ DG_AUDIO = $0004; { data pertaining to audio }
+ {$EXTERNALSYM DG_AUDIO}
+
+{***************************************************************************
+ * Data Argument Types *
+ *************************************************************************** }
+
+{ SDH - 03/23/95 - WATCH }
+{ The thunker requires knowledge about size of data being passed in the }
+{ lpData parameter to DS_Entry (which is not readily available due to }
+{ type LPVOID. Thus, we key off the DAT_ argument to determine the size. }
+{ This has a couple implications: }
+{ 1) Any additional DAT_ features require modifications to the thunk code }
+{ for thunker support. }
+{ 2) Any applications which use the custom capabailites are not supported }
+{ under thunking since we have no way of knowing what size data (if }
+{ any) is being passed. }
+
+ DAT_NULL = $0000; { No data or structure. }
+ {$EXTERNALSYM DAT_NULL}
+ DAT_CUSTOMBASE = $8000; { Base of custom DATs. }
+ {$EXTERNALSYM DAT_CUSTOMBASE}
+
+{ Data Argument Types for the DG_CONTROL Data Group. }
+ DAT_CAPABILITY = $0001; { TW_CAPABILITY }
+ {$EXTERNALSYM DAT_CAPABILITY}
+ DAT_EVENT = $0002; { TW_EVENT }
+ {$EXTERNALSYM DAT_EVENT}
+ DAT_IDENTITY = $0003; { TW_IDENTITY }
+ {$EXTERNALSYM DAT_IDENTITY}
+ DAT_PARENT = $0004; { TW_HANDLE, application win handle in Windows }
+ {$EXTERNALSYM DAT_PARENT}
+ DAT_PENDINGXFERS = $0005; { TW_PENDINGXFERS }
+ {$EXTERNALSYM DAT_PENDINGXFERS}
+ DAT_SETUPMEMXFER = $0006; { TW_SETUPMEMXFER }
+ {$EXTERNALSYM DAT_SETUPMEMXFER}
+ DAT_SETUPFILEXFER = $0007; { TW_SETUPFILEXFER }
+ {$EXTERNALSYM DAT_SETUPFILEXFER}
+ DAT_STATUS = $0008; { TW_STATUS }
+ {$EXTERNALSYM DAT_STATUS}
+ DAT_USERINTERFACE = $0009; { TW_USERINTERFACE }
+ {$EXTERNALSYM DAT_USERINTERFACE}
+ DAT_XFERGROUP = $000a; { TW_UINT32 }
+ {$EXTERNALSYM DAT_XFERGROUP}
+{ SDH - 03/21/95 - TWUNK }
+{ Additional message required for thunker to request the special }
+{ identity information. }
+ DAT_TWUNKIDENTITY = $000b; { TW_TWUNKIDENTITY }
+ {$EXTERNALSYM DAT_TWUNKIDENTITY}
+ DAT_CUSTOMDSDATA = $000c; { TW_CUSTOMDSDATA. }
+ {$EXTERNALSYM DAT_CUSTOMDSDATA}
+
+{ Added 1.8 }
+ DAT_DEVICEEVENT = $000d; { TW_DEVICEEVENT }
+ {$EXTERNALSYM DAT_DEVICEEVENT}
+ DAT_FILESYSTEM = $000e; { TW_FILESYSTEM }
+ {$EXTERNALSYM DAT_FILESYSTEM}
+ DAT_PASSTHRU = $000f; { TW_PASSTHRU }
+ {$EXTERNALSYM DAT_PASSTHRU}
+
+{ Data Argument Types for the DG_IMAGE Data Group. }
+ DAT_IMAGEINFO = $0101; { TW_IMAGEINFO }
+ {$EXTERNALSYM DAT_IMAGEINFO}
+ DAT_IMAGELAYOUT = $0102; { TW_IMAGELAYOUT }
+ {$EXTERNALSYM DAT_IMAGELAYOUT}
+ DAT_IMAGEMEMXFER = $0103; { TW_IMAGEMEMXFER }
+ {$EXTERNALSYM DAT_IMAGEMEMXFER}
+ DAT_IMAGENATIVEXFER = $0104; { TW_UINT32 loword is hDIB, PICHandle }
+ {$EXTERNALSYM DAT_IMAGENATIVEXFER}
+ DAT_IMAGEFILEXFER = $0105; { Null data }
+ {$EXTERNALSYM DAT_IMAGEFILEXFER}
+ DAT_CIECOLOR = $0106; { TW_CIECOLOR }
+ {$EXTERNALSYM DAT_CIECOLOR}
+ DAT_GRAYRESPONSE = $0107; { TW_GRAYRESPONSE }
+ {$EXTERNALSYM DAT_GRAYRESPONSE}
+ DAT_RGBRESPONSE = $0108; { TW_RGBRESPONSE }
+ {$EXTERNALSYM DAT_RGBRESPONSE}
+ DAT_JPEGCOMPRESSION = $0109; { TW_JPEGCOMPRESSION }
+ {$EXTERNALSYM DAT_JPEGCOMPRESSION}
+ DAT_PALETTE8 = $010a; { TW_PALETTE8 }
+ {$EXTERNALSYM DAT_PALETTE8}
+ DAT_EXTIMAGEINFO = $010b; { TW_EXTIMAGEINFO -- for 1.7 Spec. }
+ {$EXTERNALSYM DAT_EXTIMAGEINFO}
+
+{ Added 1.8 }
+{ Data Argument Types for the DG_AUDIO Data Group. }
+ DAT_AUDIOFILEXFER = $0201; { Null data }
+ {$EXTERNALSYM DAT_AUDIOFILEXFER}
+ DAT_AUDIOINFO = $0202; { TW_AUDIOINFO }
+ {$EXTERNALSYM DAT_AUDIOINFO}
+ DAT_AUDIONATIVEXFER = $0203; { TW_UINT32 handle to WAV, (AIFF Mac) }
+ {$EXTERNALSYM DAT_AUDIONATIVEXFER}
+
+{ Added 1.9 }
+ DAT_SETUPFILEXFER2 = $0301; { New file xfer operation }
+ {$EXTERNALSYM DAT_SETUPFILEXFER2}
+
+{***************************************************************************
+ * Messages *
+ *************************************************************************** }
+
+{ All message constants are unique.
+ * Messages are grouped according to which DATs they are used with. }
+
+ MSG_NULL = $0000; { Used in TW_EVENT structure }
+ {$EXTERNALSYM MSG_NULL}
+ MSG_CUSTOMBASE = $8000; { Base of custom messages }
+ {$EXTERNALSYM MSG_CUSTOMBASE}
+
+{ Generic messages may be used with any of several DATs. }
+ MSG_GET = $0001; { Get one or more values }
+ {$EXTERNALSYM MSG_GET}
+ MSG_GETCURRENT = $0002; { Get current value }
+ {$EXTERNALSYM MSG_GETCURRENT}
+ MSG_GETDEFAULT = $0003; { Get default (e.g. power up) value }
+ {$EXTERNALSYM MSG_GETDEFAULT}
+ MSG_GETFIRST = $0004; { Get first of a series of items, e.g. DSs }
+ {$EXTERNALSYM MSG_GETFIRST}
+ MSG_GETNEXT = $0005; { Iterate through a series of items. }
+ {$EXTERNALSYM MSG_GETNEXT}
+ MSG_SET = $0006; { Set one or more values }
+ {$EXTERNALSYM MSG_SET}
+ MSG_RESET = $0007; { Set current value to default value }
+ {$EXTERNALSYM MSG_RESET}
+ MSG_QUERYSUPPORT = $0008; { Get supported operations on the cap. }
+ {$EXTERNALSYM MSG_QUERYSUPPORT}
+
+{ Messages used with DAT_NULL }
+ MSG_XFERREADY = $0101; { The data source has data ready }
+ {$EXTERNALSYM MSG_XFERREADY}
+ MSG_CLOSEDSREQ = $0102; { Request for Application. to close DS }
+ {$EXTERNALSYM MSG_CLOSEDSREQ}
+ MSG_CLOSEDSOK = $0103; { Tell the Application. to save the state. }
+ {$EXTERNALSYM MSG_CLOSEDSOK}
+{ Added 1.8 }
+ MSG_DEVICEEVENT = $0104; { Some event has taken place }
+ {$EXTERNALSYM MSG_DEVICEEVENT}
+
+{ Messages used with a pointer to a DAT_STATUS structure }
+ MSG_CHECKSTATUS = $0201; { Get status information }
+ {$EXTERNALSYM MSG_CHECKSTATUS}
+
+{ Messages used with a pointer to DAT_PARENT data }
+ MSG_OPENDSM = $0301; { Open the DSM }
+ {$EXTERNALSYM MSG_OPENDSM}
+ MSG_CLOSEDSM = $0302; { Close the DSM }
+ {$EXTERNALSYM MSG_CLOSEDSM}
+
+{ Messages used with a pointer to a DAT_IDENTITY structure }
+ MSG_OPENDS = $0401; { Open a data source }
+ {$EXTERNALSYM MSG_OPENDS}
+ MSG_CLOSEDS = $0402; { Close a data source }
+ {$EXTERNALSYM MSG_CLOSEDS}
+ MSG_USERSELECT = $0403; { Put up a dialog of all DS }
+ {$EXTERNALSYM MSG_USERSELECT}
+
+{ Messages used with a pointer to a DAT_USERINTERFACE structure }
+ MSG_DISABLEDS = $0501; { Disable data transfer in the DS }
+ {$EXTERNALSYM MSG_DISABLEDS}
+ MSG_ENABLEDS = $0502; { Enable data transfer in the DS }
+ {$EXTERNALSYM MSG_ENABLEDS}
+ MSG_ENABLEDSUIONLY = $0503; { Enable for saving DS state only. }
+ {$EXTERNALSYM MSG_ENABLEDSUIONLY}
+
+{ Messages used with a pointer to a DAT_EVENT structure }
+ MSG_PROCESSEVENT = $0601;
+ {$EXTERNALSYM MSG_PROCESSEVENT}
+
+{ Messages used with a pointer to a DAT_PENDINGXFERS structure }
+ MSG_ENDXFER = $0701;
+ {$EXTERNALSYM MSG_ENDXFER}
+ MSG_STOPFEEDER = $0702;
+ {$EXTERNALSYM MSG_STOPFEEDER}
+
+{ Added 1.8 }
+{ Messages used with a pointer to a DAT_FILESYSTEM structure }
+ MSG_CHANGEDIRECTORY = $0801;
+ {$EXTERNALSYM MSG_CHANGEDIRECTORY}
+ MSG_CREATEDIRECTORY = $0802;
+ {$EXTERNALSYM MSG_CREATEDIRECTORY}
+ MSG_DELETE = $0803;
+ {$EXTERNALSYM MSG_DELETE}
+ MSG_FORMATMEDIA = $0804;
+ {$EXTERNALSYM MSG_FORMATMEDIA}
+ MSG_GETCLOSE = $0805;
+ {$EXTERNALSYM MSG_GETCLOSE}
+ MSG_GETFIRSTFILE = $0806;
+ {$EXTERNALSYM MSG_GETFIRSTFILE}
+ MSG_GETINFO = $0807;
+ {$EXTERNALSYM MSG_GETINFO}
+ MSG_GETNEXTFILE = $0808;
+ {$EXTERNALSYM MSG_GETNEXTFILE}
+ MSG_RENAME = $0809;
+ {$EXTERNALSYM MSG_RENAME}
+ MSG_COPY = $080A;
+ {$EXTERNALSYM MSG_COPY}
+ MSG_AUTOMATICCAPTUREDIRECTORY = $080B;
+ {$EXTERNALSYM MSG_AUTOMATICCAPTUREDIRECTORY}
+
+{ Messages used with a pointer to a DAT_PASSTHRU structure }
+ MSG_PASSTHRU = $0901;
+ {$EXTERNALSYM MSG_PASSTHRU}
+
+{***************************************************************************
+ * Capabilities *
+ *************************************************************************** }
+
+ CAP_CUSTOMBASE = $8000; { Base of custom capabilities }
+ {$EXTERNALSYM CAP_CUSTOMBASE}
+
+{ all data sources are REQUIRED to support these caps }
+ CAP_XFERCOUNT = $0001;
+ {$EXTERNALSYM CAP_XFERCOUNT}
+
+{ image data sources are REQUIRED to support these caps }
+ ICAP_COMPRESSION = $0100;
+ {$EXTERNALSYM ICAP_COMPRESSION}
+ ICAP_PIXELTYPE = $0101;
+ {$EXTERNALSYM ICAP_PIXELTYPE}
+ ICAP_UNITS = $0102; { default is TWUN_INCHES }
+ {$EXTERNALSYM ICAP_UNITS}
+ ICAP_XFERMECH = $0103;
+ {$EXTERNALSYM ICAP_XFERMECH}
+
+{ all data sources MAY support these caps }
+ CAP_AUTHOR = $1000;
+ {$EXTERNALSYM CAP_AUTHOR}
+ CAP_CAPTION = $1001;
+ {$EXTERNALSYM CAP_CAPTION}
+ CAP_FEEDERENABLED = $1002;
+ {$EXTERNALSYM CAP_FEEDERENABLED}
+ CAP_FEEDERLOADED = $1003;
+ {$EXTERNALSYM CAP_FEEDERLOADED}
+ CAP_TIMEDATE = $1004;
+ {$EXTERNALSYM CAP_TIMEDATE}
+ CAP_SUPPORTEDCAPS = $1005;
+ {$EXTERNALSYM CAP_SUPPORTEDCAPS}
+ CAP_EXTENDEDCAPS = $1006;
+ {$EXTERNALSYM CAP_EXTENDEDCAPS}
+ CAP_AUTOFEED = $1007;
+ {$EXTERNALSYM CAP_AUTOFEED}
+ CAP_CLEARPAGE = $1008;
+ {$EXTERNALSYM CAP_CLEARPAGE}
+ CAP_FEEDPAGE = $1009;
+ {$EXTERNALSYM CAP_FEEDPAGE}
+ CAP_REWINDPAGE = $100a;
+ {$EXTERNALSYM CAP_REWINDPAGE}
+ CAP_INDICATORS = $100b; { Added 1.1 }
+ {$EXTERNALSYM CAP_INDICATORS}
+ CAP_SUPPORTEDCAPSEXT = $100c; { Added 1.6 }
+ {$EXTERNALSYM CAP_SUPPORTEDCAPSEXT}
+ CAP_PAPERDETECTABLE = $100d; { Added 1.6 }
+ {$EXTERNALSYM CAP_PAPERDETECTABLE}
+ CAP_UICONTROLLABLE = $100e; { Added 1.6 }
+ {$EXTERNALSYM CAP_UICONTROLLABLE}
+ CAP_DEVICEONLINE = $100f; { Added 1.6 }
+ {$EXTERNALSYM CAP_DEVICEONLINE}
+ CAP_AUTOSCAN = $1010; { Added 1.6 }
+ {$EXTERNALSYM CAP_AUTOSCAN}
+ CAP_THUMBNAILSENABLED = $1011; { Added 1.7 }
+ {$EXTERNALSYM CAP_THUMBNAILSENABLED}
+ CAP_DUPLEX = $1012; { Added 1.7 }
+ {$EXTERNALSYM CAP_DUPLEX}
+ CAP_DUPLEXENABLED = $1013; { Added 1.7 }
+ {$EXTERNALSYM CAP_DUPLEXENABLED}
+ CAP_ENABLEDSUIONLY = $1014; { Added 1.7 }
+ {$EXTERNALSYM CAP_ENABLEDSUIONLY}
+ CAP_CUSTOMDSDATA = $1015; { Added 1.7 }
+ {$EXTERNALSYM CAP_CUSTOMDSDATA}
+ CAP_ENDORSER = $1016; { Added 1.7 }
+ {$EXTERNALSYM CAP_ENDORSER}
+ CAP_JOBCONTROL = $1017; { Added 1.7 }
+ {$EXTERNALSYM CAP_JOBCONTROL}
+ CAP_ALARMS = $1018; { Added 1.8 }
+ {$EXTERNALSYM CAP_ALARMS}
+ CAP_ALARMVOLUME = $1019; { Added 1.8 }
+ {$EXTERNALSYM CAP_ALARMVOLUME}
+ CAP_AUTOMATICCAPTURE = $101a; { Added 1.8 }
+ {$EXTERNALSYM CAP_AUTOMATICCAPTURE}
+ CAP_TIMEBEFOREFIRSTCAPTURE = $101b; { Added 1.8 }
+ {$EXTERNALSYM CAP_TIMEBEFOREFIRSTCAPTURE}
+ CAP_TIMEBETWEENCAPTURES = $101c; { Added 1.8 }
+ {$EXTERNALSYM CAP_TIMEBETWEENCAPTURES}
+ CAP_CLEARBUFFERS = $101d; { Added 1.8 }
+ {$EXTERNALSYM CAP_CLEARBUFFERS}
+ CAP_MAXBATCHBUFFERS = $101e; { Added 1.8 }
+ {$EXTERNALSYM CAP_MAXBATCHBUFFERS}
+ CAP_DEVICETIMEDATE = $101f; { Added 1.8 }
+ {$EXTERNALSYM CAP_DEVICETIMEDATE}
+ CAP_POWERSUPPLY = $1020; { Added 1.8 }
+ {$EXTERNALSYM CAP_POWERSUPPLY}
+ CAP_CAMERAPREVIEWUI = $1021; { Added 1.8 }
+ {$EXTERNALSYM CAP_CAMERAPREVIEWUI}
+ CAP_DEVICEEVENT = $1022; { Added 1.8 }
+ {$EXTERNALSYM CAP_DEVICEEVENT}
+ CAP_SERIALNUMBER = $1024; { Added 1.8 }
+ {$EXTERNALSYM CAP_SERIALNUMBER}
+ CAP_PRINTER = $1026; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTER}
+ CAP_PRINTERENABLED = $1027; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERENABLED}
+ CAP_PRINTERINDEX = $1028; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERINDEX}
+ CAP_PRINTERMODE = $1029; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERMODE}
+ CAP_PRINTERSTRING = $102a; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERSTRING}
+ CAP_PRINTERSUFFIX = $102b; { Added 1.8 }
+ {$EXTERNALSYM CAP_PRINTERSUFFIX}
+ CAP_LANGUAGE = $102c; { Added 1.8 }
+ {$EXTERNALSYM CAP_LANGUAGE}
+ CAP_FEEDERALIGNMENT = $102d; { Added 1.8 }
+ {$EXTERNALSYM CAP_FEEDERALIGNMENT}
+ CAP_FEEDERORDER = $102e; { Added 1.8 }
+ {$EXTERNALSYM CAP_FEEDERORDER}
+ CAP_REACQUIREALLOWED = $1030; { Added 1.8 }
+ {$EXTERNALSYM CAP_REACQUIREALLOWED}
+ CAP_BATTERYMINUTES = $1032; { Added 1.8 }
+ {$EXTERNALSYM CAP_BATTERYMINUTES}
+ CAP_BATTERYPERCENTAGE = $1033; { Added 1.8 }
+ {$EXTERNALSYM CAP_BATTERYPERCENTAGE}
+
+{ image data sources MAY support these caps }
+ ICAP_AUTOBRIGHT = $1100;
+ {$EXTERNALSYM ICAP_AUTOBRIGHT}
+ ICAP_BRIGHTNESS = $1101;
+ {$EXTERNALSYM ICAP_BRIGHTNESS}
+ ICAP_CONTRAST = $1103;
+ {$EXTERNALSYM ICAP_CONTRAST}
+ ICAP_CUSTHALFTONE = $1104;
+ {$EXTERNALSYM ICAP_CUSTHALFTONE}
+ ICAP_EXPOSURETIME = $1105;
+ {$EXTERNALSYM ICAP_EXPOSURETIME}
+ ICAP_FILTER = $1106;
+ {$EXTERNALSYM ICAP_FILTER}
+ ICAP_FLASHUSED = $1107;
+ {$EXTERNALSYM ICAP_FLASHUSED}
+ ICAP_GAMMA = $1108;
+ {$EXTERNALSYM ICAP_GAMMA}
+ ICAP_HALFTONES = $1109;
+ {$EXTERNALSYM ICAP_HALFTONES}
+ ICAP_HIGHLIGHT = $110a;
+ {$EXTERNALSYM ICAP_HIGHLIGHT}
+ ICAP_IMAGEFILEFORMAT = $110c;
+ {$EXTERNALSYM ICAP_IMAGEFILEFORMAT}
+ ICAP_LAMPSTATE = $110d;
+ {$EXTERNALSYM ICAP_LAMPSTATE}
+ ICAP_LIGHTSOURCE = $110e;
+ {$EXTERNALSYM ICAP_LIGHTSOURCE}
+ ICAP_ORIENTATION = $1110;
+ {$EXTERNALSYM ICAP_ORIENTATION}
+ ICAP_PHYSICALWIDTH = $1111;
+ {$EXTERNALSYM ICAP_PHYSICALWIDTH}
+ ICAP_PHYSICALHEIGHT = $1112;
+ {$EXTERNALSYM ICAP_PHYSICALHEIGHT}
+ ICAP_SHADOW = $1113;
+ {$EXTERNALSYM ICAP_SHADOW}
+ ICAP_FRAMES = $1114;
+ {$EXTERNALSYM ICAP_FRAMES}
+ ICAP_XNATIVERESOLUTION = $1116;
+ {$EXTERNALSYM ICAP_XNATIVERESOLUTION}
+ ICAP_YNATIVERESOLUTION = $1117;
+ {$EXTERNALSYM ICAP_YNATIVERESOLUTION}
+ ICAP_XRESOLUTION = $1118;
+ {$EXTERNALSYM ICAP_XRESOLUTION}
+ ICAP_YRESOLUTION = $1119;
+ {$EXTERNALSYM ICAP_YRESOLUTION}
+ ICAP_MAXFRAMES = $111a;
+ {$EXTERNALSYM ICAP_MAXFRAMES}
+ ICAP_TILES = $111b;
+ {$EXTERNALSYM ICAP_TILES}
+ ICAP_BITORDER = $111c;
+ {$EXTERNALSYM ICAP_BITORDER}
+ ICAP_CCITTKFACTOR = $111d;
+ {$EXTERNALSYM ICAP_CCITTKFACTOR}
+ ICAP_LIGHTPATH = $111e;
+ {$EXTERNALSYM ICAP_LIGHTPATH}
+ ICAP_PIXELFLAVOR = $111f;
+ {$EXTERNALSYM ICAP_PIXELFLAVOR}
+ ICAP_PLANARCHUNKY = $1120;
+ {$EXTERNALSYM ICAP_PLANARCHUNKY}
+ ICAP_ROTATION = $1121;
+ {$EXTERNALSYM ICAP_ROTATION}
+ ICAP_SUPPORTEDSIZES = $1122;
+ {$EXTERNALSYM ICAP_SUPPORTEDSIZES}
+ ICAP_THRESHOLD = $1123;
+ {$EXTERNALSYM ICAP_THRESHOLD}
+ ICAP_XSCALING = $1124;
+ {$EXTERNALSYM ICAP_XSCALING}
+ ICAP_YSCALING = $1125;
+ {$EXTERNALSYM ICAP_YSCALING}
+ ICAP_BITORDERCODES = $1126;
+ {$EXTERNALSYM ICAP_BITORDERCODES}
+ ICAP_PIXELFLAVORCODES = $1127;
+ {$EXTERNALSYM ICAP_PIXELFLAVORCODES}
+ ICAP_JPEGPIXELTYPE = $1128;
+ {$EXTERNALSYM ICAP_JPEGPIXELTYPE}
+ ICAP_TIMEFILL = $112a;
+ {$EXTERNALSYM ICAP_TIMEFILL}
+ ICAP_BITDEPTH = $112b;
+ {$EXTERNALSYM ICAP_BITDEPTH}
+ ICAP_BITDEPTHREDUCTION = $112c; { Added 1.5 }
+ {$EXTERNALSYM ICAP_BITDEPTHREDUCTION}
+ ICAP_UNDEFINEDIMAGESIZE = $112d; { Added 1.6 }
+ {$EXTERNALSYM ICAP_UNDEFINEDIMAGESIZE}
+ ICAP_IMAGEDATASET = $112e; { Added 1.7 }
+ {$EXTERNALSYM ICAP_IMAGEDATASET}
+ ICAP_EXTIMAGEINFO = $112f; { Added 1.7 }
+ {$EXTERNALSYM ICAP_EXTIMAGEINFO}
+ ICAP_MINIMUMHEIGHT = $1130; { Added 1.7 }
+ {$EXTERNALSYM ICAP_MINIMUMHEIGHT}
+ ICAP_MINIMUMWIDTH = $1131; { Added 1.7 }
+ {$EXTERNALSYM ICAP_MINIMUMWIDTH}
+ ICAP_FLIPROTATION = $1136; { Added 1.8 }
+ {$EXTERNALSYM ICAP_FLIPROTATION}
+ ICAP_BARCODEDETECTIONENABLED = $1137; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODEDETECTIONENABLED}
+ ICAP_SUPPORTEDBARCODETYPES = $1138; { Added 1.8 }
+ {$EXTERNALSYM ICAP_SUPPORTEDBARCODETYPES}
+ ICAP_BARCODEMAXSEARCHPRIORITIES = $1139; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODEMAXSEARCHPRIORITIES}
+ ICAP_BARCODESEARCHPRIORITIES = $113a; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODESEARCHPRIORITIES}
+ ICAP_BARCODESEARCHMODE = $113b; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODESEARCHMODE}
+ ICAP_BARCODEMAXRETRIES = $113c; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODEMAXRETRIES}
+ ICAP_BARCODETIMEOUT = $113d; { Added 1.8 }
+ {$EXTERNALSYM ICAP_BARCODETIMEOUT}
+ ICAP_ZOOMFACTOR = $113e; { Added 1.8 }
+ {$EXTERNALSYM ICAP_ZOOMFACTOR}
+ ICAP_PATCHCODEDETECTIONENABLED = $113f; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODEDETECTIONENABLED}
+ ICAP_SUPPORTEDPATCHCODETYPES = $1140; { Added 1.8 }
+ {$EXTERNALSYM ICAP_SUPPORTEDPATCHCODETYPES}
+ ICAP_PATCHCODEMAXSEARCHPRIORITIES= $1141; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODEMAXSEARCHPRIORITIES}
+ ICAP_PATCHCODESEARCHPRIORITIES = $1142; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODESEARCHPRIORITIES}
+ ICAP_PATCHCODESEARCHMODE = $1143; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODESEARCHMODE}
+ ICAP_PATCHCODEMAXRETRIES = $1144; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODEMAXRETRIES}
+ ICAP_PATCHCODETIMEOUT = $1145; { Added 1.8 }
+ {$EXTERNALSYM ICAP_PATCHCODETIMEOUT}
+ ICAP_FLASHUSED2 = $1146; { Added 1.8 }
+ {$EXTERNALSYM ICAP_FLASHUSED2}
+ ICAP_IMAGEFILTER = $1147; { Added 1.8 }
+ {$EXTERNALSYM ICAP_IMAGEFILTER}
+ ICAP_NOISEFILTER = $1148; { Added 1.8 }
+ {$EXTERNALSYM ICAP_NOISEFILTER}
+ ICAP_OVERSCAN = $1149; { Added 1.8 }
+ {$EXTERNALSYM ICAP_OVERSCAN}
+ ICAP_AUTOMATICBORDERDETECTION = $1150; { Added 1.8 }
+ {$EXTERNALSYM ICAP_AUTOMATICBORDERDETECTION}
+ ICAP_AUTOMATICDESKEW = $1151; { Added 1.8 }
+ {$EXTERNALSYM ICAP_AUTOMATICDESKEW}
+ ICAP_AUTOMATICROTATE = $1152; { Added 1.8 }
+ {$EXTERNALSYM ICAP_AUTOMATICROTATE}
+ ICAP_JPEGQUALITY = $1153; { Added 1.9 }
+ {$EXTERNALSYM ICAP_JPEGQUALITY}
+
+{ image data sources MAY support these audio caps }
+ ACAP_AUDIOFILEFORMAT = $1201; { Added 1.8 }
+ {$EXTERNALSYM ACAP_AUDIOFILEFORMAT}
+ ACAP_XFERMECH = $1202; { Added 1.8 }
+ {$EXTERNALSYM ACAP_XFERMECH}
+
+{ -----------------------------------------------------------------------
+
+ Version 1.7: Following is Extended Image Info Attributes.
+ July 1997
+ KHL
+
+ ----------------------------------------------------------------------- }
+
+ TWEI_BARCODEX = $1200;
+ {$EXTERNALSYM TWEI_BARCODEX}
+ TWEI_BARCODEY = $1201;
+ {$EXTERNALSYM TWEI_BARCODEY}
+ TWEI_BARCODETEXT = $1202;
+ {$EXTERNALSYM TWEI_BARCODETEXT}
+ TWEI_BARCODETYPE = $1203;
+ {$EXTERNALSYM TWEI_BARCODETYPE}
+ TWEI_DESHADETOP = $1204;
+ {$EXTERNALSYM TWEI_DESHADETOP}
+ TWEI_DESHADELEFT = $1205;
+ {$EXTERNALSYM TWEI_DESHADELEFT}
+ TWEI_DESHADEHEIGHT = $1206;
+ {$EXTERNALSYM TWEI_DESHADEHEIGHT}
+ TWEI_DESHADEWIDTH = $1207;
+ {$EXTERNALSYM TWEI_DESHADEWIDTH}
+ TWEI_DESHADESIZE = $1208;
+ {$EXTERNALSYM TWEI_DESHADESIZE}
+ TWEI_SPECKLESREMOVED = $1209;
+ {$EXTERNALSYM TWEI_SPECKLESREMOVED}
+ TWEI_HORZLINEXCOORD = $120A;
+ {$EXTERNALSYM TWEI_HORZLINEXCOORD}
+ TWEI_HORZLINEYCOORD = $120B;
+ {$EXTERNALSYM TWEI_HORZLINEYCOORD}
+ TWEI_HORZLINELENGTH = $120C;
+ {$EXTERNALSYM TWEI_HORZLINELENGTH}
+ TWEI_HORZLINETHICKNESS = $120D;
+ {$EXTERNALSYM TWEI_HORZLINETHICKNESS}
+ TWEI_VERTLINEXCOORD = $120E;
+ {$EXTERNALSYM TWEI_VERTLINEXCOORD}
+ TWEI_VERTLINEYCOORD = $120F;
+ {$EXTERNALSYM TWEI_VERTLINEYCOORD}
+ TWEI_VERTLINELENGTH = $1210;
+ {$EXTERNALSYM TWEI_VERTLINELENGTH}
+ TWEI_VERTLINETHICKNESS = $1211;
+ {$EXTERNALSYM TWEI_VERTLINETHICKNESS}
+ TWEI_PATCHCODE = $1212;
+ {$EXTERNALSYM TWEI_PATCHCODE}
+ TWEI_ENDORSEDTEXT = $1213;
+ {$EXTERNALSYM TWEI_ENDORSEDTEXT}
+ TWEI_FORMCONFIDENCE = $1214;
+ {$EXTERNALSYM TWEI_FORMCONFIDENCE}
+ TWEI_FORMTEMPLATEMATCH = $1215;
+ {$EXTERNALSYM TWEI_FORMTEMPLATEMATCH}
+ TWEI_FORMTEMPLATEPAGEMATCH = $1216;
+ {$EXTERNALSYM TWEI_FORMTEMPLATEPAGEMATCH}
+ TWEI_FORMHORZDOCOFFSET = $1217;
+ {$EXTERNALSYM TWEI_FORMHORZDOCOFFSET}
+ TWEI_FORMVERTDOCOFFSET = $1218;
+ {$EXTERNALSYM TWEI_FORMVERTDOCOFFSET}
+ TWEI_BARCODECOUNT = $1219;
+ {$EXTERNALSYM TWEI_BARCODECOUNT}
+ TWEI_BARCODECONFIDENCE = $121A;
+ {$EXTERNALSYM TWEI_BARCODECONFIDENCE}
+ TWEI_BARCODEROTATION = $121B;
+ {$EXTERNALSYM TWEI_BARCODEROTATION}
+ TWEI_BARCODETEXTLENGTH = $121C;
+ {$EXTERNALSYM TWEI_BARCODETEXTLENGTH}
+ TWEI_DESHADECOUNT = $121D;
+ {$EXTERNALSYM TWEI_DESHADECOUNT}
+ TWEI_DESHADEBLACKCOUNTOLD = $121E;
+ {$EXTERNALSYM TWEI_DESHADEBLACKCOUNTOLD}
+ TWEI_DESHADEBLACKCOUNTNEW = $121F;
+ {$EXTERNALSYM TWEI_DESHADEBLACKCOUNTNEW}
+ TWEI_DESHADEBLACKRLMIN = $1220;
+ {$EXTERNALSYM TWEI_DESHADEBLACKRLMIN}
+ TWEI_DESHADEBLACKRLMAX = $1221;
+ {$EXTERNALSYM TWEI_DESHADEBLACKRLMAX}
+ TWEI_DESHADEWHITECOUNTOLD = $1222;
+ {$EXTERNALSYM TWEI_DESHADEWHITECOUNTOLD}
+ TWEI_DESHADEWHITECOUNTNEW = $1223;
+ {$EXTERNALSYM TWEI_DESHADEWHITECOUNTNEW}
+ TWEI_DESHADEWHITERLMIN = $1224;
+ {$EXTERNALSYM TWEI_DESHADEWHITERLMIN}
+ TWEI_DESHADEWHITERLAVE = $1225;
+ {$EXTERNALSYM TWEI_DESHADEWHITERLAVE}
+ TWEI_DESHADEWHITERLMAX = $1226;
+ {$EXTERNALSYM TWEI_DESHADEWHITERLMAX}
+ TWEI_BLACKSPECKLESREMOVED = $1227;
+ {$EXTERNALSYM TWEI_BLACKSPECKLESREMOVED}
+ TWEI_WHITESPECKLESREMOVED = $1228;
+ {$EXTERNALSYM TWEI_WHITESPECKLESREMOVED}
+ TWEI_HORZLINECOUNT = $1229;
+ {$EXTERNALSYM TWEI_HORZLINECOUNT}
+ TWEI_VERTLINECOUNT = $122A;
+ {$EXTERNALSYM TWEI_VERTLINECOUNT}
+ TWEI_DESKEWSTATUS = $122B;
+ {$EXTERNALSYM TWEI_DESKEWSTATUS}
+ TWEI_SKEWORIGINALANGLE = $122C;
+ {$EXTERNALSYM TWEI_SKEWORIGINALANGLE}
+ TWEI_SKEWFINALANGLE = $122D;
+ {$EXTERNALSYM TWEI_SKEWFINALANGLE}
+ TWEI_SKEWCONFIDENCE = $122E;
+ {$EXTERNALSYM TWEI_SKEWCONFIDENCE}
+ TWEI_SKEWWINDOWX1 = $122F;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX1}
+ TWEI_SKEWWINDOWY1 = $1230;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY1}
+ TWEI_SKEWWINDOWX2 = $1231;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX2}
+ TWEI_SKEWWINDOWY2 = $1232;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY2}
+ TWEI_SKEWWINDOWX3 = $1233;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX3}
+ TWEI_SKEWWINDOWY3 = $1234;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY3}
+ TWEI_SKEWWINDOWX4 = $1235;
+ {$EXTERNALSYM TWEI_SKEWWINDOWX4}
+ TWEI_SKEWWINDOWY4 = $1236;
+ {$EXTERNALSYM TWEI_SKEWWINDOWY4}
+ TWEI_BOOKNAME = $1238; { added 1.9 }
+ {$EXTERNALSYM TWEI_BOOKNAME}
+ TWEI_CHAPTERNUMBER = $1239; { added 1.9 }
+ {$EXTERNALSYM TWEI_CHAPTERNUMBER}
+ TWEI_DOCUMENTNUMBER = $123A; { added 1.9 }
+ {$EXTERNALSYM TWEI_DOCUMENTNUMBER}
+ TWEI_PAGENUMBER = $123B; { added 1.9 }
+ {$EXTERNALSYM TWEI_PAGENUMBER}
+ TWEI_CAMERA = $123C; { added 1.9 }
+ {$EXTERNALSYM TWEI_CAMERA}
+ TWEI_FRAMENUMBER = $123D; { added 1.9 }
+ {$EXTERNALSYM TWEI_FRAMENUMBER}
+ TWEI_FRAME = $123E; { added 1.9 }
+ {$EXTERNALSYM TWEI_FRAME}
+ TWEI_PIXELFLAVOR = $123F; { added 1.9 }
+ {$EXTERNALSYM TWEI_PIXELFLAVOR}
+
+ TWEJ_NONE = $0000;
+ {$EXTERNALSYM TWEJ_NONE}
+ TWEJ_MIDSEPARATOR = $0001;
+ {$EXTERNALSYM TWEJ_MIDSEPARATOR}
+ TWEJ_PATCH1 = $0002;
+ {$EXTERNALSYM TWEJ_PATCH1}
+ TWEJ_PATCH2 = $0003;
+ {$EXTERNALSYM TWEJ_PATCH2}
+ TWEJ_PATCH3 = $0004;
+ {$EXTERNALSYM TWEJ_PATCH3}
+ TWEJ_PATCH4 = $0005;
+ {$EXTERNALSYM TWEJ_PATCH4}
+ TWEJ_PATCH6 = $0006;
+ {$EXTERNALSYM TWEJ_PATCH6}
+ TWEJ_PATCHT = $0007;
+ {$EXTERNALSYM TWEJ_PATCHT}
+
+ { Added 1.8 }
+ { TW_PASSTHRU.Direction values }
+ TWDR_GET = 1;
+ {$EXTERNALSYM TWDR_GET}
+ TWDR_SET = 2;
+ {$EXTERNALSYM TWDR_SET}
+
+{**************************************************************************
+ * Return Codes and Condition Codes section *
+ ************************************************************************** }
+
+{ Return Codes: DSM_Entry and DS_Entry may return any one of these values. }
+ TWRC_CUSTOMBASE = $8000;
+ {$EXTERNALSYM TWRC_CUSTOMBASE}
+
+ TWRC_SUCCESS = 0;
+ {$EXTERNALSYM TWRC_SUCCESS}
+ TWRC_FAILURE = 1; { Application may get TW_STATUS for info on failure }
+ {$EXTERNALSYM TWRC_FAILURE}
+ TWRC_CHECKSTATUS = 2; { "tried hard": ; get status }
+ {$EXTERNALSYM TWRC_CHECKSTATUS}
+ TWRC_CANCEL = 3;
+ {$EXTERNALSYM TWRC_CANCEL}
+ TWRC_DSEVENT = 4;
+ {$EXTERNALSYM TWRC_DSEVENT}
+ TWRC_NOTDSEVENT = 5;
+ {$EXTERNALSYM TWRC_NOTDSEVENT}
+ TWRC_XFERDONE = 6;
+ {$EXTERNALSYM TWRC_XFERDONE}
+ TWRC_ENDOFLIST = 7; { After MSG_GETNEXT if nothing left }
+ {$EXTERNALSYM TWRC_ENDOFLIST}
+ TWRC_INFONOTSUPPORTED = 8;
+ {$EXTERNALSYM TWRC_INFONOTSUPPORTED}
+ TWRC_DATANOTAVAILABLE = 9;
+ {$EXTERNALSYM TWRC_DATANOTAVAILABLE}
+
+{ Condition Codes: Application gets these by doing DG_CONTROL DAT_STATUS MSG_GET. }
+ TWCC_CUSTOMBASE = $8000;
+ {$EXTERNALSYM TWCC_CUSTOMBASE}
+
+ TWCC_SUCCESS = 0; { It worked! }
+ {$EXTERNALSYM TWCC_SUCCESS}
+ TWCC_BUMMER = 1; { Failure due to unknown causes }
+ {$EXTERNALSYM TWCC_BUMMER}
+ TWCC_LOWMEMORY = 2; { Not enough memory to perform operation }
+ {$EXTERNALSYM TWCC_LOWMEMORY}
+ TWCC_NODS = 3; { No Data Source }
+ {$EXTERNALSYM TWCC_NODS}
+ TWCC_MAXCONNECTIONS = 4; { DS is connected to max possible applications }
+ {$EXTERNALSYM TWCC_MAXCONNECTIONS}
+ TWCC_OPERATIONERROR = 5; { DS or DSM reported error, application shouldn't }
+ {$EXTERNALSYM TWCC_OPERATIONERROR}
+ TWCC_BADCAP = 6; { Unknown capability }
+ {$EXTERNALSYM TWCC_BADCAP}
+ TWCC_BADPROTOCOL = 9; { Unrecognized MSG DG DAT combination }
+ {$EXTERNALSYM TWCC_BADPROTOCOL}
+ TWCC_BADVALUE = 10; { Data parameter out of range }
+ {$EXTERNALSYM TWCC_BADVALUE}
+ TWCC_SEQERROR = 11; { DG DAT MSG out of expected sequence }
+ {$EXTERNALSYM TWCC_SEQERROR}
+ TWCC_BADDEST = 12; { Unknown destination Application/Source in DSM_Entry }
+ {$EXTERNALSYM TWCC_BADDEST}
+ TWCC_CAPUNSUPPORTED = 13; { Capability not supported by source }
+ {$EXTERNALSYM TWCC_CAPUNSUPPORTED}
+ TWCC_CAPBADOPERATION = 14; { Operation not supported by capability }
+ {$EXTERNALSYM TWCC_CAPBADOPERATION}
+ TWCC_CAPSEQERROR = 15; { Capability has dependancy on other capability }
+ {$EXTERNALSYM TWCC_CAPSEQERROR}
+
+{ Added 1.8 }
+ TWCC_DENIED = 16; { File System operation is denied (file is protected) }
+ {$EXTERNALSYM TWCC_DENIED}
+ TWCC_FILEEXISTS = 17; { Operation failed because file already exists. }
+ {$EXTERNALSYM TWCC_FILEEXISTS}
+ TWCC_FILENOTFOUND = 18; { File not found }
+ {$EXTERNALSYM TWCC_FILENOTFOUND}
+ TWCC_NOTEMPTY = 19; { Operation failed because directory is not empty }
+ {$EXTERNALSYM TWCC_NOTEMPTY}
+ TWCC_PAPERJAM = 20; { The feeder is jammed }
+ {$EXTERNALSYM TWCC_PAPERJAM}
+ TWCC_PAPERDOUBLEFEED = 21; { The feeder detected multiple pages }
+ {$EXTERNALSYM TWCC_PAPERDOUBLEFEED}
+ TWCC_FILEWRITEERROR = 22; { Error writing the file (meant for things like disk full conditions) }
+ {$EXTERNALSYM TWCC_FILEWRITEERROR}
+ TWCC_CHECKDEVICEONLINE = 23; { The device went offline prior to or during this operation }
+ {$EXTERNALSYM TWCC_CHECKDEVICEONLINE}
+
+
+{ bit patterns: for query the operation that are supported by the data source on a capability }
+{ Application gets these through DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT }
+{ Added 1.6 }
+ TWQC_GET = $0001;
+ {$EXTERNALSYM TWQC_GET}
+ TWQC_SET = $0002;
+ {$EXTERNALSYM TWQC_SET}
+ TWQC_GETDEFAULT = $0004;
+ {$EXTERNALSYM TWQC_GETDEFAULT}
+ TWQC_GETCURRENT = $0008;
+ {$EXTERNALSYM TWQC_GETCURRENT}
+ TWQC_RESET = $0010;
+ {$EXTERNALSYM TWQC_RESET}
+
+{***************************************************************************
+ * Entry Points *
+ *************************************************************************** }
+
+{*********************************************************************
+ * Function: DSM_Entry, the only entry point into the Data Source Manager.
+ *
+ * Parameters:
+ * pOrigin Identifies the source module of the message. This could
+ * identify an Application, a Source, or the Source Manager.
+ *
+ * pDest Identifies the destination module for the message.
+ * This could identify an application or a data source.
+ * If this is NULL, the message goes to the Source Manager.
+ *
+ * DG The Data Group.
+ * Example: DG_IMAGE.
+ *
+ * DAT The Data Attribute Type.
+ * Example: DAT_IMAGEMEMXFER.
+ *
+ * MSG The message. Messages are interpreted by the destination module
+ * with respect to the Data Group and the Data Attribute Type.
+ * Example: MSG_GET.
+ *
+ * pData A pointer to the data structure or variable identified
+ * by the Data Attribute Type.
+ * Example: (TW_MEMREF)&ImageMemXfer
+ * where ImageMemXfer is a TW_IMAGEMEMXFER structure.
+ *
+ * Returns:
+ * ReturnCode
+ * Example: TWRC_SUCCESS.
+ *
+ ******************************************************************* }
+type
+ {$EXTERNALSYM DSMENTRYPROC}
+ DSMENTRYPROC = function(pOrigin: pTW_IDENTITY; pDest: pTW_IDENTITY;
+ DG: TW_UINT32; DAT: TW_UINT16; MSG: TW_UINT16;
+ pData: TW_MEMREF): TW_UINT16; stdcall;
+
+ TDSMEntryProc = DSMENTRYPROC;
+
+var
+ DSM_Entry: TDSMEntryProc = nil;
+
+{*********************************************************************
+ * Function: DS_Entry, the entry point provided by a Data Source.
+ *
+ * Parameters:
+ * pOrigin Identifies the source module of the message. This could
+ * identify an application or the Data Source Manager.
+ *
+ * DG The Data Group.
+ * Example: DG_IMAGE.
+ *
+ * DAT The Data Attribute Type.
+ * Example: DAT_IMAGEMEMXFER.
+ *
+ * MSG The message. Messages are interpreted by the data source
+ * with respect to the Data Group and the Data Attribute Type.
+ * Example: MSG_GET.
+ *
+ * pData A pointer to the data structure or variable identified
+ * by the Data Attribute Type.
+ * Example: (TW_MEMREF)&ImageMemXfer
+ * where ImageMemXfer is a TW_IMAGEMEMXFER structure.
+ *
+ * Returns:
+ * ReturnCode
+ * Example: TWRC_SUCCESS.
+ *
+ * Note:
+ * The DSPROC type is only used by an application when it calls
+ * a Data Source directly, bypassing the Data Source Manager.
+ *
+ ******************************************************************* }
+type
+ DSENTRYPROC = function(pOrigin: pTW_IDENTITY; DG: TW_UINT32; DAT: TW_UINT16;
+ MSG: TW_UINT16; pData: TW_MEMREF): TW_UINT16; stdcall;
+ {$EXTERNALSYM DSENTRYPROC}
+
+ TDSEntryProc = DSENTRYPROC;
+
+var
+ DS_Entry: TDSEntryProc = nil;
+
+implementation
+
+end.
+
diff --git a/T03贸易布匹检验/delphitwain/delphifans.com.nfo b/T03贸易布匹检验/delphitwain/delphifans.com.nfo
new file mode 100644
index 0000000..cbe431f
--- /dev/null
+++ b/T03贸易布匹检验/delphitwain/delphifans.com.nfo
@@ -0,0 +1,25 @@
+
+ Vcl
+ '
+ ' Tips
+ Source
+
+ Tools
+ _..,----,.._
+ .-;'-.,____,.-';
+ (( | |
+ `)) DelphiFans ;
+ ` \ /
+ .-' `,.____.,' '-.
+ ( '------' )
+ `-=..________..--'
+
+ enjoy by
+ DelphiFans.com
+
+ http://www.delphifans.com
+
+
+
+
+ Update Everyday...
diff --git a/T03贸易布匹检验/logon.dfm b/T03贸易布匹检验/logon.dfm
new file mode 100644
index 0000000..e468607
--- /dev/null
+++ b/T03贸易布匹检验/logon.dfm
@@ -0,0 +1,413 @@
+object FormLogon: TFormLogon
+ Left = 210
+ Top = 81
+ BorderStyle = bsNone
+ Caption = #29992#25143#30331#24405
+ ClientHeight = 516
+ ClientWidth = 761
+ Color = clSilver
+ DefaultMonitor = dmDesktop
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ OldCreateOrder = False
+ Position = poScreenCenter
+ OnActivate = FormActivate
+ OnClose = FormClose
+ OnCloseQuery = FormCloseQuery
+ OnCreate = FormCreate
+ OnKeyDown = Form
+ OnKeyPress = FormKeyPress
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 35
+ object MovePanel1: TMovePanel
+ Left = 0
+ Top = 0
+ Width = 761
+ Height = 516
+ Align = alClient
+ BevelInner = bvLowered
+ BevelWidth = 2
+ Color = 16242829
+ Ctl3D = False
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = []
+ ParentBackground = False
+ ParentCtl3D = False
+ ParentFont = True
+ TabOrder = 0
+ object Label1: TLabel
+ Left = 151
+ Top = 109
+ Width = 83
+ Height = 33
+ Caption = #24080' '#21495
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -32
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ Transparent = True
+ end
+ object Label2: TLabel
+ Left = 151
+ Top = 183
+ Width = 83
+ Height = 33
+ Caption = #23494' '#30721
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -32
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ Transparent = True
+ end
+ object Label3: TLabel
+ Left = 253
+ Top = 46
+ Width = 201
+ Height = 35
+ Alignment = taCenter
+ Caption = #31995' '#32479' '#30331' '#24405
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ end
+ object Edit2: TEdit
+ Left = 242
+ Top = 182
+ Width = 287
+ Height = 39
+ Ctl3D = False
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -32
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ MaxLength = 15
+ ParentCtl3D = False
+ ParentFont = True
+ PasswordChar = '*'
+ TabOrder = 0
+ OnKeyDown = Edit2KeyDown
+ OnKeyPress = FormKeyPress
+ end
+ object ToolBar1: TToolBar
+ Left = 127
+ Top = 253
+ Width = 600
+ Height = 58
+ Align = alNone
+ ButtonHeight = 41
+ ButtonWidth = 194
+ DockSite = True
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -35
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ List = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 1
+ Transparent = True
+ object BtnOk: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = ' '#30331#24405' '
+ ImageIndex = 98
+ ParentShowHint = False
+ ShowHint = False
+ OnClick = BtnOkClick
+ end
+ object ToolButton12: TToolButton
+ Left = 126
+ Top = 0
+ Caption = ' '#20462#25913#23494#30721' '
+ ImageIndex = 30
+ Visible = False
+ OnClick = ToolButton12Click
+ end
+ object BtnQuit: TToolButton
+ Left = 320
+ Top = 0
+ AutoSize = True
+ Caption = ' '#36864#20986' '
+ ImageIndex = 29
+ OnClick = BtnQuitClick
+ end
+ end
+ object ToolBar2: TToolBar
+ Left = 4
+ Top = 415
+ Width = 753
+ Height = 97
+ Align = alBottom
+ ButtonHeight = 54
+ ButtonWidth = 62
+ DockSite = True
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -48
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ List = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 2
+ Transparent = True
+ object ToolButton6: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = ' '
+ Enabled = False
+ ImageIndex = 34
+ end
+ object ToolButton23: TToolButton
+ Left = 66
+ Top = 0
+ Caption = '5'
+ ImageIndex = 40
+ OnClick = ToolButton13Click
+ end
+ object ToolButton24: TToolButton
+ Left = 128
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 39
+ end
+ object ToolButton7: TToolButton
+ Left = 169
+ Top = 0
+ Caption = '6'
+ ImageIndex = 98
+ ParentShowHint = False
+ ShowHint = False
+ OnClick = ToolButton13Click
+ end
+ object ToolButton8: TToolButton
+ Left = 231
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 29
+ OnClick = ToolButton13Click
+ end
+ object ToolButton9: TToolButton
+ Left = 272
+ Top = 0
+ Caption = '7'
+ ImageIndex = 30
+ OnClick = ToolButton13Click
+ end
+ object ToolButton10: TToolButton
+ Left = 334
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 31
+ OnClick = ToolButton13Click
+ end
+ object ToolButton11: TToolButton
+ Left = 375
+ Top = 0
+ Caption = '8'
+ ImageIndex = 32
+ OnClick = ToolButton13Click
+ end
+ object ToolButton19: TToolButton
+ Left = 437
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 33
+ OnClick = ToolButton13Click
+ end
+ object ToolButton20: TToolButton
+ Left = 478
+ Top = 0
+ Caption = '9'
+ ImageIndex = 34
+ OnClick = ToolButton13Click
+ end
+ object ToolButton21: TToolButton
+ Left = 540
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 35
+ OnClick = ToolButton13Click
+ end
+ object ToolButton25: TToolButton
+ Left = 581
+ Top = 0
+ Caption = #8592
+ ImageIndex = 38
+ OnClick = ToolButton23Click
+ end
+ end
+ object ToolBar3: TToolBar
+ Left = 4
+ Top = 347
+ Width = 753
+ Height = 68
+ Align = alBottom
+ ButtonHeight = 54
+ ButtonWidth = 62
+ DockSite = True
+ EdgeInner = esNone
+ EdgeOuter = esNone
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -48
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ List = True
+ ParentFont = True
+ ShowCaptions = True
+ TabOrder = 3
+ Transparent = True
+ object ToolButton22: TToolButton
+ Left = 0
+ Top = 0
+ AutoSize = True
+ Caption = ' '
+ Enabled = False
+ ImageIndex = 39
+ end
+ object ToolButton2: TToolButton
+ Left = 66
+ Top = 0
+ Caption = '0'
+ ImageIndex = 98
+ ParentShowHint = False
+ ShowHint = False
+ OnClick = ToolButton13Click
+ end
+ object ToolButton5: TToolButton
+ Left = 128
+ Top = 0
+ AutoSize = True
+ Caption = ' '
+ Enabled = False
+ ImageIndex = 31
+ OnClick = ToolButton13Click
+ end
+ object ToolButton3: TToolButton
+ Left = 169
+ Top = 0
+ Caption = '1'
+ ImageIndex = 29
+ OnClick = ToolButton13Click
+ end
+ object ToolButton4: TToolButton
+ Left = 231
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 30
+ OnClick = ToolButton13Click
+ end
+ object ToolButton13: TToolButton
+ Left = 272
+ Top = 0
+ Caption = '2'
+ ImageIndex = 32
+ OnClick = ToolButton13Click
+ end
+ object ToolButton14: TToolButton
+ Left = 334
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 33
+ OnClick = ToolButton13Click
+ end
+ object ToolButton15: TToolButton
+ Left = 375
+ Top = 0
+ Caption = '3'
+ ImageIndex = 34
+ OnClick = ToolButton13Click
+ end
+ object ToolButton16: TToolButton
+ Left = 437
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 35
+ OnClick = ToolButton13Click
+ end
+ object ToolButton17: TToolButton
+ Left = 478
+ Top = 0
+ Caption = '4'
+ ImageIndex = 36
+ OnClick = ToolButton13Click
+ end
+ object ToolButton18: TToolButton
+ Left = 540
+ Top = 0
+ AutoSize = True
+ Enabled = False
+ ImageIndex = 37
+ OnClick = ToolButton13Click
+ end
+ object ToolButton1: TToolButton
+ Left = 581
+ Top = 0
+ Caption = #8592
+ ImageIndex = 39
+ OnClick = ToolButton1Click
+ end
+ end
+ object Edit1: TComboBox
+ Left = 242
+ Top = 108
+ Width = 288
+ Height = 41
+ Style = csDropDownList
+ Ctl3D = False
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -32
+ Font.Name = #23435#20307
+ Font.Style = [fsBold]
+ ParentCtl3D = False
+ ParentFont = True
+ TabOrder = 4
+ OnExit = ComboBox1Exit
+ end
+ end
+ object Timer1: TTimer
+ Enabled = False
+ Interval = 100
+ OnTimer = Timer1Timer
+ Left = 16
+ Top = 80
+ end
+ object ADQ_Tmp: TADOQuery
+ Connection = FormMain.ADOConnection1
+ Parameters = <>
+ Left = 24
+ Top = 160
+ end
+end
diff --git a/T03贸易布匹检验/logon.pas b/T03贸易布匹检验/logon.pas
new file mode 100644
index 0000000..402bdf5
--- /dev/null
+++ b/T03贸易布匹检验/logon.pas
@@ -0,0 +1,321 @@
+unit logon;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, StdCtrls, Buttons, ExtCtrls, MovePanel, ADODB, DB, ComCtrls, ToolWin,
+ IniFiles;
+
+type
+ TFormLogon = class(TForm)
+ Timer1: TTimer;
+ MovePanel1: TMovePanel;
+ Label1: TLabel;
+ Label2: TLabel;
+ Edit2: TEdit;
+ Label3: TLabel;
+ ToolBar1: TToolBar;
+ BtnOk: TToolButton;
+ BtnQuit: TToolButton;
+ ToolButton12: TToolButton;
+ ToolBar2: TToolBar;
+ ToolButton6: TToolButton;
+ ToolButton7: TToolButton;
+ ToolButton8: TToolButton;
+ ToolButton9: TToolButton;
+ ToolButton10: TToolButton;
+ ToolButton11: TToolButton;
+ ToolButton19: TToolButton;
+ ToolButton20: TToolButton;
+ ToolButton21: TToolButton;
+ ToolButton25: TToolButton;
+ ToolBar3: TToolBar;
+ ToolButton2: TToolButton;
+ ToolButton3: TToolButton;
+ ToolButton4: TToolButton;
+ ToolButton5: TToolButton;
+ ToolButton13: TToolButton;
+ ToolButton14: TToolButton;
+ ToolButton15: TToolButton;
+ ToolButton16: TToolButton;
+ ToolButton17: TToolButton;
+ ToolButton18: TToolButton;
+ ADQ_Tmp: TADOQuery;
+ ToolButton22: TToolButton;
+ ToolButton24: TToolButton;
+ Edit1: TComboBox;
+ ToolButton1: TToolButton;
+ ToolButton23: TToolButton;
+ procedure btnoClick(Sender: TObject);
+ procedure Form(Sender: TObject; var Key: Word; Shift: TShiftState);
+ procedure FormShow(Sender: TObject);
+ procedure BtnOkClick(Sender: TObject);
+ procedure FormKeyPress(Sender: TObject; var Key: Char);
+ procedure Timer1Timer(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+ procedure BtnQuitClick(Sender: TObject);
+ procedure Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+ procedure FormCreate(Sender: TObject);
+ procedure FormActivate(Sender: TObject);
+ procedure Edit1Exit(Sender: TObject);
+ procedure ToolButton13Click(Sender: TObject);
+ procedure ToolButton23Click(Sender: TObject);
+ procedure ComboBox1Exit(Sender: TObject);
+ procedure ToolButton12Click(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ FormLogon: TFormLogon;
+ IniFile: TIniFile;
+
+implementation
+
+uses
+ Spmain, JDAESExtend, U_upPassword, U_iniParam;
+
+
+{$R *.dfm}
+
+procedure TFormLogon.FormCreate(Sender: TObject);
+begin
+ Edit1.Text := '';
+end;
+
+procedure TFormLogon.FormShow(Sender: TObject);
+var
+ fsj: string;
+begin
+ try
+ IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TradeInspFile.INI');
+ fsj := IniFile.ReadString('', 'Ա', '');
+ finally
+ IniFile.Free;
+ end;
+ with ADQ_Tmp do
+ begin
+ Close;
+ sql.Clear;
+ SQL.Add(fsj);
+ Open;
+ end;
+ Edit1.Items.Clear;
+ with ADQ_Tmp do
+ begin
+ First;
+ while not Eof do
+ begin
+ Edit1.Items.Add(Trim(fieldbyname('UserId').AsString));
+ Next;
+ end;
+ end;
+ Edit1.SetFocus;
+end;
+
+procedure TFormLogon.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ Action := CaFree;
+end;
+
+procedure TFormLogon.Form(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+ if Key = 13 then
+ begin
+ PostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);
+ Key := 0;
+ end;
+end;
+
+procedure TFormLogon.btnoClick(Sender: TObject);
+begin
+ application.Terminate;
+end;
+
+procedure TFormLogon.BtnOkClick(Sender: TObject);
+type
+ TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: PAnsiChar; GName: PAnsiChar; DataBase: PAnsiChar; Title: PAnsiChar; Parameters1: PAnsiChar; Parameters2: PAnsiChar; Parameters3: PAnsiChar; Parameters4: PAnsiChar; Parameters5: PAnsiChar; Parameters6: PAnsiChar; Parameters7: PAnsiChar; Parameters8: PAnsiChar; Parameters9: PAnsiChar; Parameters10: PAnsiChar; DataBaseStr: PAnsiChar): hwnd; stdcall;
+var
+ Tf: TMyFunc;
+ Tp: TFarProc;
+ Th: Thandle;
+ newh: hwnd;
+ bm, mm, mz, mm2, mm3: string;
+ conString: string;
+begin
+// if (Edit1.Text = '') then
+// begin
+// Application.MessageBox('ʺû¼,¼롣', 'Ϣʾ', MB_OK or MB_ICONinformation);
+// Edit1.SetFocus;
+// exit;
+// end;
+
+ with ADQ_Tmp do
+ begin
+ sql.Clear;
+ sql.add('SELECT userid,username,password,pw FROM SY_User WHERE userid=' + '''' + trim(Edit1.Text) + '''');
+ Open;
+ bm := Fields[0].AsString;
+ mz := Fields[1].AsString;
+ mm := Trim(Fields[2].AsString);
+ mm3 := Fields[3].AsString;
+ if Trim(mm) <> '' then
+ mm2 := Trim(DecryptString(Trim(mm), 'ljb^0122!@#*&^%$', kb128));
+ { if Trim(mm) <> '' then
+ mm2 := Trim(DecryptString(Trim(mm), 'ljb^0122!@#*&^%$', kb128))
+ else
+ begin
+ Application.MessageBox('벻Ϊգ', 'ʾ', 0);
+ Exit;
+ end; }
+ close;
+ end;
+
+ if (mm2 = trim(edit2.text)) and (bm <> '') then
+// if (mm3 = trim(edit2.text)) and (bm <> '') then
+ begin
+ FormMain.StatusBar1.Panels[1].Text := 'Ա:' + mz;
+ FormMain.StatusBar1.Panels[2].Text := 'Ϣ˾';
+ FormMain.User_Name := trim(mz);
+ FormMain.User_Id := trim(bm);
+
+ // fuserName:=trim(ADOQueryTmp.fieldbyname('userName').AsString);
+ Th := LoadLibrary('FileUpdate.dll');
+ if Th > 0 then
+ begin
+ try
+ Tp := GetProcAddress(Th, 'GetDllForm');
+ if Tp <> nil then
+ begin
+ Tf := TMyFunc(Tp);
+ newh := Tf(Application, 0, 2, 0, 0, PAnsiChar(FormMain.User_Id), PAnsiChar(FormMain.User_Name), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(''), PAnsiChar(FormMain.ConDateBaseString));
+ end
+ else
+ begin
+ //ShowMessage('ӡִд');
+ end;
+ finally
+ //FreeLibrary(Th);
+ end;
+ end
+ else
+ begin
+ ShowMessage('ҲFileUpdate.dll');
+ end;
+ FormLogon.close;
+ FormMain.Show;
+ end
+ else
+ Application.MessageBox('', 'Ϣʾ', MB_OK or MB_ICONinformation);
+
+
+ {FormLogon.close;
+ FormMain.Show;}
+end;
+
+procedure TFormLogon.FormKeyPress(Sender: TObject; var Key: Char);
+begin
+ {key:=UpCase(key);
+ if (Key in ['''']) then
+ Key := #0;
+ if FormLogon.Visible then
+ begin
+ if key=#13 then
+ begin
+ key:=#0;
+ FormLogon.perform(WM_NEXTDLGCTL,0,0);
+ end;
+
+ end;}
+
+end;
+
+procedure TFormLogon.Timer1Timer(Sender: TObject);
+begin
+ Edit1.Text := '';
+ Edit2.Text := '';
+end;
+
+procedure TFormLogon.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+begin
+ if FormMain.User_ID = '' then
+ application.Terminate;
+end;
+
+procedure TFormLogon.BtnQuitClick(Sender: TObject);
+begin
+ application.Terminate;
+end;
+
+procedure TFormLogon.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+ if Key = VK_Return then
+ BtnokClick(Sender);
+end;
+
+procedure TFormLogon.FormActivate(Sender: TObject);
+begin
+ Edit1.SetFocus;
+end;
+
+procedure TFormLogon.Edit1Exit(Sender: TObject);
+begin
+ edit1.Text := upperCase(trim(edit1.text))
+end;
+
+procedure TFormLogon.ToolButton13Click(Sender: TObject);
+begin
+ Edit2.Text := Trim(Edit2.Text) + Trim(TToolButton(Sender).Caption);
+ Edit2.SelectAll;
+end;
+
+procedure TFormLogon.ToolButton23Click(Sender: TObject);
+begin
+ if Length(Trim(Edit2.Text)) = 0 then
+ Exit;
+ Edit2.Text := Copy(Trim(Edit2.Text), 1, Length(Trim(Edit2.Text)) - 1);
+ Edit2.SelectAll;
+end;
+
+procedure TFormLogon.ComboBox1Exit(Sender: TObject);
+begin
+ edit1.Text := upperCase(trim(edit1.text))
+end;
+
+procedure TFormLogon.ToolButton12Click(Sender: TObject);
+begin
+ if Trim(Edit1.Text) = '' then
+ begin
+ Application.MessageBox('ʺŲΪգ', 'ʾ', 0);
+ Exit;
+ end;
+ try
+ frmupPassword := TfrmupPassword.Create(Application);
+ with frmupPassword do
+ begin
+ fuserID := Trim(Self.Edit1.Text);
+ if ShowModal = 1 then
+ begin
+
+ end;
+ end;
+ finally
+ frmupPassword.Free;
+ end;
+end;
+
+procedure TFormLogon.ToolButton1Click(Sender: TObject);
+begin
+ if Length(Trim(Edit2.Text)) = 0 then
+ Exit;
+ Edit2.Text := Copy(Trim(Edit2.Text), 1, Length(Trim(Edit2.Text)) - 1);
+ Edit2.SelectAll;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/spmain.dfm b/T03贸易布匹检验/spmain.dfm
new file mode 100644
index 0000000..56c6576
--- /dev/null
+++ b/T03贸易布匹检验/spmain.dfm
@@ -0,0 +1,14587 @@
+object FormMain: TFormMain
+ Left = 144
+ Top = 126
+ BorderStyle = bsNone
+ Caption = #29983#20135#31649#29702#31995#32479
+ ClientHeight = 525
+ ClientWidth = 1146
+ Color = 16242829
+ DefaultMonitor = dmDesktop
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #23435#20307
+ Font.Style = []
+ FormStyle = fsMDIForm
+ KeyPreview = True
+ OldCreateOrder = False
+ Position = poDefault
+ WindowState = wsMaximized
+ OnClose = FormClose
+ OnCreate = FormCreate
+ OnDestroy = FormDestroy
+ OnResize = FormResize
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 12
+ object StatusBar1: TStatusBar
+ Left = 0
+ Top = 506
+ Width = 1146
+ Height = 19
+ Color = clBtnFace
+ Panels = <
+ item
+ Width = 250
+ end
+ item
+ Width = 200
+ end
+ item
+ Width = 50
+ end>
+ end
+ object MovePanel1: TMovePanel
+ Left = 0
+ Top = 0
+ Width = 1146
+ Height = 40
+ Align = alTop
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ BiDiMode = bdRightToLeftNoAlign
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -29
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentBiDiMode = False
+ ParentFont = True
+ TabOrder = 1
+ object Panel1: TPanel
+ Left = 2
+ Top = 2
+ Width = 140
+ Height = 36
+ Align = alLeft
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ Caption = #25163#24037#26816#39564
+ Color = clBtnFace
+ TabOrder = 0
+ OnClick = Panel1Click
+ end
+ object Panel2: TPanel
+ Left = 1063
+ Top = 2
+ Width = 81
+ Height = 36
+ Align = alRight
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ Caption = #36864#20986
+ Color = clBtnFace
+ Font.Charset = GB2312_CHARSET
+ Font.Color = clBlack
+ Font.Height = -29
+ Font.Name = #26999#20307'_GB2312'
+ Font.Style = [fsBold]
+ ParentFont = True
+ TabOrder = 1
+ OnClick = Panel2Click
+ end
+ object Panel3: TPanel
+ Left = 149
+ Top = 0
+ Width = 148
+ Height = 40
+ BevelInner = bvRaised
+ BevelOuter = bvLowered
+ Caption = #25195#25551#26816#39564
+ Color = clBtnFace
+ TabOrder = 2
+ OnClick = Panel3Click
+ end
+ end
+ object ADOConnection1: TADOConnection
+ LoginPrompt = False
+ Left = 600
+ Top = 112
+ end
+ object ImageList25: TImageList
+ Height = 24
+ Width = 24
+ Left = 420
+ Top = 136
+ Bitmap = {
+ 494C01011C001D00040018001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 000000000000360000002800000060000000C000000001002000000000000020
+ 0100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000CE000094
+ FF000000CE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F75A2900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000CE000094FF000000
+ FF000000CE000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7C62900F7C62900F75A29000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000CE000094FF000000FF000000
+ CE00000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F7F7F70000000000F7F7F700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7C62100F7F78C00F7C62100F7C62100F75A290000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000FF000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000FF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000CE000094FF000000FF000000CE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F7F7F70000000000F7F7F700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F700F7F7F700F7F7F700F7F7F70000000000F7C6
+ 2900F7F78C00F7C62900F7C62900F7C62100F7C62900F75A2900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000CE000094FF000000FF000000CE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F75A2900F75A2900F75A2900F75A21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F70000000000F7F7F70000000000F7C62900F7F7
+ C600F7F7C600F7F7C600F7C62900F78C2100F78C2900F78C2900F75A29000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF000000FF00000000000000
+ 000000000000000000000000000000000000000000000000FF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CE942900CE940000CE940000CE9400009463
+ 290000000000000000000094FF000000FF000000CE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7F7C600F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F75A2900F75A2100F75A2900F75A
+ 2100F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF000000FF00000000000000
+ 0000000000000000000000000000000000000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000084848400FFCE2900FFCE2900FFCE2900FFCE2900CE940000CE940000CE94
+ 0000CE94000094632900000000000000CE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000FF000000FF000000FF000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008484
+ 8400ADB5AD00FFCE2900FFCE2900FFCE2900FFCE2900FFCE2900FFCE2900CE94
+ 0000CE940000CE94000094632900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000FF000000FF000000
+ FF0000000000000000000000FF000000FF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008484
+ 8400FFFF9400FFFF9400FFFF9400FFFF9400FFCE9400FFCE2900FFCE2900FFCE
+ 2900CE940000CE940000CE940000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000FF000000
+ FF000000FF000000FF000000FF00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000084848400ADB5
+ AD00FFFFCE00FFFFCE00FFFF9400FFFF9400FFFF9400FFFF9400FFCE2900FFCE
+ 2900FFCE2900CE940000CE940000946329000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ FF000000FF000000FF0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000084848400FFCE
+ 9400FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFF9400FFFF9400FFFF9400FFCE
+ 2900FFCE2900FFCE2900CE940000CE9400000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000FF000000
+ FF000000FF000000FF000000FF00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000084848400FFCE
+ 9400FFFFFF00FFFFFF00FFFFCE00FFFFCE00FFFFCE00FFFF9400FFFF9400FFCE
+ 9400FFCE2900FFCE2900FFCE2900CE9400000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000FF000000FF000000
+ FF0000000000000000000000FF000000FF000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000084848400FFCE
+ 9400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFCE00FFFFCE00FFFFCE00FFFF
+ 9400FFCE9400FFCE2900FFCE2900CE9400000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F75A2900F75A2100F75A2900F75A
+ 2100F75A2900F7F7C600F7C62900F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F75A2900F7F7C600F7F7C600F78C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF000000FF000000FF000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 000000000000000000000000000000000000000000000000000084848400ADB5
+ AD00FFCE9400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFCE00FFFFCE00FFFF
+ 9400FFFF9400FFCE2900FFCE2900CE9429000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F70000000000F7F7F70000000000F7C62900F7F7
+ C600F7F7C600F7F7C600F7C62900F78C2100F78C2900F78C2900F75A29000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F75A2900F75A2900F75A2900F75A21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF000000FF00000000000000
+ 0000000000000000000000000000000000000000FF000000FF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000008484
+ 8400FFCE9400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFCE00FFFF
+ 9400FFFF9400FFCE2900FFCE2900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F700F7F7F700F7F7F700F7F7F70000000000F7C6
+ 2900F7F78C00F7C62900F7C62900F7C62100F7C62900F75A2900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F7F7F70000000000F7F7F700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF0000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000FF000000
+ 0000000000000000000000000000000000000000000000000000000000008484
+ 8400ADB5AD00FFCE9400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFCE00FFFF
+ CE00FFFF9400FFCE2900CE942900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7C62100F7F78C00F7C62100F7C62100F75A290000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F70000000000F7F7F70000000000F7F7F7000000
+ 0000F7F7F70000000000F7F7F700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000084848400ADB5AD00FFCE9400FFCE9400FFFFFF00FFFFFF00FFFFFF00FFFF
+ CE00FFCE9400ADB5AD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7C62900F7C62900F75A29000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500F7000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008484840084848400ADB5AD00FFCE9400FFCE9400FFCE9400FFCE
+ 9400848484008484840000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F75A2900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000848484008484840084848400848484008484
+ 8400000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000DED6D600D6CECE00D6CECE00D6CEC600D6CEC600D6CEC600D6CEC600D6CE
+ C600D6CEC600D6CEC600D6CEC600D6CEC600D6CEC600D6CEC600D6CECE00DED6
+ D600E7E7E7000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7E7
+ E700A59C9400948C840094847B0094847B0094847B0094847B0094847B009484
+ 7B0094847B0094847B0094847B0094847B0094847B0094847B0094847B00A59C
+ 9400C6BDB500E7E7E70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CEB5
+ AD00FFD6BD00FFD6BD00FFD6BD00FFD6BD00FFD6BD00FFD6BD00FFD6BD00FFD6
+ BD00FFD6BD00FFD6BD00E7C6AD00E7C6AD00FFD6BD00FFD6BD00FFD6BD00D694
+ 8C00948C8400D6CECE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CEB5
+ AD00FFE7CE00C6948C00C6948C00C6948C00C6948C00C6948C00C6948C00FFDE
+ BD00FFDEBD00E7C6AD00CEE7FF00948CA500E7C6AD00E7C6AD00FFDEBD00D694
+ 840094847B00D6CECE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B58C8C008C5A5A008C5A
+ 5A008C5A5A008C5A5A008C5A5A008C5A5A008C5A5A008C5A5A008C5A5A000000
+ 000000000000000000000000000000000000000000000000000000000000CEB5
+ AD00FFE7CE00FFE7CE00FFDECE00FFDEC600FFDEC600FFDEC600FFDEBD00FFDE
+ BD00FFDEBD0084637B007B8CA5001073CE004A529C00CEB5A500E7C6AD00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B58C8C00FFFFEF00FFF7
+ E700FFF7DE00F7EFDE00F7EFDE00F7EFDE00FFEFDE00F7E7D6008C5A5A000000
+ 000000000000000000000000000000000000000000000000000000000000D6BD
+ AD00FFE7CE00FFE7CE00FFE7CE00FFE7CE00FFDEC600FFDEC600FFDEC60000DE
+ DE007384BD0084F7FF0063DEFF005ACEEF0039CEF700184AA500C6B5AD00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400CECECE00CECE
+ CE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE00CECECE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B58C8C00FFF7E700F7E7
+ CE00F7E7CE00F7DECE00F7DEC600F7DEC600F7E7CE00EFDECE008C5A5A000000
+ 000000000000000000000000000000000000000000000000000000000000D6BD
+ AD00FFE7D600C6948C00C6948C00C6948C00C6948C00C6948C00FFDEC60000DE
+ DE0094D6EF006BDEFF00BDE7EF00735A5A0021B5EF0000A5E700B5CED600D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400FFFFFF00CE31
+ 0000CE310000CE310000CE310000CE310000CE310000CE310000CECECE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000FF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B58C8C00FFF7E700FFD6
+ A500FFD6A500FFD6A500FFD6A500FFD6A500FFD6A500EFDECE008C5A5A000000
+ 000000000000000000000000000000000000000000000000000000000000D6BD
+ AD00FFE7D600FFE7D600FFE7D600FFE7CE00FFE7CE00FFE7CE00FFDEC60000DE
+ DE00FFDECE0052CEFF00DEF7FF0073524A0029BDF70084CED600FFDEBD00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400FFFFFF0094FF
+ FF00FFFFFF0094FFFF00FFFFFF0094FFFF00FFFFFF0094FFFF00CECECE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000FF000000FF000000FF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C008C5A5A008C5A5A008C5A5A00B58C8C00FFF7EF00FFE7
+ CE00FFE7C600FFDEC600FFDEC600F7DEBD00F7E7D600EFDECE009C6B63000000
+ 000000000000000000000000000000000000000000000000000000000000DEC6
+ B500FFEFD600FFE7D600FFE7D600FFE7D600FFE7D600FFE7CE00FFE7CE00FFE7
+ CE00FFDEC600FFDEC600DEDED60052525200FFDEC600FFDEBD00FFDEBD00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400FFFFFF00FF00
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000CECECE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000FF000000FF000000FF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFFFEF00FFF7E700FFF7DE00B58C8C00FFFFF700FFE7
+ CE00FFE7CE00FFE7C600FFDEC600FFDEC600F7E7D600EFE7D6009C6B6B000000
+ 000000000000000000000000000000000000000000000000000000000000DEC6
+ B500FFEFDE00C6948C00C6948C00C6948C00C6948C00C6948C00C6948C00C694
+ 8C00C6948C00FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFDEBD00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 000000000000CEFFFF0094CECE0094CECE006394940084848400FFFFFF0094FF
+ FF00FFFFFF0094FFFF00FFFFFF0094FFFF00FFFFFF00CECECE00CECECE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF000000FF000000FF000000
+ FF00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFF7E700F7E7CE00F7E7CE00B58C8C00FFFFF700FFD6
+ A500FFD6A500FFD6A500FFD6A500FFD6A500FFD6A500F7E7DE00A57B73000000
+ 000000000000000000000000000000000000000000000000000000000000DEC6
+ B500FFEFDE00FFEFDE00FFEFDE00FFE7D600FFE7D600FFE7D600FFE7CE00FFE7
+ CE00FFE7CE00FFE7CE00FFE7CE00FFDEC600FFDEC600FFDEC600FFDEC600D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 00000000000094CECE00CEFFFF0094CECE0094CECE0084848400FFFFFF00FF00
+ 0000FF000000FF00000094FFFF00FFFFFF007373730000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF000000FF000000FF000000
+ FF00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFF7E700FFD6A500FFD6A500B58C8C00FFFFFF00FFEF
+ DE00FFE7D600FFE7D600FFE7D600FFEFD600FFF7E700EFE7DE00A57B73000000
+ 000000000000000000000000000000000000000000000000000000000000DEC6
+ B500FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFD600FFE7D600FFE7
+ D600FFE7D600FFE7CE00FFE7CE00FFE7CE00FFDECE00FFDEC600FFDEC600D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 000000000000CEFFFF0094CECE00CEFFFF0094CECE0084848400FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0094FFFF008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007B7B7B000000FF000000FF0000000000000000000000FF000000
+ FF000000FF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFF7EF00FFE7CE00FFE7C600B58C8C00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00EFDEDE00D6C6C600BDADAD00B58473000000
+ 000000000000000000000000000000000000000000000000000000000000E7CE
+ BD00FFEFE700C6948C00C6948C00C6948C00C6948C00C6948C00C6948C00C694
+ 8C00C6948C00C6948C00C6948C00C6948C00C6948C00C6948C00FFDEC600D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 000000000000CEFFFF00CEFFFF0094CECE00CEFFFF0084848400848484008484
+ 8400848484008484840084848400848484008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007B7B7B000000FF0000000000000000000000000000000000000000000000
+ FF000000FF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFFFF700FFE7CE00FFE7CE00B58C8C00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00B58C8C00B58C8C00B58C8C00B58C8C000000
+ 000000000000000000000000000000000000000000000000000000000000E7CE
+ BD00FFEFE700FFEFE700FFEFE700FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEF
+ D600FFE7D600FFE7D600FFE7D600FFE7CE00FFE7CE00FFE7CE00FFE7CE00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 000000000000CEFFFF00CEFFFF00CEFFFF0094CECE00CEFFFF0094CECE0094CE
+ CE006394940094CECE0063949400639494006394940000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ FF000000FF000000FF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFFFF700FFD6A500FFD6A500B58C8C00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00B58C8C00EFB56B00C68C7B00000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFD6
+ BD00FFF7EF00C6948C00C6948C00C6948C00FFEFE700FFEFDE00FFEFDE00FFEF
+ DE00FFEFDE00FFE7D600FFE7D600FFE7D600FFE7D600FFE7CE00FFE7CE00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 000000000000CEFFFF00CEFFFF00CEFFFF00CEFFFF0094CECE00CEFFFF0094CE
+ CE0094CECE006394940094CECE00639494006394940000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000FF000000FF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFFFFF00FFEFDE00FFE7D600B58C8C00B58C8C00B58C
+ 8C00B58C8C00B58C8C00B58C8C00B58C8C00BD84840000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFD6
+ BD00FFF7EF00FFF7EF00FFF7E700FFEFE700FFEFE700FFEFE700FFEFDE00FFEF
+ DE00FFEFDE00FFEFDE00FFEFD600FFE7D600FFE7D600FFE7D600FFE7CE00D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 000000000000CEFFFF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006394940000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000FF000000FF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFDE
+ DE00D6C6C600BDADAD00B5847300000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFD6
+ C600FFF7EF00C6948C00C6948C00C6948C00FFF7E700FFEFE700FFEFE700FFEF
+ DE00FFEFDE00FFEFDE00FFEFDE00FFEFD600FFE7D600FFE7D600FFE7D600D694
+ 840094847B00D6CEC60000000000000000000000000000000000000000000000
+ 000000000000CEFFFF000094CE0094FFFF0029CEFF0029CEFF0029CEFF0029CE
+ FF0029CEFF000094CE0000639400000000006394940000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000007B7B7B000000FF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B58C
+ 8C00B58C8C00B58C8C00B58C8C00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000F7DE
+ C600FFF7F700C6948C00C6948C00C6948C00C6948C00C6948C00FFEFE700FFEF
+ E700FFEFE700FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFE7D600FFE7D600D694
+ 840094847B00D6CECE0000000000000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF000094CE0094FFFF0029CEFF00006363000063
+ 630029CEFF000063940000000000639494006394940000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000007B7B7B000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B58C
+ 8C00EFB56B00C68C7B0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000F7DE
+ C600FFFFF700FFF7F700FFF7F700FFF7EF00FFF7EF00FFF7EF00FFF7E700FFF7
+ E700FFEFE700FFEFE700FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFD600D68C
+ 8400948C8400D6CECE0000000000000000000000000000000000000000000000
+ 0000000000002963630029636300296363000094CE00FFFFFF0094FFFF0094FF
+ FF0029CEFF000000000029636300296363002963630029636300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000FF000000FF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B58C8C00B58C8C00B58C8C00B58C8C00B58C8C00B58C8C00B58C
+ 8C00BD8484000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000F7DE
+ C600FFFFF700C6948C00C6948C00C6948C00C6948C00C6948C00FFF7EF00FFF7
+ E700FFF7E700FFEFE700FFEFE700FFEFE700F7B5B500F7ADAD00F7A5A500D694
+ 8400A5948C00DED6D60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000094CE000094CE000094CE000094
+ CE000094CE000063940000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFE7
+ CE00FFFFFF00FFFFF700C6948C00C6948C00C6948C00FFF7F700FFF7EF00FFF7
+ EF00FFF7EF00FFF7E700FFF7E700FFEFE700FFBD6300FFAD3100FFA52100B5A5
+ 9C00D6D6CE00F7F7F70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFE7
+ CE00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFFFF700FFFFF700FFF7EF00FFF7
+ EF00FFF7EF00FFF7EF00FFF7E700FFF7E700FFCE8400FFB55200D69C6B00D6CE
+ CE00EFEFEF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFE7
+ CE00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFFFF700FFFFF700FFF7F700FFF7
+ EF00FFF7EF00FFF7EF00FFF7EF00FFF7E700FFDE9400CE9C7300AD9C9400EFEF
+ EF00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFD6
+ AD00FFDEBD00FFD6B500F7D6B500F7D6B500EFCEB500EFCEAD00EFCEAD00E7C6
+ AD00E7C6AD00E7C6A500DEBDA500DEBDA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008484840084848400848484008484
+ 8400848484008484840084848400848484008484840084848400848484008484
+ 8400848484008484840084848400848484008484840084848400848484008484
+ 8400848484008484840084848400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000008080800080808000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 08000808080008080800080808000000000084848400FFFFFF00848484008484
+ 8400848484008484840084848400848484008484840084848400848484008484
+ 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600848484000000000000000000D6D6D600BDBDBD009C9C
+ 9C007B7B7B007373730073737300737373007373730073737300737373007373
+ 7300737373007373730073737300737373007373730073737300737373007373
+ 7300636363004A4A4A0000000000000000000000000000000000313131004A4A
+ 4A00313131003939390039393900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100080808000000000084848400FFFFFF00C6C6C600C6C6
+ C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6C6008484
+ 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600848484000000000000000000E7E7E700D6D6D600C6C6
+ C600A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5
+ A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A5009C9C
+ 9C008C8C8C006363630000000000000000000000000000000000636363005252
+ 520052525200636363006B6B6B00525252000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100080808000000000084848400FFFFFF00C6C6C600C6C6
+ C600FF0000000084840000FFFF00C6C6C600C6C6C600C6C6C600C6C6C6008484
+ 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600848484000000000000000000EFEFEF00E7E7E700CECE
+ CE00BDBDBD003939390039393900393939003939390039393900393939003939
+ 3900393939003939390039393900393939003939390039393900393939003939
+ 39009C9C9C007373730000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003939390000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECE3100CECE31000808
+ 0800000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100080808000000000084848400FFFFFF00C6C6C600C6C6
+ C6000000FF000084000000FF0000C6C6C600C6C6C600C6C6C600C6C6C6008484
+ 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600848484000000000000000000EFEFEF00E7E7E700D6D6
+ D600ADADAD00B5B5B500B5B5BD00C6C6C600CECECE00D6D6D600DEDEDE00E7E7
+ E700E7E7E700F7F7F700F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF003939
+ 3900A5A5A5007373730000000000000000000000000000000000000000000000
+ 0000000000000000000000000000393939005252520000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECE3100CECE31000808
+ 0800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100080808000000000084848400FFFFFF00C6C6C600C6C6
+ C600000084000084000000840000C6C6C600C6C6C600C6C6C600C6C6C6008484
+ 8400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600848484000000000000000000EFEFEF00E7E7E700D6D6
+ D600A5A5A500ADADAD00B5B5B500BDBDBD00C6C6C600CECECE00D6D6DE00DEDE
+ DE00E7E7E700EFEFEF00F7F7F700F7F7F700FFFFFF00FFFFFF00FFFFFF003939
+ 3900A5A5A5007373730000000000000000000000000000000000000000000000
+ 0000000000000000000000000000525252000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECE3100CECE31000808
+ 0800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100080808000000000084848400FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600848484000000000000000000EFEFEF00E7E7E700D6D6
+ D6009C9C9C00A5A5A500ADADAD00BDBDBD00C6C6C600C6C6C600D6D6D600DEDE
+ DE00DEDEDE00E7E7E700EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFFFF003939
+ 3900A5A5A5007373730000000000000000000000000000000000000000000000
+ 00004A4A4A003939390052525200000000000000000031313100523100002121
+ 2100212121001818180018181800181818001818180052310000313131000000
+ 0000000000006B8CFF008CADFF000000000000000000CECE3100CECE31000808
+ 0800000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE310008080800000000008484840084848400848484008484
+ 8400848484008484840084848400848484008484840084848400848484008484
+ 8400848484008484840084848400848484008484840084848400848484008484
+ 84008484840084848400848484000000000000000000EFEFEF00E7E7E7003939
+ 39008C8C8C00949494009C9C9C00ADADAD00B5B5B500BDBDBD00CECECE00CECE
+ CE00D6D6D600DEDEDE00E7E7E700E7E7E700F7F7F700F7F7F700FFFFFF003939
+ 3900A5A5A5007373730000000000000000000000000000000000000000000000
+ 0000313131005252520000000000000000000000000031313100313131002121
+ 2100212121002121210021212100212121002121210052310000313131000000
+ 520000005200007BBD006B8CFF000000000000000000CECE3100CECE31000808
+ 0800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 00000000000000000000000000000000000000000000EFEFEF00E7E7E7003939
+ 3900000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000003939
+ 3900A5A5A5007373730000000000000000000000000000000000000000003939
+ 3900000000000000000000000000000000000000000031313100313131005252
+ 5200636363006B6B6B006B6B6B0063636300525200003131310039393900B5B5
+ B500B5B5B5000094DE006B8CFF000000000000000000CECE3100CECE31000808
+ 0800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 00000000000000000000000000000000000000000000EFEFEF00E7E7E700D6D6
+ D600C6C6C600BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00B5B5
+ B500A5A5A5007373730000000000000000000000000000000000525252003131
+ 3100000000000000000000000000000000000000000000000000000000005252
+ 5200313131003131310031313100393939002121210031313100525200004A4A
+ 4A00003152000000520021ADFF000000000000000000CECE3100CECE31000808
+ 0800000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECE3100CECE3100080808000808
+ 080008080800CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600FF000000C6C6C600C6C6C60084848400848484008484
+ 8400848484008484840084848400C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000052525200525252004A4A
+ 4A00393939003939390039393900393939003939390039393900393939003939
+ 3900393939003939390039393900393939003939390039393900393939003131
+ 3100292929001010100000000000000000000000000000000000525252003939
+ 3900000000000000000000000000000000000000000000000000000000005252
+ 52003939390039393900313131006B6B6B005252520052310000525252008CFF
+ 6B008CFF6B00003152004ABDFF000000000000000000CECE3100CECE31000808
+ 0800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000003939
+ 3900000000000000000000000000525252005252520052525200525252005252
+ 5200393939006B6B6B0039393900949494006363630052310000525252007BBD
+ 000039393900000052004ABDFF000000000000000000CECE3100CECE31000808
+ 0800FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C6000000FF0000008400C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000052525200525252004A4A
+ 4A00393939003939390039393900393939003939390039393900393939003939
+ 3900393939003939390039393900393939003939390039393900393939003131
+ 3100292929001010100000000000000000000000000000000000000000000000
+ 0000313131003939390031313100313131002121210052520000525252006363
+ 63004A4A4A009494940052520000848484006B6B6B005231000052525200BDFF
+ 4A006B6B6B00000052004ABDFF000000000000000000CECE3100CECE31000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 080008080800080808000808080008080800CECE3100CECE3100080808000808
+ 080008080800CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000052525200525252004A4A
+ 4A00393939003939390039393900393939003939390039393900393939003939
+ 3900393939003939390039393900393939003939390039393900393939003131
+ 3100292929001010100000000000000000000000000000000000000000000000
+ 00000000000052525200636363004A4A4A002121210052525200525252006363
+ 6300636363009C9C9C00525200006B6B6B006B6B6B005231000052525200ADFF
+ 8C008CFF6B00003152004ABDFF000000000000000000CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C6008484000084000000C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 00000000000000000000000000000000000000000000BDBDBD00FFFFFF00FFFF
+ FF00F7F7F700F7F7F700DEE7DE00C6BDC600BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00B5B5
+ B500A5A5A5007373730000000000000000000000000000000000000000000000
+ 00000000000000000000000000005252520021212100C6C6C600C6C6C6006B6B
+ 6B0063636300A5A5A5004A4A4A006B6B6B00636363005231000052525200B5B5
+ B5007B7B7B000000520021ADFF000000000000000000CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE3100CECE
+ 3100CECE3100CECE310008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C60084840000C6C6C600C6C6C60084848400848484008484
+ 8400848484008484840084848400C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5B5B500E7E7
+ E700E7E7E700EFEFEF00DEE7DE00C6C6CE00C6C6C600BDBDC600BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00D6D6D60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000006B6B
+ 6B00525252005252520052520000636363006B6B6B005231000052525200ADFF
+ 8C006B6B6B000000520021ADFF00000000000000000008080800080808000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 0800080808000808080008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C6000084840000000000C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000094949400DEE7E700DEDEDE00D6D6DE00D6D6D600C6CEC600C6C6
+ C600BDC6BD009C735A007B421800FF420000FF420000FF420000FF420000FF31
+ 0000FF100000FF00000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008484
+ 8400636363005252520052525200525200003131310052310000525252008CFF
+ 6B008CFF6B000031520021ADFF00000000000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0008080800000000000000000084848400FFFFFF008400
+ 000084000000C6C6C60000848400C6C6C600C6C6C60084848400848484008484
+ 8400848484008484840084848400C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000009C9C9400EFEFEF00EFE7EF00EFEFF700DEDEDE00CECE
+ CE00C6C6C6005A423100FF4A0000FF4A0000FF4A0000FF4A0000FF4A0000FF42
+ 0000FF210000FF00000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009494
+ 94006B6B6B0052525200525252004A4A4A0031520000523100004A4A4A002121
+ 210000315200000052002152FF00000000000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0031310000000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000F7EFEF00F7F7F700FFFFFF00EFEFEF00DEDE
+ DE00D6D6D600D65A0000FF630000FF630000FF630000FF630000FF630000FF5A
+ 0000FF420000FF00000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000031313100393939003939
+ 3900313131003131310031313100313131003131310021212100313131000000
+ 5200000052000094DE006B8CFF0000000000000000009C3100009C3100009C31
+ 00009C3100009C3100009C3100009C3100009C3100009C3100009C3100009C31
+ 00009C3100009C3100009C3100009C3100009C3100009C3100009C3100009C31
+ 00009C3100009C31000031310000000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600FF000000C6C6C600C6C6C60084848400848484008484
+ 8400848484008484840084848400C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B5B5B500F7F7F700F7F7F700C6C6
+ C6005A523100FF840000FF840000FF840000FF840000FF840000FF840000FF84
+ 0000FF730000FF5A000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000525200004A4A4A004A4A
+ 4A00393939003131310031313100313131003131310031313100212121000000
+ 0000000000006B8CFF006B8CFF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400FFFFFF008400
+ 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000212121000000
+ 0000000000000000000000000000000000004242420031313100313131003131
+ 3100313131003131310031313100313131003131310031313100313131003131
+ 3100313131003131310031313100313131003131310031313100313131003131
+ 3100313131003131310031313100424242000000000084848400FFFFFF008400
+ 000084000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400848484008484
+ 8400848484008484840084848400848484008484840084848400848484008484
+ 8400848484008484840084848400848484008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000E7E7E7008C94
+ A5008C9CAD008C9CAD00B5B5BD00D6DEDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000636B7B001031
+ 5A0021426B00294A6B00636B7B00BDC6C6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D6DED600948C8400B5B5AD00E7E7E700000000000000
+ 000000000000000000000000000000000000DEE7E700737B8400082142006B9C
+ C6008CB5DE0084B5CE00CED6E700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000009C9C9400AD948400A58C73009C847B00E7DED6000000
+ 0000000000000000000000000000000000008C949400737B7B0063738400ADCE
+ E700C6E7F700B5D6E700D6DEE700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B5B5B5009C8C8C00B58C6B00CEA58400C69C840094847B00B5AD
+ A500DEDEDE000000000000000000E7E7E7006B6B6B009C9C9C00B5B5B500ADBD
+ C600ADBDC600ADBDC600EFEFF700000000000000000000000000000000000000
+ 0000000000000000000000000000F75A29000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A5A5009C9C9C00947B6300BD7B5200BD7B4A00B5734A00CE8C6B00D6A5
+ 7B00C69C840073635A006B63630063636300BDBDBD00DED6D60084847B00CEC6
+ CE00D6CECE000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F75A2900F78C29000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000A5A59C009C8C7B00A57B5200B57B5200B57B5200BD734A00B57B4A00AD73
+ 4A00AD734A0073634A005A524A008C848400E7E7E700949494006B6B6B00D6CE
+ D600E7E7E7000000000000000000000000000000000000000000000000000000
+ 000000000000F75A2900F7C62900F78C29000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FF632900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF942900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D6D6
+ D600ADA59C0094736300B5735200B57B5200BD7B4A00BD7B4A00A56B4200945A
+ 3100845229005A39180084736300CEC6C600A5AD9C004A5A4A009CA59C00DED6
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000F75A2900F7C62100F7C62100F78C2100F78C2100F78C2100F78C2100F78C
+ 2100F78C2100F78C2100F78C2100F78C2100F75A210000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FF942900FF6329000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FF942900FF942900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000ADB5B500ADAD
+ AD0094735A00B57B5200BD7B4A00B5734A00A56339008C5231007B5231006B42
+ 10006B420000CEAD8400FFEFD600BDAD9400187321007BCE8C00BDDEBD009C94
+ 8400A59C9400CECECE000000000000000000000000000000000000000000F75A
+ 2900F7C62900F7C62100F7C62900F7C62900F7C62900F7C62900F7C62900F7C6
+ 2900F7C62900F7C62900F7C62900F7F7C600F75A2900F7F7F700F7F7F700F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FF942900FFCE2900FF63290000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FF942900FFCE2900FF942900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D6D6D600A5A59C00C6BD
+ B500AD735200BD7B4A00BD7B4A00945A31008C522900845231006B4218007B42
+ 0000945A1000F7EFCE00F7EFD6006B7B420039AD5200BDF7C600C6DEAD00DEBD
+ 9C00CEAD9C009C8C8400CED6CE00000000000000000000000000000000000000
+ 0000F7C62900F7F78C00F7C62900F7F7C600F7F7C600F7F7C600F7F7C600F7F7
+ C600F7F7C600F7F7C600F7F7C600F7F7C600F75A29000000000000000000F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF632900FF942900FF942900FF942900FF942900FF942900FF94
+ 2900FF942900FF942900FF942900FFCE2900FFCE2900FF632900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FF942900FFCE2900FFCE2900FF942900FF942900FF94
+ 2900FF942900FF942900FF942900FF942900FF942900FF942900000000000000
+ 00000000000000000000000000000000000000000000A59C9C00C6BDBD00ADA5
+ 9400BD735200AD734A009C634200844A310084523100845231007B420000945A
+ 1000BD8C5200FFFFEF009C946B00216310007BD69400E7FFE700A5A56B00BD7B
+ 4A00D69C7300E7B59C00A59C8C00CECECE000000000000000000000000000000
+ 000000000000F7C62100F7F78C00F7F7C600F75A2900F75A2900F75A2900F75A
+ 2900F75A2900F75A2900F75A2900F75A2900F75A2900F7F7F700F7F7F700F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF632900FFFFCE00FFCE2900FFCE2900FFCE2900FFCE2900FFCE
+ 2900FFCE2900FFCE2900FFCE2900FFCE2900FFCE2900FFCE2900FF6329000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FF632900FFFFCE00FFFF9400FFCE2900FFCE2900FFCE2900FFCE2900FFCE
+ 2900FFCE2900FFCE2900FFCE2900FFCE2900FFCE2900FF942900000000000000
+ 000000000000000000000000000000000000D6D6D600D6CEC600AD948C00A573
+ 5A00945A3100844A310084523100A56B4200845221007B420800A5733100E7CE
+ A500FFFFEF007B6B29002173100018943100E7F7DE0094945A00A56B3100C66B
+ 3100C66B3900BD6B3100A5734A00E7D6CE000000000000000000000000000000
+ 00000000000000000000F7C62900F7F7C600F75A210000000000F7F7F7000000
+ 000000000000F7F7F7000000000000000000F7F7F7000000000000000000F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF632900FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFF
+ CE00FFFFCE00FFFFCE00FFFFCE00FFCE2900FFFF9400FFCE2900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF632900FFFFCE00FFFF9400FFCE2900FFFF9400FFFF9400FFFF
+ 9400FFFF9400FFFF9400FFFF9400FFFF9400FFFF9400FF942900000000000000
+ 000000000000000000000000000000000000CEC6CE00C6BDB5009C7B6B00A57B
+ 5A00946339009C634200AD734A008C5A31007342080094520800CEB58C00FFFF
+ E700DEC6AD0052732100108C18004AAD5A00B5C6A500947B4200B56B3900BD6B
+ 3100BD6B3100BD6B2900C69C8400FFF7F7000000000000000000000000000000
+ 0000000000000000000000000000F7C62900F75A2900F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF632900FF632900FF632900FF632900FF632900FF632900FF63
+ 2900FF632900FF632900FFFFCE00FFFF9400FFCE290000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FF632900FFFFCE00FFFF9400FFFF940000000000FF63
+ 2900FF632900FF632900FF632900FF632900FF632900FF632900000000000000
+ 000000000000000000000000000000000000E7E7E700A594840094735A009C73
+ 5200BD846300CE9C7B00C69C73007B4A100084520000945A1800FFF7DE00D6C6
+ AD00BD9C730029842100219C310094DEA500ADAD8400DEB58C00E7AD8400C68C
+ 6300BD7B4A00AD6B3900F7EFE700000000000000000000000000000000000000
+ 00000000000000000000F7F7F70000000000F75A210000000000F7F7F7000000
+ 000000000000F7F7F7000000000000000000F7F7F7000000000000000000F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF632900FFFFCE00FFCE29000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FF632900FFFFCE00FFFF9400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B58C7300CE947300DEA5
+ 8400CEAD8C00C6A584009C734A00945A1000B58C5200F7E7BD00C69C7B00DEBD
+ 9C00ADB58400189C39009CE7AD00ADCEA500E7CEB500E7CEB500E7CEBD00F7D6
+ C600EFCEBD00D6BDB50000000000000000000000000000000000000000000000
+ 00000000000000000000F7F7F700F7F7F700F75A2900F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF632900FFCE2900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FF632900FFFFCE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A5736300CE9C8400DEAD
+ 9400DEB59400C69C73008C521800AD7B4200EFD6B500D6C6A500E7C69C00DEC6
+ AD00639C5A005AC66B00ADDEB500B5C69C00EFCEC600EFD6BD00EFD6C600F7DE
+ C600D6BDAD00EFE7E70000000000000000000000000000000000000000000000
+ 00000000000000000000F7F7F700000000000000000000000000F7F7F7000000
+ 000000000000F7F7F7000000000000000000F7F7F7000000000000000000F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF63290000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF632900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DECEC600C6AD9C00BD9C
+ 8400D6AD8C009C6B310084520800E7C69C00D6BD9C00C6A58400EFCEB500BDBD
+ 9C00298C310094DE9C00ADC69C00DEDEBD00F7DECE00EFDECE00F7DECE00DECE
+ BD00DECECE000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF63290000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000084521800A5631800D6A57300BD947300E7CEA500F7D6BD00D6DEBD00398C
+ 420031AD4A00C6D6BD00F7EFDE00F7E7DE00FFEFE700F7EFE700FFF7E700EFE7
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7000000F7000000F7000000F7000000F7000000F700
+ 0000F7000000F7000000F7000000F7000000F7000000F7000000F7000000F700
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000945A1000CE945A00C6A58400DECEC600CEB59C00CEAD9C00A5BD9400218C
+ 31005ABD6B00F7EFE700FFEFEF00FFEFEF00FFF7EF00FFFFEF00E7D6D6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000B5B5B500B5B5B500F7000000F7000000F7000000F700
+ 0000F7000000F7000000F7000000F7000000F7000000F7000000B5B5B500B5B5
+ B500000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B5A5
+ 8400BD844200BD9C7300DED6C6000000000000000000D6BDAD005AA5630031A5
+ 42008CCE8C00FFF7F700FFF7F700FFF7F700FFFFFF00F7EFEF00D6C6C6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7F7EF009C7B52008C63
+ 2100EFE7DE0000000000000000000000000000000000EFE7E70042944200B5CE
+ A500FFFFEF00EFE7DE00BDAD9C00C6B59C00CEBDB500DECECE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BDAD8C0084522100BD9C
+ 73000000000000000000000000000000000000000000EFF7EF0084B58C00C6BD
+ AD00CEBDB500CEC6BD00F7EFE700EFE7DE00DECECE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084633900AD9C7300FFF7
+ EF000000000000000000000000000000000000000000BDCEBD00EFFFF7000000
+ 0000EFE7E7000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFFFF700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000BDBDBD00E7E7E700E7E7E7007B7B7B004A4A
+ 4A004242420039393900CECECE00CECECE00C6C6C60000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D6D6D600949494005A5A5A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7E7E700949494005A5A5A005A5A5A00A5A5
+ A500EFEFEF008C8C8C004A4A4A00CECECE00CECECE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C6C6
+ C600DEDEDE008484840031313100737373000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6C6C600C6C6
+ C600D6D6D600CECECE00B5B5B5004A4A4A00636363008C8C8C00EFEFEF00DEDE
+ DE00D6D6D600DEDEDE007B7B7B004A4A4A00D6D6D60000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6C6C600E7E7
+ E7006B6B6B008C8C8C0094949400ADADAD00000000000000000000000000B5C6
+ DE007384BD007384BD007384BD007B84C6007B84C6007B84BD007B84C6007B84
+ C6007384C6007384C6007384C6007384C6007384C6007384C6007384C600737B
+ BD00A5B5D6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE00C6C6C600D6D6D600D6D6
+ D600ADADAD005252520039393900B5B5B500D6D6D600EFEFEF00D6D6D600D6D6
+ D600DEDEDE00D6D6D600CECECE00848484004A4A4A00CECECE00CECECE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C60000000000000000000000000000000000C6C6C600E7E7E7006B6B
+ 6B005A5A5A00BDBDBD0052525200DEDEDE000000000000000000BDB5E7003121
+ BD001808B5002110B5002110B5002110B5002110B5002110B5002110B5002110
+ BD002110B5002108BD002108BD002108BD002108BD002108BD001800BD001800
+ B5002110AD00A59CD60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000BDBDBD00D6D6D600949494005A5A
+ 5A004A4A4A00A5A5A500E7E7E700E7E7E700DEDEDE00D6D6D600DEDEDE00DEDE
+ DE00D6D6D600DEDEDE000000000000000000848484005A5A5A00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C6C6C600D6D6D600DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00000000000000000000000000C6C6C600E7E7E7006B6B6B005A5A
+ 5A00BDBDBD0052525200CECECE00C6C6C60000000000000000007B84DE001818
+ C6003142D6003142D600394AD600394AD600394AD600394AD600394AD600314A
+ D6003142D6002942D6002942DE002142DE002139DE001839DE001831D6001831
+ CE001810B5005A5AB50000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7E7E70094949400525252008C8C
+ 8C00F7F7F700DEDEDE00D6D6D600D6D6D600D6D6D600DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00D6D6D600DEDEDE00B5B5B500D6D6D600313131009C9C9C00CECE
+ CE00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C6C6CE00DEDEDE007B7B73004A4A42004A4A42004242
+ 42005A5A5200D6D6CE00D6D6D600CECED600DEDEDE006B6B6B005A5A5A00BDBD
+ BD0052525200D6D6D600CECECE000000000000000000000000007B8CE7001018
+ CE002939D6002942D6003942D600394AD6003142D6003142D600394AD600394A
+ D600314AD6002942D6002139D6001831D6001839DE001031DE000829D6001029
+ D6001008BD00526BBD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000F75A290000000000000000000000
+ 000000000000000000000000000000000000848484004A4A4A00E7E7E700EFEF
+ EF00D6D6D600D6D6D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00D6D6D600B5B5B500A5A5A50031313100D6D6
+ D600000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CECED6007B7B7B0000005A000000B5000000BD002121
+ CE001818BD00181839007B7B7300CECEBD006B6B73005A5A5A00BDBDBD005252
+ 5200D6D6D600CECECE0000000000000000000000000000000000738CDE001021
+ D600314ADE00394AD600424ADE004252DE005263DE008C8CE700C6BDEF00E7DE
+ EF00E7DEEF00CEBDEF00848CE7003952E7001839E7001039E7001031DE000831
+ DE000810BD005263BD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000F78C2900F75A2900000000000000
+ 0000000000000000000000000000000000006B6B6B0052525200EFEFEF00CECE
+ CE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00D6D6D600BDBDBD00BDBDBD004A4A4A009494
+ 9400CECECE000000000000000000000000000000000000000000000000000000
+ 000000000000D6D6D600BDBDAD00000029000000E7001010F7003131FF003131
+ FF002929FF000000EF00000084000000290039393900BDBDBD0052525200CECE
+ CE00CECECE000000000000000000000000000000000000000000738CE7001821
+ D600394ADE004252DE004A52DE006B73DE00CEBDEF00EFDEF700BDBDEF00A5A5
+ EF00A5A5E700BDB5EF00E7D6EF00C6C6EF004263E7001039E7001031E7001031
+ DE000810BD00526BBD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000F78C2900F7C62900F75A29000000
+ 0000000000000000000000000000000000007373730052525200EFEFEF00D6D6
+ D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00D6D6D600DEDEDE00CECECE00BDBDBD00949494003131
+ 3100DEDEDE00C6C6C60000000000000000000000000000000000000000000000
+ 000000000000D6D6CE004A4A520008089C002121FF003131FF005252FF005252
+ FF004A4AFF002929FF001010FF004A4AEF006B6B840063636300CECECE00CECE
+ CE000000000000000000000000000000000000000000000000007B94DE002129
+ D6004252DE004A52DE006363DE00CEC6EF00DECEEF009494E700636BE700314A
+ DE00314ADE005263E7007B84E700D6CEF700C6C6EF003952E7001031DE001839
+ DE000810BD00526BBD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000F75A2100F78C2100F78C2100F78C2100F78C
+ 2100F78C2100F78C2100F78C2100F78C2100F78C2100F7C62100F7C62100F75A
+ 2900000000000000000000000000000000007373730052525200EFEFEF00D6D6
+ D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00D6D6D600D6D6D600E7E7E700BDBDBD00BDBDBD005A5A
+ 5A007B7B7B00DEDEDE00C6C6C600000000000000000000000000000000000000
+ 000000000000D6D6CE00080818000000CE005A5AFF005252F7006B6BF7009494
+ FF009494FF004A4AFF006363FF009494FF004242F70010104A00C6C6B500CECE
+ D6000000000000000000000000000000000000000000000000007B94E7002931
+ DE004A52DE004A5ADE009C94E700EFDEF7009494E7005263DE004A5ADE009C9C
+ E700A5A5E700425AE7003152E7007384EF00E7D6F7008C94EF002139DE001839
+ DE000818BD00526BBD0000000000000000000000000000000000000000000000
+ 0000F7F7F700F7F7F700F7F7F700F75A2900F7F7C600F7C62900F7C62900F7C6
+ 2900F7C62900F7C62900F7C62900F7C62900F7C62900F7C62900F7C62100F7C6
+ 2900F75A29000000000000000000000000007373730052525200EFEFEF00D6D6
+ D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00D6D6D600E7E7E700EFEFEF00EFEFEF00E7E7E700BDBDBD008484
+ 8400525252000000000000000000000000000000000000000000000000000000
+ 000000000000D6D6CE00101021000808D6004242DE0008086B0000007B002121
+ CE004A4AEF00B5B5FF00D6D6FF008484FF002121FF0000006B007B7B7300D6D6
+ D6000000000000000000000000000000000000000000000000008494E7002931
+ DE00525ADE005263DE00D6C6EF00CEBDEF00636BE7005A63DE004252DE00D6C6
+ EF00E7DEEF00314ADE003152DE003952E700B5B5EF00D6C6F700314ADE001839
+ DE001018BD005273BD0000000000000000000000000000000000000000000000
+ 0000F7F7F7000000000000000000F75A2900F7F7C600F7F7C600F7F7C600F7F7
+ C600F7F7C600F7F7C600F7F7C600F7F7C600F7F7C600F7C62900F7F78C00F7C6
+ 2900000000000000000000000000000000007373730052525200EFEFEF00D6D6
+ D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6D6D600D6D6
+ D600DEDEDE00EFEFEF00E7E7E700E7E7E700E7E7E700ADADAD00CECECE00CECE
+ CE00313131009C9C9C00D6D6D60000000000000000000000000000000000C6C6
+ C600C6C6C600CECEC600101029000000A5000000520000004200000084000000
+ BD000000E7006363EF00DEDEFF008C8CFF004242F7000000C60008081800D6D6
+ CE00000000000000000000000000000000000000000000000000849CE7003139
+ DE005263DE005A6BDE00EFDEF700B5A5EF004A5ADE005263DE00394ADE00CEC6
+ EF00E7D6EF00314ADE00314ADE002139DE008C94EF00EFDEF7003952DE002139
+ D6001021BD005A73BD0000000000000000000000000000000000000000000000
+ 0000F7F7F700F7F7F700F7F7F700F75A2900F75A2900F75A2900F75A2900F75A
+ 2900F75A2900F75A2900F75A2900F75A2900F7F7C600F7F78C00F7C621000000
+ 0000000000000000000000000000000000007373730052525200EFEFEF00D6D6
+ D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6D6D600D6D6D600E7E7E700FFFF
+ FF00FFFFFF00EFEFEF00FFFFFF00FFFFFF00FFFFFF0073737300BDBDBD00EFEF
+ EF009C9C9C0039393900CECECE00000000000000000000000000C6C6C600D6D6
+ DE00DEDEDE00E7E7E7008C8C8C000000210000005200000084000000BD001818
+ F7007373FF004A4AEF005252F7009494FF001818F7000000BD0000007B005A5A
+ 5200DEDEDE00C6C6C60000000000000000000000000000000000849CE7003939
+ DE005A63DE00636BE700F7E7F700ADA5EF004A52DE00525ADE00394ADE00D6CE
+ EF00EFDEF7003142DE00314ADE001831DE008C8CE700F7E7F7004252DE002139
+ D6001821BD005A73BD0000000000000000000000000000000000000000000000
+ 0000F7F7F7000000000000000000F7F7F7000000000000000000F7F7F7000000
+ 000000000000F7F7F70000000000F75A2100F7F7C600F7C62900000000000000
+ 0000000000000000000000000000000000007373730052525200EFEFEF00D6D6
+ D600DEDEDE00DEDEDE00DEDEDE00D6D6D600E7E7E700EFEFEF00DEDEDE00ADAD
+ AD009C9C9C00C6C6C600C6C6CE00BDC6CE00BDBDBD008C8C8400B5B5B500CECE
+ CE00EFEFEF0021212100000000000000000000000000C6C6C600DEDEDE008C8C
+ 840084847300848473001010290000005A00000084000000BD001818F7006B6B
+ FF009C9CFF008484FF002121FF005A5AFF002121F7000000EF0000008C004242
+ 3900DEDEDE00C6C6C600000000000000000000000000000000008C9CE700424A
+ DE00636BE700636BE700E7D6F700C6B5EF005263DE00525ADE00394ADE00DED6
+ EF00F7E7F7003142DE002942DE002942DE00ADA5EF00E7DEF700424ADE002939
+ D6001821BD005A73BD0000000000000000000000000000000000000000000000
+ 0000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F75A2900F7C6290000000000000000000000
+ 0000000000000000000000000000000000007373730052525200EFEFEF00D6D6
+ D600D6D6D600DEDEDE00DEDEDE00EFEFEF00DEDEDE00DEDEDE008C8C8C008C8C
+ 8C00BDBDBD00636B6B006B522900B57B310029293900CECECE00CECECE00E7E7
+ E700848484007B7B7B00CECECE0000000000C6C6C600DEDEDE007B7B73000000
+ 3100000042000000390000006B00000052000000AD001818FF006B6BFF009C9C
+ FF007B7BFF002929FF000000B5003939EF005252FF001010F70000008C004242
+ 3900DEDEDE00C6C6C60000000000000000000000000000000000849CE7004A4A
+ DE006B6BE700636BE700BDADE700EFDEF7007B84E7004A52DE00424ADE00B5AD
+ EF00C6B5EF003142DE002139DE005A63E700E7D6F700ADADEF003142DE003142
+ D6001821BD006373BD0000000000000000000000000000000000000000000000
+ 0000F7F7F7000000000000000000F7F7F7000000000000000000F7F7F7000000
+ 000000000000F7F7F70000000000F75A210000000000F7F7F700000000000000
+ 0000000000000000000000000000000000007373730052525200EFEFEF00CECE
+ CE00E7E7E700EFEFEF00E7E7E700ADADAD00D6D6D600F7F7F700FFFFFF008C8C
+ 8C00EFEFEF00F7FFFF00736B6300CE942900A5731800848C9400D6D6D6003939
+ 390073737300D6D6D6000000000000000000EFEFF7008C8C7B00000042003939
+ F7004242FF002929D600080894000000840000006B005252DE009C9CFF007B7B
+ FF002929FF000000CE0000005A006363DE006363FF001010E70000006B005A5A
+ 5200DEDEDE00C6C6C600000000000000000000000000000000008CA5E7004A4A
+ DE007373E7006B73E7008484E700E7D6F700D6C6EF007B7BE7004A52DE003942
+ DE003142DE00394ADE005A6BE700C6BDEF00E7D6F7006373DE002942DE00314A
+ D6002121BD006373BD0000000000000000000000000000000000000000000000
+ 0000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F75A2900F7F7F700F7F7F700000000000000
+ 000000000000000000000000000000000000737373004A4A4A00F7F7F700EFEF
+ EF00CECECE00BDBDBD00BDBDBD00FFFFFF00FFFFFF00FFFFFF00ADADAD008C8C
+ 8C00EFEFEF00FFFFFF00CED6D600636B6B00C69C3900946B100000000800D6D6
+ D600CECECE00000000000000000000000000CECEC60052525A003939BD005A5A
+ FF005A5AFF008484FF00A5A5FF005252E70000008400000063005A5ADE003939
+ FF000000C60000005A005A5AE7007373FF002121D60000005A0052525A00D6D6
+ D6000000000000000000000000000000000000000000000000008CA5E700525A
+ DE007B7BE7007373E7007373E7008C8CE700E7D6F700E7D6F700ADA5E7009494
+ E700948CE700A59CEF00DED6F700E7D6F7007B7BE700394ADE003142DE00394A
+ D6002129BD006373BD0000000000000000000000000000000000000000000000
+ 0000F7F7F7000000000000000000F7F7F7000000000000000000F7F7F7000000
+ 000000000000F7F7F700000000000000000000000000F7F7F700000000000000
+ 0000000000000000000000000000000000006B6B6B005A5A5A00EFEFEF000000
+ 000063636300C6C6C600FFFFFF00FFFFFF00BDBDBD0094949400ADADAD00EFEF
+ EF00FFFFFF00FFFFFF00525252005A5A5A0052525A00CE9C3900B57B21006363
+ 7300DEDEDE00C6C6C600000000000000000073735A0021215A005252FF002121
+ F7002929FF003131FF007B7BFF00DEDEFF005252EF0000007300080884000808
+ DE001010420063636B0021215A0010105200212152008C8C7B00CECECE000000
+ 000000000000000000000000000000000000000000000000000094A5E7005A5A
+ DE008484E7007B84E7007373E7007373E700848CE700B5ADEF00DED6F700EFDE
+ F700EFDEF700DED6F700ADA5EF00737BE7004A52DE00424ADE003942DE003942
+ D6001821BD005A73B50000000000000000000000000000000000000000000000
+ 0000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700000000000000
+ 000000000000000000000000000000000000DEDEDE007373730084848400BDBD
+ BD009C9C9C00BDBDBD00D6D6D6005A5A5A00BDBDBD00E7E7E700FFFFFF00FFFF
+ FF00FFFFFF00BDBDBD00212121008C8C8400D6D6DE004A4A4A00D6AD63009C6B
+ 180063637300DEDEDE00C6C6C6000000000094948400313163004A4AEF003131
+ F7003131FF003131FF003131FF007B7BFF00A5A5FF001010A500000073000808
+ 3100ADAD9C00CECECE00A5A59C00ADAD9C00C6C6B500DEDEE700CECEC6000000
+ 000000000000000000000000000000000000000000000000000094ADE7006B6B
+ DE009494E700848CE7007B7BE700737BE700737BE7007373E7007B7BE7007B7B
+ E7007B7BE7007373E700636BDE005A63DE00525ADE004A52DE00394ADE003942
+ D6001821B5005A73B50000000000000000000000000000000000000000000000
+ 0000F7000000F7000000F7000000F7000000F7000000F7000000F7000000F700
+ 0000F7000000F7000000F7000000F7000000F7000000F7000000000000000000
+ 000000000000000000000000000000000000C6C6C600D6D6D6006B6B6B004242
+ 420094949400A5A5A500B5B5B500636363006B6B6B00FFFFFF00F7F7F700FFFF
+ FF00FFFFFF006B6B6B0063636300E7E7E700C6C6C600CECECE00424A5200CEAD
+ 6B00946B180063636B00DEDEDE00C6C6C600F7F7FF006B6B5A00292994004242
+ FF002929F7003131FF002929FF003939FF009494FF004242FF00000039008484
+ 7300DEDEE700C6C6C600D6D6D600D6D6D600CECECE00C6C6C600000000000000
+ 000000000000000000000000000000000000000000000000000094A5E700736B
+ E700A59CEF009494E7008484E7007B7BE700737BE700737BE700737BE7006B73
+ E7006B6BE7006B73E700636BE700636BDE00525ADE004A52DE00424ADE00394A
+ D6001818B5005A6BB50000000000000000000000000000000000000000000000
+ 0000B5B5B500B5B5B500F7000000F7000000F7000000F7000000F7000000F700
+ 0000F7000000F7000000F7000000F7000000B5B5B500B5B5B500000000000000
+ 00000000000000000000000000000000000000000000C6C6C600D6D6D600CECE
+ CE0073737300636363006B6B6B00EFEFEF003939390042424200FFFFFF00FFFF
+ FF00CECECE004A4A4A00B5B5B500CECECE0000000000CEC6C600CECECE004A4A
+ 5200CEB56B00A56B180063636B00D6D6DE00D6D6D600B5B5B50039395A003939
+ E7003939FF003131FF002929FF003131F7006B6BFF004242FF0000004A007B7B
+ 6B00DEDEDE00C6C6C60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5C6EF006B6B
+ E7007B7BDE007373DE006363DE005A63DE005A5ADE005252DE005252DE005252
+ DE005252DE004A52DE00424ADE00424ADE003942DE003139DE002931D6002129
+ CE002121BD00949CCE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6C6C600C6C6
+ C600DEDEDE00B5B5B5008C8C8C00393939008C8C8C008C8C8C005A5A5A00FFFF
+ FF009C9C9C004A4A4A00E7E7E700C6C6C6000000000000000000CECECE00CECE
+ CE004A4A5200D6AD6B00A573210073737300C6C6C600D6D6D600BDBDB5003939
+ 52003131CE003131FF004242FF003939FF005A5AFF0000008C004A4A5200D6D6
+ CE00000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B5BD
+ EF007B94E7008494E7007B94E700738CE700738CE7007384E7007384E7007384
+ E7007384E7006B7BE7006B84E7006384E7006B84E700637BE7005A7BDE005A6B
+ D6008C9CDE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C6C6C600CECECE00D6D6D600C6C6C60000000000DEDEDE008C8C8C006363
+ 630021212100CECECE00C6C6C60000000000000000000000000000000000CECE
+ CE00CECECE00525A6300948442005A42210000000000C6C6C600D6D6D600BDBD
+ BD0052524A003939730029298C0018188C0018188C004A4A5A00D6D6CE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C6C6C600D6D6D6009494
+ 940084848400CECECE0000000000000000000000000000000000000000000000
+ 0000CECECE00CECECE0073737B00B5BDBD000000000000000000000000000000
+ 0000E7E7E7009C9C9C007B7B73008484730084847300CECECE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5B5B500B5B5
+ B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5
+ B500B5B5B500B5B5B500B5B5B500B5B5B5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000CECECE00D6D6D600849494004A42420039393900393939003931
+ 310042292900422121005A5A5A00949C9C00BDBDBD009CA5A500181010003129
+ 2900CED6D600CECECE00C6C6C60000000000000000000000000000000000D6D6
+ D600CECECE00CECECE00C6C6C600C6C6C600BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00C6C6C600C6C6C600C6C6C600CECECE00D6D6
+ D600DEDEDE0000000000000000000000000000000000B57B4A009C6331009C63
+ 31009C6331009C633100945A2900945A2900945A2900945A2900945A2100945A
+ 2100945A2100945A2100945A2900B5B5B5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A5ADB500638C94008494
+ 9400A5ADAD00BDBDBD00C6C6C600BDBDBD00BDBDBD00BDBDBD00B5B5B500B5B5
+ B500B5B5B500B5B5B500BDBDBD00BDBDBD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000CECECE00847B7B0052292900C6737300FFD6D600FFEFEF00FFC6
+ C600FFA5A500F78C8C0073393900211010003939390029181800633131004A18
+ 1800524A4A00CECECE0000000000000000000000000000000000CECECE00BDBD
+ BD00B5B5B500B5B5B500B5B5B500ADADAD00ADADAD00ADADAD00ADADAD00A59C
+ 9C00A5633100CE6B1800BD5A1000A55A29009C6B4A009C7B6B00A59C9400B5B5
+ B500C6C6C600D6D6D600000000000000000000000000D69C5200F7C69400E7B5
+ 8400E7AD7B00E7AD7B00E7AD7B00B5845200B5845200B5845200B5845200B584
+ 5200B5845200B57B4A007B4A2100948C8C00948C8C00A5A5A500A5A5A500A5A5
+ A500A5A5A500000000000000000000000000C6D6DE00109CCE0000A5D600009C
+ D600088CBD00217394004A6B7B006B7B84008C8C8C00A5A5A500ADADAD00ADAD
+ AD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00B5B5B500B5B5
+ B500BDBDBD00C6C6C60000000000000000000000000000000000000000000000
+ 000000000000CECECE0018101000F77B7B00FF9C9C00FFCECE00FFEFEF00FFC6
+ C600FFA5A500E7848400D66B6B007B42420018000000391818006B3131007339
+ 3900080000006B737300D6D6D6000000000000000000D6D6D600BDBDBD00ADAD
+ AD00A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500ADA5A5009C948C00A56B
+ 3100FFCE6B00FFEFC600FFDE9400FFBD6300F7943100E77B1800C65A0800A552
+ 10009C5A3100A5735A00BD9C8C000000000000000000E7AD7B00FFD6AD00FFCE
+ 9C00FFCE9400FFCE940018291000101018000808000008080000080800000808
+ 0000080800000808000008080000080800000808000008080000080800000808
+ 0000A5A5A500000000000000000000000000B5CED6000894CE0000A5D60000CE
+ FF0000C6F70000BDEF0000ADE700009CD600088CBD00217B9C00426B7B006373
+ 7B00848C8C009C9C9C00A5A5A500ADADAD00ADADAD00ADADAD00ADADAD00ADAD
+ AD00ADADAD00BDBDBD00CECECE00000000000000000000000000000000000000
+ 0000CECECE00B5BDBD0039292900DE6B6B00FFB5B500FFD6D600FFFFFF00FFDE
+ DE00FFA5A500EF848400CE63630063313100211010006B313100B55A5A00BD63
+ 6300C6636300181010007B848400CECECE0000000000D6D6CE00BDB5B5009C8C
+ 84008C6B5200846B5A008C736B008C847B00948C8C008C847B009C6B3900FFE7
+ BD00FFFFFF00FFFFFF00FFFFEF00FFFFDE00FFF7CE00FFE7AD00FFD68400FFAD
+ 4A00FF941800C65A00009C420800D6C6BD0000000000E7AD7B00FFD6AD00FFCE
+ 9C00FFCE9C00FFCE94004A4242005A5A5A003939390084840000848400008484
+ 0000848400008484000084840000848400008484000084840000101018001010
+ 1800A5A5A500000000000000000000000000B5CEDE00089CCE00089CCE0000C6
+ F70000D6FF0000D6FF0000D6FF0000CEFF0000CEFF0000C6F70000BDEF0000A5
+ DE00008CBD00107BA50029738C004A7384007B8484009C9C9C00ADADAD00B5B5
+ B500BDBDBD00C6C6C6000000000000000000000000000000000000000000C6C6
+ C600DEDEDE0039424200A5424200E77B7B00FFBDBD00FFFFFF00FFFFFF00FFDE
+ DE00FFC6C600EF848400CE6363005229290021080800C65A5A00CE636300EF7B
+ 7B00FFADAD0029212100393939009C9C9C00DED6D600C6BDB5009C8C7B006B39
+ 180094421000AD5A2900A55A2900944A21007B4A3100B5422100FFD6BD00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFEF00FFFFDE00FFFF
+ CE00F7B53900A5633100C6BDAD000000000000000000E7AD7B00FFDEAD00FFCE
+ 9C00FFCE9C00FFCE9C005A5A5A00848484005A5A5A00FFFFFF00EFEFEF00EFEF
+ EF00E7E7E700E7E7E700E7E7E700E7E7E700D6D6D600B5B5B500292929001010
+ 1800A5A5A500000000000000000000000000ADCEDE0010A5D60018A5DE0008B5
+ E70018D6FF0010D6FF0008D6FF0000CEFF0000D6FF0008D6FF0008D6FF0008D6
+ FF0000CEFF0000C6F70000BDEF0000ADDE000094C6001084AD002973940084AD
+ B50000000000000000000000000000000000000000000000000000000000C6C6
+ C600DEDEDE00424242009C424200E77B7B00FFBDBD00FFF7F700FFFFFF00FFDE
+ DE00FFC6C600EF848400CE6363008442420052292900F7949400E77B7B00FFB5
+ B500FFE7E70029212100636B6B00BDC6C600CEC6BD00A5948400633921005A29
+ 1800944A2100DE845200DE8C5A00D68C5A009C391800FF4A4200FFB5B500FFCE
+ C600FFDED600FFEFE700FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFF700CEA5
+ 52007B5A4200A59C8C00D6CEC6000000000000000000E7B58400FFDEB500FFD6
+ A500FFCE9C00FFCE9C004A424200848484005A5A5A00FFFFFF00F7F7F700F7F7
+ F700EFEFEF00E7E7E700E7E7E700E7E7E700D6D6D600B5B5B500292929001010
+ 1800A5A5A500000000000000000000000000A5CEDE0018ADDE0031BDE70018AD
+ D6005AE7FF0052DEFF0042DEFF0031D6FF0018D6FF0008CEFF0000CEFF0008CE
+ FF0008D6FF0008D6FF0008D6FF0008D6FF0008CEFF0000C6F70000ADE700189C
+ C600000000000000000000000000000000000000000000000000000000000000
+ 0000CECECE0042424200AD525200FF949400FFB5B500FFFFFF00FFFFFF00FFFF
+ FF00FFCECE00EF848400D66B6B00A54A4A0052424200FFD6D600FFC6C600FFFF
+ FF00C69494008C292900B5848400CECECE00CEC6C60084634A00632118006329
+ 210084391800B55A2900B55A3100BD633100A55A29008C5231009C4A3100B552
+ 3100CE523900D6634A00EF6B5A00FF8C8400FFC6BD00FFC6B500C6946B00A552
+ 2100844A310084634A00C6B5AD000000000000000000E7B58400FFDEB500FFD6
+ AD00FFD6A500FFCE9C004A424200848484005A5A5A00FFFFFF00FFFFFF00F7F7
+ F700F7F7F700EFEFEF00E7E7E700E7E7E700D6D6D600B5B5B500292929001010
+ 1800A5A5A50000000000000000000000000094C6DE0018ADDE004ACEF700109C
+ D6006BDEF7006BE7FF006BE7FF0063E7FF005AE7FF0042DEFF0018D6FF0008CE
+ FF0000CEFF0008CEFF0008CEFF0008CEFF0008D6FF0008D6FF0008C6F700089C
+ CE0094C6D6000000000000000000000000000000000000000000C6C6C600DEDE
+ DE006B7373006B292900E77B7B00FF9C9C00FFBDBD00FFFFFF00FFFFFF00FFFF
+ FF00FFCECE00FF9C9C00EF7B7B009C42420052424200FFEFEF00F7F7F700FFFF
+ FF00949494004A52520042101000D6ADAD00C6B5A5007B391800733121007B39
+ 18008C391000A5522100A55A2900AD5A2900B55A2900AD632900AD5A2100A552
+ 2100AD5A2100AD633100AD633100A5522900A54A29008C4229009C5A4200FFAD
+ 7B00FFA57300B56B3100BDADA5000000000000000000E7B58400FFDEBD00FFD6
+ AD00FFD6A500FFD6A5004A424200848484005A5A5A00FFFFFF00FFFFFF00FFFF
+ FF00F7F7F700EFEFEF00E7E7E700E7E7E700D6D6D600B5B5B500292929001010
+ 1800A5A5A5000000000000000000000000008CC6DE0021ADDE0063DEFF0018A5
+ D60063CEEF008CEFFF007BE7FF0073E7FF006BE7FF006BE7FF0063E7FF0042DE
+ FF0010D6FF0000CEFF0008CEFF0008D6FF0008D6FF0008CEFF0008C6F70010B5
+ E70039A5C6000000000000000000000000000000000000000000C6C6C600DED6
+ D6006B7373006B292900E7737300FFADAD00FFCECE00FFF7F700FFFFFF00FFFF
+ FF00FFCECE00FF949400EF7B7B009C424200524A4A00FFFFFF00F7FFFF00FFFF
+ FF00FFFFFF00DEB5B50042101000DEADAD00BD947B0084392100843918008C42
+ 21009C4A2100FF8C5A00FF9C6300FF946B00FF9C7300FF9C6300AD734200B584
+ 6300B57B5200B5734200BD6B3900B5633100AD5A2900AD5A2900AD5A2900B56B
+ 3900D6946B00CE7B5200C6A58C000000000000000000E7B58400FFDEBD00FFDE
+ AD00FFD6AD00FFD6AD004A424200848484005A5A5A00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700BDBDBD00292929001010
+ 1800948C8C0000000000000000000000000084C6D60021B5E70073E7FF0031BD
+ E7004ABDDE00A5F7FF0094EFFF0094EFFF008CEFFF0084EFFF007BEFFF007BE7
+ FF006BE7FF0042DEFF0010D6FF0000CEFF0008D6FF0008CEFF0008C6F70029CE
+ F7000894C600A5CED60000000000000000000000000000000000C6C6C600DEDE
+ DE006B7B7B0063212100EF7B7B00FFA5A500FFD6D600FFF7F700FFFFFF00FFFF
+ FF00FFD6D600FFB5B500EF7B7B009C424200525A5A00FFFFFF00F7FFFF00FFEF
+ EF00FFD6D600D67B7B0042101000DEADAD00C69C840094421800944218008C42
+ 2100CE6B3900FFDEC600FFD6BD00FFD6C600FFDECE00EF8C6300B59C8400C6B5
+ A500BDB5A500BDAD9400BDA59400B59C7B00A57B5A00C6734200E7945A00BD63
+ 3100A55A2900A55A2900BD9473000000000000000000E7B58400FFE7C600FFDE
+ B500FFDEAD00FFD6AD004A424200848484005A5A5A005A5A5A00525252005252
+ 52004A4242004A4242004A4242004A4242003939390039393900292929001010
+ 1800633194000000000000000000000000007BBDDE0029B5E70073EFFF0052D6
+ F70021A5D600B5F7FF00B5F7FF00ADF7FF00A5F7FF009CEFFF0094EFFF008CEF
+ FF008CEFFF0084EFFF0073E7FF0042DEFF0018D6FF0008CEFF0008BDF70029CE
+ F70008ADDE005AADCE0000000000000000000000000000000000000000000000
+ 00005A52520094424200FF9C9C00FFB5B500FFEFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFD6D600FFBDBD00EF7B7B009C42420052525200FFFFFF00F7E7E700FFCE
+ CE00BD7B7B005229290039080800DEADAD00C69C84008C421000A55229009C4A
+ 1800FFAD7B00FFD6BD00FFCEB500FFD6C600FFAD7B00BD8C6300D6CEBD00D6C6
+ B500CEBDAD00CEB5A500C6B5A500BDB5A500B5948400E78C5A00FFE7D600FFCE
+ B500FFA57B00E7844200BD734A000000000000000000E7B58400FFE7C600FFDE
+ B500FFDEB500FFDEAD004A424200848484005A5A5A005A5A5A00848484008484
+ 8400848484008484840084848400848484008484840039393900292929000808
+ 000063319400B5B5B500000000000000000073BDD60031BDE7007BEFFF006BE7
+ FF00109CD60094DEEF00DEFFFF00CEFFFF00BDFFFF00B5F7FF00B5F7FF00ADF7
+ FF00A5F7FF009CEFFF0094EFFF0094EFFF0084EFFF00217B210084BD8C0042D6
+ F70029CEEF001094C600BDD6DE00000000000000000000000000D6CECE0094A5
+ A50039101000E7737300F7949400FFCECE00FFEFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFD6D600FFBDBD00EF7B7B009C424200525A5A00FFFFFF00FFC6C600F79C
+ 9C0094424200733131009C5A5A00CEC6C600C6947B00AD521800AD522100CE6B
+ 3100FFDECE00FFD6C600FFDEC600FFCEAD00CE845A00E7D6CE00DECEC600D6C6
+ B500D6CEB500DECEBD00E7D6BD00CEC6B500BD9C8400EF946300FFE7CE00FFDE
+ CE00FFE7CE00FFDECE00CE7B4A000000000000000000E7B58400FFE7C600FFDE
+ BD00FFDEB500FFDEB5004A424200848484005A5A5A005A5A5A00EFEFEF00D6D6
+ D600D6D6D600D6D6D600D6D6D600E7E7E7008484840039393900292929000808
+ 0000844AB500844AB500000000000000000063B5D60039C6E70084F7FF007BF7
+ FF0039C6E700109CD6007BCEE7009CE7EF00B5EFF700C6F7FF00CEFFFF00CEFF
+ FF00BDF7FF00B5F7FF00ADF7FF00A5F7FF00217B31004ACE6B0010842100429C
+ 8C0084EFFF0021A5D6007BB5CE00000000000000000000000000CECECE009CA5
+ A50042212100DE6B6B00F7949400FFC6C600FFEFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFD6D600FFBDBD00E77373009C424200524A4A00FFE7E700EF949400CE63
+ 6300CE63630052313100D6CECE00C6CECE00CEAD9C00B5521000B5522100FFCE
+ AD00FFEFD600FFE7CE00FFDEC600DE8C5200E7D6C600E7D6CE00292121002118
+ 18002929210042393900736B6300CEC6BD00CEAD9400FFA56B00FFE7D600FFE7
+ CE00FFE7D600FFC69C00C68463000000000000000000E7B58400FFE7C600FFDE
+ BD00FFDEBD00FFDEB5004A424200848484005A5A5A005A5A5A00F7F7F700D6D6
+ D600D6D6D6005A5A5A005A5A5A00E7E7E7008484840039393900292929000808
+ 0000844AB500844AB500B5B5B500000000005AB5D60042CEEF0084F7FF0084F7
+ FF0084F7FF004ACEEF0021ADDE0018ADD60010A5D60021A5D60039B5DE006BCE
+ E700D6FFFF00D6FFFF00C6FFFF00087B420039BD5A005AF78C0063F78C001084
+ 290063C6BD006BD6E7002194C600000000000000000000000000D6CECE00A5B5
+ B50031101000DE6B6B00F7949400FFCECE00FFEFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFCECE00FFBDBD00EF8484009C4A4A005A424200FFADAD00C65A5A00D66B
+ 6B008439390010101000CECECE0000000000DEDEDE00B5845A00B5632900F7AD
+ 7300FFDEAD00FFEFCE00EFA56B00DEC6B500FFFFFF005A525200101010001010
+ 1000101010001010100021181800DECEC600D6AD8C00FFD6A500FFEFD600FFEF
+ D600FFF7DE00F7944A00D6BDB5000000000000000000E7BD8C00FFEFD600FFE7
+ C600FFDEBD00FFDEBD004A424200848484005A5A5A005A5A5A00F7F7F700D6D6
+ D600D6D6D6008484840052525200E7E7E7008484840039393900292929000808
+ 0000844AB5009C63CE00844AB500000000004AB5D60052D6EF008CFFFF0084F7
+ FF0084F7FF008CF7FF0084F7FF007BF7FF007BEFFF006BE7F70052D6EF0010A5
+ D60063C6DE00E7FFFF00399C63002194310052E784005AEF8C005AF78C0052DE
+ 7B00107B1800A5E7DE0029A5CE0094C6D6000000000000000000CECECE005A52
+ 52009C4A4A00EF7B7B00F79C9C00FFC6C600FFEFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFF7F700FFB5B500FF9C9C00A552520042212100EF737300CE636300B55A
+ 5A006B31310021181800CECECE00000000000000000000000000CEB5A5009452
+ 2900B5846300C6946B00B57B5200E7CEBD00CEBDAD005A5252005A5A5A00525A
+ 5A00525252004A4A4A0094948C00FFF7EF00D6A58400FFFFF700FFFFFF00FFFF
+ FF00FFEFCE00C67B4A00000000000000000000000000E7BD8C00FFEFD600FFE7
+ C600FFE7C600FFDEBD006B6B6B00ADA5A500848484008C8C8C00F7F7F700FFFF
+ FF00F7F7F7009C9C9C0084848400F7F7F700ADA5A5006B6B6B004A4242000808
+ 0000AD7BE700A573DE008C5AC600B5B5B50039ADD6005ADEF70094FFFF008CFF
+ FF008CFFFF008CF7FF008CF7FF008CF7FF008CF7FF008CFFFF0094FFFF0073E7
+ F700109CCE0084BD9C00188C210042DE73004AE7840052E784005AEF8C005AF7
+ 8C0052DE7B002984310073C6D6004AA5CE000000000000000000000000002110
+ 1000BD5A5A005231310052424200393131003939390039393900212121003131
+ 3100212121004A42420029212100392929001818180084424200C66363007339
+ 39001800000094949400CECECE00000000000000000000000000DEDED6009C5A
+ 3100B57B6B00F7EFEF00EFDED600DEBDAD00D6AD9400C69C7B00B58C6B00AD84
+ 6B00AD846B00AD947300E7CEBD00DEAD8C00E7B58400FFE7D600FFE7D600FFD6
+ B500D6844A00D6C6B500000000000000000000000000EFCEB500FFEFD600FFEF
+ D600FFEFD600FFEFD6009C9C9C009C9C9C008C8C8C008C8C8C008C8C8C008C8C
+ 8C008C8C8C008C8C8C008C8C8C008C8C8C008C8C8C008C8C8C006B6B6B00B584
+ E700B584E700AD7BE7009C63CE00844AB50029ADD6006BDEF70094FFFF0094FF
+ FF0094FFFF0094FFFF008CFFFF008CFFFF008CFFFF008CFFFF008CFFFF0094FF
+ FF007BEFF700218C4A00108439000873210031B552004AE7840052E78400188C
+ 2100107B3900187B390039A5A500299CC60000000000C6C6C600DEDEDE001018
+ 1800211010000000000084848400FFFFFF00F7F7F700FFFFFF00ADADAD006363
+ 630073737300ADADAD00B5B5B50000000000848C8C0008000000733939005221
+ 210031292900BDC6C600CECECE0000000000000000000000000000000000D6C6
+ B500AD6B4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7EF00F7DE
+ D600EFD6C600D6AD9C00A5522900C69C8400CE9C8400CE9C8400C69C8400CEA5
+ 8400D6BDAD0000000000000000000000000000000000EFDEC600EFDEC600EFD6
+ B500EFD6B500EFD6B500EFD6B500EFCEB500EFCEB500EFCEB500EFCEB500E7BD
+ 8C0094CEEF0094CEEF008CB5EF006BA5E7006BA5E700BD94EF00BD94EF00BD8C
+ EF00BD8CEF00B584E700A573DE008C5AC60021A5DE006BE7F7009CFFFF0094FF
+ FF0094FFFF0094FFFF0094FFFF0094FFFF0094FFFF009CFFFF009CFFFF0094FF
+ FF009CFFFF009CFFFF009CFFFF009CFFFF00219C390042DE73004AE78400107B
+ 1800B5D6DE0094C6D6006BB5CE00A5CEDE00C6C6C600D6D6D6006B6B6B004A21
+ 21004A10100073737300848484008C8C8C00FFFFFF00F7F7F700FFFFFF00BDBD
+ BD00737373006B6B6B0084848400C6C6C60073737300424A4A00312121002921
+ 2100BDC6C600CECECE00C6C6C60000000000000000000000000000000000D6C6
+ B500BD7B4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00CEA58400BD8C7300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008CB5EF00A5CEF700ADDEF700A5D6EF00A5D6EF00A5D6EF0094CE
+ EF0094CEEF006BA5E7006BA5E700CEA5EF00CEA5EF00C69CEF00C69CEF00BD94
+ EF00BD8CEF00AD7BE700A573DE00000000004AB5DE0042C6E700A5FFFF009CFF
+ FF009CFFFF009CFFFF009CFFFF009CFFFF0084EFF7004ACEEF004ACEEF005AD6
+ EF0063DEF70073E7F7007BEFFF004AB58C0021A5420042D6730039CE6B00428C
+ 420000000000000000000000000000000000BDBDBD00D6D6D6005A5A5A002900
+ 00006B6B6B00EFF7F700FFFFFF007B7B7B0094949400FFFFFF00F7F7F700FFFF
+ FF00B5B5B5001818180094949400C6C6C600ADADAD003939390094949400C6C6
+ C600CECECE00C6C6C6000000000000000000000000000000000000000000D6C6
+ B500BD7B4A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00B5734A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000008CB5EF00ADDEF700B5DEEF00A5CEEF0094CEEF008CB5
+ EF006BA5E700D6B5EF00D6B5EF00CEA5F700CEA5EF00C69CEF00BD94EF00B584
+ E700AD7BE700000000000000000000000000ADD6DE0008A5DE0073E7F700A5FF
+ FF00A5FFFF00A5FFFF00ADFFFF008CF7FF0018B5E7004294BD007BBDD6005AB5
+ D60042ADD60029A5D600109CC600006B180031BD5A0039CE6B00107B1800ADC6
+ AD0000000000000000000000000000000000BDBDBD00DEDEDE00949494005A5A
+ 5A00F7F7F700D6D6D600C6C6C600FFFFFF004A4A4A007B7B7B00FFFFFF00FFFF
+ FF0039313100290000007B848400CECECE00CECECE00948C8C007B7B7B00D6D6
+ D600C6C6C600000000000000000000000000000000000000000000000000BD8C
+ 7300CEA58400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00B5734A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000008CB5EF00ADD6FF00A5CEF7008CB5EF006BA5E700D6BD
+ F700D6BDF700D6B5EF00D6B5EF00CEA5F700CEA5EF00BD8CEF00B584E7000000
+ 0000000000000000000000000000000000000000000063BDDE0010ADDE0031BD
+ E70039C6E7004ACEEF005ADEEF0029BDE7004294B50000000000000000000000
+ 00000000000094BD9C00297B2900189C310031C65A001084210084AD84000000
+ 000000000000000000000000000000000000DEDEDE008C8C8C0063636300FFFF
+ FF00BDBDBD00DEDEDE00E7E7E700B5B5B50052525200424242009C9C9C00A5A5
+ A50008080800080000001010100031313100292929004242420010101000CECE
+ CE0000000000000000000000000000000000000000000000000000000000B56B
+ 4200E7D6CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00F7E7E700AD73420000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000008CB5EF008CB5EF0000000000D6ADFF00DEC6
+ FF00DEC6FF00D6BDF700D6ADFF00C69CEF00BD8CEF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000A5CEDE008CC6
+ DE007BBDDE0063B5DE0042ADDE0052B5DE0000000000639C6300006B00002173
+ 2100007308000884100018A52900189C3100107B18008CB58C00000000000000
+ 000000000000000000000000000000000000CECECE00BDBDBD0063636300BDBD
+ BD00FFFFFF00CECECE00C6C6C600212121004A4A4A00636363006B6B6B006B6B
+ 6B00BDBDBD00ADADAD00A5A5A500A5A5A500A5A5A5009C9C9C00B5B5B500CECE
+ CE0000000000000000000000000000000000000000000000000000000000CEA5
+ 9400BD8C6300C68C6B00CE9C7B00DEBD9C00E7D6CE00F7EFEF00FFF7F700FFFF
+ FF00E7C6B500C6A58C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000D6ADFF00DEC6
+ FF00DEC6FF00CEA5EF00C69CEF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5CEB500639C
+ 63003984390039843900398439007BAD7B000000000000000000000000000000
+ 000000000000000000000000000000000000C6C6C600CECECE00CECECE004A4A
+ 4A00CECECE00CECECE0042424200DEDEDE0073737300ADADAD00D6D6D600CECE
+ CE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D600CECECE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D6AD
+ FF00CEA5F7000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CECE
+ CE006363630063636300CECECE0000000000D6D6D600CECECE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000CECECE00949C
+ 9C0094949400C6C6C60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CECECE00CECECE00C6C6C600C6C6C600BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00C6C6C600ADADAD00425A7B003963
+ 8C00315A84004A5A6B00B5B5B50000000000000000000000000000000000AD84
+ 6B00AD846B00AD846B00AD846B00AD846B00AD846B00AD846B00AD846B00AD84
+ 6B00AD846B00AD846B00AD846B00AD846B00AD846B00AD846B00AD846B00AD84
+ 6B00AD846B000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CEB5C600BDA5BD00BDA5BD00C6ADC600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000BDBDBD006B6BAD007B7BD600ADAD
+ EF00ADADEF007373D6005A5AAD00C6C6C6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000D6D6D600C6C6C600BDBD
+ BD00B5B5B500B5B5B500B5B5B500ADADAD00ADADAD00ADADAD00ADADAD00ADAD
+ AD00ADADAD00ADADAD00ADADAD00ADADAD00949C9C00395273004A7BAD005A94
+ C6005A8CC60042739C0042526300BDBDBD0000000000D6D6D600C6C6C600AD84
+ 6B00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEF
+ DE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEF
+ DE00AD846B00CECECE00CECECE00000000000000000000000000000000007B94
+ 7B00849C840052945200318439003184310029843100397B42006B846B00ADA5
+ AD00ADBDAD00849C8400A5A5A50094A594008C9C8C00A5A5A500000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CECECE003939CE009C9CFF00B5B5FF00BDBD
+ FF00B5B5FF00ADADFF008C8CFF002929D6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECECE00BDBDBD00ADAD
+ AD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADAD
+ AD00ADADAD00ADADAD00ADADAD0094949400395273004A7BAD005A8CC6006394
+ C60084ADD60084ADD6004A739C007B848C0000000000CECECE00BDBDBD00AD84
+ 6B00FFF7E700FFDEC600FFDECE00FFDECE00FFDECE00FFDECE00FFDECE00FFDE
+ CE00FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFEF
+ DE00AD846B00BDBDBD00CECECE0000000000000000000000000018941800298C
+ 31001894210031AD310042B5420042B54A005AA55A004AA55200399C3900427B
+ 4200398C420021942100397B39002194290029842900297331004A7352009CA5
+ 9C00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000007373B5007373FF007B7BFF00847BFF008484
+ FF008484FF007B7BFF007373FF006B6BFF005252BD0000000000000000000000
+ 00000000000000000000000000000000000000000000D6D6D600C6C6C600BDBD
+ BD00B5B5B500B5B5B500B5B5B500ADADAD00ADADAD00ADADAD00ADADAD00ADAD
+ AD00ADADAD00ADADAD0094949C00395273004A7BAD005A8CC6006394C60084AD
+ D600B5CEE700B5CEE7005A84AD007B848C0000000000D6D6D600C6C6C600AD84
+ 6B00FFF7E700FFDEC600FFDECE00FFDECE00FFDECE00FFDECE00FFDEC600FFDE
+ C600FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFE7
+ DE00AD846B00C6C6C600D6D6D60000000000000000005AAD5A0021AD290039AD
+ 420042B54A0042B54A0031AD39004A944A00B5ADB500B5B5B50084AD840052C6
+ 5A0039B539004ABD4A004AB5520031AD390039AD390042A54200218429004273
+ 4200000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005252CE006B6BFF007373FF007B73FF006B6B
+ FF006363FF006363FF006363FF007373FF004A42CE00DEDEDE00E7E7E7000000
+ 000000000000000000000000000000000000000000000000000000000000D6D6
+ D600CECECE00CECECE00C6C6C600C6C6C600BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00B5ADAD0094949400425A7B004A7BAD005A8CC6006394C60084ADD600BDCE
+ E700CEDEEF0084A5C6004A637B00D6D6D600000000000000000000000000AD84
+ 6B00FFF7E700FFDEC600FFDECE00FFDECE00FFDECE00FFDECE00FFDECE00FFDE
+ C600FFDECE00FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFDEC600FFE7
+ DE00AD846B00000000000000000000000000000000000000000018AD210010A5
+ 1800299C290021942100317B31007B737B00D6CED600DED6DE008CAD8C0052DE
+ 5A005ADE630052CE52004ACE520063C6630073A5730042AD4A00319C3100296B
+ 2900ADADAD00000000000000000000000000000000000000000000000000DEDE
+ DE00DEDEDE00DEDEDE00E7E7E700736BB500B5B5FF00ADADFF00ADADFF00ADA5
+ FF009C9CFF009494FF009C94FF00B5B5FF004A4ABD00B5B5B500B5B5B500D6D6
+ D600000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000AD847B00735A5A00426B94005A94C6006394C60084ADCE00B5CEE700CEDE
+ EF008CADCE004A637B00D6D6D60000000000000000000000000000000000AD84
+ 6B00FFF7E700FFDECE00DE944A00DE944A00DE944A00DE944A00DE944A00DE94
+ 4A00DE944A00DE944A00DE944A00DE944A00DE944A00DE944A00FFDEC600FFE7
+ DE00AD846B0000000000000000000000000000000000000000002994310039A5
+ 4200109C1800397B39007B7B7B0084848400DEDEDE00DEDEDE008C9494005294
+ 520052B55A0052B55A004AA54A0084AD8400CEBDD60029943100189C2100086B
+ 08006B946B000000000000000000000000000000000000000000DEDEDE00BDBD
+ BD00B5B5B500ADADAD00ADADAD009494A5009494EF00DEDEFF00D6D6FF00D6D6
+ FF00D6D6FF00D6D6FF00DEDEFF009494E7009494A500ADADAD00B5B5B500D6D6
+ D600000000000000000000000000000000000000000000000000000000000000
+ 000000000000BDBDBD0094948C008C7B730084737300847B7300948C8C009C94
+ 8C00BD9C9400D6B5AD0073635A005284AD0084ADD600B5CEE700CEDEEF008CAD
+ CE00425A7B00D6D6D6000000000000000000000000000000000000000000AD84
+ 6B00FFF7EF00FFDECE00DE944A00FFFFF700F7E7DE00F7E7D600FFEFD600EFDE
+ C600F7DEBD00FFDEBD00F7CEA500F7CEA500FFCEA500DE944A00FFDEC600FFE7
+ DE00AD846B000000000000000000000000000000000084BD8C00A5BDA50052AD
+ 5A00316B31009C8C9C00737373009C9C9C00E7E7E700EFEFEF00A5A5A500736B
+ 73007B7B7B007B7B7B00736B7300A59CA500DED6DE00397B390042AD4200428C
+ 420094B594000000000000000000000000000000000000000000000000000000
+ 0000CECECE00BDBDBD00B5B5B500B5B5B5009C9CA5008484BD00C6C6F700EFEF
+ FF00E7E7FF00BDBDF7008484BD00ADADB500C6C6C600D6D6D600000000000000
+ 000000000000000000000000000000000000000000000000000000000000C6C6
+ C6008C7B7B0094736B00B5948C00CE9C9400CEA59C00C69C9400A5847B008C6B
+ 5A00947B7300C6B5B500CEA59C00846B6B00A5BDD600CEE7F70094ADCE004A63
+ 7B00D6D6D600000000000000000000000000000000000000000000000000AD84
+ 6B00FFF7EF00FFDECE00DE944A00FFFFFF00C6CED600E7DEE700FFF7EF00CEBD
+ B500E7CEBD00FFEFD600C6BDB500DECEB500FFDEB500DE944A00FFDEC600FFE7
+ DE00AD846B00000000000000000000000000000000000000000000000000398C
+ 42008C848C00ADA5AD00525A5200C6C6C600EFEFEF00F7F7F700BDBDBD008C8C
+ 8C009C949C009C9C9C0084848400A5A5A500E7E7E7008C848C007BA57B00BDCE
+ BD00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008484B5008484B5006363AD003939
+ C6004242C6007373AD008C8CBD00A5A5BD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5B5AD009473
+ 6B00C69C9400E7AD9C00F7BDAD00FFCEB500FFCEB500F7C6AD00EFB59C00D69C
+ 9400A5847B008C6B6300B5ADAD00D6B5AD00AD94840094A5BD00526B8400D6D6
+ DE0000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFF7EF00FFDECE00DE944A00F7FFFF004A7BFF00A5BDFF00FFFFEF00A542
+ 0800CE8C6300FFF7E700089CD60073BDCE00FFDEB500DE944A00FFDEC600FFE7
+ DE00AD846B000000000000000000000000000000000000000000000000008C94
+ 8C009C949C00848C8C00636B6B00D6D6D600DEDEDE00FFFFFF00DEDEDE009C9C
+ 9C00ADADAD00ADADAD007B7B7B00B5B5B500EFEFEF008C8C8C00BDC6BD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000635AEF00B5B5FF00C6BDFF00CEC6
+ FF00CEC6FF00C6BDFF00BDB5FF00524AD6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C6BDBD00947B7300DEAD
+ A500F7B59C00FFCEB500FFDECE00FFE7D600FFE7D600FFE7D600FFD6C600FFBD
+ A500E7AD9C00B58C84008C736300CEC6C600DEBDB500634A5200CECECE000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFF7EF00FFDED600DE944A00FFFFFF009CB5F700CED6FF00FFFFF700CE9C
+ 7B00E7BDAD00FFF7E70084BDCE00B5CECE00FFE7C600DE944A00FFDECE00FFEF
+ DE00AD846B000000000000000000000000000000000000000000000000009C8C
+ 9C008C8C8C00525A63006B737B00C6CECE00D6D6D600F7F7F700FFFFFF00BDBD
+ BD009C9C9C00949494007B7B7B00DEDEDE00F7F7F7008C8C8C00BDBDBD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005A5AE7009C94FF00A59CFF00ADA5
+ FF00ADA5FF00A59CFF009C94FF00736BFF005252D60000000000000000000000
+ 000000000000000000000000000000000000DEDEDE008C736B00D6ADA500F7AD
+ 9400FFCEAD00FFD6C600FFDECE00FFDECE00FFDECE00FFDECE00FFDEC600FFD6
+ BD00FFBD9C00EFAD9400A5847B00947B7300BD9C9400BD9C8C00000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFF700FFE7D600DE944A00FFFFFF00EFE7D600F7EFEF00FFFFFF00E7E7
+ DE00EFEFE700FFF7EF00DED6BD00EFDEC600FFE7CE00DE944A00FFDECE00FFEF
+ DE00AD846B000000000000000000000000000000000000000000000000007373
+ 7300636363005A4221007B6342009C949400BDC6C600DEDEDE00FFFFFF00FFFF
+ FF00C6C6C600ADADAD00CECECE00FFFFFF00F7F7F7009C9C9C00A5A5A5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000635ADE00736BFF007B73FF00847B
+ FF00847BFF007B73FF00736BFF00635AFF004A39FF002121DE00ADADDE000000
+ 000000000000000000000000000000000000B5ADAD00AD8C8400F7AD9400FFBD
+ 9C00FFCEB500FFD6BD00FFD6BD00FFD6C600FFD6C600FFD6C600FFD6BD00FFD6
+ B500FFCEAD00FFAD8C00D6A594008C635A00ADA5A50000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFEFE700DE944A00FFFFFF00CE9C9C00E7CECE00FFFFFF00E784
+ 0000F7BD7300F7FFFF00009C00006BC66300FFEFE700DE944A00FFDECE00FFEF
+ DE00AD846B0000000000000000000000000000000000000000008C8C94004A4A
+ 4A006B4A2900AD5A0800E7943900BD7B42009C846B00B5BDC600E7EFEF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700B5B5B500949494000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B5B5D6003929EF005A4AFF005A4A
+ FF005A4AFF005242FF005239FF004A31FF004231FF004A31FF002918F7007B7B
+ C600000000000000000000000000000000009C848400CEA59C00FFAD8400FFC6
+ 9C00FFC6A500FFCEAD00FFCEB500FFD6B500FFD6B500FFD6B500FFCEB500FFCE
+ AD00FFC6A500FFB59400EFA58C00AD848400948C8C0000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFEFE700DE944A00FFFFFF00EFD6DE00F7EFF700FFFFFF00F7CE
+ 9400FFE7CE00FFFFFF0084D68C00BDE7B500FFF7F700DE944A00FFDECE00FFEF
+ DE00AD846B0000000000000000000000000000000000BDADBD00635242008C52
+ 2100AD631000B5630000DE8C3100FFB56300E7A55A00B5845A00ADA5A500DEDE
+ E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00BDBDBD006B737300737B
+ 8400ADADAD000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000ADADD6002918E7004229
+ FF004231FF004229FF004229FF004229FF004229FF004229FF004231FF002118
+ F700C6C6DE00000000000000000000000000947B7300E7AD9C00FFAD8400FFCE
+ AD00FFCEB500FFCEB500FFCEAD00FFCEAD00FFCEAD00FFCEAD00FFC6AD00FFC6
+ A500FFC69C00FFBD9400F7A58400C69C9400847B730000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFF7EF00DE944A00F7BD8400F7C68C00F7C68400EFBD8400F7C6
+ 9400F7C68C00EFBD7B00FFC68C00FFBD8400EFB56B00DE944A00FFDECE00FFEF
+ DE00AD846B0000000000000000000000000000000000B58C94009C520800BD63
+ 0000E77B0000EF7B0000BD630000BD6B1000E7A55200FFCE7B00D69C5A00AD9C
+ 8C00D6DEE700FFFFFF00FFFFFF00FFFFFF00DEE7E700A5ADB5005A524A006342
+ 18006B635200C6BDCE0000000000000000000000000000000000000000000000
+ 0000DEDEEF00DEDEEF00DEDEEF00DEDEEF00DEDEEF00DEDEEF00E7E7EF00948C
+ CE002921DE003921FF003929FF003929FF003929FF003921FF003921FF005A4A
+ FF005252D600000000000000000000000000947B7300EFB59C00FFC6A500FFD6
+ BD00FFD6C600FFD6C600FFDEC600FFCEB500FFC69C00FFC69C00FFBD9C00FFBD
+ 9C00FFBD9400FFB58C00F7A57B00CEA59C008473730000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFF7EF00DE9C6300CE631000CE6B1000CE6B0800CE6B0800CE6B
+ 0800CE6B0800CE6B0800CE6B0800CE6B0800CE6B0800EFBD8C00FFDECE00FFEF
+ E700AD846B0000000000000000000000000000000000BD946B00D6730000F784
+ 0000F7840000DE841000EF840800DE730000B55A0000CE8C3100FFE79400E7AD
+ 6B00B59C8C00DEE7E700F7F7F700CECED6009C949400AD844A00E7842100E77B
+ 0800AD844A000000000000000000000000000000000000000000000000003931
+ DE002110F7002108F7002910F7003121F7003121F7003121F700BDBDD6000000
+ 0000000000004A42DE004A31FF003921FF003921FF004A31FF007363FF00846B
+ FF004A42DE0000000000000000000000000094736B00EFB5A500FFCEB500FFD6
+ C600FFD6C600FFD6C600FFDEC600FFDEC600FFC6A500FFB58C00FFB58C00FFB5
+ 8C00FFB58C00FFAD8400F7A57B00CEA59C00847B730000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFF7EF00FFF7EF00FFF7EF00FFF7EF00FFF7EF00FFF7EF00FFF7
+ EF00FFF7EF00FFEFE700FFEFE700FFEFE700FFEFE700FFEFE700FFEFDE00FFF7
+ EF00AD846B00000000000000000000000000000000000000000000000000FFAD
+ 2900DE8C210094949400C6B5A500DE8C2100EF840000B55A0000C67B1800FFEF
+ A500E7B57300ADA59C00A5B5BD009C8C7300DE8C3100FF8C1000DE8C31000000
+ 0000000000000000000000000000000000000000000000000000000000005252
+ DE004A31FF008C7BFF009C8CFF009C8CFF009C8CFF00A594FF005252D600DEDE
+ EF00CECEDE005A5AE7009C94FF00948CFF00948CFF009C8CFF00948CFF009C8C
+ FF00524ADE000000000000000000000000009C7B7300D6AD9C00FFCEB500FFDE
+ C600FFDEC600FFDEC600FFDEC600FFDECE00FFDEC600FFC6AD00FFBD9400FFBD
+ 9400FFB58C00FFA57300F7A58400B5949400948C8C0000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFF7F700FFF7F700FFF7F700FFF7F700FFF7EF00FFF7EF00FFF7
+ EF00FFF7EF00FFF7EF00FFE7DE00E7D6CE00E7D6C600E7CEC600E7CEC600E7D6
+ CE00AD846B000000000000000000000000000000000000000000000000000000
+ 0000BDAD7B000000000000000000CE8C4200FF840000E78400009C520000BD84
+ 2900FFE79C00BD9463009C734A00EF942100F78C1000CE945200000000000000
+ 0000000000000000000000000000000000000000000000000000000000008484
+ C600AD9CFF00BDADFF00BDADFF00BDADFF00BDADFF00BDADFF00B5ADFF008C8C
+ EF009C94F700BDB5FF00B5ADFF00B5ADFF00B5ADFF00B5ADFF00B5ADFF00BDB5
+ FF006B6BD600000000000000000000000000BDADAD00B5948C00FFC6AD00FFDE
+ CE00FFDECE00FFDECE00FFDECE00FFDECE00FFDECE00FFE7CE00FFDECE00FFDE
+ CE00FFDECE00FFAD8400E7A5940094737300BDBDBD0000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7
+ EF00FFF7EF00FFF7EF00EFDED600AD846B00AD846B00AD846B00AD846B00AD84
+ 6B00AD846B000000000000000000000000000000000000000000000000000000
+ 0000949C9C000000000000000000EFA53900FF8C0000DE841000BD732100844A
+ 0800CE943900FFC67300F7840800DE8C21000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006B6BDE00DED6FF00D6CEFF00D6CEFF00D6CEFF00D6CEFF00D6CEFF00D6CE
+ FF00D6CEFF00D6CEFF00D6CEFF00D6CEFF00D6CEFF00D6CEFF00DED6FF008484
+ E70000000000000000000000000000000000DEDEDE0094736B00E7B5A500FFCE
+ B500FFE7D600FFE7D600FFDED600FFE7D600FFE7D600FFE7D600FFE7D600FFE7
+ D600FFDED600F7B59C00C6A594008C7B73000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFF7F700FFFFF700FFFFF700FFF7F700FFF7F700FFF7F700FFF7
+ EF00FFF7EF00FFF7EF00EFE7DE00AD846B00FFD6B500FFE7D600F7E7DE00AD84
+ 6B00BDBDBD000000000000000000000000000000000000000000000000000000
+ 00008484840000000000BDA5BD00CEBD7B00FFC65200DE842100C67B2100AD6B
+ 2100A55A0800DE94310000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D6D6DE008C8CE700F7EFFF00EFE7FF00EFE7FF00EFE7FF00EFE7FF00EFE7
+ FF00EFE7FF00EFE7FF00EFE7FF00E7E7FF00EFE7FF00EFEFFF00ADADEF009494
+ CE000000000000000000000000000000000000000000BDADAD00A5847B00F7BD
+ AD00FFCEBD00FFE7DE00FFE7DE00FFEFDE00FFE7DE00FFE7DE00FFEFDE00FFE7
+ D600FFBDA500DEB5A5008C736B00C6C6C6000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFFFF700FFFFF700FFFFF700FFFFF700FFF7F700FFF7F700FFF7
+ F700FFF7F700FFF7F700EFE7DE00AD846B00FFE7D600EFDED600946B5A00BDBD
+ B500000000000000000000000000000000000000000000000000000000009C9C
+ 9C0094949400C6C6C600B5B5B50000000000F7D67B00EF8C0800DE841000E79C
+ 4200000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000CECEE7006B6BDE00EFEFFF00FFFFFF00FFF7FF00F7F7FF00F7F7
+ FF00F7F7FF00F7F7FF00FFF7FF00FFFFFF00F7F7FF008484DE00ADADD6000000
+ 0000000000000000000000000000000000000000000000000000B59C9C00A584
+ 7B00E7B5A500FFC6B500FFD6C600FFDED600FFE7D600FFDECE00FFCEBD00F7BD
+ A500D6AD9C00947B6B00B5B5AD00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFFFFF00FFFFF700FFFFF700FFFFF700FFFFF700FFFFF700FFF7
+ F700FFF7F700FFF7F700F7EFE700AD846B00F7E7DE00946B5A00BDBDB5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000A59CA500BDADBD000000000000000000EFA55A00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000008C8CC6008C84DE00A5A5E700C6C6F700E7E7
+ FF00E7E7FF00C6C6F700ADADEF008C8CE7007B7BC60000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000BDAD
+ A50094736B00B5948C00D6AD9C00EFB5A500EFB5A500E7B5A500CEA59C00AD8C
+ 84008C7B7300BDBDBD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFF7F700AD846B00AD846B00BDBDBD00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000ADADC6009494
+ B5009494B500ADADC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000DED6D600B5A5A5009C84730094736B00947B7300947B73009C847B00B5AD
+ AD00000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000AD84
+ 6B00AD846B00AD846B00AD846B00AD846B00AD846B00AD846B00AD846B00AD84
+ 6B00AD846B00AD846B00AD846B00AD846B00CECECE0000000000000000000000
+ 000000000000000000000000000000000000424D3E000000000000003E000000
+ 2800000060000000C00000000100010000000000000900000000000000000000
+ 000000000000000000000000FFFFFF0000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFFFFFDFFFFFFFFFFFFC3E000FFFFF8FF
+ FFFFFFFFFF83E000FFFFF07FFEFFDFFFFF07E000FFE0003FFC7FDFFFFE0FE000
+ FFE0001FFC3FBFFE0C1FE0007FE0000FFC3F3FF8003FE0007FE00007FE1E7FF0
+ 007FE0007FE0007FFF0C7FE000FFE0007FE0007FFF80FFE000FFE0007FE0007F
+ FFC1FFC0007FE0007FE0007FFFC1FFC0007FE0007FE0007FFF80FFC0007FE000
+ 7FE0007FFE0C7FC0007FE00007E0007FFC1E3FC0007FE0000FE0007FFC3F1FE0
+ 00FFE0001FE000FFFC7FDFE000FFE0003FE000FFFFFFFFF001FFFFF07FE000FF
+ FFFFFFF803FFFFF8FFE000FFFFFFFFFE0FFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00007FFFFFFFFFFFFFFFFFFE0
+ 0003FFFFFFFFFFFFFFFFFFE00003FFFFFFFFFFFFFFFFFFE00003FFFFFFFFFFFF
+ FF801FE00003FF800FFFFFFFFF801FE00003FF800FFFFFFFFF801FE00003FF80
+ 0FFF9FFFFF801FE00003FF800FFF0FFFF8001FE00003F0000FFF0FFFF8001FE0
+ 0003F0000FFE07FFF8001FE00003F0000FFC07FFF8001FE00003F0003FF843FF
+ F8001FE00003F0003FF1E3FFF8001FE00003F0003FFFE1FFF8003FE00003F000
+ 3FFFF1FFF8007FE00003F0003FFFF8FFF801FFE00003F0003FFFFC7FF801FFE0
+ 0003F0003FFFFE3FF803FFE00003F8003FFFFF8FF807FFE00003FF03FFFFFFFF
+ FFFFFFE00003FFFFFFFFFFFFFFFFFFE00007FFFFFFFFFFFFFFFFFFE0000FFFFF
+ FFFFFFFFFFFFFFE000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF
+ FFFF000000800003FFFFFF000000000000800001C1FFFF000000000000800001
+ C0FFFF000000000000800001FF7FFF000000000000800001FE7FFF0000000000
+ 00800001FEFFFF000000000000800001F18019000000000000800001F3800100
+ 000080003F800001EF800100000080003F800001CFE00100000080003F800001
+ CFE00100000080003F800001EE000100000080003F800001F000010000008000
+ 3F800001F8000100000080003F800001FE000100000080003F800001FFE00100
+ 000080003FF00001FFE00100000080003FF80001FFE00100000080003FFC0001
+ FF800100000080003FFE0001FF801900000080003FFF0003FFFFDF0000008000
+ 3FFFFFFFFFFFFFFFFFFF80003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFF
+ FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFC3F01FF7FFFFFFFFFFFFFFFFC1F01
+ FE7FFFFFFFFFFFFFFFF80601FC7FFFFFFBFFFFDFFFF00007F87FFFFFF9FFFF9F
+ FFF00007F0007FFFF8FFFF1FFFE0000FE00007FFF87FFE1FFFC00003C00007F8
+ 003FFC001F800001E00007F8001FF8001F800000F00007F8000FF0001F000000
+ F80007F8001FF8001F000000F80007F8003FFC001F000001F80007FFF87FFE1F
+ FF800003F80007FFF8FFFF1FFF800003F80007FFF9FFFF9FFF800007F80007FF
+ FBFFFFDFFFF0000FF80007FFFFFFFFFFFFF0001FF80007FFFFFFFFFFFFE1801F
+ F80007FFFFFFFFFFFF87803FFFFFFFFFFFFFFFFFFF8F807FFFFFFFFFFFFFFFFF
+ FF8F97FFFFFFFFFFFFFFFFFFFFBFFFFFFE007FFFFFF8FFFFFFFFFFFFFE007FFF
+ FFE0FFFFFFFFFFFFC0007FFFFFC0E00007FFFFFF00001FFF0780C00003FFFEFF
+ 00033FFE0700C00003FFFE7F00000FFC0001C00003FFFE3F00000FFC0003C000
+ 03FFFE1F000007F80007C00003FE000F000003F8000FC00003E00007000001F8
+ 000FC00003E00003000007F8000FC00003E00007000001E0000FC00003E0000F
+ 000001C00003C00003E0001F000003800003C00003E0001F000001000003C000
+ 03E0001F000003000003C00003E0001F00000700000FC00003E0001F10000300
+ 001FC00003E0001F00000100001FC00003E0001F00000000003FC00003E0001F
+ 8000800003FFC00003E0001FC000C0000FFFE00007FFFFFFF081E0801FFFFFFF
+ FFFFFFFFFF83F0F03FFFFFFFFFFFFFFFFFFFFFC000FFFFFFFFF80001E0000780
+ 00FF8000FFF80003C00003800007000003F80001800001800007000001F00000
+ 800000800007000003E0000000000180000700000FE000000000018000070000
+ 0FF00000000001800007000007C00000000001800007000007C0000000000180
+ 0007000003C00000000001800007000003F00000000001800003000001C00000
+ 000001800003000001C00000000001800001000001C000010000018000010000
+ 00C00001C00003800000000000E00001C00003800000000000800101E0000780
+ 0000000000000001E001FFF8000100000F000003E003FFFC000700000F000007
+ E003FFFC001F80781F00000FE003FFFE407FC0803F00000FE003FFFFC1FFFFC0
+ FF00001FFFFFFFFFE7FFFFFFFFE13FFFFFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFF
+ FFFFF00001E00007FC3FFFFF00FF800000800001E0003FFE00FF800000800001
+ C0000FFE007F80000080000180000FFE001FE00000E00007C00007E0000FFFF0
+ 01E00007C00007C0000FF80003E00007800007F0003FE00007E00007E0000FFF
+ 00FFC0000FE00007E0001FFF00FF80001FE00007E0001FFF007F00003FE00007
+ E0001FFF001F00007FE00007C0001FFF000F00007FE00007800007FF80070000
+ 7FE00007800003F0000700007FE00007800007E0180700007FE00007E0001FE0
+ 000700007FE00007F6003FE0000700007FE00007F600FFF0000F0000FFE00007
+ F403FFF0000F8000FFE0000FE10FFFF8001FC001FFE0001FF9BFFFFE007FE003
+ FFE0003FFFFFFFFFC3FFF00FFFE0007F00000000000000000000000000000000
+ 000000000000}
+ end
+ object ImageList3: TImageList
+ Height = 24
+ Width = 24
+ Left = 488
+ Top = 136
+ Bitmap = {
+ 494C01016F007200040018001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 000000000000360000002800000060000000A0020000010020000000000000F0
+ 0300000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7A56300FFCE8C00FFDEA500FFC6
+ 8400FFBD7300FFBD7300FFC67300FFBD7300EF9C5200D68C4A00C6A58C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100DED6
+ DE00F7EFEF00F7EFEF00F7EFDE00F7F7E700F7DECE00FFF7EF00FFFFFF00EFE7
+ DE00C6633100CE6B3100CE633100CE633100CE633100CE633100CE633100CE63
+ 3100CE633100CE6B3100CE6B3100CE6331000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000F7AD6300FFD69400FFE7AD00FFCE8400F7BD
+ 6B00F7AD6300F7AD6300F7AD6300FFBD7300FFCE8400FFBD7300EF9C5200CE84
+ 5200C6A594000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100DEDE
+ DE00FFF7EF00F7F7EF00F7F7E700F7EFDE00F7DECE00FFFFF700FFFFFF00EFCE
+ BD00CE633100CE633100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7BD6B00FFDEA500FFE7B500FFD69400F7CE8C00EFB5
+ 7B00E7A56300EF9C5200EF9C5200EF944A00F79C5200FFBD7300FFD69400F7BD
+ 8400E7944A00CE84520000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100DEDE
+ DE00FFFFF700F7F7EF00F7F7EF00FFF7EF00FFEFE700FFFFFF00FFEFEF00D684
+ 5200D66B3900CE6B3100CE633100CE633100CE633100CE633100CE633100CE63
+ 3100CE633100CE633100CE633100CE6B31000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7BD6B00FFE7B500FFEFBD00FFDEA500FFD69400EFE7DE00EFE7
+ E700E7CEC600CEBDAD00DEAD8400D69C6B00D6844200D67B3900E78C4200EFB5
+ 7B00FFD69400EFB57B00D6844200C68C63000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100E7E7
+ E700FFF7F700FFBD8C00FFBD8C00FFBD8C00E7DED600FFFFFF00FFEFE700D684
+ 5200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FFC67300FFEFBD00FFEFC600FFE7AD00FFD69400F7DEBD00FFF7FF00FFFF
+ FF00FFFFFF00FFFFFF00F7F7F700EFE7EF00E7DEDE00E7C6B500DEAD8400C68C
+ 6300D69C6B00E7BD9400F7D6AD00EFB57B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100EFF7
+ F700FFF7F700F7F7F700FFF7F700F7F7EF00FFEFE700FFFFFF00FFF7F700EF8C
+ 5200D6733900CE6B3100CE633100CE633100CE633100CE633100CE633100CE63
+ 3100CE633100CE633100CE633100CE6331000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFC6
+ 7300FFEFC600FFF7CE00FFE7B500FFE7AD00FFDEA500EFE7DE00FFFFFF00FFF7
+ F700FFF7F700FFF7F700FFF7F700FFF7FF00FFF7FF00FFF7FF00FFF7FF00F7F7
+ FF00E7CEC600CE733900E7843900F7CE94000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100EFEF
+ EF00FFFFF700FFF7EF00FFF7EF00FFF7F700F7E7D600FFFFF700FFFFFF00FFE7
+ D600E7844A00D6733900CE633100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00D66B31000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFD68400FFFF
+ D600FFFFD600FFEFBD00FFE7B500FFE7AD00F7DEBD00F7F7F700FFF7FF00FFF7
+ F700F7F7F700FFF7F700FFF7F700F7F7F700F7EFEF00F7EFEF00F7EFEF00F7F7
+ F700D6AD9400DE6B2100DE631000DE5A10000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100EFEF
+ EF00FFFFF700F7E7DE00F7EFE700F7E7DE00E7DED600FFF7EF00FFFFFF00FFFF
+ F700EF8C5200D6734200D6733900CE633100CE633100CE633100CE633100CE63
+ 3100CE633100CE633100CE633100D66B39000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFCE8C00FFFFD600FFFF
+ E700FFF7CE00FFEFC600FFEFBD00FFE7AD00EFE7DE00FFF7FF00FFF7F700FFF7
+ F700FFF7F700F7EFEF00EFE7EF00F7EFEF00EFE7EF00EFE7EF00F7F7F700E7C6
+ B500D67B3900E7732900DE6B2100DE5A10000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100F7F7
+ FF00FFFFF700FFE7D600F7E7DE00F7E7D600F7E7D600FFE7D600FFFFFF00FFFF
+ FF00FF945A00FF945A00E7844A00CE633100CE633100FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00CE633100CE633100D67339000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFD68400FFFFE700FFFFE700FFFF
+ D600FFF7CE00FFEFC600FFEFBD00F7DEBD00F7F7F700FFF7F700FFF7F700F7F7
+ F700FFF7F700D6D6DE008C94AD00D6CED600E7DEDE00E7DEDE00DECECE00CE84
+ 5200E77B2900E7732900DE6B2100E77B29000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100EFF7
+ F700FFFFFF00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFFFFF00FFFF
+ FF00FFE7CE00FFAD7300FFBD8C00FFBD8C00CE633100CE633100CE633100CE63
+ 3100CE633100CE633100EF8C5200FF945A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFD68400FFE7B500FFFFE700FFFF
+ E700FFFFD600FFF7CE00FFE7BD00EFE7DE00FFF7FF00F7F7F700F7F7F700F7EF
+ EF00FFF7F700D6D6DE009CADCE009CADCE00CEC6CE00E7DEDE00C69C7B00D67B
+ 3900D67B3900DE6B2100E7843900E78C42000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100F7F7
+ FF00FFFFFF00FFFFFF00FFFFF700FFFFF700FFFFF700FFFFF700F7E7D600FFF7
+ F700FFFFFF00FFEFE700FFD6A500FFBD8C00FFBD8C00CE633100CE633100CE63
+ 3100CE633100FFAD7300FFAD7300FFAD73000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFD69400FFD68400FFE7
+ B500FFFFD600FFF7CE00EFDEC600F7EFEF00FFF7F700F7F7F700F7F7F700F7EF
+ EF00F7EFEF00D6DEE700CEE7FF00D6E7FF009CADCE00BDA59C00D6844200D67B
+ 3900D67B3900D67B3900D67B3900000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF000000FF000000FF000000
+ FF000000FF0000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100F7F7
+ FF00FFFFFF00EFCEAD00EFCEB500EFCEB500EFCEB500EFCEB500EFCEAD00F7DE
+ CE00FFFFFF00FFFFFF00FFFFEF00FFE7B500FFD6A500FFBD8C00FFBD8C00FFBD
+ 8C00FFBD8C00FFBD8C00FFBD8C00FFEFDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFD6
+ 8400FFD68400FFE7B500EFE7DE00FFF7F700F7F7F700F7F7F700F7EFEF00F7EF
+ EF00FFEFEF00CED6EF00ADDEF700B5EFFF0094DEFF008C94AD00E7843900D684
+ 4200D6844200D6844200CEB59400000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF000000FF000000FF000000
+ FF000000FF0000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100F7FF
+ FF00FFFFFF00F7DEC600F7DECE00F7DECE00F7DECE00F7DECE00F7DEC600F7DE
+ CE00E7DED600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FFE7BD00EFC69400F7EFEF00FFF7FF00F7F7F700F7EFEF00F7EFEF00F7EF
+ EF00FFEFEF00CED6EF007BE7FF007BE7FF007BE7FF0073B5E700C68C6300EF94
+ 4A00D68C4A00CEBDAD0000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100F7FF
+ FF00FFFFFF00FFF7EF00FFF7F700FFF7F700FFF7F700FFF7EF00FFF7EF00FFF7
+ EF00FFF7EF00FFF7E700E7DED600FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFF700FFEFDE00F7E7DE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000EFE7E700EFE7E700F7EFEF00F7F7F700F7F7F700F7EF
+ EF00F7EFEF00EFE7EF007BE7FF007BE7FF0073D6FF006BCEFF008C94AD00EF9C
+ 5200000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00F7EFE700F7E7DE00F7E7DE00F7E7DE00F7E7DE00F7E7DE00F7E7
+ DE00F7E7DE00F7E7DE00F7DED600FFE7D600E7DED600FFFFF700E7DED600E7DE
+ D600FFEFDE00FFE7D600C6633100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000E7CEA500E7C6B500EFE7
+ DE00F7EFEF00FFEFEF00ADDEF7005AEFFF005ADEFF005ADEFF006B9CCE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000000000000000000000000000
+ 00000000000000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFF7EF00FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7
+ F700FFF7F700F7F7F700FFF7F700F7EFEF00F7F7EF00E7DED600F7EFE700F7F7
+ E700F7EFDE00F7EFE700C6633100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFB5
+ 6B00F7BD8400F7D6AD00E7CEA50063DEEF005AEFFF004AD6FF004ABDFF006B9C
+ CE00000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF000000FF000000FF000000
+ FF000000FF0000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD
+ 8C00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD8C00FFBD
+ 8C00FFF7EF00FFEFDE00C6633100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FFC68400F7BD6B00FFC6730094BDAD0039E7FF004AD6FF004ABDFF004A8C
+ D600000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000FF000000FF000000FF000000FF000000FF000000
+ FF000000FF0000000000000000000000FF000000FF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFF700FFFFF700FFFFF700FFF7F700FFF7F700F7F7F700FFF7
+ EF00FFF7EF00EFE7DE00C6633100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFBD7300D6B58C0031D6FF0031D6FF0031D6FF00298C
+ EF008C94AD000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00F7FFFF00FFFFFF00FFF7F700FFF7F700FFFFF700F7F7
+ F700FFF7EF00F7EFE700C6633100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFF7F7007BE7FF0010E7FF0031D6FF0029AD
+ FF004A8CD6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00F7F7F700FFFFF700C6633100C6633100C663
+ 3100C6633100C6633100C6633100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000018DEFF0000DEFF0010B5
+ FF00298CEF008C94AD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFF7F700C6633100DEA58400CE8C
+ 3100CE8C3100BD732900C6633100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005ADEFF0000DEFF0000C6
+ FF00109CFF004A8CD60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6633100EFD6BD00EFCE
+ 8C00B5847B00D6BDBD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000DEFF0000C6
+ FF0010B5FF00298CEF009CADCE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6633100F7EFE700C69C
+ 8C00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000031D6FF0018DE
+ FF0094DEFF009CC6F70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7FFFF00C6633100EFD6CE00E7DE
+ D600000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000094DEFF0073D6
+ FF00CED6EF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6633100C663
+ 3100C6633100C6633100C6633100C6633100C6633100C6633100C6633100C663
+ 3100C6633100C6633100C6633100C6633100C6633100C6633100E7DED6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECECE0073737300DEDE
+ D600B5B5EF002121C6004242CE004242CE00B5B5DE00EFEFEF00EFE7E700E7E7
+ E700E7E7E700E7DEDE00A59C9C004A4242005242420094847300B59C9400AD9C
+ 8C009C8C8400735A5A0029313100005A7B0000000000429CCE002994CE002994
+ CE00319CCE00399CCE003984AD00528CAD005A94BD005284A5005A94BD008C94
+ 9C00C6C6C600E7E7E700E7E7E700E7E7E700DEDEDE00CECECE00CECECE00CECE
+ CE00CECECE00CECECE00D6CECE00D6CED600000000000000000000000000F7EF
+ EF00EFF7EF00BDC6CE0073848C00CECECE00FFFFFF00F7F7F700F7F7F700F7F7
+ F700FFFFFF00FFFFFF00FFFFFF00EFEFEF00E7DEDE00CEC6C600BDBDB500ADB5
+ B50094A5B500A5BDC600CEDEDE00E7EFF7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000ADA58400DEC6A5009C947B0000000000000000000000
+ 00000000000000000000000000000000000000000000CECECE0073737300E7E7
+ DE00A5A5E7001818C600C6C6E7007373D6005A5AD600D6DEDE007394B500DEDE
+ E700CED6DE008C9CAD005A5A520073636300CEB5AD00DEC6BD00D6BDB500CEBD
+ AD00C6ADA500BD9C9C0073524A0018313100C6D6DE00398CBD00399CCE002994
+ CE004AA5D600317BAD00737B8400D6D6D600EFEFEF00EFEFEF009CBDD6007B94
+ A500B5B5B500E7E7DE00E7E7E700EFEFEF00EFEFEF00EFEFEF00E7DEE700D6D6
+ D600D6D6D600D6CED600D6CED600D6CED6000000000000000000000000000000
+ 0000F7F7F700E7E7E7007B8C9C008C949C00F7F7F700FFFFFF00F7F7F700F7F7
+ F700FFF7F700F7F7F700E7E7E700D6D6D600C6C6C600C6BDBD00BDBDBD00C6BD
+ B500B5B5B500A5ADB500A5B5BD00A5BDC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A5A57B00F7D6B500EFD6BD00A59C8400000000000000
+ 00000000000000000000000000000000000000000000CECECE0073737300DEDE
+ DE00EFEFFF005252D6002121C6003939CE002929C600ADB5DE009CB5C600DEE7
+ E700D6DEE7007B8C9400524A4A00A5A5A500D6CEC600E7D6C600DECEBD00D6C6
+ B500CEBDAD00CEADA5009C847B0052423900F7F7F700428CB50052A5D600399C
+ CE006BB5DE0031739C0063636B009C9C9C00B5B5B500BDBDB5009CADB5006B9C
+ B5009C9CA500DEDEDE00EFEFEF00EFEFEF00F7F7F700F7F7F700F7F7F700F7F7
+ F700EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000F7F7F700F7F7F700ADB5BD006B7B8C00C6C6C600FFFFFF00FFFFFF00FFFF
+ FF00F7F7F700E7E7E700D6D6D600C6C6C600C6BDC600BDBDBD00B5B5B500B5AD
+ B500BDBDB500B5B5AD00B5ADAD00B5BDBD000000000000000000000000000000
+ 00009CB5A5009CB5AD007B8C84006B847300637B6300526B5A0042634A00315A
+ 3900214A21002942210094947300EFD6B500EFCEB500EFD6BD008C8C73002131
+ 18001839180000000000000000000000000000000000CECECE0073737300DEDE
+ DE00FFFFFF00E7E7F7008484E7003131CE000000BD009494DE00FFFFF700F7F7
+ EF00F7F7F7007B7373007B737300C6CECE00DED6CE00EFDED600E7DECE00DED6
+ C600D6C6B500CEBDAD00A58C8400846B6300FFFFFF006394AD0063ADD6004AA5
+ D60073BDDE004A94C60031637B00425A6B004A637300526373004A6373005294
+ BD008C8C9400CECECE00EFEFEF00EFEFEF00F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000F7F7EF00EFEFF700C6D6DE0063849C008C949C00EFE7E700FFFFFF00F7F7
+ F700E7E7E700D6CED600CECECE00CECECE00C6C6C600B5BDBD00C6BDBD00CECE
+ CE00BDBDBD00D6CECE00E7DEDE00CEC6C6000000000000000000000000000000
+ 0000A5BDB500B5CEC600ADBDB500A5BDB500A5BDB500A5B5B5009CB5AD0094AD
+ 9C0084A5940084948400ADB59C00EFD6BD00E7C6AD00EFD6B500E7DEBD007B7B
+ 630031423100395A4A00395A42002952290000000000CECECE0073737300DEDE
+ DE00FFFFFF00FFFFFF0094ADC600738CBD005252D6001010C6008484DE00D6CE
+ E700F7F7F7006B6B6300948C8C00F7EFEF00F7E7E700CECEC600CEC6BD00EFE7
+ D600DECEC600D6C6B500AD948C009C847B00FFFFFF008CADC60063ADCE005AAD
+ D6007BBDDE0094C6DE0063A5C6005A94B5005284AD005284AD00527B9C00528C
+ B5007B949C00BDBDBD00EFEFEF00F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000EFEFEF00DEE7EF00C6DEEF009CBDCE0073849400B5B5BD00FFFFF700F7F7
+ F700D6D6D600CECECE00CECECE00CECECE00CECECE00DED6D600CECECE00ADB5
+ B500B5BDBD00A5ADAD007B848C008C9C9C000000000000000000000000000000
+ 00000000000000000000849C9400B5C6C600B5C6CE00B5C6C600B5C6C600B5CE
+ C600BDCECE00B5C6BD00BDBDB500E7D6C600EFD6B500E7C6A500F7DEBD00E7D6
+ B500948C84006B7B7300738C7B00395A390000000000CECECE0073737300DEDE
+ DE00FFFFFF00FFFFFF00C6D6DE00C6D6DE00C6BDEF000808BD000000BD000808
+ C6006B6BDE006B6363009C9C9400FFF7F700FFF7EF00E7DEDE00D6CECE00E7D6
+ D600DECECE00DECEBD00AD9C8C009C8C7B00FFFFFF00BDCED6005A9CC60073B5
+ DE007BBDDE00A5D6EF00BDD6E700C6DEE700C6DEE700C6DEE700BDD6DE008CAD
+ C600739CBD00A5A59C00E7DEE700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700000000000000000000000000F7EF
+ EF00E7EFEF00C6D6E700C6DEEF00D6EFF700849CB50073848C00DEDED600EFEF
+ EF00CECECE00CECECE00D6D6CE00C6C6C600BDBDBD008C949C0063738400737B
+ 8C005A6B7300425263006B7B840063737B000000000000000000000000000000
+ 000000000000000000006B8C7B00C6D6D600B5C6CE00A5B5BD00A5ADB500B5C6
+ CE00BDCECE00B5C6CE00B5BDBD00CEC6BD00EFDEC600E7C6A500E7CEA500FFE7
+ C600DECEBD008C8C84007B847B004A6B520000000000CECECE0073737300DEDE
+ DE00FFFFFF00E7EFEF00A5BDCE00FFFFFF00EFEFF7004242CE000000BD005A5A
+ D6001010CE0008087B006B6B6B00D6CEE700DED6EF00CEC6E700B5ADD600B5A5
+ C600AD9CC600CEBDBD00AD9C8C0073635A00FFFFFF00E7EFF7005294BD008CC6
+ E7008CC6E700ADD6EF00BDDEEF00C6DEEF00C6DEEF00C6DEEF00C6DEE700ADC6
+ D6006BA5C6008C949400CED6CE00F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700000000000000000000000000F7F7
+ F700DEE7EF00B5CEE700DEEFFF00DEF7F70084A5B5004A63730094949C00D6D6
+ D600CECEC600C6C6BD00BDBDBD0084949C004A5A6B005A6B7B007B8C94007B8C
+ 940094A5A500CED6D600CECECE00CECECE000000000000000000000000000000
+ 0000000000000000000073947B00CEDEE700BDCEDE00ADBDC600ADB5C600B5BD
+ CE00B5BDCE00ADBDCE00A5B5BD00B5B5B500E7DEC600EFD6BD00DEC69C00EFCE
+ AD00F7DEC600CEC6B5007B847B003952420000000000CECECE0073737300DEE7
+ DE00FFFFFF00D6E7E7006B8CAD00EFF7F700FFFFFF009494E7001010C600BDB5
+ E700CECEEF007373CE0042394A008484A500A59CE7009C9CDE00C6BDDE00C6B5
+ CE00AD9CC600BDB5C6009C94840039313100FFFFFF00FFFFFF00739CB500A5CE
+ E7009CCEE700BDDEEF00C6E7F700CEE7F700CEE7F700CEE7F700CEE7F700C6DE
+ E7007BADC6007B94AD00B5B5B500EFEFEF00F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700000000000000000000000000F7F7
+ F700CEDEE70094C6DE00D6EFFF00ADCEDE008C9CA5006B7B84005A738400A5A5
+ AD00CEC6C600C6C6BD008C9CA50042637B005A738C00BDC6C600D6D6D600E7E7
+ E700FFFFFF00F7F7F700F7F7F700FFFFFF000000000000000000000000000000
+ 00000000000000000000849C9400DEE7EF00C6D6DE00B5C6CE00BDCED600BDC6
+ D600BDC6D600B5C6DE00ADBDD600B5BDC600CECEBD00EFE7C600EFCEAD00E7C6
+ A500F7D6B500F7E7C600BDB59C00394A310000000000CECECE0073737300DEE7
+ DE00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFFFFF00E7E7F7003131CE004A4A
+ D600FFFFF700E7E7EF004A428C00312942008484A500B5B5DE00B5B5DE00ADA5
+ D600ADA5C6009C949400423931004A4A4A00FFFFFF00FFFFFF00C6D6DE006BA5
+ C600CEE7F700D6E7F700D6E7F700D6EFF700D6E7F700D6EFF700D6E7F700D6E7
+ EF00A5BDCE006B9CBD009C9C9C00DEDEDE00F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700000000000000000000000000F7F7
+ F700CED6DE0073ADC6008CC6E70084B5D6007B9CAD0094ADBD005A8CAD00637B
+ 9400ADADAD00ADB5B5001039520010ADAD0021B5B500215A6B008C9CAD00EFEF
+ EF0000000000F7F7F700F7F7F700EFEFEF000000000000000000000000000000
+ 00000000000000000000A5BDB500E7EFF700C6D6DE00BDCED600C6D6DE00C6CE
+ DE00C6D6DE00BDD6DE00BDCEDE00BDCED600BDC6C600DED6C600F7DEC600EFCE
+ AD00E7C6A500F7DEBD00EFDEBD008C8C6B0000000000CECECE0073737300DEE7
+ DE00FFFFFF00DEE7EF007B9CBD00EFF7F700FFFFFF00FFFFFF009C9CE7001010
+ C600B5B5EF003939CE003939C600948C94006B63630073737300949494009494
+ 9400847B7B0042393900393939008C8C8C00FFFFFF00FFFFFF00FFFFFF00B5C6
+ D6005A94B5008CC6DE00B5D6EF00D6E7F700DEEFF700E7F7F700EFF7FF00E7F7
+ F700D6DEE70073ADCE008C949C00C6C6C600F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000E7E7E70084A5BD005AA5C6005AADD60063A5C60073B5DE004AA5D600427B
+ A50073849400425A7B00086B7B0029EFE70021FFEF0063DEE7004A7B8C001839
+ 63008494AD00EFEFEF0000000000000000000000000000000000000000000000
+ 00000000000000000000C6D6D600E7F7F700CEDEE700BDD6DE00BDCEDE00C6CE
+ DE00C6D6DE00C6D6DE00BDD6DE00C6D6E700BDCED600C6C6C600EFDEC600FFDE
+ BD00E7C6AD00E7CEAD00FFE7BD00EFDEBD0000000000CECECE0073737300DEE7
+ DE00FFFFFF00DEEFEF0084A5BD00F7FFF700FFFFFF00FFFFFF00E7E7F7001818
+ C6002929C6001818C600C6C6EF00FFFFF700E7E7E700A59C9C006B6B6B00736B
+ 6B007B7B7B00CECECE008C8C8C008C8C8C00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00EFEFF700A5BDCE00739CB5006B9CB500528CAD005294B5006BA5C60073AD
+ CE007BADCE006B9CBD00739CB500ADA5AD00E7E7E700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000F7F7EF00CED6D6007BA5BD00529CCE00429CD6004AADDE0052ADE7005A9C
+ BD0052738400184A6B0018C6CE0021FFFF0018FFEF005AFFFF0094F7FF006BAD
+ BD00316384008C9CB500DEE7EF00000000000000000000000000000000000000
+ 000000000000000000009CBDAD00EFF7FF00CEE7EF00C6D6E700C6D6E700C6D6
+ E700C6D6DE00C6D6DE00C6D6DE00C6D6E700BDD6DE00C6CECE00DED6C600F7E7
+ CE00EFDEBD00E7CEA500EFD6AD00FFE7C60000000000CECECE0073737300DEE7
+ DE00FFFFFF00FFFFFF00E7F7EF00DEE7EF00FFFFFF00FFFFFF00E7E7F7001818
+ CE000000C6009494E700FFFFF700F7F7F700EFEFEF00D6DEE700F7F7F700F7F7
+ F700F7F7F700F7F7F7008C8C8C008C8C8C00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700E7EFEF00DEE7E700C6D6
+ DE00BDCED6009CB5CE0073ADC60094949400D6D6D600F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 000000000000E7E7E700BDBDC60073A5BD005AADD6005AB5DE0063A5CE007B9C
+ B5003152730010849C0018FFFF0010FFFF0052FFFF0052F7F70084FFFF0084FF
+ FF0052CEDE00297B9C00295A8400ADD6E7000000000000000000000000000000
+ 0000000000009CBDAD00EFFFFF00DEEFF700C6D6E700C6DEE700CEDEE700CED6
+ E700CED6E700CED6E700C6D6DE00BDD6DE00C6DEE700C6D6DE00C6C6C600DED6
+ C600F7E7C600F7DEBD00E7CEAD00EFD6B50000000000CECECE0073737300DEE7
+ DE00FFFFFF00FFFFFF0084A5BD007B9CBD00FFFFFF00FFFFFF00B5B5EF000000
+ C6001010CE00DEDEF700FFFFF700FFFFF700CED6DE005284A500DEE7E700EFEF
+ EF00EFEFEF00EFEFEF008C8C8C008C8C8C00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00ADCEDE007B9CAD00B5ADAD00EFEFEF00F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 00000000000000000000DEE7E700A5B5BD007B9CB5006394AD0084A5B500A5AD
+ C600084A730010E7E70008FFFF0039FFFF0052F7F70084FFFF007BE7F70031C6
+ D60010DEEF0042E7F700317B9C0018426B000000000000000000000000000000
+ 00004A735200D6EFE700EFFFFF00CED6DE00C6D6DE00C6D6E700C6D6E700C6D6
+ DE00CED6E700CEDEE700C6D6DE00BDD6DE00C6DEE700C6DEE700C6CED600D6D6
+ CE00EFE7CE00FFEFCE00F7DEBD00E7CEAD0000000000CECECE0073737300DEE7
+ DE00FFFFFF00FFFFFF00EFF7F700EFF7EF00B5C6D600B5BDDE003939D6002121
+ C6003939D600FFFFFF00F7F7F700A5BDCE00CED6DE00E7EFEF00EFEFEF00F7EF
+ EF00EFEFEF00EFEFEF008C8C8C0094949400FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E7EFF70073ADC60094949400D6D6D600F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000000000000000000000000000EFEFEF00ADB5B500ADBDBD00BDC6CE005A7B
+ A50021A5BD0008FFFF0018FFFF0063FFFF0063F7FF0084FFFF004ACEE70018CE
+ DE0000BDCE00088CA50031638C00637B9C000000000000000000000000000000
+ 0000A5B5AD00F7FFFF00D6E7EF00C6CEDE00CED6E700BDCEDE00C6D6DE00C6D6
+ DE00C6D6E700CEDEE700CEDEE700C6D6DE00BDD6DE00D6E7EF00DEF7F700E7F7
+ F700B5BDA500ADB58C00F7E7C600FFE7CE0000000000CECECE0073737300DEE7
+ DE00FFFFFF00F7FFF700FFFFFF00F7FFF70094B5C60094A5D6003939D600A5A5
+ EF004242CE00B5C6D600EFEFF7008CA5C600C6D6DE00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF009494940094949400FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00A5C6DE007B94A500B5B5B500EFEFEF00F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 00000000000000000000000000000000000000000000EFEFEF008CADCE000073
+ 8C0029F7F70018FFFF004AFFFF006BF7F7008CFFFF007BFFFF0039EFF70010D6
+ E700007B940039738C006B7B9C00394A63000000000000000000000000005A7B
+ 6300DEEFEF00EFF7FF00C6CEDE00BDCED600C6D6E700BDCEDE00C6D6DE00C6DE
+ DE00C6D6DE00C6D6DE00C6D6E700CED6E700BDCED600CEDEDE00E7FFFF00CEEF
+ E700396B42000000000094AD7300EFE7C60000000000CECECE0073737300DEE7
+ DE00FFFFFF00F7FFF700F7FFF700F7FFF700FFFFFF00CED6EF003942CE00B5B5
+ EF002129BD006394AD00EFEFF700FFFFFF00FFFFFF00D6D6D600A59CA500A5A5
+ A500A5A5A500A5A5A5006363630094949400FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0073A5C6008C949400DEDEDE00F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DEE7EF00315A8C0021C6
+ D60000FFF70039FFFF0073FFFF0073FFFF009CFFEF0094FFFF0039E7E70010CE
+ DE0018849C0029425A0084848C00E7E7E700000000000000000000000000ADC6
+ B500EFFFFF00D6DEEF00BDCED600BDCED600C6CEDE00C6D6E700C6D6DE00C6D6
+ DE00C6D6DE00C6D6E700C6CEE700CED6E700C6D6DE00D6E7E700EFFFFF008CAD
+ 94000000000000000000000000006B84520000000000CECECE0073737300DEE7
+ DE00FFFFFF00F7FFF700F7FFF700F7FFF700FFFFFF00E7EFF7005252D6002121
+ CE00848CDE00FFFFF700F7FFF700FFFFFF00FFFFFF007B7B7B00848C84009CA5
+ 9C00A5ADA5008C8C8400424A4200BDBDBD00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009CC6DE00738C9C00ADADAD00EFEF
+ EF00F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF007B94BD000863940010D6
+ EF0000E7E70042FFFF007BFFFF008CFFFF0094FFE700A5F7FF0042DEF70008D6
+ E70000636B008C94940000000000000000000000000000000000738C8400DEEF
+ EF00D6E7F700B5C6D600BDCED600BDCEDE00BDCED600C6D6DE00C6D6DE00BDCE
+ DE00BDCED600BDCEDE00BDCEDE00C6CEDE00D6E7EF00DEEFF700D6EFE7006384
+ 63000000000000000000000000000000000000000000D6D6D60073737300DEE7
+ DE00FFFFFF00F7FFF700F7FFF700F7FFF700F7FFF700FFFFFF00D6D6F7007B84
+ DE00EFF7F700FFFFFF00F7FFF700F7FFF700FFFFFF0084848400E7E7DE00FFFF
+ FF00F7FFF7008C948C00B5B5B500EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF0073A5C60084848C00D6D6
+ D600F7F7F700F7F7F700F7F7F700DEDEDE000000000000000000000000000000
+ 000000000000000000000000000000000000E7EFEF00B5BDD60010426300108C
+ 9C0039DEDE006BFFF70094FFFF0094FFF700B5FFEF00BDF7FF0052E7FF0008D6
+ DE0010737B00E7E7E70000000000000000000000000000000000ADBDB500DEEF
+ F700BDCEDE00ADBDCE00ADBDCE00B5C6CE00B5C6CE00B5C6D600B5C6D600ADC6
+ CE00B5C6CE00B5C6CE00B5C6CE00B5C6CE00BDCED600D6E7EF00B5CEC6005273
+ 5A000000000000000000000000000000000000000000D6D6D60073737300DEE7
+ DE00FFFFFF00F7FFF700F7FFF700F7FFF700F7FFF700F7FFF700FFFFFF00FFFF
+ FF00FFFFF700F7FFF700F7FFF700F7FFF700FFFFFF0084848400DEE7DE00F7FF
+ F700848C8400ADADAD000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ADCEDE007394AD00A5A5
+ A500EFEFEF00FFFFFF00EFEFEF00ADADAD000000000000000000000000000000
+ 00000000000000000000000000000000000000000000E7E7EF00525263000829
+ 31002163630094EFEF00ADFFFF00ADFFF700B5F7FF00B5FFFF0029D6EF0000DE
+ E700086B7300E7E7E70000000000000000000000000000000000B5CECE00CED6
+ DE00ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600ADBD
+ C600ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600C6D6DE00A5BDBD005273
+ 5A000000000000000000000000000000000000000000D6D6D60073737300DEE7
+ DE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848C8400CED6CE00848C
+ 8400A5A5A500E7E7E7000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFF70084B5CE00848C
+ 8C00CECECE00F7F7F700D6CED60084848C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000CECECE00E7E7
+ E700294A4A00A5EFEF00A5FFFF00ADFFFF0073FFFF0042E7F70010F7FF0018F7
+ FF00186B7300E7E7E70000000000000000000000000000000000A5BDB500BDCE
+ CE00B5BDC600B5C6C600B5C6C600B5C6C600B5C6C600B5C6C600B5C6C600B5C6
+ C600B5C6C600B5C6C600B5C6C600B5BDC600B5BDC600BDC6CE00ADBDB5005A84
+ 63000000000000000000000000000000000000000000DEDEDE006B736B00BDC6
+ BD00DEE7DE00DEE7DE00DEE7DE00DEE7DE00DEE7DE00DEE7DE00DEE7DE00DEE7
+ DE00DEE7DE00DEE7DE00DEE7DE00DEE7DE00E7E7E700636B63006B6B6B00ADAD
+ AD00E7E7E700F7F7F7000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6D6E700739C
+ B50094949400D6D6D6009C9C9C005A7384000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000396363008CF7FF0063F7FF004ADEF70000DEDE0018EFF70018E7EF000094
+ 9C0029525A00EFE7E7000000000000000000000000000000000084A58C009CB5
+ AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5
+ AD009CADAD009CB5AD009CADAD009CADAD009CB5AD009CB5AD009CB5AD00739C
+ 7B000000000000000000000000000000000000000000000000008C8C8C006B73
+ 6B00737B73007373730073737300737373007373730073737300737373007373
+ 730073737300737373007373730073737300737B730063636300B5B5B500EFEF
+ EF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0094BD
+ D600738C940094949400737B84005A7B94000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029525A0042BDC60021DEE70008DEEF0021D6DE00108C9C0000525A004A73
+ 7B00DEDEE70000000000000000000000000000000000000000007BA5840084A5
+ 840084A58C007BA584007BA584007B9C84007BA584007BA584007BA584007BA5
+ 84007BA584007B9C84007B9C84007B9C84007BA584007B9C84007B9C84000000
+ 000000000000000000000000000000000000000000000000000000000000DEDE
+ DE00D6D6D600D6D6D600CECECE00CECECE00CECECE00CECECE00CECECE00CECE
+ CE00CECECE00CECECE00D6D6D600D6D6D600D6D6D600D6D6D600000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EF
+ EF0073A5C6006B737B005A7B94009CA5AD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007B8C8C0008525A0018949C000894A500104A5A005A6B7B00E7E7E7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFEFF700000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00CEDEE7006B94B500A5BDC600F7F7F7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6CE0031394A004A5A7300E7DEE70000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DE8C4200FFE7
+ CE00FFDEBD00FFBD7B00FFB56300FFAD6300FFAD5A00FFAD5A00E7944A00F794
+ 3100F7B56B00F7E7B500FFEFBD00FFEFBD00F7DE6300F7E79400FFEFC600F7DE
+ B500F7A55200E78C3100DE945200F7B56B0000000000A59C9C00DEDED600DED6
+ CE00C6B5A500BD9C8400C6946B00D6946B00D6845A00C67B4200CE7B4200CE7B
+ 4A00CE734200BD5A2900B54A0800AD420000AD420000B5420800AD3900009431
+ 00008C2900008C3908008C4A1000945221000000000094522100944A2100944A
+ 29008C3921008C3921008C312100AD5A3900BD733900BD733900BD733900BD73
+ 3900BD7B4200C67B4200C67B4200C67B4A00BD844200C6844200C67B4200BD7B
+ 4A00AD735200B58C7B00A5948400DED6CE000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00EFE7EF00B5B5B500CECECE00BDA5AD009C527300A552
+ 7300A5738C00AD8C9C00AD9CA500AD9CA500BDA5AD00CEB5B500DEC6CE00D6C6
+ CE00EFD6DE00F7DEE700F7E7EF00FFDEE70000000000E7BD9C00E7A56300FFEF
+ D600FFE7C600FFD6AD00FFB57300FFB56B00FFB56300E79C5200F7943100F7B5
+ 6300F7E7B500FFEFC600FFEFBD00FFEFBD00F7DE6B00F7DE6B00F7E79400FFEF
+ C600EFDEAD00F7A54200E7944200E7A56B00BDB5B500CECECE00DEDED600D6CE
+ C600BDA59400C69C7B00D6947300DE9C7300D6946B00D68C5A00D6845200CE73
+ 4A00CE734A00CE633900B54A1000A5310000A5310000A5310000A52900009C29
+ 00008C310000B56B4200CE946300D6A57300CE9C6B00C6946B00BD8C6300BD84
+ 6300BD7B6300B5736300A5635200B56B5200CE8C5200CE845200C6844A00C67B
+ 4A00C67B4A00C67B4A00C6844A00CE844A00CE844A00CE844200CE7B4200BD73
+ 4200BD846300B5948400B5AD9C00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+ FF0000000000FFFFFF00E7DEDE00BDB5B500DECED600B59CAD00C69CB500CE9C
+ B5008C6B7B00AD94A500A5949C00A59C9C00CEBDBD00EFDEDE00E7D6D600E7DE
+ DE00FFF7FF00FFF7FF00F7EFF700FFF7F70000000000DEA57300F7C69400FFEF
+ D600FFE7CE00FFE7C600FFD6AD00FFBD7B00EFA55A00EF943900F7AD5200F7DE
+ AD00FFEFC600FFEFC600FFEFBD00FFEFBD00FFE79400F7D66300F7DE7B00F7E7
+ A500F7EFCE00F7D69C00F79C3900E79C4A00C6C6BD00D6D6D600DED6D600C6B5
+ AD00BD9C8C00C6947B00DE9C7B00D69C7B00D69C7300D68C6300D6845A00CE7B
+ 5200CE6B4A00CE6B4A00CE633900C65A3900C6523900C6523900C65A3900C65A
+ 4200AD5A4200DEA58400FFE7C600FFDEBD00F7DEBD00F7D6B500F7CEB500EFC6
+ AD00EFBDAD00E7B5A500B5847300C6947B00F7BD9400EFB58C00EFB58C00E7AD
+ 8400D6A57300CE9C6B00C6946300BD845A00CE845200C6734200B56B3900B57B
+ 5200BD947B00A5948C00DEDED600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00D6CED600BDB5BD00DED6D600B59CA500B584A500B584
+ 9C009C849400A5949C008C848C00B5ADAD00DED6DE00F7EFEF00F7EFEF00FFF7
+ F700FFFFFF00FFF7FF00FFFFFF00FFF7F70000000000DE9C6300FFE7C600FFEF
+ D600FFE7CE00FFE7CE00FFE7C600EFCEA500EF9C4A00F7A54A00EFD6A500FFEF
+ C600FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFB500F7DE6B00F7DE7B00F7DE
+ 9400F7E7B500F7E7CE00EFC68C00F79C3900F7F7F700DEDEDE00CEC6BD00AD9C
+ 9400B5948C00CE9C8400E7A58C00DEA58400D6947300D68C5A00CE7B4A00C673
+ 4A00C6734A00C66B5200C66B5200BD6B5200C6735200C6735A00CE7B5A00CE7B
+ 6300DE947B00C68C7300BD8C7300BD947300B5947300BD947300BD947300BD94
+ 7B00B58C7300BD947B00BD8C7300DEB59C00E7BD9C00E7C6A500EFC6A500EFC6
+ A500F7CEAD00F7CEAD00EFC6A500E7BD9400DEA57B00C68C5A00AD7B5200BD94
+ 7300AD947B00BDB5AD00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+ FF00FFFFFF00FFFFFF00C6C6C600C6C6C600DED6DE00BD9CAD00AD6B8C009C5A
+ 7B00A58C94009C949400847B7B00CECECE00FFF7F700F7F7FF00FFFFFF000000
+ 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000DE9C6300FFEFDE00FFEF
+ DE00FFEFD600FFE7D600EFD6BD00E7A56B00F79C4200EFCE9400FFEFC600FFEF
+ C600FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFBD00F7DE7B00F7DE7B00F7DE
+ 9400F7E7B500F7E7C600F7EFCE00EFBD8400FFFFFF00FFFFFF00F7F7F700B5A5
+ 9C00AD948400CEA58C00DEA58C00DEA58C00D6947300D68C5A00CE7B5200C67B
+ 5200C6735200BD735200BD735A00BD7B5A00C6845A00CE846300CE846300D68C
+ 6B00DEA57B00E7AD8C00DEB58C00DEB59400DEB59400DEBD9C00E7BD9C00E7BD
+ 9C00E7BD9C00E7BD9C00EFC69C00E7C6A500E7C6AD00E7C6AD00E7C6AD00E7C6
+ AD00EFCEAD00EFCEB500EFCEB500EFCEB500EFCEAD00E7C69C00D6AD8C00BD9C
+ 8400AD9C9400EFEFE700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00F7F7F700BDBDB500D6CECE00E7D6DE00AD8C9C00C694AD00BD94
+ AD009C8C940084848C00737B7B00DEDEE700F7FFFF00F7FFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000E79C5A00FFFFF700FFEF
+ DE00FFEFDE00F7DECE00E7AD7B00F79C3900EFC69400FFE7C600FFEFC600FFEF
+ C600FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFBD00FFDE8C00F7DE7B00F7DE
+ 9400F7E7B500F7E7BD00F7E7CE00F7E7C600FFFFFF00FFFFFF00F7F7F700ADA5
+ 9C00B59C8C00C6A58C00C6A58C00D6A58C00D69C7B00D68C6300CE845200CE7B
+ 5200C67B5A00C67B5A00C67B6300CE846300CE8C6300D6946B00D6946B00D69C
+ 7300DEAD8400DEBD9400DEBD9400DEBD9C00DEBD9C00E7BD9C00E7C69C00E7C6
+ 9C00E7C69C00E7C6A500E7CEA500E7CEA500E7CEAD00E7CEAD00E7CEB500E7CE
+ B500EFCEB500EFD6BD00EFCEB500E7CEB500E7CEB500DEC6AD00D6C6AD00C6B5
+ A500CEC6BD00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00FFFFFF00EFEFEF00B5B5B500DED6D600E7CED600AD8C9C00CEADBD00BDA5
+ B500948C94007B84840073737B00DEDEEF00EFEFFF00EFEFF700FFF7F700FFFF
+ FF00FFFFFF0000000000FFFFFF00FFFFFF0000000000E7AD7300FFFFF700FFF7
+ E700FFEFD600E7BD8C00F7943100EFB56B00EFD6AD00F7DEB500F7E7BD00FFEF
+ C600FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFBD00FFE79400F7DE7B00F7DE
+ 9400F7E7B500F7E7BD00F7DEB500F7DEB500FFFFFF00FFFFFF00D6D6CE00A594
+ 8C00B5A59400BDA59400BDA58C00BD9C8400C69C7B00C6946B00C68C6300CE8C
+ 6300CE846300CE8C6B00D68C7300DE947300DE9C7300E79C7B00DEA57B00DEA5
+ 8400DEAD8C00E7BD9C00DEC69C00E7C6A500E7C6A500E7C6A500E7C6AD00EFC6
+ AD00E7C6A500E7CEAD00E7CEAD00E7CEAD00E7CEB500E7CEB500EFCEB500EFCE
+ B500EFD6BD00EFD6BD00EFD6BD00EFD6BD00E7CEBD00D6C6AD00D6C6B500BDB5
+ AD00FFF7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00E7E7E700ADB5B500E7E7E700DED6D600CEB5BD00BD8CA500B58C
+ 9C00948C8C006B73730073738400DEDEEF00EFE7EF00B5A5AD00CEBDC600FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000EFBD8C00FFF7F700FFF7
+ E700F7DEBD00EF943900F78C2900EF9C4200EF9C4200EF9C4200EFC68400FFEF
+ C600FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFBD00FFE78C00F7DE7B00F7DE
+ 9400F7E7B500F7DEB500EFAD6300EF9C4200FFFFFF00FFFFFF00ADADA500AD9C
+ 9400BDA59C00BDA59400BDA59400B59C8C00BD9C8400BD947300C6947300C68C
+ 7300C68C7300D6947300DE9C7B00DE9C7B00DEA58400E7A58C00E7AD8C00DEAD
+ 9400DEB59400E7BDA500E7C6A500E7C6A500EFC6AD00EFC6AD00EFC6AD00EFCE
+ AD00EFCEB500EFCEB500EFCEB500EFCEB500EFD6BD00EFD6BD00EFD6BD00EFD6
+ BD00EFD6BD00EFD6BD00EFD6BD00EFD6BD00DECEB500D6C6B500C6B5AD00DEDE
+ D600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00E7DEDE00B5B5B500F7EFEF00DECED600BD9CAD00B5849400AD84
+ 940094848C006B6B730063637300CED6DE00DEE7EF00BDC6CE00DEDEDE00FFFF
+ FF00FFFFFF00FFFFFF00F7FFFF00F7FFFF00F7DEC600EFC69C00FFF7EF00FFF7
+ EF00FFDEBD00FFCEA500FFCEA500FFCEA500FFCE9C00F7A55200EFA55A00F7E7
+ BD00FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFBD00FFDE8400F7DE7B00F7DE
+ 9400F7E7B500EFD6A500EF943900F7AD6300FFFFFF00F7F7F700A5A59C00B59C
+ 9400C6A59C00C6A59C00C6A59400B59C8C00B59C8400B5948400BD947B00BD94
+ 7B00C6947B00CE947B00DE9C8400DEA58C00DEAD9400E7AD9400E7B59C00E7B5
+ 9C00E7B59C00E7BDAD00E7C6AD00E7C6AD00EFCEAD00EFCEAD00EFCEB500EFCE
+ B500EFCEB500EFD6B500EFD6BD00EFD6BD00EFD6C600EFD6C600EFD6C600EFD6
+ C600EFD6C600EFD6C600EFD6C600E7CEBD00D6C6B500D6C6B500C6BDB500FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00CEC6CE00BDBDC600FFF7FF00CEBDC60084737B0073636B006B6B
+ 6B007B7373006B6B6B006B6B6B009C9CA500A5ADB500A5ADBD00B5BDBD00BDBD
+ BD00B5BDBD00BDC6C600B5C6C600BDC6C600EFD6B500EFCEAD00FFF7E700FFF7
+ E700FFF7E700FFF7E700FFF7E700FFEFDE00FFEFDE00F7C68C00EF943900F7DE
+ AD00FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFBD00F7DE7B00F7DE7B00F7DE
+ 9400F7E7B500EFC69400EF8C2900FFCEA500FFFFFF00FFFFFF00CECEC600B59C
+ 9C00B59C9400BD9C9C00C69C9C00BD9C9400BD9C8C00BD9C8400BD9C8400BD9C
+ 8400BD9C8400C69C8400C6A58C00D6AD9400DEB59C00E7BDA500E7BDA500E7BD
+ A500E7BDA500E7C6AD00EFCEB500EFCEB500EFCEB500EFD6BD00EFD6BD00EFD6
+ BD00EFD6BD00EFD6BD00EFD6C600EFD6C600F7D6C600EFD6C600EFD6C600EFD6
+ C600EFD6C600EFD6C600E7CEC600DEC6BD00DECEC600BDADA500E7DEDE00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFF7F700F7F7
+ F700EFEFEF00ADADAD00D6D6D600F7FFFF00EFF7F700E7EFEF00EFEFEF00EFE7
+ EF00EFEFEF00E7EFEF00E7EFEF00E7EFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00F7EFEF00F7EFEF00EFEFF700EFEFEF00F7D6B500F7D6BD00FFEFDE00FFEF
+ DE00FFEFD600FFEFD600FFEFD600FFEFDE00FFEFDE00FFDEBD00EF8C2900EFCE
+ 9C00FFEFC600FFEFC600FFEFBD00FFEFBD00FFEFB500F7DE6B00F7DE7B00F7DE
+ 9400F7E7B500E7B57300EF9C4A00FFDEBD00FFFFFF00FFFFFF00FFFFFF00F7EF
+ EF00D6C6C600BDA5AD00AD949400B59C8C00BD9C8400BD9C8C00BD9C8C00BD9C
+ 8C00BD9C8C00BDA58C00BDA59400C6A59400CEAD9C00D6B59C00DEBDA500E7C6
+ AD00E7C6AD00E7C6AD00EFCEB500EFCEBD00E7CEBD00EFD6C600EFD6C600EFD6
+ C600EFD6C600EFD6C600F7DECE00F7DECE00F7DECE00F7DECE00EFDECE00EFD6
+ CE00EFD6CE00EFD6CE00E7CEC600DECEC600CEBDBD00CEC6C600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700CECECE0094949400848C
+ 8C008C9494008C949400F7F7F700E7E7E700BDC6C600CECECE00D6CECE00DED6
+ D600D6DED600D6DEDE00E7E7E700EFE7EF00F7F7FF00F7FFFF00F7F7F700F7FF
+ FF00F7FFFF00F7FFFF00EFF7FF00F7FFFF00EFCEB500FFCE9C00FFE7C600FFE7
+ CE00FFEFDE00FFF7E700FFEFE700FFEFDE00FFF7E700FFEFD600EF943900E7B5
+ 7B00FFEFC600FFEFBD00FFEFBD00FFEFBD00FFE79400F7D66300F7DE7B00F7DE
+ 9400EFDEAD00E7A55A00F7B56B00FFE7C600FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00F7EFEF00DED6D600BDA59C00A5948400A58C8400B5A58C00BDA5
+ 9400BDA59400C6A59400C6A59400C6AD9400CEAD9C00CEAD9C00D6B59C00DEBD
+ A500DEC6AD00E7CEB500EFD6BD00EFD6C600EFD6C600EFD6C600EFD6C600F7DE
+ CE00F7DECE00F7DECE00F7DECE00F7DECE00F7DECE00F7DECE00F7DECE00F7DE
+ CE00F7DED600EFD6CE00E7CEC600E7D6CE00BDADAD00EFEFEF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600736B6B00848484008C8C
+ 8C005A5A5A00C6BDBD00FFF7F700C6BDBD00DED6D600EFE7E700EFE7E700DEDE
+ DE00ADB5AD007B8484006B7373007B7B8C00ADBDDE00C6DEFF00BDDEF700BDDE
+ F700B5EFFF00ADEFFF00ADEFFF00B5E7FF00E7CEBD00FFC69400FFC68C00FFC6
+ 8400FFC68400FFC68400FFCE9400FFD6AD00F7D6BD00F7DECE00EFAD6300E7A5
+ 5A00F7DEBD00FFEFBD00FFEFBD00FFEFB500F7D65A00F7D66300F7D67B00F7DE
+ 9400E7CEA500E7943900F7C69400FFE7C600FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7DEDE00C6B5AD00A5948C00A594
+ 8400B59C8C00C6AD9C00CEAD9C00CEAD9C00D6B5A500D6B5A500D6BDA500D6BD
+ AD00D6BDAD00DEC6AD00E7CEB500EFD6C600EFDECE00F7DECE00F7DECE00F7DE
+ D600F7E7D600F7E7D600F7E7D600F7E7D600F7E7D600F7E7D600F7E7D600F7E7
+ D600F7DED600EFDED600EFDED600D6C6BD00D6CECE00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008C949400949C9C00CED6D600CECE
+ D600BDBDBD00ADA5A500D6CECE00D6D6D600F7FFF700FFFFFF0000000000F7F7
+ F700CECECE0094949400737373006B6B7B00949CC600ADBDEF00B5D6FF00A5D6
+ FF009CDEFF009CE7FF0094E7FF009CE7FF00EFCEB500F7CEAD00FFE7CE00FFDE
+ BD00FFD6B500FFD6A500FFD6A500F7C69400D68C4A00E7AD8400E79C5A00E78C
+ 3900EFD6AD00FFEFBD00FFE7B500FFE7B500F7CE4A00F7D66300F7D67B00F7D6
+ 9400E7BD9400E78C2900FFDEC600FFE7D600FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFE700CEC6
+ BD00B5A59C00AD948400BDA59400CEADA500D6B5AD00D6BDAD00D6BDAD00D6C6
+ B500D6C6B500D6C6B500DEC6B500DECEBD00E7D6C600EFDECE00F7DED600F7E7
+ D600F7E7D600F7E7D600F7E7D600F7E7D600F7E7D600F7E7DE00F7E7DE00F7E7
+ DE00F7E7DE00EFDED600E7D6D600C6BDB500F7F7F700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5949C00ADA5AD00CEC6CE00D6C6
+ CE00B5ADB5009C949400CECECE00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00E7E7E700ADADAD008C8C8C007B7B84007B8CA50094A5D600A5C6FF009CC6
+ FF0084C6FF008CD6FF008CDEFF009CDEFF00F7E7D600DE9C5A00E7AD6B00EFB5
+ 8400F7C6A500F7D6B500F7DEBD00E7A56300EFCEB5000000000000000000E784
+ 2900E7C69400FFE7B500FFE7AD00FFE7AD00F7CE4A00F7CE5A00F7CE7300EFD6
+ 8C00DEA56300DE8C3100EFCEAD00F7DEC600FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00F7EFEF00DED6CE00B5A59C00A5948C00B5A59400CEBDB500DEC6BD00DECE
+ BD00DEC6BD00DECEBD00DECEBD00DECEBD00DECEC600E7D6CE00EFDED600F7E7
+ D600F7E7DE00F7E7DE00F7E7DE00F7E7DE00F7E7DE00FFEFDE00F7EFDE00F7E7
+ DE00F7E7DE00EFE7DE00CEC6BD00DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6B5BD00B594A500BD8C9C00C69C
+ AD00AD8C9C00BDA5B500EFEFEF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+ FF00F7F7F700CECECE009CA59C00848C8C008C8C94009C9CB50094A5DE00A5BD
+ FF008CC6FF007BC6F7008CCEF700A5D6F7000000000000000000F7E7D600F7DE
+ BD00EFC6A500E7B58C00E7AD7B00EFD6BD00000000000000000000000000E794
+ 4200DEA56300F7DEA500FFDE9C00FFDE9C00F7CE6300EFBD5200F7C66300E7C6
+ 8400DE8C3900E7A55A00EFD6BD00EFC6AD00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00E7DEDE00C6B5B500A5948C00B5A59C00C6BD
+ AD00DECEC600DECEC600DECEC600DED6C600DED6CE00E7D6CE00E7DECE00EFDE
+ D600EFDED600F7E7DE00F7EFE700FFEFE700F7EFE700FFEFE700F7EFE700F7EF
+ E700F7E7E700E7DED600C6BDBD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7EFEF00CECECE00CEB5BD00C6AD
+ B500D6C6CE00E7DEE700FFFFFF0000000000FFFFFF00FFFFFF0000000000FFFF
+ FF00FFFFFF00EFE7EF00BDBDBD009CA5A5009C9C9C00A5A5B5009CA5D6008C9C
+ DE009CBDF7009CC6FF009CD6FF009CCEEF000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7A5
+ 6300D68C3900F7CE9400FFD68C00FFD68400FFCE7300EFB54200EFB55200E7B5
+ 7300D67B1800EFCEA500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00CEC6C600ADA5
+ 9C00E7D6CE00DED6C600E7D6CE00E7D6CE00E7DED600E7DED600E7DED600EFDE
+ D600EFDEDE00EFDEDE00F7E7DE00F7EFE700F7EFE700FFEFEF00F7EFE700F7EF
+ E700F7EFEF00C6C6BD00EFE7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700EFEFEF00EFEF
+ EF00F7F7F700FFFFFF0000000000000000000000000000000000000000000000
+ 000000000000FFFFFF00DEDEDE00BDBDBD00ADADAD00ADA5B500B5BDC600ADB5
+ D6008494DE008CA5F7009CC6FF008CBDF7000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFC6
+ 9C00D67B1800E7B58400EFC68400EFC68400EFC68400E7B57300E7B57300DEAD
+ 7300D6730800FFEFE700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700B5A5
+ A500EFDED600E7D6D600EFDED600EFDED600E7DEDE00EFE7DE00EFE7DE00EFE7
+ DE00EFE7DE00EFE7DE00F7E7E700F7EFE700F7EFE700F7EFEF00F7EFEF00F7F7
+ EF00DEDEDE00CEC6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7F7F700DEDEDE00BDC6C600B5B5B500BDBDBD00CED6
+ DE00BDCEEF00949CD6008484DE008C9CF7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CE6B0000D6842900D6843900D6843900D6843900D6843900D6843900D67B
+ 2100DE8C3900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700ADA5
+ A500EFDEDE00F7E7DE00F7E7DE00F7E7DE00EFE7DE00EFE7DE00EFE7E700EFE7
+ E700F7EFE700F7EFEF00F7EFEF00F7EFEF00FFF7EF00FFF7EF00FFF7F700F7F7
+ EF00C6BDBD00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 000000000000FFFFFF000000000000000000000000000000000000000000FFFF
+ FF00FFFFFF000000000000000000F7F7F700DEDEDE00CECECE00C6C6C600C6C6
+ CE00DEDEDE00DEE7F700C6C6EF00949CDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000E7BD9400DEAD7B00EFBD9400EFBD9400EFBD9400EFBD9400EFBD9400EFBD
+ 9400F7DEC600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700ADAD
+ A500E7DED600F7EFDE00F7E7DE00F7EFE700EFEFE700F7EFE700F7EFE700F7EF
+ EF00F7F7EF00FFF7EF00FFF7EF00FFF7F700FFF7F700FFF7F700FFFFF700DED6
+ D600DED6D600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+ FF0000000000000000000000000000000000FFFFFF00FFFFFF00000000000000
+ 0000FFFFFF00FFFFFF0000000000FFFFFF00F7F7FF00E7E7E700D6D6DE00D6D6
+ D600D6CED600D6D6D600DEDEE700EFEFF7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000E7DECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFF700FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B5AD
+ A500BDB5AD00E7DED600FFF7E700F7F7E700F7EFE700FFF7F700FFF7EF00FFF7
+ EF00FFF7F700D6C6C600CEBDBD00F7E7E700FFFFFF00FFFFFF00F7EFE700C6BD
+ BD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FFFFFF000000000000000000FFFFFF00FFFFFF00EFEFEF00DEE7
+ DE00DEDEDE00DEDEDE00DEDEE700DEDEE7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000DED6CE00FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFF7E700EFDECE00CEBDB500D6CEC600FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7DE
+ DE00B5ADA5009C948C00B5AD9C00DED6CE00FFF7F700FFF7F700FFF7F700F7F7
+ EF00BDADAD00BDADAD00C6B5B500AD9C9400B5A5A500BDB5B500ADA59C00E7E7
+ E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000FFFFFF00FFFFFF0000000000000000000000000000000000FFFFFF000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFF7
+ F700E7EFEF00DEE7E700E7E7E700E7EFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000E7DEDE00F7DECE00FFFFF700FFF7EF00F7EFE700EFDED600E7D6
+ C600D6CEC600000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFF7F700EFE7E700C6BDB500AD9C9C00BDADA500DED6CE00EFE7DE00BDB5
+ AD00D6CEC600FFF7F700FFFFFF00F7EFEF00CEC6C600C6BDBD00E7E7E700FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+ 0000000000000000000000000000FFFFFF000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00F7FFF700EFF7EF00EFEFE7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D6CEC600CEC6BD00D6D6CE0000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00F7F7EF00DECECE00B5A5A500ADA5A500E7DE
+ DE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000FFFFFF00FFFFFF000000000000000000FFFFFF0000000000000000000000
+ 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000ADA58400DEC6A5009C947B0000000000000000000000
+ 00000000000000000000000000000000000000000000A57B6B00AD8473009C73
+ 6B009C8473009C8C84006B635A009C9C9C009C9C9C00DEDEDE00F7F7F700F7F7
+ F700CED6D600FFFFFF00FFFFFF00FFFFFF00DED6DE00F7EFDE00C66B2100DE73
+ 1800D67B2900CE630800A55A1000635A5A0000000000EFD6BD00DE8C4200FFE7
+ CE00FFDEBD00FFBD7B00FFB56300FFAD6300FFAD5A00FFAD5A00FFAD5A00FFAD
+ 5A00FFAD5A00EFA55200B59C7B00ADC6DE00ADDEFF0094BDDE00949CA500EFA5
+ 5A00EFA55200EFA55A00F7AD6300FFB56B00000000006B9C31006B9C390073A5
+ 42007BB55A00B5D6A500F7EFDE00F7EFDE00F7EFD600EFEFD600A5BD73006BA5
+ 39006B9C310063942900A5B57300C6CE9400A5B57300BDC68400DEAD6B00DE8C
+ 3100EFA55200EFA55A00F7AD6300FFB56B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A5A57B00F7D6B500EFD6BD00A59C8400000000000000
+ 000000000000000000000000000000000000B5948C00E7ADA500FFC6AD00F7B5
+ 9C00DE948400CE8C7B00B57B6B009C736B00846363008C73730094848400948C
+ 94008C949400BDC6C600D6D6D600CED6D600BDBDC600DEDEDE00E7D6C600BD73
+ 1800DE7B2900E77B1800CE630000A563310000000000E7BD9C00E7A56300FFEF
+ D600FFE7C600FFD6AD00FFB57300FFB56B00FFB56300FFB56300FFB56300FFB5
+ 6300FFB56300CE9C6B008CD6E7008CD6FF009CD6FF00A5D6FF009CB5CE00EFB5
+ 7300FFBD7B00FFBD7B00FFBD7B00FFBD7B00BDC6A500739C39006BB5630073CE
+ 8C008CD6A500DEEFCE00EFEFDE00EFF7DE00EFEFDE00E7EFD6008CBD6B0073A5
+ 42006B9C390063943100639429008CA55A009CB56B0084A55200BDA56300E794
+ 3900FFBD7B00FFBD7B00FFBD7B00FFBD7B000000000000000000000000000000
+ 00009CB5A5009CB5AD007B8C84006B847300637B6300526B5A0042634A00315A
+ 3900214A21002942210094947300EFD6B500EFCEB500EFD6BD008C8C73002131
+ 180018391800000000000000000000000000BD948C00F7BDAD00FFD6B500EFAD
+ 8C00D68C7300E79C7B00FFBDA500E7A58C00D6947B00C68C7B00A57B6B008C6B
+ 5A007B635A00847B7B00CECECE00E7E7E700C6C6C600E7EFEF00F7FFFF00E7DE
+ C600CE731800DE841800DE731000D663000000000000DEA57300F7C69400FFEF
+ D600FFE7CE00FFE7C600FFD6AD00FFBD7B00FFB56B00FFB56B00FFB56B00F7B5
+ 6B00EFAD6B00A5AD9C007BE7FF0021ADFF001094FF005ABDFF008CC6DE00EFBD
+ 8C00FFC68400FFC68400FFC68400FFC68400CECEB5007BBD7B0084D6A500A5DE
+ B500D6E7C600EFEFD600EFEFD600CEE7C6009CDEAD0094DEAD007BD69C0073BD
+ 6B006BA53900639C31005A942900638C2900638C3100638C2900AD8C3900EF9C
+ 4A00FFC68400FFC68400FFC68400FFC684000000000000000000000000000000
+ 0000A5BDB500B5CEC600ADBDB500A5BDB500A5BDB500A5B5B5009CB5AD0094AD
+ 9C0084A5940084948400ADB59C00EFD6BD00E7C6AD00EFD6B500E7DEBD007B7B
+ 630031423100395A4A00395A420029522900BD948C00F7BDAD00FFCEAD00DEAD
+ 8C00EFC6A500E7B59400E7A58C00D6947300D6946B00F7B59400EFAD8C00D694
+ 7B00DEA58400AD8C7B00C6BDC600F7F7FF00D6D6D600FFFFFF00FFF7F700FFFF
+ FF00E7D6C600CE732100DE7B2900D66B210000000000DE9C6300FFE7C600FFEF
+ D600FFE7CE00FFE7CE00FFE7C600FFDEBD00FFC69400EFB57B00F7AD6B00F7BD
+ 7B00E7B5840094C6CE006BD6FF00089CFF00007BFF0039BDFF007BB5C600F7C6
+ 8C00FFC68C00FFC68C00FFC68C00FFC68C00D6CEB500A5CE9C00DEE7CE00EFEF
+ CE00EFEFCE00EFE7CE00E7E7C600A5DEA5008CD69C0084D69C007BD69C007BD6
+ 9C006BBD6B006B9C31005A942900528C21004A841800527B1800C6842900F7AD
+ 6300FFC68C00FFC68C00FFC68C00FFC68C000000000000000000000000000000
+ 00000000000000000000849C9400B5C6C600B5C6CE00B5C6C600B5C6C600B5CE
+ C600BDCECE00B5C6BD00BDBDB500E7D6C600EFD6B500E7C6A500F7DEBD00E7D6
+ B500948C84006B7B7300738C7B00395A3900BD9C8C00F7C6AD00FFCEB500E7B5
+ 9C00FFDEBD00FFD6BD00D69C8400EFBDA500F7C6AD00DEA58C00D6947B00E79C
+ 8400F7AD8C00D6A58C00948C8C00CECED600BDBDBD00DED6D600F7F7F700FFFF
+ FF00FFFFFF00CEA57B00C67B4A00EFCEBD00FFF7EF00DE9C6300FFEFDE00FFEF
+ DE00FFEFD600FFE7D600FFE7CE00FFE7CE00F7D6BD00FFCEA500FFDEB500FFD6
+ AD00BDAD9C008CDEEF0031B5FF00008CFF00088CFF0052CEF700C6BDA500FFCE
+ 9400FFCE9400FFCE9400FFCE9400FFC68C00E7D6B500ADBD8400ADDEAD00EFE7
+ C600EFE7C600EFE7C600EFE7C600BDDEAD0094D69C0084D694007BD694007BD6
+ 9C0073CE94006BA54A005A942900528C21004A8418006B842900CE731800FFC6
+ 8C00FFCE9400FFCE9400FFCE9400FFC68C000000000000000000000000000000
+ 000000000000000000006B8C7B00C6D6D600B5C6CE00A5B5BD00A5ADB500B5C6
+ CE00BDCECE00B5C6CE00B5BDBD00CEC6BD00EFDEC600E7C6A500E7CEA500FFE7
+ C600DECEBD008C8C84007B847B004A6B5200C69C9400FFC6B500FFCEB500F7C6
+ AD00DEAD9400E7AD9400F7BDA500E7C6AD00F7DEBD00D6AD9400E7B59C00FFDE
+ C600DEB59400CEA58C00B5ADAD00EFEFF700CECECE00FFFFFF00FFFFFF00FFFF
+ FF00E7E7EF00FFFFF700D6BDB500CE8C5A00FFF7EF00E79C5A00FFFFF700FFEF
+ DE00FFEFDE00FFEFD600FFEFD600FFE7CE00F7DEC600F7D6B500FFEFD600EFD6
+ C6009CB5BD007BE7FF00009CFF000084FF0042C6FF007BC6DE00F7CE9C00FFCE
+ 9C00FFCE9C00FFCE9C00FFCE9400FFCE9400F7DEC600C6AD6B007BCE9400C6DE
+ B500EFE7C600EFE7BD00EFE7BD00EFE7BD00CEDEAD008CD69400B5DEAD008CD6
+ 9C008CD6A5006BB56B005A942900528421004A7B180094842900EFA56300FFCE
+ 9C00FFCE9C00FFCE9C00FFCE9400FFCE94000000000000000000000000000000
+ 0000000000000000000073947B00CEDEE700BDCEDE00ADBDC600ADB5C600B5BD
+ CE00B5BDCE00ADBDCE00A5B5BD00B5B5B500E7DEC600EFD6BD00DEC69C00EFCE
+ AD00F7DEC600CEC6B5007B847B0039524200CE9C9400FFC6B500FFCEB500E7AD
+ 9400C68C7300CE947B00FFC6AD00D6A58400CE9C8400F7BDA500F7BDA500E7C6
+ AD00E7BD9C00CEA58C00ADA5A500E7EFEF00CECECE00F7F7F700F7F7EF00E7EF
+ EF00BDC6C600F7F7F700EFEFE700CEA56B00F7EFDE00E7AD7300FFFFF700FFF7
+ E700FFEFDE00FFEFDE00FFEFD600FFEFD600FFE7CE00F7D6AD00FFEFD600CEC6
+ B5008CD6E70052D6FF00089CFF001094FF0052DEFF00A5CECE00FFDEBD00FFD6
+ AD00FFD6A500FFCEA500FFCE9C00FFCE9C00F7EFDE00D6843100ADBD7B007BC6
+ 8400A5CE9400D6D6AD00E7DEB500EFDEB500E7DEBD0094CE940073CE8C0073CE
+ 8C006BCE940063BD84005A8C21005284180063842100CE944200FFD6AD00FFD6
+ AD00FFD6A500FFCEA500FFCE9C00FFCE9C000000000000000000000000000000
+ 00000000000000000000849C9400DEE7EF00C6D6DE00B5C6CE00BDCED600BDC6
+ D600BDC6D600B5C6DE00ADBDD600B5BDC600CECEBD00EFE7C600EFCEAD00E7C6
+ A500F7D6B500F7E7C600BDB59C00394A3100CE9C9400FFCEB500FFCEB500DEAD
+ 8C00EFC6AD00EFBDA500DEA58C00D69C8400CE8C7300EFAD9400E7A58C00CE8C
+ 7300F7C6A500CEA58C00948C8C00CECECE00BDBDBD00D6D6D600D6D6CE00CECE
+ CE00B5BDBD00CED6D600D6D6CE00DEDED600F7E7CE00EFBD8C00FFF7F700FFF7
+ E700FFF7E700FFEFDE00FFEFDE00FFEFDE00FFE7D600F7D6B500F7DEC600ADC6
+ C6008CEFFF0039CEFF000094FF0029ADFF0052DEFF00D6CEBD00FFE7C600FFE7
+ C600FFDEBD00FFDEB500FFD6A500FFD6A500F7E7CE00E7AD6B00D68C42009CB5
+ 730073BD7B007BC67B0094C68400A5CE9400B5CE9C0084CE8C0073C684006BC6
+ 8C0063C68C005AC68C00528C210073943900BD7B1800EFBD8400FFE7C600FFE7
+ C600FFDEBD00FFDEB500FFD6A500FFD6A5000000000000000000000000000000
+ 00000000000000000000A5BDB500E7EFF700C6D6DE00BDCED600C6D6DE00C6CE
+ DE00C6D6DE00BDD6DE00BDCEDE00BDCED600BDC6C600DED6C600F7DEC600EFCE
+ AD00E7C6A500F7DEBD00EFDEBD008C8C6B00CE9C9400FFCEBD00FFD6B500E7BD
+ A500FFDEC600F7D6B500D6A58C00EFC6AD00FFDEBD00DEA58C00DE9C8400E7AD
+ 9400E7AD9400CEAD9400B5ADAD00F7F7F700D6D6CE00FFFFFF00FFFFFF00F7F7
+ F700CECECE00FFFFFF00FFFFFF00FFFFFF00F7DEC600EFC69C00FFF7EF00FFF7
+ EF00FFF7E700FFEFE700FFEFDE00FFEFDE00FFEFD600EFDEC600DEC6A50094D6
+ DE0073E7FF0021BDFF000084FF0039C6FF007BBDCE00F7DEC600FFE7CE00FFE7
+ C600FFE7C600FFDEBD00FFDEB500FFD6AD00F7DEC600EFC69C00F7DECE00DE9C
+ 5200ADB56B0084BD730084BD730094C68400A5CE940094CE94007BC68C006BC6
+ 8C0063C68C006BC694008C9C4200CE944A00EFB57B00FFE7CE00FFE7CE00FFE7
+ C600FFE7C600FFDEBD00FFDEB500FFD6AD000000000000000000000000000000
+ 00000000000000000000C6D6D600E7F7F700CEDEE700BDD6DE00BDCEDE00C6CE
+ DE00C6D6DE00C6D6DE00BDD6DE00C6D6E700BDCED600C6C6C600EFDEC600FFDE
+ BD00E7C6AD00E7CEAD00FFE7BD00EFDEBD00CEA59C00FFCEBD00FFD6BD00F7CE
+ AD00D6AD8C00DEB59C00F7C6AD00E7C6AD00EFD6B500DEBD9C00E7BDA500FFE7
+ C600E7BD9C00CEA58C009C949400D6D6DE00C6C6C600E7E7E700E7E7E700DEDE
+ DE00CEC6C600E7E7E700E7DEE700DEDEDE00EFD6B500EFCEAD00FFF7E700FFF7
+ E700FFF7E700FFF7E700FFF7E700FFEFDE00FFEFDE00F7E7CE00B5ADA50094E7
+ EF004ACEFF0010A5FF00108CFF0052CEF700CEC6BD00FFE7D600FFE7CE00FFE7
+ CE00FFE7C600FFE7C600FFE7BD00FFDEB500EFD6B500EFCEAD00FFF7E700F7DE
+ BD00E7AD6B00C6944200CEBD7B00B5CE9C0094C68C00A5CE9C00ADD6A500A5D6
+ A500B5CE9C00C6A55A00DE9C5200F7CEA500FFEFD600FFE7D600FFE7CE00FFE7
+ CE00FFE7C600FFE7C600FFE7BD00FFDEB5000000000000000000000000000000
+ 000000000000000000009CBDAD00EFF7FF00CEE7EF00C6D6E700C6D6E700C6D6
+ E700C6D6DE00C6D6DE00C6D6DE00C6D6E700BDD6DE00C6CECE00DED6C600F7E7
+ CE00EFDEBD00E7CEA500EFD6AD00FFE7C600D6A59400FFD6C600FFD6BD00E7AD
+ 9400CE8C7300CE947B00FFC6B500CEA58C00BD947B00F7C6AD00E7C6AD00D6B5
+ 9C00F7CEA500CEAD940094949400D6D6DE00C6C6C600DEDEDE00DEDEDE00DED6
+ D600C6C6C600DEDEDE00DEDEDE00DEDED600F7D6B500F7D6BD00FFEFDE00FFEF
+ DE00FFEFD600FFEFD600FFEFD600FFEFDE00FFEFDE00EFDECE009CBDC60094E7
+ FF0021BDFF000894FF0039C6FF007BC6DE00FFEFD600FFEFD600FFE7D600FFE7
+ CE00FFE7CE00FFE7C600FFE7C600FFDEC600F7D6B500F7D6BD00FFEFDE00FFEF
+ DE00FFEFD600F7CEA500DE8C3900DE8C3900DE9C5A00E7AD7300DEA56300DE94
+ 4200DE843100EFC69400FFEFDE00FFEFDE00FFEFD600FFEFD600FFE7D600FFE7
+ CE00FFE7CE00FFE7C600FFE7C600FFDEC6000000000000000000000000000000
+ 0000000000009CBDAD00EFFFFF00DEEFF700C6D6E700C6DEE700CEDEE700CED6
+ E700CED6E700CED6E700C6D6DE00BDD6DE00C6DEE700C6D6DE00C6C6C600DED6
+ C600F7E7C600F7DEBD00E7CEAD00EFD6B500DEA59400FFD6C600FFD6BD00DEAD
+ 9400FFCEB500F7BDA500D6A58C00DE9C8C00E79C8400E7AD94009C9CB5005A7B
+ AD00BDB5BD00D6B59C00ADADAD00FFFFFF00D6D6CE00FFFFFF00FFFFFF00FFFF
+ FF00D6D6D600FFFFFF00FFFFFF00FFFFFF00EFCEB500FFCE9C00FFE7C600FFE7
+ CE00FFEFDE00FFF7E700FFEFE700FFEFDE00FFF7E700CEC6BD00A5DEEF007BD6
+ FF0029B5FF00189CFF0052D6FF00ADCED600FFEFDE00FFEFD600FFEFD600FFE7
+ D600FFE7CE00FFE7CE00FFE7C600FFE7C600EFCEB500FFCE9C00FFE7C600FFE7
+ CE00FFEFDE00FFF7E700FFEFDE00FFE7CE00F7DEC600F7D6BD00EFCEAD00F7D6
+ B500FFEFDE00FFEFE700FFEFDE00FFEFDE00FFEFDE00FFEFD600FFEFD600FFE7
+ D600FFE7CE00FFE7CE00FFE7C600FFE7C6000000000000000000000000000000
+ 00004A735200D6EFE700EFFFFF00CED6DE00C6D6DE00C6D6E700C6D6E700C6D6
+ DE00CED6E700CEDEE700C6D6DE00BDD6DE00C6DEE700C6DEE700C6CED600D6D6
+ CE00EFE7CE00FFEFCE00F7DEBD00E7CEAD00DEA59400FFDECE00FFD6BD00E7BD
+ A500F7DEC600F7D6BD00DEAD9400E7C6B500FFE7C600D6AD9400738CCE005A94
+ FF00949CD600D6AD9400948C8C00CECECE00C6C6BD00D6D6D600D6D6D600D6D6
+ D600BDBDBD00DEDEDE00D6D6D600D6D6CE00E7CEBD00FFC69400FFC68C00FFC6
+ 8400FFC68400FFC68400FFCE9400FFD6AD00EFD6B500ADBDBD00ADEFFF006BCE
+ FF0029A5FF0029B5FF005AD6F700D6DED600FFEFDE00FFEFDE00FFEFDE00FFEF
+ D600FFE7D600FFE7CE00FFE7CE00FFE7C600E7CEBD00FFC69400FFC68C00FFC6
+ 8400FFC68400FFC68400FFCE9400FFD6AD00F7D6BD00F7DECE00EFDECE00F7D6
+ BD00FFF7E700FFF7E700FFEFE700FFEFDE00FFEFDE00FFEFDE00FFEFDE00FFEF
+ D600FFE7D600FFE7CE00FFE7CE00FFE7C6000000000000000000000000000000
+ 0000A5B5AD00F7FFFF00D6E7EF00C6CEDE00CED6E700BDCEDE00C6D6DE00C6D6
+ DE00C6D6E700CEDEE700CEDEE700C6D6DE00BDD6DE00D6E7EF00DEF7F700E7F7
+ F700B5BDA500ADB58C00F7E7C600FFE7CE00DEA59400FFDECE00FFDEBD00EFCE
+ AD00E7C6A500E7C6A500F7CEAD00E7C6AD00F7D6AD00E7C694009CB5CE007BB5
+ EF00ADB5C600D6AD9400A59C9C00E7E7E700CECECE00EFEFEF00EFEFEF00E7E7
+ E700CECECE00EFEFEF00EFEFEF00EFE7E700EFCEB500F7CEAD00FFE7CE00FFDE
+ BD00FFD6B500FFD6A500FFD6A500F7C69400BD7B4200A5CED6009CE7FF006BC6
+ FF00299CFF0042C6FF007BBDC600E7C6AD00F7DEC600F7E7D600FFEFDE00FFF7
+ E700FFF7E700FFEFDE00FFEFD600FFE7D600EFCEB500F7CEAD00FFE7CE00FFDE
+ BD00FFD6B500FFD6A500FFD6A500F7C69400D68C4A00E7AD8400DEA57300DE9C
+ 6B00E7BD9400E7BD9400EFC69C00EFCEB500F7DEC600F7E7D600FFEFDE00FFF7
+ E700FFF7E700FFEFDE00FFEFD600FFE7D6000000000000000000000000005A7B
+ 6300DEEFEF00EFF7FF00C6CEDE00BDCED600C6D6E700BDCEDE00C6D6DE00C6DE
+ DE00C6D6DE00C6D6DE00C6D6E700CED6E700BDCED600CEDEDE00E7FFFF00CEEF
+ E700396B42000000000094AD7300EFE7C600DEA59C00FFDECE00FFDEBD00FFD6
+ B500F7C6A500F7C6AD00F7CEAD00FFCEAD00EFC6A500FFDEB500E7CEBD00B5BD
+ B500DED6BD00CEB59C00A5A5A500EFF7F700CECECE00FFFFFF00FFFFFF00F7F7
+ F700CECECE00FFFFFF00FFFFFF00F7F7F700F7E7D600DE9C5A00E7AD6B00EFB5
+ 8400F7C6A500F7D6B500F7DEBD00DE9C6300AD9C8400ADE7F70084D6FF0063BD
+ FF0029A5FF0052CEF700C6C6BD00EFD6BD00EFC6A500E7B59400DEAD8400E7B5
+ 8C00E7BD9400EFBD9C00EFCEB500F7DEC600F7E7D600DE9C5A00E7AD6B00EFB5
+ 8400F7C6A500F7D6B500F7DEBD00E7A56300EFCEB500C6ADA500C6ADA500DECE
+ BD00FFEFE700FFEFE700F7E7D600EFD6BD00EFC6A500E7B59400DEAD8400E7B5
+ 8C00E7BD9400EFBD9C00EFCEB500F7DEC600000000000000000000000000ADC6
+ B500EFFFFF00D6DEEF00BDCED600BDCED600C6CEDE00C6D6E700C6D6DE00C6D6
+ DE00C6D6DE00C6D6E700C6CEE700CED6E700C6D6DE00D6E7E700EFFFFF008CAD
+ 94000000000000000000000000006B845200DEA59400FFE7D600FFDEBD00EFB5
+ 9400EFAD8C00EFB59400E7B59400EFB59400E7B59C00EFBDA500EFBD9C00EFC6
+ AD00FFDEC600CEB5A5008C848400C6CECE00C6C6C600CED6D600CECECE00CECE
+ CE00C6C6C600D6D6D600CECECE00CECECE000000000000000000F7E7D600F7DE
+ BD00EFC6A500E7B58C00E7AD7B00D6BDA500A5C6CE00A5E7FF006BC6FF0063B5
+ FF004AC6FF007BC6DE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFF7
+ EF00F7EFDE00F7E7D600EFD6C600EFC6AD00C6ADA500C6ADA500F7E7D600F7DE
+ BD00EFC6A500E7B58C00E7AD7B00EFD6BD00C6ADA500C6ADA500C6ADA500C6AD
+ A500FFEFDE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFF7
+ EF00F7EFDE00F7E7D600EFD6C600EFC6AD000000000000000000738C8400DEEF
+ EF00D6E7F700B5C6D600BDCED600BDCEDE00BDCED600C6D6DE00C6D6DE00BDCE
+ DE00BDCED600BDCEDE00BDCEDE00C6CEDE00D6E7EF00DEEFF700D6EFE7006384
+ 630000000000000000000000000000000000DEA59400FFE7DE00FFD6BD00DE9C
+ 7B00FFAD7B00FFB57B00FFB58400FFB58C00FFB58C00FFB58C00F7B59400EFAD
+ 8C00EFBD9C00CEB5A500A59C9C00F7F7FF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000CED6D600A5DEEF008CD6FF0063BDFF0073BD
+ FF006BDEFF00ADD6E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500E7D6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000ADBDB500DEEF
+ F700BDCEDE00ADBDCE00ADBDCE00B5C6CE00B5C6CE00B5C6D600B5C6D600ADC6
+ CE00B5C6CE00B5C6CE00B5C6CE00B5C6CE00BDCED600D6E7EF00B5CEC6005273
+ 5A0000000000000000000000000000000000DEA59400FFE7E700FFDEC600E79C
+ 7300EF8C5200FF945200FF945A00FF9C6300FFA56300FFA56300FFAD7300FFAD
+ 7300EFA57300C6AD9C00ADA5A500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000ADC6CE00ADEFFF0073CEFF0063B5FF0084D6
+ FF0084D6EF00DEE7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500D6C6BD00FFF7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000B5CECE00CED6
+ DE00ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600ADBD
+ C600ADBDC600ADBDC600ADBDC600ADBDC600ADBDC600C6D6DE00A5BDBD005273
+ 5A0000000000000000000000000000000000D6A59400FFEFE700FFDECE00F7BD
+ 9C00E78C6300E7845200EF844A00EF844200F7844A00F7844A00F7845200F784
+ 4A00EF946B00CEAD9C00ADA5A500FFFFFF00EFEFEF00D6D6DE00D6D6D600D6D6
+ D600DEDEDE00DEDEDE00E7E7E700F7F7F7000000000000000000000000000000
+ 00000000000000000000DEDEDE00A5D6DE009CDEFF006BBDFF006BB5FF008CDE
+ FF0094BDCE00EFE7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500F7EFE700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000A5BDB500BDCE
+ CE00B5BDC600B5C6C600B5C6C600B5C6C600B5C6C600B5C6C600B5C6C600B5C6
+ C600B5C6C600B5C6C600B5C6C600B5BDC600B5BDC600BDC6CE00ADBDB5005A84
+ 630000000000000000000000000000000000DEB59C00FFF7EF00F7E7D600FFDE
+ CE00FFD6BD00F7C6A500EFC69C00EFBD9400EFB58C00E7A58400DE947300D694
+ 6B00EFBD9C00D6BDAD00A59CA500F7FFFF00F7F7EF00DEDEDE00E7E7E700E7E7
+ E700E7E7E700E7E7E700EFEFEF00EFEFEF000000000000000000000000000000
+ 00000000000000000000BDC6C600A5E7F7007BCEFF0063BDFF0073C6FF0084DE
+ F700BDC6C600EFE7D600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500EFE7D600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000084A58C009CB5
+ AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5AD009CB5
+ AD009CADAD009CB5AD009CADAD009CADAD009CB5AD009CB5AD009CB5AD00739C
+ 7B0000000000000000000000000000000000EFCEB500FFFFF700FFFFDE00FFF7
+ D600FFF7DE00FFF7D600FFFFD600F7F7D600F7F7D600FFEFCE00FFEFCE00FFEF
+ CE00FFF7D600DEC6B500ADADAD00F7FFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00EFEFEF000000000000000000000000000000
+ 000000000000EFEFEF00A5C6D600A5E7FF006BC6FF006BB5FF008CD6FF0094C6
+ D60000000000E7DECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFF700FFF7EF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500E7DECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFF700FFF7EF0000000000000000007BA5840084A5
+ 840084A58C007BA584007BA584007B9C84007BA584007BA584007BA584007BA5
+ 84007BA584007B9C84007B9C84007B9C84007BA584007B9C84007B9C84000000
+ 000000000000000000000000000000000000C6ADA500DEDEDE00EFE7CE00EFE7
+ CE00EFDEC600F7DEC600EFD6B500EFDEC600EFDEC600F7E7C600FFE7C600F7EF
+ C600F7EFC600CEC6AD00CEC6BD00FFFFFF00FFFFFF00F7FFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00F7F7F7000000000000000000000000000000
+ 00000000000000000000C6CED6007BB5DE0052B5FF0073BDFF008CE7FF00C6DE
+ E70000000000DED6CE00FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFF7E700EFDECE00CEBDB500D6CEC600C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500DED6CE00FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFF7E700EFDECE00CEBDB500D6CEC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500A5948C00F7EFE700F7EFDE00EFE7D600EFE7CE00E7DE
+ C600E7DECE00EFE7D600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000EFEFEF00B5CEDE0094C6E70094CEDE00E7EF
+ EF0000000000E7DEDE00F7DECE00FFFFF700FFF7EF00F7EFE700EFDED600E7D6
+ C600D6CEC600DEDED600F7F7F70000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500F7DECE00FFFFF700FFF7EF00F7EFE700EFDED600E7D6
+ C600D6CEC600C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA5008C8C9400A5A5AD00A5A5AD00A5A5AD00A5A5AD00A5AD
+ AD00A5A5AD00A5A5A500A5A5A500A5A5A500A5A5A500ADA5A500A5A5A500A5A5
+ A500A5A5A500A5A5A500A5A5A500A5A5A5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D6CEC600CEC6BD00D6D6CE00E7E7DE00EFEFEF000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500D6CEC600CEC6BD00D6D6CE00E7E7DE00C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500000000000000000000000000F7CE
+ A500EFB57300EFAD7300EFBD8C00F7EFE7000000000000000000E7EFEF00CEC6
+ BD00CEA58C00E7B58400F7C68C00FFD69400F7D69C00F7D6A500F7CEAD00E7BD
+ 9400CEB5A500C6C6C600E7E7EF00DEC6BD00000000000000000000000000DEDE
+ DE00ADADAD009CA59C00949C94008C7B94008C4AA5009C42AD00944A8C00735A
+ 840094CEDE008CCEE70094CEDE0094B5CE008C7B9400AD849400BD736300AD52
+ 5A00738494007384A50084395200947B7300000000006B636300FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084B5840052B5
+ 520073BD73005A8C52005A8C5A0063946300639C6B006B9463009C9473006B73
+ 5A0052845A007BA573007BA57300739C730000000000C6C6C600EFEFEF00E7E7
+ E700C6C6C600948C940052525200395231004A7339006B9C4A0063A54200398C
+ 18002173080018520800294218009C9C9400B5B5B500526B4200426329006B94
+ 4A006BAD4A004A9C2900297B0000216300000000000000000000F7E7D600EFB5
+ 7B00E7AD7300E7B57B00EFDECE00000000000000000000000000EFDECE00E7AD
+ 8400F7BD7B00FFCE9400FFDE9C00FFE7B500FFEFB500FFEFB500FFEFBD00FFD6
+ 9C00FFCE9C00EFC69C00EFDECE00F7EFEF00000000000000000000000000D6D6
+ D600A5A59C0094949400848C8C00848C840094639C008C29A5007B188400949C
+ CE0063BDDE004AA5CE004A9CCE005AADDE006BA5D6007BA5BD009C949C00848C
+ 8C006B94A5004A5A7B003918310052312900000000006B636300FFFFFF00FFFF
+ FF00FFFFFF00F7F7F700F7F7F700F7F7F700F7F7F700D6E7D60042A5420052BD
+ 5200528C52006B8C73005A7B5A004A6B4A00396B420039633900C6B59400DEC6
+ AD004A634200295A31004A7B4A005A945A00C6C6C600D6D6D600FFFFFF00DEDE
+ DE00ADADB50052525200425A29005A94420073B5520084BD5A006BAD42003994
+ 180029940000298C0000216B0000738C6300A5AD9C006B9C52006BAD4A007BBD
+ 5A0073B552004A9C290031940800319400000000000000000000EFCEAD00E7AD
+ 6B00E7AD6B00E7BD9C00F7F7F7000000000000000000F7E7D600DEA56B00EFAD
+ 6300FFC68400FFD69400FFE7A500FFEFCE00FFF7CE00FFE7AD00FFE7A500FFDE
+ 9C00FFC68C00F7BD8400EFBD9400F7EFDE00000000000000000000000000C6C6
+ C60094948C00847B8C00847B8C008C847B008C5A840073299400738CBD005ABD
+ D60052A5C60063BDD60084C6EF006BB5D600529CCE004AA5D60063A5CE007384
+ A500527B8C007BADB5008C849C008C7B9400000000006B636300FFFFFF00F7F7
+ F700C6C6C600C6C6C600D6D6D600CECECE00BDBDBD009CC69C0031AD3100429C
+ 4200427B42007B9C84009CB5AD00A5BDBD009CADAD0094AD9C00C6BDAD00FFDE
+ BD00C6B59C005A635A0042634A0039733900CECECE00D6D6D600FFFFFF00DEE7
+ E700C6C6CE0052634A005A84390073BD52007BBD52007BBD5A0063A542003994
+ 180029940000299408003194080073A56300A5B59C0084BD6B0073BD4A007BB5
+ 520073AD52004A9C2900298C08003194080000000000FFF7EF00E7BD8C00E7A5
+ 6B00DEA57300E7D6C600000000000000000000000000D6A57300D68C3900EFB5
+ 7300FFBD7B00FFCE8C00FFE7A500FFE7B500FFE7A500FFDE9400FFDE9400FFD6
+ 9400FFCE9400F7D6A500E7B57B00E7B584000000000000000000F7F7F700B5B5
+ B500738C94006BC6D60073C6CE0073BDB50063A5B50073B5DE006BCEE70042A5
+ BD0084BDD600ADE7E700A5CEC600B5C6CE0084A5C6005A9CC600529CC6005A8C
+ A5006384AD00739CDE006B8CD6009494DE00000000006B636300FFFFFF00F7F7
+ F700D6D6D600E7E7E700E7E7E700D6D6D600D6D6D60073B5730021A521002984
+ 2900296B2100215A210094ADA500BDCEDE00ADBDCE00B5C6D600BDBDBD00E7CE
+ B500F7D6B500D6C6B5005A6B5A00185A2100CECECE00D6D6D600FFFFFF00E7E7
+ E700CECED600636B5A005A84420073B5520073B5520073B552005AA539003194
+ 100029940800298C0800319408007BAD6300A5BD9C0084BD630073B54A007BB5
+ 52006BAD4A004A942100298C00002994100000000000F7E7D600DEAD7300DEA5
+ 6B00D6A58400EFE7DE000000000000000000EFD6C600C6733100D68C4200E7AD
+ 6B00F7B57300FFC68400FFD69400FFD68C00FFD69400FFCE8C00FFC68400FFC6
+ 7B00F7CE9400F7CEA500E7B57B00D68C4A000000000000000000DEDEE7009C94
+ A5006B7B8C005ABDD6004ADEDE005ADEE70063DEE70052D6EF00399CC60063CE
+ E7008CE7E700B5D6DE00BDCECE00BDBDB5007B94A5005A94BD00529CC6005294
+ BD004A84BD006B84CE00949CD6008C84CE00000000006B636300FFFFFF00F7F7
+ F700DEDEDE00E7E7E700E7E7E700D6D6D600DEDEDE0063B56300089C08001873
+ 1800105A100018521800ADC6BD00CEDEE700BDC6D600BDCEDE00B5C6CE00D6D6
+ C600EFD6B500FFDEBD009C9C84000839080000000000D6D6D600FFFFFF00E7E7
+ E700CECED6005A635A00528442006BB55A0073B5520073B5520063AD42003994
+ 100021840000298C0000318C08007BA56300A5B5A5007BB563006BB5420073B5
+ 520073AD5200529C310029840000218C000000000000F7D6BD00DEA56B00D69C
+ 6B00CEA59400000000000000000000000000D6A58400C6631800D68C3900DE9C
+ 5A00E7A56300F7BD7B00F7BD7B00FFC68400FFE7CE00FFDEBD00FFC68400F7BD
+ 8C00EFB58400EFBD8C00EFCEAD00D68C4A000000000000000000B5ADBD008473
+ 94007B6394005A4A840052848C0063C6BD0063CEEF0052BDEF0042A5CE005AD6
+ E70063D6DE0084D6DE00BDDEDE00BDBDB50073737B0042849C0042ADCE004A8C
+ BD004A73B500A5B5D600C6BDC600A58CC600000000006B636300FFFFFF00F7F7
+ F700CECECE00CECECE00CECECE00E7E7E700D6D6D6005AB55A00009400000863
+ 0000004A0000295A3100DEE7E700CEDEEF00C6D6DE00C6D6DE00BDD6DE00C6CE
+ D600EFD6C600EFD6B500F7DEBD007B846300CECECE00D6D6D600FFFFFF00E7E7
+ E700D6CEDE0063635A00528439006BAD4A007BB55A0094BD73009CC684007BB5
+ 6300529C290031840800218C000073A55A00A5B59C007BB55A0073B54A008CBD
+ 73009CCE8C0094C67B0063A54A003994100000000000EFCEAD00D69C6300D694
+ 6300CEA59400000000000000000000000000C67B5A00BD5A0800CE7B2900D694
+ 5200E7AD6B00EFB57B00EFB57B00EFBD7B00F7DEBD00F7D6B500EFB57300E7B5
+ 7B00DEA56300E7A56B00E7BD8C00CE8442000000000000000000C6C6B500BDB5
+ 9C00C6BD9C00BDAD8C00C69C5A009473390042ADA50039C6EF004AA5D6005ACE
+ EF0039CEDE0052D6E7007BE7EF0094B5AD0042424A003173940042A5C600396B
+ BD00737BB500B59CC600AD73C6009C73CE00000000006B636300FFFFFF00F7F7
+ F700DEDEDE00DEDEDE00DEDEDE00E7E7E700DEDEDE005AB55A00089C0800106B
+ 1000004200007B9C8400E7F7FF00C6D6E700C6D6E700CED6E700C6D6DE00C6D6
+ DE00D6D6D600F7E7C600FFDEBD00F7DEBD00CECECE00D6D6D600FFFFFF00E7E7
+ E700CECED6005A6352006384420094BD7300A5CE8C00B5D6A500C6D6B500BDD6
+ AD00A5CE940073B55A004A9C21007BAD6B00ADB5A5009CC6730094C67B00ADD6
+ A500BDDEAD00BDDEB500B5D6A5008CC67B0000000000E7C69C00D6946300CE94
+ 6300D6AD9C000000000000000000F7EFEF00BD6B4A00B5420000CE7B2900E7AD
+ 7300E7B57B00DEA56300DE9C5A00E79C5A00E7A55A00E7B57B00E7AD7300DE94
+ 5200D6843900D68C4200CE843900BD6310000000000000000000C6C6BD00ADA5
+ A500AD9CA500BDA58C00CEAD6300AD7B31008C845A004AB5CE004AA5DE0042AD
+ DE0021B5DE00219CD6002994D60042637B0021395A00428CB5003194BD00426B
+ B500845AC6009C4ACE009C4AD6008C4ADE00000000006B636300FFFFFF00F7F7
+ F700C6C6C600C6C6C600CECECE00CECECE00CECECE005AB55A0021A52100297B
+ 290031633100D6DEDE00CEDEE700C6CEDE00C6D6DE00C6D6E700C6D6E700CEDE
+ E700D6EFE70073946B00CEC69C00FFEFCE00CEC6CE00D6D6D600FFF7FF00E7DE
+ E700CED6D600636B5A005A6B4A009CB58C00C6DEB500C6DEB500BDD6AD00BDD6
+ AD00C6DEB500C6DEAD00A5C694009CB59C00B5B5AD00BDCEAD00C6D6B500C6D6
+ B500BDD6AD00C6D6AD00CEDEB500C6DEBD0000000000E7C69C00CE946300CE8C
+ 6300CEA59400000000000000000000000000B55A4200AD390000CE7B2900E7B5
+ 7B00D69C5A00CE7B3100D6843900D6843900D6843100E7B58400EFD6B500D684
+ 3900CE732100CE7B2900C66B1800AD42000000000000EFEFEF00B5B5B5009C9C
+ 9C00848C8C0084848400A5946B00C6945200D6AD7B00739C9C0039A5DE004AA5
+ DE00219CDE000873D6000842AD0008428C003973A500398CBD001873AD003963
+ AD005A31CE005A10D6006329CE006B39CE00000000006B636300FFFFFF00F7F7
+ F700D6D6D600C6C6C600CECECE00CECECE00E7E7E7006BB56B0042B542003173
+ 39008CA59C00D6E7EF00BDC6D600C6CEDE00C6D6DE00BDCEDE00C6CEDE00DEEF
+ F700A5BDAD00004A080029632100A5B58400CEC6CE00D6D6D600FFF7FF00DEDE
+ E700DEDEDE00ADADAD00737373006B73630084947B00A5BD9400B5D6A500BDD6
+ B500BDCEB500C6CEBD00C6CEBD009CBD940084AD6B0094B58C00B5C6BD00C6CE
+ BD00CED6B500C6D6AD00A5BD9400848C7B0000000000E7C6A500CE8C5A00CE8C
+ 6300C6948400EFE7E7000000000000000000B5736B00A5310000C66B2100EFCE
+ B500E7BD9400CE7B2900CE843900CE844200CE7B3100D6945200DEAD7B00CE7B
+ 3100C6630800C66B1800BD631000A531000000000000E7E7E700ADADAD008C8C
+ 8C007B84840084848C00948C8400AD8C5A00DEB58400ADB59C0029A5D600319C
+ DE00429CCE003194DE003184D6003994D6003994CE002973BD00185294003952
+ 9400424AB5001821C6003129DE005231DE00000000006B636300FFFFFF00F7F7
+ F700CECECE00CECECE00D6D6D600C6C6C600DEDEDE0073BD73005ABD52005A94
+ 5A00BDCECE00BDC6D600ADBDCE00B5C6CE00B5C6CE00B5C6CE00B5C6CE00C6D6
+ DE007B9C8C00427B420039844200397B3900CEC6CE00D6D6D600FFF7FF00DEDE
+ DE00DEDEDE00E7DEEF00CEC6D6008C8C94006B6B63007B846B00ADBDA500C6CE
+ BD00B5C6B500A5BD94009CBD7B0073AD4A00429C10004294210073A5630094B5
+ 9400B5CEAD00B5C6AD00848C84006B6B6B0000000000EFD6B500C6845A00C684
+ 5A00BD847300E7D6D6000000000000000000C6A5A50094291000B5521800E7BD
+ 9C00E7BD8C00CE6B1800CE7B2900CE844200D68C4A00DEAD7B00D6945200CE7B
+ 2900C66B1000C6631000B54A10009418000000000000D6D6D600A5A5A5008484
+ 8400737B7300848C8C009C948C009C8C5200C6AD5200A5BD73001894CE001094
+ EF002194DE00319CDE003994D6003984BD00296BAD0021529C00103173002942
+ 84005A73BD002139AD002129CE003131CE00000000006B636300F7F7F700EFEF
+ EF00CECECE00D6D6D600CECECE00CECECE00CECECE007BBD7B007BCE7B007BAD
+ 7B009CB5A500A5B5B500A5B5B500A5B5B500A5B5B500A5B5B500A5B5B500A5BD
+ BD007B9C8C005A8C5A00739C73006B9C6B00CEC6CE00D6D6D600FFFFFF00DEDE
+ DE00D6D6DE00D6D6DE00E7E7EF00EFEFEF00CECECE00B5B5B500A5A5A5009CAD
+ 94008CB573007BB55A007BB5520063AD390039941000218C0000299400004A94
+ 21006B945A0094A59C00C6C6CE00D6D6DE0000000000F7E7CE00C68C5A00BD7B
+ 5200BD7B6300CEB5AD000000000000000000EFE7E700944A4A008C100000BD63
+ 2100D6944A00CE7B2900C67B2900CE7B3100CE8C4200DEAD7B00DEA56B00D68C
+ 3900CE843900D68C52009C2908009429290000000000CECECE009C9C9C009494
+ 940094948C009C949C008C949C00AD945A00BD8C4A00639494000084D6001073
+ CE00297BB5005A84A500847373009C735A00AD7363009C6B6B0073636B00736B
+ 7B005A6BB500526BD6002942C6004A5AC600000000006B636300F7F7F7000000
+ 0000D6D6D600DEDEDE00DEDEDE00DEDEDE00DEDEDE0084C684009CDE9C009CC6
+ 9C0094B5940094B5940094B594008CB594008CB58C008CAD8C0084AD8C0084A5
+ 8C0084AD840084AD84008CB58C008CB58C00CEC6CE00D6D6D600FFFFFF00DEDE
+ DE00D6D6DE00D6DEDE00DEE7E700EFF7F700FFFFFF00FFF7FF008C948C005A84
+ 420073AD420073BD4A007BB55A006BAD4A0042942100218C080021940000298C
+ 000029630800737B7300F7EFFF00FFFFFF0000000000FFF7E700D69C7300B56B
+ 4200BD735200B58C7B00EFE7EF000000000000000000C6A5A500730008009C29
+ 0800D6945A00DEA57300D6945200CE8C5200D6945200D69C6300D6945200D694
+ 5200DEAD7300BD6B4A0084100000BD9494000000000000000000C6C6C600BDBD
+ BD00BDBDBD00BDB5BD00A5A59C00B59C5A007B8C7300218CDE002173C600637B
+ 9C00BD948400BD8C5A00C68C7B00C6948C00B55A5200A54A3100B56B5A00C68C
+ 6B007B5A5A004A63CE00526BCE004A5AC600000000006B636300F7F7F7000000
+ 0000F7F7F700F7F7F700F7F7F700F7F7F700F7F7F7008CC68C00C6EFBD00C6E7
+ C600ADDEB500A5D6A500A5D69C00A5DEA500ADDEAD00B5DEB500B5D6B500B5CE
+ B500B5D6B500A5D6A5009CD69C0094CE9400C6C6CE00D6D6D600FFFFFF00E7E7
+ E700E7E7E700EFF7EF00F7F7F700EFF7F700EFEFEF00DEDEE7006B736B004A73
+ 31006BAD4A0073BD52007BB55A006BAD4A0039941800218C000029940800298C
+ 080029630800636B6300D6D6DE00E7E7EF000000000000000000E7BD9C00BD6B
+ 4200B56B4A00AD735A00CEB5B5000000000000000000F7EFEF00AD7B7B007B18
+ 1000AD5A4200DEB58C00E7BD9400DEAD8400DEAD7B00DEB58C00DEA57B00D694
+ 6B00CE947B0084292100A56B7300000000000000000000000000000000000000
+ 000000000000F7F7DE00BDBD7B009C9C4A00949C63005A6B730073635200DECE
+ 9C00B58C7300CEBDA500CEBDC600BD8C9400B5524200AD42180094312100AD63
+ 5200E79463007B4A5A001839CE002131D600000000006B636300F7F7F700E7E7
+ E700D6D6D600D6D6D600DEDEDE00C6C6C600C6C6C6008CC69400B5E7B500ADD6
+ A500ADD6AD00B5DEB500BDDEBD00B5DEB500A5D6AD00A5D6A500BDEFBD00BDE7
+ C600A5D69C00A5D6A500B5DEAD00BDDEBD00C6C6C600D6D6D600FFFFFF00F7F7
+ F700F7F7F700EFF7F700E7E7EF00DEDEDE00DEDEDE00D6D6DE00737B7B00527B
+ 39006BAD4A0073B552007BB5520073B552004A9C2100298C0800318C0800298C
+ 0000216B0800636B6B00D6D6DE00DEDEE7000000000000000000F7E7D600C684
+ 5A00AD5A4200AD634A00AD7B7300E7D6D600D6B5AD00DECEC600F7F7F700B58C
+ 8C008C393100AD635200D6AD9400E7C6AD00DEC6AD00DEBDA500D6AD9400B57B
+ 6B00944A4200AD8C840000000000000000000000000000000000000000000000
+ 0000E7EFDE00ADB573009CA55A00ADAD7300B5AD7300846B42006B523100BDB5
+ 8C00B58C7300DEC6BD00BD9CA500BD737B00B55A5200AD423100AD422900A54A
+ 3100BD846B00B55A290063315A001031B500000000006B636300F7F7F700E7E7
+ E700C6C6C600D6D6D600D6D6D600CECECE00BDBDBD008CBD9400BDDEBD00D6DE
+ D600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF0094CE94009CCE
+ 9C00DEDED600DEDED600D6D6D600DED6D600CECECE00D6D6D600FFFFFF00FFFF
+ FF00EFEFEF00DEDEDE00D6D6D600D6D6D600DEDEDE00DED6E700737B7300527B
+ 390073AD4A007BBD52008CBD6B009CC6840084BD6B005A9C3900428C1800298C
+ 000021630800636B6300D6D6DE00DEDEE700000000000000000000000000E7BD
+ 9C00B56B3900AD5A3900AD6B5200B57B6300AD6B5A00D6B5AD00000000000000
+ 0000D6CECE00AD7B7B00A5736B00B58C8400BD9C9400B58C8C00AD848400B594
+ 9400D6BDC6000000000000000000000000000000000000000000000000000000
+ 0000DEE7DE00B5B59400DEDEC600F7F7EF00FFFFF700C6BDB5004A423100CEB5
+ 9C00C6947B00CEA59C00C6949400C67B7B00B55A4A00AD523900A5523100B56B
+ 4A00BD7B6300A54A3900A539100063315A00000000006B63630000000000EFEF
+ EF00C6C6C600CECECE00D6D6D600C6C6C600D6D6D600C6C6C600BDBDBD00C6C6
+ C600C6C6C600C6C6C600D6D6D600BDBDBD00BDBDBD00B5B5B500B5B5B500B5B5
+ B5009C9C9C00A5A5A5009C9C9C0084848400D6D6D600C6C6C600DEDEDE00F7F7
+ F700F7F7F700E7EFEF00DEDEDE00D6D6DE00DEDEDE00D6DEDE006B7B6B005A7B
+ 420084B563009CCE8400ADD69C00BDD6AD00BDD6AD00A5CE940084BD630052A5
+ 310031631000636B5A00D6D6DE00DEDEE700000000000000000000000000FFF7
+ E700D69C7300AD5A3900A55242009C523100A55A4A00D6B5B500000000000000
+ 00000000000000000000E7DEDE00D6CECE00D6C6C600DECECE00E7DEDE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECED6005A525200DEB5
+ AD00CE948C00BD847300C68C7B00BD7B6300C6735A00BD6B5200B5735A00BD73
+ 5200CE7B6300D6B5A500C6A59400AD634200000000006B636300EFEFEF00EFEF
+ EF00DEDEDE00D6D6D600D6D6D600CECECE00D6D6D600D6D6D600CECECE00D6D6
+ D600CECECE00CECECE00D6D6D600CECECE00CECECE00C6C6C600C6C6C600C6C6
+ C600BDBDBD00A5A5A500848484006B6B6B00EFEFEF00D6D6D600C6BDBD00CECE
+ CE00E7E7E700F7F7F700F7F7F700EFEFEF00E7E7E700DEDEDE007B7B7B005A6B
+ 4A0094AD8400BDD6AD00BDDEB500BDD6B500BDD6B500BDDEAD00BDDEA50094BD
+ 84000810F7000810F7000810F7000810F7000000000000000000000000000000
+ 0000DEBDA500A5523900944231009C4A3100A5634A00CEB5AD00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7F7EF00E7CEBD000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B5B5B50094848400CE9C
+ A500C69C9C00CEADA500BD9C8C00B5847300BD7B6300C6735A00BD6B5A00AD63
+ 4A00D6BDBD000000000000000000EFE7D600000000006B636300EFEFEF00E7E7
+ E700C6C6C600BDBDBD00C6C6C600CECECE00BDBDBD00C6C6C600C6C6C600D6D6
+ D600BDBDBD00C6C6C600C6C6C600CECECE00CECECE00C6C6C600BDBDBD00ADAD
+ AD0084848400949494009C9C9C00CECECE00EFEFEF00EFEFEF00EFEFEF00D6D6
+ D600C6C6C600CECECE00E7E7E700F7F7F700F7F7F700EFEFF700BDBDC6007B7B
+ 7300636B5A00848C7B00ADBD9C00C6D6AD00BDD6B500B5C69C0094A58C007384
+ 7B000810F70094F79C0094F79C0094F79C00000000000000000000000000EFDE
+ D600C68C6B00AD5A3100A54A31009C4229009C523900CEA59C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7EFE700EFDECE00E7C6AD00DEAD84000000000000000000000000000000
+ 000000000000000000000000000000000000F7F7F7009C9C9C00B5A5A500D6B5
+ B500EFDEDE00FFF7F700F7EFEF00DECEC600BD847300B5634A00B5524200A56B
+ 7300D6CED600000000000000000000000000000000006B636300EFEFEF00E7E7
+ E700C6C6C600C6C6C600CECECE00D6D6D600CECECE00CECECE00CECECE00D6D6
+ D600CECECE00CECECE00C6C6C600BDBDBD00BDBDBD00C6C6C600CECECE00B5AD
+ B5008484840094949400B5B5B500FFFFFF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00CED6D600C6C6C600CECECE00E7E7E700F7F7F700FFFFFF00E7E7
+ E700ADADAD006B6B6B0063635A00848C7B00949C8C00737B6B006B736B00A5A5
+ A5000810F70094F79C0094F79C0094F79C00000000000000000000000000F7E7
+ DE00E7C6AD00DEB59400D69C7B00C67B5200AD634200C6A59400000000000000
+ 0000000000000000000000000000000000000000000000000000F7F7EF00EFE7
+ DE00E7CEBD00E7C6AD00DEBD9400E7AD84000000000000000000000000000000
+ 000000000000000000000000000000000000D6CECE00A58C8C00D6B5BD00FFF7
+ F70000000000000000000000000000000000E7C6C600B5635200BD523900CEAD
+ A500EFEFEF00000000000000000000000000000000006B636300EFEFEF00E7E7
+ E700B5B5B500C6C6C600C6C6C600D6D6D600CECECE00C6C6C600CECECE00CECE
+ CE00CECECE00BDBDBD00BDBDBD00BDBDBD00BDBDBD00C6C6C600C6C6C600B5B5
+ B500848484008C8C8C00B5B5B500FFFFFF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00CECECE00BDBDBD00CECECE00E7E7E700FFF7
+ FF00FFFFFF00E7E7E700A5A5A5006B6B6B00636B6300949C9C00D6DED600F7F7
+ F7000810F70094F79C0094F79C0094F79C000000000000000000000000000000
+ 00000000000000000000FFF7EF00F7E7D600E7C6B500E7D6D600000000000000
+ 00000000000000000000000000000000000000000000FFF7EF00F7EFE700EFDE
+ CE00EFCEB500E7C6A500E7BD9400E7C69C000000000000000000000000000000
+ 000000000000000000000000000000000000D6C6CE00B5A5A500F7EFEF000000
+ 000000000000000000000000000000000000FFF7F700CE8C8400AD4A3900EFD6
+ C60000000000000000000000000000000000000000006B636300EFEFEF00E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7
+ E700E7E7E700DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6D6D600CECE
+ CE00848484009C9C9C00C6C6C600DEDEDE00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00CECECE00BDBDBD00CECE
+ CE00EFEFEF00FFFFFF00FFFFFF00DEDEDE00D6D6DE00F7F7F700FFFFFF00F7F7
+ F7000810F7000810F7000810F7000810F7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFF7E700F7E7DE00F7E7D600F7D6
+ BD00EFCEAD00EFCEAD00F7DEC600FFF7E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DEBDB500A54A3900DEBD
+ BD0000000000000000000000000000000000000000006B636300E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6D6D600D6D6D600CECECE00C6C6
+ C6009C9C9C009C9C9C00C6C6C60084848400EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00CECE
+ CE00B5B5B500CECECE00EFEFEF00FFFFFF00FFFFFF00F7F7F700D6D6DE00BDBD
+ BD00BDC6C600DEDEDE00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFF7EF00F7E7D600F7EFD600F7EF
+ DE00FFEFE700FFF7EF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000EFD6D600A5635A00D6BD
+ BD0000000000000000000000000000000000000000006B636300E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00D6D6D600D6D6D600D6D6D600CECECE00C6C6C6009C9C
+ 9C00ADADAD00BDBDBD008484840000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00CECECE00BDB5BD00CECED600D6D6DE00BDBDBD00BDBDBD00DEDE
+ DE00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000EFE7E700FFF7
+ F7000000000000000000000000000000000000000000000000006B6363006B63
+ 63006B6363006B6363006B6363006B6363006B6363006B6363006B6363006B63
+ 63006B6363006B6363006B6363006B6363006B6363006B6363006B6363008484
+ 840084848400848484000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00C6C6C600B5B5B500D6D6D600EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000525229008484630073734A004A5A2100215200002173000018840000109C
+ 000010B5000008C60000008C0000007B0000083952004A42BD002121A5000029
+ AD00005ABD000094D60000CEEF0000C6EF00000000000000000000000000E7E7
+ E700A5A5B50031217B0010006B00423184009CA5BD0084949C00ADB5BD00C6CE
+ DE00D6D6DE00DEE7EF00EFEFF700F7FFFF00FFFFFF00FFFFFF00F7FFFF00ADAD
+ BD00B5B5C600C6CED600C6C6CE00BDBDC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFFF
+ FF00FFFFFF00F7F7F700F7EFEF00F7EFEF0000000000E7D6D600EFDEE700F7EF
+ F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EF
+ DE00DE843900EFD6AD00FFFFEF00FFF7D600FFF7CE00FFEFC600FFE7BD00FFE7
+ B500FFDEAD00FFD6A500FFD69C00F7BD84000000000000000000000000000000
+ 000052522900848463007B735A00525A29002152000021730000188C000010A5
+ 000010BD000008D6000000BD000000840000005A08001821730008009C000008
+ 9C000029AD000052BD00007BCE00085ABD000000000000000000FFFFFF00D6D6
+ D6008484A50018087300100073005A529C009CADBD0084949C00B5BDCE00C6CE
+ DE00D6DEE700DEE7EF00EFEFF700F7FFFF00FFFFFF00FFFFFF00E7E7EF00A5AD
+ B500BDBDCE00CECEDE00DEE7EF00EFF7FF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
+ FF00EFE7E700E7DEDE00DED6D600DED6D600EFDEDE00EFE7E700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFC6
+ 9C00DE8C4200FFFFEF00FFFFE700FFF7D600FFF7CE00FFEFC600FFE7BD00FFE7
+ B500FFDEAD00FFD6A500FFD69C00FFCE94000000000000000000000000000000
+ 00005252390073735200847B63005A6339002952000021730000188C000010A5
+ 000010BD000008D6000000EF000000BD000008630000082929000029A500007B
+ CE000094D600005ABD002129940073425A000000000000000000F7F7F700C6C6
+ C6005A52940010007B00180873007B73AD009CA5B5008C94A500BDC6CE00CECE
+ DE00D6DEE700E7E7EF00EFF7F700FFFFFF00FFFFFF00FFFFFF00D6DEDE00A5AD
+ BD00BDC6D600BDBDC60094949C00A5A5A5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000F7F7F700EFE7
+ E700CEAD9C00C6847300C6AD9C00C6BDBD00FFF7F700EFDEDE00F7E7E700FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFF7F700E794
+ 5200EFC69400FFFFF700FFFFDE00FFF7D600FFEFCE00FFEFC600FFE7BD00FFDE
+ B500FFDEAD00FFD6A500FFD69C00FFCE94000000000000000000000000000000
+ 0000636352005A5A31008484630073734A0031520800216B0000188C000010A5
+ 000010BD000000DE000000FF000000CE0000084A100000318C00008CD60000E7
+ F70000FFFF0000EFFF002173AD0094525A000000000000000000EFF7EF00ADAD
+ BD003929840010008400211884008C8CB500949CAD00949CAD00C6C6D600CECE
+ DE00DEDEE700E7E7EF00F7F7F700FFFFFF00FFFFFF00FFFFFF00CED6D600A5AD
+ B500BDC6D600C6CECE00BDBDC600BDBDC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00F7F7F700E7E7DE00CEAD
+ 9400AD4A1800A5310000A5422100AD847300FFFFFF00FFF7FF00EFDEDE00F7E7
+ E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7D6BD00DE94
+ 4200FFEFD600FFFFEF00FFFFDE00FFF7D600FFEFCE00FFEFC600FFE7BD00FFDE
+ B500FFDEAD00FFD6A500FFD69C00FFCE94000000000000000000000000000000
+ 000000000000424229007373520073735200394A1000295A0000217B00001094
+ 000010B5000000DE000000EF000000940000002939000039B500008CD60000C6
+ EF0000E7F70000FFFF0000B5E700736BA5000000000000000000D6DED6008C8C
+ AD0029108C001800940031298C009CA5BD008C94A5009CA5B500C6CED600D6D6
+ DE00DEDEE700E7EFEF00F7F7FF00FFFFFF00FFFFFF00FFFFFF00C6C6CE00A5AD
+ BD00BDC6D600BDC6CE00BDBDC600CECED6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00E7E7E700CEA58C00AD52
+ 1800A5310000C67B4A00CE8C63009C390800FFFFFF00FFFFFF00FFF7F700EFDE
+ DE00EFE7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700E7AD6B00EFB5
+ 7B00FFFFF700FFFFE700FFFFDE00FFF7CE00FFEFCE00FFEFBD00FFE7B500FFDE
+ AD00FFDEA500FFD69C00FFD69C00FFCE8C000000000000000000000000000000
+ 00000000000052524200424A21005A63390031390000294A000021630000187B
+ 0000189C000008BD000008C60000086B000010215200184AC6000873CE00009C
+ D60000B5E70000C6E700008CD6006B6BAD000000000000000000CECED600635A
+ A50021089C0018089400524A9C00A5ADBD00848CA500ADB5C600CECEDE00D6D6
+ E700DEE7EF00EFEFF700F7FFFF00FFFFFF00FFFFFF00FFFFFF00B5BDC600A5AD
+ BD00C6C6D600C6C6CE00B5B5BD00BDBDC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFFFF00F7F7F700E7DEDE00CEA58400BD521800D694
+ 5A00B54A1800EFD6BD00FFFFFF00F7DECE00FFFFFF00FFFFFF00FFFFFF00FFF7
+ F700EFD6DE00EFE7E700FFFFFF00FFFFFF00FFFFFF00FFEFE700DE842900F7CE
+ 9C00FFF7F700FFFFE700FFFFDE00FFF7CE00FFEFC600FFE7C600FFE7B500FFDE
+ AD00FFDEA500FFD69C00FFD69C00FFCE8C000000000000000000000000000000
+ 000000000000000000007B7B6B00424218003129000031390000294A0000215A
+ 000021730000108C0000107B00005A7331008473A500425AC6004A84D600107B
+ C600007BCE000084CE000852BD00846B9C0000000000EFEFE700B5B5C6004231
+ A5002108A50021109C006B6BAD009CA5B5008494A5008C949C00A5A5AD00BDBD
+ C600CECED600E7E7E700F7F7F700FFFFFF00FFFFFF00F7FFFF00ADB5BD00ADB5
+ BD00BDC6D600D6D6DE00E7E7E700E7E7E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FFFFFF00F7F7F700E7DEDE00CE9C7B00BD632100E7BD9400D69C
+ 6B00BD633900FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFF7F700E7D6D600EFDEE700FFFFFF00FFFFFF00FFFFF700EFB57B00DE8C
+ 3900E79C5200F7D6B500FFF7E700FFFFDE00FFEFCE00FFEFBD00FFE7B500FFDE
+ AD00FFDEA500FFD69C00FFCE9400FFC68C000000000000000000000000000000
+ 00000000000000000000000000006B73520018520000188C000018A50000188C
+ 0000186300003152100084846300DEC6BD00D6B5CE005A52AD006373CE006B94
+ D6004A84CE002963C6004A5ABD00D6B5C60000000000E7E7DE008C8CB5002921
+ A5002118AD0029189C008C8CB500949CAD008C9CA500949CA500A5A5AD00B5BD
+ C600C6C6CE00D6D6D600DEE7DE00EFEFEF00FFFFFF00EFF7F700A5ADB500ADB5
+ C600BDC6CE00B5BDC6009C9CA5007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7F7F700E7DEDE00CE947300C66B2900E7BD9400F7DEB500BD5A
+ 2100E7B59400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFF7F700E7CED600F7E7E700FFFFFF00FFFFFF00FFFFF700F7E7
+ D600EFB58400DE8C3900DE944A00EFCE9C00F7EFD600FFF7D600FFE7BD00FFDE
+ AD00FFDEA500FFD69C00FFCE9400FFC68C000000000000000000000000000000
+ 00000000000000000000A5AD9400296B080010A5000008E7000000FF000000FF
+ 000000CE0000397B1800C68C8C00D6A5AD00DEB5B500CEADBD006B63B5005252
+ AD005252B5006B52A500CE94A500DEADAD0000000000D6CED6006B63AD002118
+ B5002118B5003929A5009CA5BD008C9CA5008C94A500A5ADB500BDBDC600CECE
+ DE00DEDEEF00EFEFF700FFFFFF00FFFFF700FFFFFF00E7EFEF009CA5B500B5BD
+ C600BDBDCE00848C8C005A4A5200523139000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFFF
+ FF00F7F7F700DED6CE00CE946B00CE733100F7D6AD00FFEFBD00E79C5A00BD63
+ 2900F7EFDE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00F7F7F700DECECE00F7EFE700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00F7E7D600E7B58400D67B2900DE8C4200EFC69400FFF7D600FFEF
+ CE00FFDEAD00FFD69C00FFCE9400FFC68C000000000000000000000000000000
+ 00000000000000000000315A10001884000010B5000000DE000000F7000000FF
+ 000000FF000000C600005A5A2900AD636300AD737300BD847B00BD847B009C6B
+ 7300C69CA500E7BDBD00DEB5AD00D6A5A500F7F7F700BDBDCE004A39AD002918
+ C6002910B500524AA500A5ADBD008C94AD008C8C9C007B848C0094949C00ADAD
+ B500BDBDC600CECED600E7E7E700F7FFF700FFFFFF00DEDEE7009CA5AD00B5BD
+ CE00BDBDC6007B7B840073525A0084525A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFFFFF00EFEF
+ EF00E7DED600CE8C5A00D6843900F7D6AD00FFEFBD00FFDE9C00CE6B2900D694
+ 6B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFF7F700DECECE00EFE7E700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFF7F700F7E7DE00E7B58400D67B3900CE7B3100E7B5
+ 8400F7E7C600FFE7BD00FFD6A500FFC68C000000000000000000000000000000
+ 0000000000009CA58C00185200001884000010AD000008CE000000DE000000EF
+ 000000F7000000DE000031841800ADA59C00A58C8C008C6363009C6B6B00AD6B
+ 6B00B57B7B00C68C8C00CEA5A500DEB5B500EFEFEF009494BD003129BD002921
+ D6002118B5006B6BAD00A5A5B5008C8CA500ADB5BD00BDC6CE00CECED600D6DE
+ E700E7E7EF00EFEFF700EFF7F700F7FFF700FFFFFF00CED6D6009CA5AD00B5BD
+ CE00BDC6CE0094949C0094848C00B58C94000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFFFFF00EFEFEF00E7CE
+ C600D6945200DE8C4200F7E7BD00FFEFB500FFE7A500EFC67B00BD5A1800F7DE
+ D600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EFEF00E7CECE00F7E7E700FFFF
+ FF00FFFFFF00FFF7FF00FFF7F700F7F7F700F7EFEF00EFDED600DEA58400CE73
+ 3100CE733100E7AD7300F7DEBD00FFDEB5000000000000000000000000000000
+ 000000000000848C6B00295A0800217B0000109C000010B5000008C6000008CE
+ 000008D6000000C6000031841000B5A59C00AD949400DED6D600E7EFEF00D6D6
+ D600BDADAD00A5848C00A5737300AD737300D6D6D6006B73BD002921CE002921
+ D6003129BD00A5A5D600CECED600B5B5C600C6CED600CED6DE00D6D6DE00DEDE
+ E700E7E7EF00F7F7F700FFFFFF00FFFFFF00FFFFFF00C6C6CE009CA5B500B5BD
+ CE00C6CED600ADADB500ADA5AD00DEC6CE000000000000000000000000000000
+ 000000000000000000000000000000000000F7F7F700EFEFEF00DECEC600DE94
+ 5200E79C4A00FFE7BD00FFEFB500FFE7A500FFDE9C00D68C4200D68C5A00FFF7
+ F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700DEC6C600EFE7
+ E700FFFFFF00FFFFFF00F7F7F700F7F7EF00F7EFEF00F7EFEF00F7EFEF00EFDE
+ D600DEB59400C66B3100C6632100DEA573000000000000000000000000000000
+ 000000000000949C8400527331005A943900298C10001094000010A5000010B5
+ 000010AD00001094000039732100DED6CE00D6B5BD00C6ADAD00C6BDB500D6CE
+ CE00E7EFEF00EFF7F700E7E7E700BDB5B500DEDEE7004A4ABD002129DE002929
+ D6003929CE00736BD600948CDE00B5B5E700CECEEF00DEE7F700F7F7FF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B5B5BD009CA5B500B5BD
+ C600CECED600C6C6CE00B5ADB500F7EFF7000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF00EFEFEF00E7CEBD00DE944200EFAD
+ 6300FFEFC600FFEFB500FFE7AD00FFE7A500F7CE8C00C6631800EFCEAD00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EFEF00DEC6
+ C600F7E7E700FFFFFF00FFFFF700F7F7F700F7EFEF00F7EFEF00F7E7E700EFE7
+ E700EFE7E700EFD6CE00DEAD9400C66B39000000000000000000000000000000
+ 000000000000000000005A6B390084A56B006BA5520039942100188C0000108C
+ 000021940800297308006B845200FFFFFF00FFFFFF00F7F7EF00E7D6D600CEBD
+ BD00C6ADAD00BDADAD00CEC6C600E7E7E700BDBDE7003931CE002929E7003129
+ DE002929D6002118CE001810BD002118BD003129BD004A42B5005A52BD00736B
+ C6008484CE00A59CD600C6C6E700E7E7F700F7F7FF00D6D6DE00D6D6DE00DEE7
+ E700DEE7E700DEE7E700CECED600D6D6DE000000000000000000000000000000
+ 00000000000000000000F7F7F700E7EFEF00DEC6AD00E79C4A00EFB57300FFEF
+ C600FFEFB500FFE7AD00FFE7AD00FFE7AD00E7A55A00CE6B2900FFF7DE00FFEF
+ C600FFF7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EF
+ EF00DEC6C600F7EFEF00FFFFFF00F7F7F700F7EFEF00F7EFEF00EFEFE700EFE7
+ E700EFE7E700EFDEDE00EFDEE700E7D6CE000000000000000000000000000000
+ 000000000000000000006B5239006373420094AD7B0094B57B007BAD63006BA5
+ 52005A8439004A632900CECEC600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00F7F7F700EFE7E700DEC6C600CEADAD009494D6003131D6002929DE002929
+ DE002121DE002121D6002921CE002118C6002118BD002110B5001808AD001808
+ AD002108A50021109C0021109400291894004A39A5006B63B500948CC600B5AD
+ D600CECEDE00E7E7F700EFEFF700C6C6CE000000000000000000000000000000
+ 000000000000FFFFFF00E7E7E700E7CEB500EF9C4A00F7BD7300FFF7CE00FFEF
+ B500FFEFAD00FFE7AD00FFE7AD00FFDEA500CE732900DEAD7300FFEFC600FFCE
+ 8400FFC68400FFD6B500FFEFE700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00F7EFEF00DEBDBD00EFE7E700FFFFFF00F7F7F700F7EFEF00F7EFEF00EFE7
+ E700EFE7E700EFDEDE00EFDEDE00EFDEE7000000000000000000000000000000
+ 000000000000000000009C6363005A4A310063734A00737B520073845A005A73
+ 4200636B4200C6C6B500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7E7F700CECEF700BDC6F7009CA5
+ EF00848CE7006B73DE005A5AD6004A4ACE003131C6002921BD002921B5002110
+ B5001808AD001808A50018089C001008940010008C000800840008007B001000
+ 730021107B00392984004A427B004A4273000000000000000000000000000000
+ 0000FFFFFF00EFEFEF00E7C6A500F7A54200F7CE8C00FFF7CE00FFEFB500FFEF
+ B500FFEFAD00FFE7AD00FFE7AD00EFB57300CE6B2900F7DEBD00FFDEAD00FFC6
+ 7B00FFBD7300EFAD6B00EFAD7B00EFCEAD00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00EFE7E700DEBDC600F7E7EF00FFFFFF00F7F7F700F7E7EF00F7E7
+ E700EFE7E700EFE7E700F7F7F700FFFFFF000000000000000000000000000000
+ 000000000000AD848C007B424A00BDB5B500D6DECE00ADAD9C00A5A58C00BDBD
+ AD00EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 000000000000000000000000000000000000DEDEF700CECEEF00B5B5E7009C9C
+ DE008C84D600736BC6005A4AB5004A42AD0031299C002118940018088C001000
+ 8400100073000800630000004A0010086B000000000000000000000000000000
+ 0000F7F7F700EFCEA500F7AD5200FFD69400FFF7CE00FFEFBD00FFEFB500FFEF
+ B500FFE7AD00F7D69C00EFBD8C00CE7B3100DE9C6300FFEFD600F7D69C00F7C6
+ 8C00F7BD8400F7C68400F7BD8400EFAD7B00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00F7EFEF00D6BDBD00EFE7E700FFFFFF00F7EFEF00F7F7
+ F700FFF7F700FFFFFF00FFFFFF00EFE7E7000000000000000000000000000000
+ 000000000000846B6B006B636300D6DED600F7F7F700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7F7FF00EFEFF700DEDEEF00CECEE700C6BDDE00A59C
+ CE008473B500635A940021187B00424AAD00000000000000000000000000FFFF
+ FF00F7DEB500F7AD4A00FFDEA500FFFFCE00FFF7BD00FFEFBD00FFE7AD00F7CE
+ 9C00EFBD9400EFB58400E7A56B00C6631800F7D6B500F7E7CE00F7DEB500FFE7
+ AD00FFD69400FFCE9400FFC68400F7BD8400FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00EFE7E700D6BDBD00EFE7E700FFFFFF00FFFF
+ FF00F7F7F700E7D6D600D6B5BD00CEADAD000000000000000000000000000000
+ 00000000000000000000B5BDBD00C6C6C600CEC6CE00D6D6D600E7E7DE00EFEF
+ EF00F7F7F700F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000524AAD005A7BCE00000000000000000000000000FFFF
+ FF00F7CE8C00FFAD4A00FFDEA500FFF7CE00FFE7B500F7CE9C00EFBD8C00EFB5
+ 8C00E7B58C00DEAD9400CE845200D6844A00FFF7E700FFFFD600FFF7D600FFEF
+ C600FFD69C00FFC68C00F7BD8400F7BD7B00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFE7E700D6BDBD00EFDEDE00E7CE
+ CE00CEB5B500D6BDBD00E7D6D600EFEFEF000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C6C6C600C6BDC600C6C6
+ CE00D6CED600DEDEDE00E7E7E700EFEFEF00F7F7F700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000005A52BD007B94E7000000000000000000000000000000
+ 0000FFF7EF00F7CE9400F7AD5200F7AD6300EFBD8C00EFBD9C00E7BD9400DEB5
+ 9C00D6B5A500D6B5AD00CE733100EFBD9C00FFFFEF00FFFFD600FFF7CE00FFEF
+ BD00FFD69C00F7C68400F7BD7B00F7B57300FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EFEF00D6BDBD00E7D6
+ D600F7EFEF00FFFFF700FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CECECE00C6C6C600C6C6C600C6C6C600D6D6D600DEDEDE00E7E7E700EFEF
+ EF00F7F7F700FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000006B6BC600738CE700000000000000000000000000F7F7
+ F700EFEFEF00E7E7E700DED6CE00E7B57B00EFA55200DEB59C00DEBDBD00E7CE
+ CE00F7E7E700EFC69C00D6843900FFEFE700FFFFDE00FFF7CE00FFEFBD00FFE7
+ B500FFDEA500F7C68400F7BD7B00EFAD7300FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D6D6D600C6C6C600C6C6C600CECE
+ CE00D6D6D600DEDEDE00E7E7E700EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000BDBDE7004A5ACE0000000000FFFFFF00F7F7F700E7E7
+ E700DEDEDE00D6CECE00D6C6C600D6BDBD00DEC6BD00EFD6D600F7EFF700FFFF
+ FF00FFFFFF00DE945200E7AD7B00FFFFEF00FFF7D600FFEFC600FFEFBD00FFE7
+ B500FFDEAD00FFCE8C00F7BD7B00EFAD7300FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000D6D6D600CECECE00CECECE00CECECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000008C8CDE0000000000EFEFEF00DEDEDE00D6CE
+ CE00D6C6C600D6C6C600E7CECE00EFE7E700F7F7F700FFFFFF00FFFFFF00FFFF
+ FF00F7DECE00D6732900F7DEC600FFFFE700FFF7CE00FFEFC600FFE7BD00FFE7
+ B500FFDEAD00FFD69C00F7BD7B00EFAD7300FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00E7DEE700DECECE00DECE
+ CE00EFD6DE00F7EFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFF7
+ F700DEA56B00E7A56300FFF7EF00FFFFD600FFF7CE00FFEFC600FFE7BD00FFE7
+ B500FFDEAD00FFD6A500FFC68C00EFAD7300FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000BDC6CE00314263006B94C6006394D600638CCE006B9CD6005A8CCE006394
+ CE00639CD600639CD6006BA5DE0073ADE70084B5EF00396BA500215A94004A84
+ BD006B9CDE006BA5E7006BA5E7006BA5E7000000000000000000000000000000
+ 000000000000FFEFEF00FFEFE700EFDEDE00E7D6D60000000000000000000000
+ 00000000000000000000000000000000000000000000000000007B737300A59C
+ 9C00C6C6C6000000000000000000000000000000000000000000000000000000
+ 000000000000C6BDB500EFEFEF00EFEFEF00EFEFEF00E7E7EF00E7E7E700DEDE
+ DE008CDEEF005AC6FF00298CC6005A849400BDBDBD00CECECE00C6C6C600B5B5
+ AD009CA5A5008C949C008494A5007B94B5000000000000000000F7FFFF0094AD
+ 9400CEF7D600A5D6A5009CD6940094CE8C0094CE940094CE940094C694008CC6
+ 9C008CCE9C0094CE9C00638C5A00314A1800525A1000525A1000525A1000525A
+ 1000525A1000525A1000525A1000525A10000000000000000000000000000000
+ 0000C6CECE0029425A00638CBD006394D6006394CE006394CE006394CE006394
+ D600528CC6003973AD00427BB5004284BD00528CBD004273AD00528CC60073AD
+ E70073A5E700639CDE006B9CDE006BA5E7000000000000000000000000000000
+ 000000000000FFF7EF00FFFFF700FFFFFF00FFFFFF00FFFFEF00FFF7EF00F7EF
+ EF00EFDEDE000000000000000000000000000000000000000000BDBDBD007B73
+ 7300BDB5BD000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6BD00F7F7F700EFEFEF00EFEFEF00EFEFEF00E7EFEF00EFE7
+ E700D6DEDE008CDEEF005ACEFF00298CC6005A7B9400949494008494A5007B9C
+ B5007BA5D60084B5EF008CBDFF0084B5EF000000000000000000B5C6B5006B84
+ 6300C6EFBD00ADDEAD0094C68C009CD69C00A5D69C0094C694009CD69C009CCE
+ 9C0094C68C009CD6940073945A00294A0800525A1000525A1000525A1000525A
+ 1000525A1000525A1000525A1000525A10000000000000000000000000000000
+ 0000CECECE00394A63006B94C6005A8CCE006394CE00638CCE005A8CC6004A7B
+ B500396BA500427BB5005A94C6005284BD0031639400396B9C00528CBD0073A5
+ DE0073A5DE006BA5DE006BA5DE00639CD6000000000000000000000000000000
+ 000000000000FFFFF700FFFFFF00FFFFF700FFFFFF00FFFFF700FFFFEF00FFFF
+ EF00FFFFE700FFFFE700FFF7EF00FFEFE700F7E7E7000000000000000000638C
+ AD005273BD008C8C9C00CECECE00000000000000000000000000000000000000
+ 0000C6BDB500CEC6C600FFFFFF00F7F7F700EFF7F700EFEFEF00EFEFEF00DEDE
+ DE00BDBDB500949CA5007BCEE70063CEFF00298CC60031638C00638CBD007BB5
+ EF0084BDFF0084BDFF007BB5F70073A5D60000000000FFFFEF008C9473005A6B
+ 390094AD7300C6E7B500ADDEAD007BB58C0073A57B00739C7B0084AD840094C6
+ 9400ADD69C008CB573004A6B3100395218005A5A10005A5A10005A5A10005A5A
+ 10005A5A10005A5A10005A5A10005A5A1000000000000000000000000000FFEF
+ F700C6C6C60031425A006B94C6005A94D6006B94D6005284BD004A7BB5006B9C
+ D60084B5EF007BB5E7005A8CC60031639C00184A7B001852840031639400427B
+ AD005A8CC60073A5DE0073ADE7006BA5E7000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFF700FFFFEF00FFFFEF00FFFF
+ EF00FFFFEF00FFFFDE00FFFFE700FFFFDE00FFF7D600FFF7D600DEE7D6006BC6
+ FF003994F7006B73A500C6B5B500000000000000000000000000000000000000
+ 0000B5B5AD00DEDED600FFFFFF00F7F7F700F7F7F700EFF7F700F7F7F700C6CE
+ D600739CC6007BA5DE007BADE70084DEF7006BD6FF00318CCE00316394006384
+ AD0073A5DE007BADE70073A5D6007394AD0000000000D6D6BD0084845A00636B
+ 29005263210084A573008CB59C004A7B6B0031636300396B6B0042736B005A8C
+ 7B007BA584004A6B42001842180018422900424A1800424A1800424A1800424A
+ 1800424A1800424A1800424A1800424A18000000000000000000000000000000
+ 0000CED6D600314A63005A84B500528CCE004A73B5006394CE0084B5EF008CBD
+ EF0073A5D600396B9C001042730018527B003163940031639400316394003163
+ 9400396BA5004A84B5006394CE006BA5DE000000000000000000000000000000
+ 0000FFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFF7EF00FFEFDE00FFEF
+ CE00FFE7BD00FFE7C600FFE7C600F7E7BD00F7EFC600FFF7C600FFF7CE00ADD6
+ DE0052BDFF004273CE00A5948C00F7D6BD000000000000000000000000000000
+ 0000BDBDB500EFEFEF00FFFFFF00F7F7F700F7F7F700F7F7F700F7F7F700D6DE
+ DE007BA5DE0073ADEF0073A5EF007BADE7007BDEF7006BD6FF003194CE003163
+ 8C0073849C00A5ADBD00BDC6CE00C6C6C600FFFFF700B5B5940084844A006B73
+ 21004A5A1000395229004A736B006B9CA50094BDEF008CC6EF007BADD6005284
+ 9C0029525A00214A4A007BADAD006BA5B5004294B5004294B5004294B5004294
+ B5004294B5004294B5004294B5004294B5000000000000000000000000000000
+ 0000ADB5C600294263005284B500528CCE007BADE7008CBDF7007BADE7005284
+ B500396B9C00214A7B00184A7300426B9C00396B9C00396B9C00396394003163
+ 94002963940031639C00427BAD005284BD000000000000000000000000000000
+ 0000FFF7F700FFF7F700FFEFEF00FFEFDE00FFE7CE00FFE7C600FFE7C600FFE7
+ CE00FFE7BD00FFE7BD00FFDEAD00FFD6AD00FFD6A500FFD6AD00FFE7B500E7D6
+ B50084C6EF00429CFF00636B9400C6A57300000000000000000000000000C6BD
+ BD00DEDEDE00F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700EFEF
+ EF008CADD6006394CE006B94CE007394C6008CA5C6009CE7EF0073DEFF00397B
+ A5007B737300BDBDBD00DEDEDE00B5B5BD00EFF7DE009CA573008C8C4A006B6B
+ 1800525A1000395231007BA5A500A5D6F70094C6FF0094CEFF009CD6FF008CBD
+ F700426B8C00214A6300A5EFFF008CE7FF0063CEFF0063CEFF0063CEFF0063CE
+ FF0063CEFF0063CEFF0063CEFF0063CEFF00000000000000000000000000BDC6
+ CE005A6B8400294A730073A5DE0084BDFF0084B5EF005A8CC60039639C00295A
+ 8C0031639400295A840029527B0042739C0031638C00396B9400396394003163
+ 94003163940031639400295A940031639C000000000000000000000000000000
+ 0000FFFFFF00FFFFFF00FFFFFF00FFDEDE00FFD6CE00EFBD9C00E7B58400EFC6
+ 9400F7D6A500FFDEB500FFE7C600FFE7C600FFEFCE00FFE7C600FFDEB500FFDE
+ AD00BDCEC60063C6FF00397BD6009C847B000000000000000000C6C6BD00D6D6
+ D600E7E7E700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700C6CEDE00A5BDD600C6CED600DEDEDE00EFE7E700D6E7E7009CDEDE00C6B5
+ BD008C73730084737300C6C6BD008484AD00DEE7C600949C6B0094944A005A63
+ 1000424A08005A6B5200C6E7F700A5CEFF009CCEFF008CC6FF0084C6FF00A5D6
+ FF007BA5CE0021526B008CDEEF0073E7FF0063CEFF0063CEFF0063CEFF0063CE
+ FF0063CEFF0063CEFF0063CEFF0063CEFF00D6D6D600C6BDC6007B848C00424A
+ 630063849C0094BDE7008CBDEF005A94CE00396BAD0031639C0031639400315A
+ 940031639400315A8C00214A73001039630018427300295A8400396B94003963
+ 94003163940031639400295A9400316394000000000000000000000000000000
+ 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFE7E700EFBDBD00EFAD9C00DEA5
+ 8400CE9C6300D6A56B00DEAD7B00EFBD8C00F7CEA500F7DEBD00FFEFCE00FFEF
+ D600F7EFD6009CD6F7004AADFF005A73A5000000000000000000CEC6C600EFEF
+ EF00DEDEDE00F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700EFEFEF00EFEFEF00EFEFEF00DEDEDE00EFDE
+ DE00E7CECE006B52730063637B005A5A9C00CED6B5009CA56B008C944A005A63
+ 10004A5218005A735A00CEEFFF00A5CEFF009CCEEF0094D6FF0084C6FF009CCE
+ FF008CADCE00295A6B008CE7EF006BEFF7005ACEFF005ACEFF005ACEFF005ACE
+ FF005ACEFF005ACEFF005ACEFF005ACEFF00525A630021314A004A638C00739C
+ CE007B9CC6007BA5CE005A84B500215A8C0029639400215A8C004273A500395A
+ 8C0031639400316384000031420010ADAD0021B5B50018526300294A6B00316B
+ 940029639400215A9400296BAD00427BBD000000000000000000000000000000
+ 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EFEF00E7ADB500E7AD
+ A500DE9C8C00CE8C7300C68C5A00C68C5A00CE946300D69C6B00D6A57300E7B5
+ 8400F7C69C00CEC6B50073CEFF003984DE0000000000C6C6BD00E7E7E700E7E7
+ E700E7E7E700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700EFEFEF00EFEFEF00EFEFEF00E7EFEF00E7EFEF00DEE7
+ DE00C6BDE7002921C60039319C0031299400D6CEB5009C9C6B00949C4A00636B
+ 10004252100052634A00BDDEDE00CEFFFF009CD6FF008CC6FF0094C6FF009CCE
+ FF0073ADB500185A52008CE7F70073DEFF005ACEFF005ACEFF005ACEFF0063CE
+ F70063C6F7005AC6FF005ACEFF0063CEFF00000000006B737B004A5263002131
+ 5200082952006394C600639CCE003973AD00295A940029639C00315A94003163
+ 940039639400294A6B00086B7B0029EFE70021FFEF0063DEE7004A7B8C001839
+ 6300395A84005A84B5006394CE0073A5D6000000000000000000000000000000
+ 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFF7
+ F700EFD6CE00EFBDBD00DEB5AD00DEBDAD00DEB59400C6946300C6946300BD8C
+ 5A00C6945A00CE94630094B5C60052B5FF00CECEC600D6CECE00F7F7F700D6D6
+ D600EFEFEF00F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700EFF7F700EFEFEF00EFEFEF00EFEFEF00E7EFEF00E7E7E700E7EF
+ E700CED6DE008C8CE7008C8CC60021189400CECEB5009CA56B009CA55200636B
+ 18004A521000394A2100849C8C00CEF7EF00BDE7FF00ADD6FF00ADDEFF009CC6
+ E7004A7373001842390084CECE0094E7FF0063CEF7005ACEFF005AC6F70063C6
+ F7006BCEF70063CEFF0063CEFF005AC6EF000000000000000000C6C6BD002931
+ 420052739C0073ADEF0073B5F7006BADE700528CC6003973AD00315A9C00215A
+ 9400395A8C001042630018C6CE0021FFFF0018FFEF005AFFFF0094F7FF006BAD
+ BD00316384005A739C0084A5D60063ADD600000000000000000000000000FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFEF00FFFF
+ EF00FFFFF700FFFFFF00FFFFF700FFFFFF00FFF7EF00DEBD9400CE946300BD84
+ 5A00B57B4A00B5844A00A58463007BC6EF00CEC6BD00EFEFEF00EFEFEF00D6D6
+ D600F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700EFF7
+ F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00E7EFEF00E7E7EF00E7E7
+ E700E7E7E700EFEFE7009C9CB50029219C00D6D6BD00A5AD7300A5AD63007373
+ 21005A631800394A1000425231007B947300B5D6CE00C6E7EF0094B5C600637B
+ 730039523100294A2100426B52008CBDBD0094E7FF0052ADDE00217BAD002173
+ A500317BAD0052ADD60073CEF70063B5C6000000000000000000525A63005A73
+ 940084B5E7006BA5EF006BADEF006BADF70073B5EF005A94CE005284BD004273
+ A50018396B0010849C0018FFFF0010FFFF0052FFFF0052F7F70084FFFF0084FF
+ FF0052CEDE00297B9C0021527B0052A5CE00000000000000000000000000FFEF
+ DE00FFF7EF00FFF7EF00FFFFF700FFFFF700FFFFF700FFFFEF00FFFFE700FFFF
+ E700FFFFE700FFFFE700FFFFEF00FFFFEF00FFFFF700FFFFEF00E7D6BD00D69C
+ 7B00BD7B5A00B57B5200B5734200949CA500EFEFEF00FFFFFF00DEDEDE00DEDE
+ DE00F7F7F700F7F7F700F7F7F700F7F7F700EFF7F700EFEFF700EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00E7E7EF00E7E7
+ E700E7E7E700E7EFE7008C8CBD006B63B500E7E7CE00A5A57B00ADB56B007B7B
+ 29005A5A10005A632100424A100042521000425A2100526B3900425A3100424A
+ 1800525A10005A631000394A100052734A00528C9C00427BA5004273AD005A8C
+ C6005284B50039739C00427B9400396B6B00000000007B84940029527B006BA5
+ DE0063A5E7006BA5EF006BA5F700639CEF005AADEF007BADEF0073ADE7006B84
+ B500084A730010E7E70008FFFF0039FFFF0052F7F70084FFFF007BE7F70031C6
+ D60010DEEF0042E7F700317B9C0010396B00000000000000000000000000FFDE
+ B500FFD6AD00FFDEB500FFE7BD00FFE7C600FFEFD600FFF7DE00FFF7D600FFF7
+ D600FFF7DE00FFF7DE00FFF7DE00FFFFDE00FFFFE700FFFFE700FFFFF700F7EF
+ D600CE947300CE846B00CE7B6300BD736B00EFEFEF00EFEFEF00EFEFEF00E7E7
+ E700F7F7F700EFF7F700EFF7F700EFF7F700EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00E7EFEF00E7EFEF00E7E7
+ E700E7E7E700E7E7E700D6D6DE00CED6DE00F7F7DE00A5AD8400BDC68400949C
+ 4A005A5A08005A6318005A6318004A5A080052631000424A08004A5210005A5A
+ 10005A5A000063630800525A0800394A100042636B008CB5D6009CC6FF00ADCE
+ FF00ADD6FF007BADD6004A73840018393100ADA5A5002129420073A5D6006BAD
+ EF0063A5EF006BADEF006BA5EF0073A5F7005AA5E7007BA5E7007BB5E7003163
+ 8C0021A5BD0008FFFF0018FFFF0063FFFF0063F7FF0084FFFF004ACEE70018CE
+ DE0000BDCE00088CA50031638C00637B9C00000000000000000000000000FFCE
+ 9C00FFCE9C00FFCE9C00FFD6A500FFD6AD00FFDEAD00FFDEB500FFEFCE00FFEF
+ CE00FFE7C600FFE7C600FFEFCE00FFEFCE00FFEFD600FFF7D600FFF7D600FFFF
+ E700EFD6B500D6947B00D6947B00CE735A00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00F7F7F700EFEFF700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00E7EFEF00E7EFEF00E7E7E700E7E7E700E7E7
+ E700E7E7E700DEE7E700DEE7E700DEDEDE0000000000B5BD9400B5BD7B00B5BD
+ 6B0073732900525A1000525A10005A6310005A6310005A5A10005A5A18005A5A
+ 10006363100052520000525A1800525229008CADB500B5E7FF009CCEFF008CBD
+ F7009CCEFF00A5D6FF0084B5C600214A4200A5A5A500424A5A00425A8400739C
+ D6006B9CDE0073A5EF00639CDE006BA5E7006BA5EF006B9CDE005A8CBD000073
+ 8C0029F7F70018FFFF004AFFFF006BF7F7008CFFFF007BFFFF0039EFF70010D6
+ E700007B940039738C006B7B9C00394A63000000000000000000F7E7D600EFB5
+ 8400EFBD8C00F7BD9400F7C69400FFCEA500FFE7B500FFE7B500FFDEB500FFE7
+ BD00FFEFC600FFE7BD00FFDEB500FFE7BD00FFE7BD00FFE7C600FFEFC600FFEF
+ CE00FFEFCE00FFEFCE00FFEFCE00EFCEAD00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00F7F7F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00E7EFEF00E7EFEF00E7E7EF00E7E7E700E7E7E700E7E7E700E7E7E700E7E7
+ E700E7E7E700DEE7E700DEDEE700DEE7E70000000000D6D6BD00A5AD7300B5BD
+ 7300949C52006B6B21005A5A10005A6310005A5A08005252100052521800525A
+ 1000525A10004A520800525A210052523100BDE7E700A5D6F7008CC6F70094D6
+ FF008CCEFF008CC6FF0094C6E70042636B0000000000DEE7E7006B737B003139
+ 63004A6BA5006B9CE7006BA5E7006BA5DE00639CDE0073A5E700315A8C0021C6
+ D60000FFF70039FFFF0073FFFF0073FFFF009CFFEF0094FFFF0039E7E70010CE
+ DE0018849C0029425A004A4A5A009CA5A5000000000000000000EFC6B500D694
+ 6B00E7A57B00E7AD7B00EFB58400EFB58C00F7C69400FFD6A500FFD6AD00FFCE
+ A500FFD6A500FFDEAD00FFDEAD00FFDEAD00FFDEAD00FFDEAD00FFDEB500FFDE
+ B500FFE7BD00FFE7BD00FFE7BD00FFEFC600EFEFEF00EFEFEF00EFEFEF00F7F7
+ F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00E7EFEF00E7EFEF00E7EF
+ EF00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700DEE7E700DEE7
+ E700DEE7E700DEE7E700DEDEDE00E7E7E70000000000FFFFE700ADB57B00BDC6
+ 7B00ADB56B007B8439005A632100525A10005A5A08005A631000525A1000525A
+ 10004A5A08004A631000425218004A5A3100BDDEE700BDE7FF0094CEFF0094CE
+ FF008CC6FF0094C6FF0094BDE700425A6B00000000000000000000000000CECE
+ CE005A5A630039425A00637BA50084A5D6006BA5E700426BAD000863940010D6
+ EF0000E7E70042FFFF007BFFFF008CFFFF0094FFE700A5F7FF0042DEF70008D6
+ E70000636B00636B6300DEEFE700000000000000000000000000EFD6CE00DEAD
+ 9400D6A58400D69C7300D69C7300DE9C7300DEA57B00E7AD8400EFB58C00EFBD
+ 9400F7BD9400F7BD9400F7C69C00F7CEA500FFD6A500FFD6A500FFD6A500FFD6
+ A500FFD6A500FFD6A500FFD6AD00FFDEB500EFEFEF00EFEFEF00EFEFEF00F7F7
+ F700EFEFEF00EFEFEF00EFEFEF00E7EFEF00E7EFEF00E7E7E700E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700DEE7E700DEE7E700DEE7E700DEDE
+ E700DEDEDE00DEDEDE00DEDEDE00000000000000000000000000CED6BD00A5B5
+ 7B00BDC67B00ADB563006B6B2100636318005A5A21005252100052521000525A
+ 1000525A1800525A1800525218004A52100084AD9400CEFFF700ADEFFF0084CE
+ F7008CCEFF00A5DEFF007B9CAD00314A4A000000000000000000000000000000
+ 000000000000949CAD00314A6300314A6B006394BD007B94BD0010426300108C
+ 9C0039DEDE006BFFF70094FFFF0094FFF700B5FFEF00BDF7FF0052E7FF0008D6
+ DE0010737B00BDBDBD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7C6B500DEB59C00DEA58400DEA57B00DEA5
+ 7B00DEA57B00E7AD8400E7B58C00EFB58C00EFBD9400F7C69C00F7C69C00F7C6
+ 9C00F7C69C00FFC69C00FFCE9400FFDEBD00EFEFEF00EFEFEF00EFEFEF00EFF7
+ F700E7EFEF00E7EFEF00E7E7EF00E7E7EF00E7E7E700E7E7E700E7E7E700E7E7
+ E700E7E7E700E7E7E700DEE7E700DEE7E700DEE7E700DEDEE700DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00D6DEDE00000000000000000000000000FFFFEF00BDC6
+ 9C00A5AD7300BDC67B00A5AD5A006B6B21005A631800525A1000525A10005A63
+ 1000525A1000525A1000525A1000525A180039522900A5C6AD00C6EFF700C6EF
+ FF00BDE7FF0094BDC60052735A00314A18000000000000000000000000000000
+ 00000000000000000000DEE7F7007384940021394A005A6373004A5263000829
+ 31002163630094EFEF00ADFFFF00ADFFF700B5F7FF00B5FFFF0029D6EF0000DE
+ E700086B7300BDBDBD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000E7C6B500DEB59C00DEAD8400DEA57B00DEA57B00DEA57B00E7AD8400E7AD
+ 8400EFB58C00EFB58C00EFB58400F7DECE00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7
+ E700DEE7E700DEE7E700DEE7E700DEDEE700DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00D6DEDE00D6DEDE00DEE7E70000000000000000000000000000000000EFF7
+ DE00B5BD9400B5BD7B00BDC67B00ADB56300737B2900636B18005A5A08005A63
+ 08005A6310005A631000525A10004A5208004A521000525A31006B7363008C9C
+ 9C007B8C840052634200424A1000526310000000000000000000000000000000
+ 000000000000000000000000000000000000D6D6D6006363630073737300DED6
+ DE00294A4A00A5EFEF00A5FFFF00ADFFFF0073FFFF0042E7F70010F7FF0018F7
+ FF00186B7300CEBDC60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DEBDA500DEAD8C00D6A5
+ 7B00D69C7300DE9C6B00DEA57B00000000000000000000000000E7E7E700EFEF
+ EF00000000000000000000000000E7EFEF00E7E7E700DEE7E700DEE7E700DEDE
+ E700DEDEE700DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6DEDE00D6DE
+ DE00D6DEDE00D6D6D60000000000000000000000000000000000000000000000
+ 0000E7E7D600B5BD9400A5AD7300BDCE7B00B5B56B00949C4A00737329005A63
+ 1000525A0800525A10005A5A18005A5A21005A631000525208004A5210004A4A
+ 1800424A10005A6321005A631800525A10000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000396363008CF7FF0063F7FF004ADEF70000DEDE0018EFF70018E7EF000094
+ 9C0029525A00E7C6CE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000E7C6B500E7BDAD00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7EF
+ EF00E7E7E700DEDEE700DEDEDE00D6DEDE00D6DEDE00D6DEDE00D6DEDE00D6D6
+ DE00D6D6DE00D6D6D60000000000000000000000000000000000000000000000
+ 000000000000EFEFD600C6CE9C00ADB57300C6C68400B5BD7300ADAD6300949C
+ 4A007B8431006B732100636B2100636318005A631000636B1000636B10006B7B
+ 21006B732100636B29006B6B3900A5A57B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029525A0042BDC60021DEE70008DEEF0021D6DE00108C9C0000525A004A73
+ 7B00CECECE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000EFEFEF00EFEFEF00E7EFEF00E7E7E700DEDEE700D6DEDE00D6D6
+ D600CED6D600D6D6DE0000000000000000000000000000000000000000000000
+ 00000000000000000000FFFFE700D6DEB500B5BD7B00ADB57300ADBD7300B5BD
+ 7300ADBD6B00A5AD5A0094A552008C9442008C944A00849442007B8C3900848C
+ 3900848C4A009CA57300C6C6B500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007B8C8C0008525A0018949C000894A500104A5A005A6B7B00D6CED6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000EFEFE700EFEFEF00EFEF
+ EF00E7E7E7000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFE700DEDEBD00BDBD9C00ADB5
+ 7B00A5AD73009CAD6B009CAD6B0094A563009C9C6B00949463009CA57300BDBD
+ 9400CECEB5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B5B5BD0031394A004A5A7300CEC6D60000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFFFFF00FFF7
+ EF00E7E7CE00D6DEBD00D6DEB500D6DEBD00D6D6B500EFE7D600FFF7E7000000
+ 0000000000000000000000000000000000000000000000000000C6AD9C00BD4A
+ 0000D66300005A391800734A1800D6630000FF730000DE6B0800BD7329009452
+ 29007B2908009C2900008C290000A58C7300D6CED600EFE7EF00F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7FF00FFF7F7000000000000000000000000000000
+ 00000000000000000000F7EFEF00FFEFEF00F7E7E700F7EFE700FFEFEF00D6D6
+ CE006BBD7B004AD67B0073EFAD0084F7B5008CFFBD0084F7BD007BF7AD004AD6
+ 730084BD8400E7DEDE00F7EFEF00FFEFEF0000000000C6ADA500949C9C00E7F7
+ F700C6C6E700CECEEF00D6DEE700D6D6EF00D6DEF700BDC6DE00D6DEFF00DEDE
+ F700E7E7F700EFEFFF00DEDEF700D6CEEF00DEE7F700E7E7F700DEE7F700DEE7
+ F700E7E7F700F7FFFF00ADB5BD007B8C840000000000315A730031637B003163
+ 8400295A7B002963840029637B0029637B00315A7B0029637B0029637B002963
+ 7B0031637B0029637B00296B8C002984A500296B840000425A0039849C002973
+ 8C0029849C002984A500187BA500187BAD000000000000000000CEB59C00C652
+ 0000BD5A08003152390039523100844A0800C6630000F7730000E7730000BD73
+ 2100A5633100842910008C310800BD9C8C00D6DEDE00F7F7F700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFF7000000000000000000000000000000
+ 00000000000000000000FFEFEF00F7E7E700EFE7E700F7E7EF00DED6CE0063B5
+ 6B0031C65A004ADE840063E794006BEFA5006BEFA5006BEF9C0063E794004ADE
+ 840031C663007BBD8400DEDED600EFE7E70000000000C6ADA500949C9400E7F7
+ F700CECEEF00D6D6F700DEEFEF00DEE7F700D6E7EF00CED6EF00D6DEEF00D6DE
+ EF00E7EFF700E7EFF700E7E7F700CECEEF00DEDEEF00E7E7F700E7EFFF00DEE7
+ F700E7E7F700F7FFFF00ADB5BD007B8C840042738400315A730031637B003163
+ 840029637B002963840029637B0029637B00315A7B0029637B0029637B002963
+ 7B0031637B0029637B00296B8C002984A500296B840000425A0031738C000852
+ 6B00105A7B003184A5002984A500217BA5000000000000000000B57B5200E76B
+ 00009C5A180021635A00316B4A002931210063391800C65A0000FF7B0000EF7B
+ 0000CE7B18009C633100844A3900BDB5B500D6E7EF00F7F7F700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 000000000000DED6D600FFEFEF00F7E7E700EFE7E700D6D6CE0063AD6B0021A5
+ 420031BD5A0039CE6B004AD67B0052DE840052DE840052DE84004AD67B0039CE
+ 6B0031BD5A0021AD42007BB57B00E7E7DE0000000000C6ADA5008C949400E7F7
+ EF00C6C6E700C6CEE700CEDEDE00CED6E700D6D6EF00CECEEF00CECEEF00C6C6
+ E700CECEE700CED6EF00CECEF700C6C6F700D6D6E700D6DEEF00D6D6EF00D6D6
+ EF00DEDEF700F7FFFF00ADB5BD007B8C84004A738C00315A730031637B003163
+ 840029637B002963840029637B0029637B00315A7B0029637B0029637B002963
+ 7B0031637B0029637B00216B8C002984A50029637B0000314A0018526B000029
+ 420000425A0031739400317B9C00317B9C000000000000000000A55A2100E773
+ 00007363310021847B00216B630010184200291863005A393100BD630000F784
+ 0000F7840000CE7B1800A5734A00B5A59400E7EFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 000000000000C6C6CE00FFEFEF00F7E7E700DED6CE006BB56B0021A5390031B5
+ 520039C6630042CE73004ADE840052DE840052DE840052DE840052DE840042D6
+ 730039C6630029B55200219C39007BB57B0000000000C6ADA5008C949400E7F7
+ F700C6CEEF00CED6EF00DEE7EF00DEDEF700C6C6C60094949C00ADADBD00B5BD
+ C600CEDEDE00E7F7F700D6E7EF00CED6EF00E7EFF700EFF7FF00E7EFF700DEE7
+ F700E7EFF700F7FFFF00B5BDBD007B8C84004A738C0031637B0031637B002963
+ 840029637B0029637B0029637B0031637B00315A7B0029637B0029637B002963
+ 7B0031637B0029637B00216B8C002984A50031738C0008425200295A73002152
+ 6B0021526B0018526B00215A7B004284A50000000000D6CEC600B5630800D67B
+ 0800525A390029845A00216B5A001810630021189C0021186B005A392100B563
+ 0000F78C0000F78C0000DE840800B57B3900C6B5AD00F7F7F700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 00009CCEDE00C6D6E700FFEFEF00FFE7EF00B5CEAD0021A5390031C65A0042CE
+ 6B004AD67B0052DE840063E794006BE79C006BE79C006BE79C0063E7940052DE
+ 84004AD67B0042CE730029BD5200299C390000000000C6ADA500949C9C00EFF7
+ F700C6CEEF00CECEEF00D6DEE700D6D6EF00B5ADC600847B9C00B5ADCE00CEC6
+ E700CED6EF00D6DEF700CECEF700BDBDF700CECEDE00D6D6EF00D6D6EF00D6D6
+ EF00DEDEF700EFF7FF00ADB5BD00848494004A7B8C0031637B00295A7B002963
+ 840029637B0029637B0029637B0031637B00315A7B0029637B0029637B002963
+ 7B0031637B0029637B00216B8C002984A5003173940000395200184A6300315A
+ 73003163730000314A0000314A0029637B0000000000B5A59400C66B0000BD73
+ 180052634A0039844A002142390029188C001818A50010086B0063393900945A
+ 2900AD6B0800E78C0000FF940000E78C0800A57B4A00CECECE00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 000073C6DE00E7E7E700FFEFEF00EFE7E700D6DECE008CBD8C0084BD8C008CC6
+ 8C0094CE94006BB573004ACE7B007BF7AD007BEFAD0073EFAD004ACE73006BB5
+ 73008CC694008CC68C008CC68C009CC69C0000000000C6ADA500949C9400EFFF
+ FF00CECEF700D6D6F700DEE7EF00DEE7F700E7EFF700D6D6E700DEDEEF00D6DE
+ E700C6D6D600CEDED600E7F7FF00D6DEEF00EFEFFF00EFF7FF00E7E7F700DEE7
+ EF00E7EFF700F7FFFF00ADB5B5007B848400527B940031637B00295A7B002963
+ 840029637B0029637B0029637B0031637B00295A7B0029637B0029637B002963
+ 7B0031637B00295A7B00216B8C002984A5003184A500105A7300104A6300184A
+ 630029526B0010425A00104A5A001052630000000000B59C8400D6730000A573
+ 290052735A0042844A00183139004231B5003939CE0018105A00845242008C5A
+ 4A006B391000B56B0800FF9C0000F7940000B58C4A00DEDED600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000094DE
+ EF0084CEDE00FFEFEF00F7E7E700EFE7E700EFE7E700FFEFEF00F7EFEF00FFEF
+ EF00FFEFF700B5C6A5004ACE73008CFFBD008CF7BD0084F7BD0052C67300C6CE
+ BD00FFEFEF00F7EFEF00F7E7EF00F7EFEF0000000000C6ADA5008C949400EFF7
+ F700C6C6EF00C6CEE700CED6DE00CED6E700CED6EF00C6C6E700CECEEF00D6DE
+ F700949CAD0039394A006B6B8400CEC6E700D6D6E700DEE7F700DEDEF700D6D6
+ EF00DEE7F700F7FFFF00ADB5BD007B848C005284940031637B00295A7B002963
+ 840029637B0029637B0029637B0031637B00295A7B0029637B0029637B002963
+ 7B0031637B00295A7B00216B8C002984A500217BA5002984A500397B9C001852
+ 6B0000394A00084252002163730018637300F7F7F700A5734200DE8400008473
+ 3100528C6B0042844A00212952003110B5003921C60042295A00AD735A007342
+ 310063393900A5633100F79C0000DE8C1000BD9C7B00F7F7F700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000063D6
+ EF00A5D6DE00FFF7F700F7E7EF00EFE7E700EFE7E700EFE7E700EFE7E700E7DE
+ D600E7CEBD009CAD7B004ACE73009CFFCE009CFFCE0094FFCE0052C67300B5AD
+ 8C00E7D6C600EFE7DE00EFEFE700F7EFEF0000000000C6ADA5008C949400EFFF
+ F700CECEF700CED6EF00D6E7E700DEDEF700D6DEF700CED6F700CED6F700DEE7
+ F700E7EFEF00949C9C0052525A004A4A5200ADB5C600DEE7EF00EFF7FF00E7E7
+ F700E7E7F700F7FFFF00ADB5BD007B848C005284940031637B00295A7B002963
+ 840029637B00295A7B0029637B0031637B00295A7B0029637B0029637B002963
+ 7B0031637B00295A7B00216B8C002984A500187BA500217B9C00398CAD002963
+ 7B0008425A00104A6300216B7B00186B7B00EFE7EF00B5732900DE8400006384
+ 5A0052BDA500427B5200211873003918CE00210094006B4A4A00CE9C73006B39
+ 31007B525200AD6B3100F79C0000CE842100C6B5AD00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000084DEF70063D6
+ F700CEDEE700FFF7F700EFE7E700EFE7E700EFE7E700EFE7E700DED6CE00CEB5
+ 9C00DEB594009CB573005ACE7B00BDFFE700C6FFEF00BDFFE7005ACE7B00B5AD
+ 7B00DEB59400D6BDB500E7DEDE00EFE7E70000000000C6ADA50094949400EFF7
+ FF00CECEEF00CECEEF00D6D6E700CED6E700D6D6EF00C6C6EF00CED6EF00D6DE
+ EF00DEE7F700EFF7FF00BDC6DE006B63940021213100424A5A00B5B5BD00D6DE
+ E700E7EFF700F7FFFF00B5BDC6007B848C005A7B940031637B0021637B001863
+ 7B0029638400316384003163840029637B0029637B0029637B0029637B003163
+ 7B0031637B0029637B00216B8C0029849C00317BA5003184A500217B9C002984
+ A500217B9C0010637B0018637B00185A7B00D6CEC600B57B1800CE8410006B8C
+ 7B0052BDAD0031635A0031189C004218D60021087B0084523100B57352008452
+ 4A009C736300BD7B1800F79C0000BD844200D6CED600FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000B5DEEF0063DEFF006BCE
+ EF00E7E7E700FFEFEF00EFE7E700EFE7E700F7EFEF00EFE7EF00D6CEC600DEBD
+ 9400FFEFC600BDDEA50052CE7B00BDFFDE00D6FFEF00B5FFDE005ACE8400D6E7
+ BD00F7D6A500D6B59400E7DED600F7EFEF0000000000C6ADA50094949400EFF7
+ FF00CECEEF00CED6EF00D6DEEF00D6DEEF00DEDEF700C6C6EF00CECEEF00D6DE
+ EF00CED6E700DEE7F700DEE7F700C6BDEF00ADADBD004A4A5A0018182900525A
+ 6300CECED600FFFFFF00B5BDC600737B7B005A7B940031637B0021637B002163
+ 7B0029638400316384003163840029637B00316384003163840029637B003163
+ 7B0031637B0029637B00216B8C0029849C00217B9C002984A500217B9C002984
+ A50029849C0021738C0029738C0018638400BDAD8C00C6730000B58429007BA5
+ 84006BB57B00294A52004221B5003118CE0039186B00B56B3900A55231008452
+ 5200AD7B6300DE8C1000E7940800AD8C6300F7EFF700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007BDEF70063DEFF007BCE
+ E700F7EFEF00FFEFEF00EFE7E700EFE7E700F7EFEF00EFEFEF00EFC6A500FFE7
+ B500FFFFD600EFFFCE009CDEA5009CDEA50094945200847329009CAD6B00F7FF
+ D600FFF7BD00FFDEAD00EFDECE00F7F7F70000000000C6ADA50094949400EFF7
+ FF00CECEEF00D6D6F700D6DEEF00D6DEEF00DEDEF700CECEEF00D6D6F700E7EF
+ F700DEE7F700DEE7EF00DEE7F700D6D6FF00EFF7FF00EFEFFF00949CA5003131
+ 390031313900949CA500B5B5BD006B7373005A7B940031637B0021637B002163
+ 7B0029638400315A7B00315A7B00295A7300295A7B00295A7B0029637B003163
+ 7B0031637B0029637B00216B8C00297B9C00217BA5002984AD002184A5002984
+ A5002984A5002984A500297B9C00186B8C00BDA58400C67300009C8C52005A9C
+ 8C005A9C5A00314A6B004A39D6003118BD0063315A00CE7B5200944A2900945A
+ 4A00A56B3900EF940800CE8C1800BDA58C00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B5EFF70063DEFF0063DEFF009CD6
+ E700FFEFEF00FFEFEF00EFE7E700EFE7E700EFEFEF00F7D6C600FFAD6300FFDE
+ A500FFF7C600FFFFD600FFFFEF00F7DEBD00D6421000CE210000DE5A2900EFB5
+ 8400F7B58400FFDEA500F7CEA500F7F7EF0000000000C6ADA5008C949400EFF7
+ FF00D6CEEF00D6D6F700DEDEEF00D6DEEF00D6D6EF00CECEEF00CED6EF00DEE7
+ F700E7E7FF00DEE7F700D6DEEF00CECEF700E7E7F700DEE7F700EFEFFF00DEDE
+ EF00737B840021293100292931004A5252005A7B940031637B0029637B002163
+ 7B00295A7B002952730029526B0021526B00214A6B002952730029637B002963
+ 7B0029637B0029637B00296B8C002984A500217BA5002984A500217B9C00217B
+ 9C00217BA500297BA500297BA50021739400A56B3100E7940000D6B5730094CE
+ C60042737300312984005239DE004A31B500945A6300D68C63009C523100AD63
+ 4A00BD732100F79C0000B5843100CEC6BD00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEFFFF009CEFFF006BDEF700ADD6
+ E700FFF7F700F7EFEF00EFE7E700EFE7EF00EFE7E700E7844A00F7843100FFDE
+ A500FFEFBD00FFFFCE00FFFFDE00FFDEB500DE521800D6390000D6390000E784
+ 4200FFCE9400FFC68C00FFBD7B00FFE7C60000000000C6ADA5008C949400EFF7
+ FF00D6CEEF00CECEEF00D6DEEF00D6DEEF00D6D6EF00CECEEF00CECEEF00D6DE
+ EF00D6DEEF00D6DEEF00D6DEEF00CECEF700DEDEEF00DEE7EF00DEE7F700E7E7
+ F700EFEFFF00CED6DE005A5A6300000810005A7B940031637B0029637B002963
+ 7B00295A7B00294A6B00294A6B00214A6300294A6B00295A7300316B8400316B
+ 840029637B0029637B00296B8C0029849C002184A5002984A500217B9C00217B
+ 9C00217B9C00217B9C002984A500217BA500A5846300C67B0000F7A52100E7CE
+ 94007B94AD004231A5003918CE004A299C00C6948400DE9C7300AD6B4A00BD73
+ 5200D6841800EF940000BD946300E7E7E700F7FFFF00FFFFF700F7FFF700F7FF
+ F700FFFFFF00FFFFFF00F7F7FF00EFF7F7000000000000000000CEEFF700D6E7
+ E700FFF7F700FFEFEF00FFEFEF00F7F7F700EFCEB500D64A0800EF732100FFBD
+ 7B00FFE7AD00FFF7C600FFFFD600F7B57B00E75A1000E75A1000DE5A1000EF84
+ 4200FFD6A500FFC67B00FFAD5A00FFC6840000000000C6ADA5008C8C9400EFF7
+ FF00D6D6F700CECEEF00D6DEEF00D6DEEF00D6DEF700CECEEF00CED6EF00DEE7
+ F700DEE7F700D6DEEF00D6D6EF00C6C6F700DEDEEF00DEE7F700E7EFF700D6DE
+ E700DEDEEF00FFFFFF00B5B5BD007B848C005A7B940031637B0029637B002963
+ 8400315A7B00314A7300314A6B00314A6B00314A6B002952730029637B002963
+ 7B00215A7300215A7B00296B8C00297B9C00217B9C00217B9C00217B9C002984
+ A5002984A500297BA500217BA5002184A500F7EFE700A5845A00BD730000FFA5
+ 0800C69C4A00B5A5BD006363DE0063398400E7B58400CE946B00C68C6300BD84
+ 5200E7940000DE8C0800A5847300D6C6C600E7E7E700F7F7EF00F7F7F700FFFF
+ FF00FFF7FF00F7F7FF00F7F7F700F7F7F7000000000000000000F7EFEF00FFEF
+ EF00FFF7F700FFF7F700FFF7FF00FFFFFF00EFAD8C00DE520800FF943100FFA5
+ 4200FFBD7300F7B57300FFBD7B00EF843900EF6B1800EF6B1800E7631800E75A
+ 1800F79C5A00FFBD7300FF9C4200FFA54A0000000000C6ADA5008C8C8C00EFF7
+ F700D6D6F700CECEEF00D6DEEF00D6DEEF00D6DEF700C6C6EF00CECEEF00DEE7
+ EF00DEE7F700DEE7F700D6DEF700CEC6F700EFEFFF00DEDEEF00DEE7F700E7E7
+ F700E7E7F700FFFFFF00BDC6CE0084848C00527B940031637B0029637B002963
+ 8400395A7B00314A6B00394A6B00314A6B00314A6B00294A6B00295A73002963
+ 7B00316B8400427B94004A94AD004A9CBD0029849C0021849C00297B9400297B
+ 9C0031849C002984A500217B9C00217BA50000000000F7F7F700AD8C6B00BD73
+ 0000FFA50000F7B53900B5ADB5007B639400D6AD8400BD845A00DE9C8400CE84
+ 4200EF940000C68429009C847B00DED6D600DED6D600DED6CE00D6C6C600DECE
+ CE00DEDED600DEE7DE00EFEFE700F7F7EF000000000000000000DEE7DE00C6DE
+ BD00D6E7CE00E7EFD600EFF7E700FFFFFF00EFA57B00EF731800FF943100FF9C
+ 4200F78C4200EF6B1800F77B1800F77B2100F7842900F77B2100F77B2100EF73
+ 2100F78C3900FFAD5200FF9C3900FF94310000000000C6ADA5008C8C8C00EFF7
+ F700D6D6F700CECEEF00D6DEEF00D6DEEF00D6DEEF00CECEEF00D6D6EF00D6DE
+ EF00D6DEEF00D6DEEF00D6DEF700C6C6F700D6D6EF00E7E7FF00D6DEEF00DEDE
+ EF00E7E7F700F7FFFF00B5BDC6007B848C005284940031637B0029637B002963
+ 8400315A7B00314A6B0031426300314A6300394A6B00395A7B004A7B9C0063A5
+ B5007BB5CE008CC6E7008CCEEF007BCEEF0063C6D60052ADC6003994AD00317B
+ 9C00297B9400297B9C00217B9C002184A5000000000000000000F7EFEF00AD84
+ 6300C6730000FF9C0000DE942900BDA59400B5ADB500B57B5A00CE947300D68C
+ 2100EF940000AD734200BDADA500000000000000000000000000F7E7E700EFE7
+ DE00E7D6C600DEBDA500D6C6B500D6C6B5000000000000000000C6D6C6009CD6
+ 9C00B5DEB500C6E7BD00BDE7BD00C6EFCE00E7B57300FF842900FF942900FFA5
+ 4200F7943900F7842100FF942900FF943100FF943100FF942900FF943100F78C
+ 3100EF7B2100FF943100F77B2100EF7321000000000000000000948C9400F7EF
+ F700EFE7F700DEE7EF00F7F7FF00EFF7FF00E7EFF700EFF7FF00E7E7F700F7FF
+ FF00EFF7FF00EFEFFF00EFF7FF00EFF7FF00EFF7FF00EFF7F700EFEFF700F7EF
+ F700EFEFFF00F7FFFF00ADBDC6009C9C9C005284940029637300296373002963
+ 7B00215A7300295A7B0029527B00395A8400397394004A7BA5006394BD007BB5
+ D60084C6E70084C6EF007BC6EF007BCEEF0084CEE70084CEE7007BCEE7006BBD
+ D60052A5BD00398CAD0029849C00217B9C00000000000000000000000000F7F7
+ F700AD9C7300B56B0000F79C0000F7AD2100B59C7B00A58C9400B5847300E78C
+ 0800EF94100094735200E7E7E700000000000000000000000000000000000000
+ 0000000000000000000000000000F7EFE7000000000000000000BDD6B50094D6
+ 9400B5DEB500CEEFCE00CEEFCE00C6EFCE00CEB57B00F77B2100FF8C2900FF94
+ 3100FF9C3900FF9C4200FFAD5200FFB56300FFB56B00FFB56300FFAD5200FF94
+ 3900F7842900F77B2100E7631000E77B390000000000000000008C8C9400F7F7
+ FF00F7FFFF00C6D6D600BDCECE00CED6DE00DEE7E700DEE7EF00D6DEE700CED6
+ DE00D6DEDE00DEE7EF00DEE7E700CED6DE00CEDEDE00CED6D600D6DEDE00EFF7
+ F700F7FFFF00F7FFFF00BDC6C600BDADA5004A7B8C00295A730029637B00316B
+ 8C00397B9C005284AD005284B500638CBD00427BA500427BA500427BA5004A84
+ AD00528CB500639CC60073ADD6007BBDE70084C6E70084C6E7008CCEEF008CD6
+ EF0084CEE70073C6D6005AADC6004AA5B5000000000000000000000000000000
+ 0000F7F7F700B58C6B00B5730800FF9C0000EF940800C6A58C00B5947B00F794
+ 0000CE8421008C735A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000ADDEAD0094CE
+ 94009CD69C00ADDEAD00C6E7BD00B5E7BD00C6CE9C00EF732900EF731800FF94
+ 3900FFB56B00FFC68C00FFC68400FFD69C00FFDEAD00FFD6A500FFC68400FFB5
+ 6300FFA54A00F7842900E75A0800F7A5730000000000000000007B8C9400BDCE
+ DE00CEE7F7008CADB500425A6B00213942001018210010182100212929000810
+ 10000810180010182100182129003139420039525A00526B73008CA5AD00D6EF
+ EF00DEF7FF00D6EFEF00B5C6C600C6ADA500638CA500527B94006394AD006BA5
+ C60073B5D6007BBDDE006BADD6006BA5CE0063A5CE005A9CBD004A8CB500427B
+ A500427BA500427BA5004A7BAD005284B5006BA5CE0073A5CE007BB5DE0084C6
+ E7008CCEEF0084D6E70084CEE7007BCEDE000000000000000000000000000000
+ 00000000000000000000C6B5A500B5731000F7940000F79C1000E7942100F794
+ 0000AD732900BDA5940000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CEEF
+ CE00C6E7BD00B5DEB500ADDEAD00ADDEAD00BDE7BD00D68C4A00E7631000FFAD
+ 6300FFCE9400FFDEA500FFDEAD00FFE7B500FFE7AD00FFD6A500FFCE8C00FFBD
+ 7B00FFB56B00F7943900E7732100D6D6AD000000000000000000395A6B000021
+ 390008315200214A6300294A6300294A63001018180000080800101010001018
+ 180000000000000000004A4A4A00BDC6C6007B94B5006B8CA500638494006384
+ 9400527384007B8C9400C6ADAD0000000000D6E7FF00BDD6E700ADCEDE0094BD
+ CE007BADC6007BB5CE0073ADCE0073B5CE006BB5D6006BADD6006BADCE0063A5
+ C6005A9CBD00528CB5004A84AD00427BA5004273A500427BAD00528CB5005A9C
+ C6006BADCE0073BDDE007BC6E7008CD6EF000000000000000000000000000000
+ 0000000000000000000000000000C6AD9400B56B0800F7940000FF9C0000E78C
+ 1000946B4200CEC6C60000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7F7E700D6F7D600D6DEB500EF844200FFAD
+ 6300FFD6A500FFEFB500FFFFCE00FFF7CE00FFF7CE00FFEFBD00FFDEA500FFC6
+ 8C00FFBD7300FF8C3100D6AD6B00B5EFC6000000000000000000C6ADA500ADA5
+ AD00949CAD00A5A5AD00ADADAD00BDADAD00BDADA5004A4A4A00000000000808
+ 0800000000000808080073737300000000000000000000000000C6ADA5000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00DEEF
+ F700C6DEE700ADD6DE0094C6CE0084B5BD0073ADCE0073ADCE0073ADCE0073AD
+ CE006BADCE006BADCE0063A5CE005AA5C600528CBD004A84B500397BAD00397B
+ A5004284AD004A8CBD005A9CCE006BADD6000000000000000000000000000000
+ 000000000000000000000000000000000000C6B5A500B56B1000F78C0000D67B
+ 10009C846B00EFEFEF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFE7CE00FFAD
+ 5A00FFCE8C00FFEFBD00FFFFD600FFFFEF00FFFFE700FFFFD600FFE7B500FFCE
+ 9400FFA54A00DEAD6300BDEFBD00C6EFCE000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005A5A5A003939
+ 390042424200A59C940000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00DEF7F700D6EFE700ADCEDE00A5C6D60094BDCE0084B5
+ C6007BB5C60073B5CE0073B5CE0073B5CE006BADCE0063A5C6005A9CBD00528C
+ B5004A84AD0042739C004273A500527BA5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CEB5A500AD631000B56B
+ 1800BD9C8C000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFEF
+ DE00FFCE8C00FFCE8C00FFE7B500FFF7D600FFFFE700FFEFC600FFD69C00FFBD
+ 7B00E7CE8C00BDF7CE00B5EFC600DEF7DE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008484
+ 8C00B5A5A5000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00E7EFF700C6DE
+ E700ADCED6009CBDCE0084B5C6007BADBD007BB5CE007BB5CE007BB5C60084B5
+ C60084ADBD0084A5BD0094ADC6009CB5CE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6AD9C00AD94
+ 7B00EFE7E7000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FFEFDE00FFE7CE00FFF7CE00FFF7C600FFEFC600FFE7CE00FFF7
+ E700F7FFFF00EFFFF700E7F7E700F7FFF7000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000A5A5
+ AD00000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00E7F7FF00D6E7F700C6D6E70084BDC60084BDC60094BDCE00B5D6
+ DE00CEE7EF00E7F7F700EFEFEF00EFEFEF00000000000000000000000000F7F7
+ F700DEDEDE00BDBDC600A5A5A500949C9C007B8C94007B8C9C007B8C9C007B84
+ 9C00CED6DE00000000000000000000000000BDBDC600426B7B0052A5CE007BBD
+ EF00C6D6E700848494001829520008315A0000000000B5DEBD00FFFFFF00D6DE
+ FF00D6DEFF00F7F7FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00BDBDBD0063636300DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000CECECE00FFFFFF00E7E7
+ E700E7E7E700F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00BDBDBD0063636300DEDEDE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000E7E7E7009C9C
+ 9C005A637B002939730039528C005273B5003152A5003152A500314A9C001831
+ 6B007B849C00000000000000000000000000B5B5BD0031637B004AA5D60073BD
+ EF00BDD6E7009494940029395A000831630000310800B5DEBD00FFF7FF00F7EF
+ F700F7EFF700D6DEFF00F7F7FF00FFFFFF00FFF7FF00FFF7FF00B5B5AD0094A5
+ AD00B5B5BD008C8C8C00C6C6C6008C949400CECECE00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00EFF7FF00FFFFFF0021212100CECECE00F7F7F700EFEF
+ EF00EFEFEF00E7E7E700F7F7F700FFFFFF00F7F7F700F7F7F700ADADAD00A5A5
+ A500B5B5B5008C8C8C00C6C6C60094949400CECECE00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00F7F7F700FFFFFF000000000000000000000000000000
+ 0000000000007373730084848400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000848484007373
+ 73005A5A5A00393939007B7B7B00000000000000000000000000CECECE005A63
+ 6B00294284001042B500215ADE004273F7005273E7006B8CD600637BB5004252
+ 7B00525A6B00EFEFEF000000000000000000ADADB50031637B004A9CD6006BB5
+ E700BDD6E700A5A5A500425273002952840000310800B5E7BD00FFDEE700FFE7
+ E700FFE7DE00F7F7FF00DEDEEF00C6C6C600CECECE00D6D6D6006B6B73002142
+ 4A00B5BDCE00F7EFEF008C9CAD0021424A00ADA5AD00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00D6DEFF00D6DEFF0021212100D6D6D600E7E7E700E7E7
+ E700E7E7E700F7F7F700DEDEDE00C6C6C600CECECE00D6D6D600737373004242
+ 4200BDBDBD00EFEFEF009C9C9C0042424200A5A5A500FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E7E7E700E7E7E7000000000000000000000000000000
+ 000073737300C6C6C600CECECE00848484000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400CECECE008C8C
+ 8C00101010000000000042424200000000000000000000000000D6D6D600636B
+ 730021428C000042CE000852EF004A7BFF00ADC6FF00DEE7E700B5B5B500847B
+ 7B005A5A5A00CECECE000000000000000000A5ADAD0031637B004A9CD6005AAD
+ E700C6DEEF00BDBDC600526B84004A739C0000310800B5DEBD00FFEFEF00FFEF
+ EF00FFDEDE00FFFFFF00737B730021424A007B7B8400B5B5B500ADA5AD00B5B5
+ BD00B5B5BD007B7B8400E7E7E700C6C6C600E7E7E700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E7EFFF00F7F7FF0021212100CECECE00EFEFEF00EFEF
+ EF00DEDEDE00FFFFFF0073737300424242007B7B7B00B5B5B500A5A5A500B5B5
+ B500B5B5B5007B7B7B00E7E7E700C6C6C600E7E7E700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00EFEFEF00F7F7F700000000000000000000000000B5B5
+ B500DEDEDE00DEDEDE00DEDEDE00DEDEDE00BDBDBD0000000000000000000000
+ 000000000000000000000000000073737300C6C6C600A5A5A5004A4A4A000000
+ 0000000000005A5A5A0039393900000000000000000000000000EFE7E7007B84
+ 8400294284000839C600004AF700427BFF00B5CEF700EFEFE700C6BDBD008C84
+ 8400524A5200ADADB5000000000000000000A5ADAD0031637B004AA5DE0052A5
+ DE00C6DEF700DEDEDE006B7B8C002952730000310800B5DEBD00F7F7F700D6D6
+ D600DEDEDE00DEDEDE00B5C6DE00738494004263AD00314A6B0073849400BDBD
+ BD009C9C940063636300E7EFE700FFFFFF00FFFFFF00DEDEDE00D6D6D600D6D6
+ D600D6D6D600D6D6D600DEDEDE00D6D6D60021212100CECECE00F7F7F700D6D6
+ D600DEDEDE00DEDEDE00CECECE0084848400737373004A4A4A0084848400BDBD
+ BD009C9C9C0063636300E7E7E700FFFFFF00FFFFFF00DEDEDE00D6D6D600D6D6
+ D600D6D6D600D6D6D600DEDEDE00D6D6D600000000000000000073737300CECE
+ CE00CECECE00CECECE00CECECE00CECECE00CECECE0084848400000000000000
+ 0000000000000000000000000000B5B5B5009C9C9C0031313100000000000000
+ 0000212121004A4A4A006B6B6B00000000000000000000000000F7F7F7009C94
+ 9400424A73001039BD000042F700316BF7009CBDF700EFEFF700CEC6C600948C
+ 940052525A008C8C94000000000000000000ADADAD00295A7B00429CDE0052A5
+ E700C6DEEF00000000008C94A500426B8C0000310800B5DEBD00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00C6DEFF008CB5EF004263AD00314A6B00314A
+ 6B007B7B840052525200CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0021212100CECECE00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00E7E7E700C6C6C600737373004A4A4A004A4A
+ 4A007B7B7B0052525200CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000A5A5A500A5A5A500C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600ADADAD00848484000000
+ 0000000000000000000063636300949494003131310000000000000000002929
+ 29006363630094949400A5A5A50000000000000000000000000000000000BDAD
+ B500525273001839AD000039EF002163FF008CADF700DEE7F700C6BDC6009C94
+ 94006B63630073737300F7EFF70000000000ADB5B500295A7B00429CDE0052A5
+ E700C6DEF70000000000949CA500395A7B0000310800B5DEBD00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00E7EFFF00BDD6FF008CB5EF004A73C6000031
+ 84001031520052525200B5B5B500E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0021212100CECECE00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00DEDEDE00C6C6C600848484004242
+ 42003131310052525200B5B5B500E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000A5A5A500B5B5
+ B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500A5A5A5007B7B
+ 7B007B7B7B00636363009C9C9C00313131000000000000000000292929006363
+ 63004A4A4A00B5B5B500A5A5A50000000000000000000000000000000000CEC6
+ C60063637300183994000042E7002163F7006B9CEF00C6D6F700CECEDE00A5A5
+ A500736B6B00635A5200DEDEDE0000000000ADB5B500315A8400429CDE0052A5
+ E700C6DEF7000000000084848C00395A7B0000310800B5E7BD00FFEFEF00FFEF
+ EF00FFE7DE00FFFFFF00FFFFFF00F7F7FF00C6DEFF007BC6FF000073EF000063
+ DE0000318400103152009C9C9400CECECE00E7E7E700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFE7E700FFE7DE0021212100D6D6D600EFEFEF00EFEF
+ EF00E7E7E700FFFFFF00FFFFFF00F7F7F700E7E7E700CECECE008C8C8C007B7B
+ 7B0042424200313131009C9C9C00CECECE00E7E7E700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E7E7E700E7E7E700000000000000000000000000ADAD
+ AD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD009494
+ 94006B6B6B008C8C8C007B7B7B000000000000000000292929006B6B6B004A4A
+ 4A00848484009C9C9C000000000000000000000000000000000000000000DEDE
+ D6006B73730021398C000839D600185AEF005A8CEF00BDCEFF00DEE7EF00A5A5
+ A50073636B00524A5200C6C6C60000000000ADB5B500316384004AA5E7005AAD
+ E700C6DEEF000000000094948C00526B730000310800BDE7C600FFDEE700FFDE
+ DE00FFC6C600FFFFFF00FFFFFF00FFFFFF00EFF7FF006BADEF0063ADFF00108C
+ FF000063DE0000318400314A6B00ADADAD00CECECE00E7E7E700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFE7DE00FFC6C60021212100D6D6D600E7E7E700DEDE
+ DE00CECECE00FFFFFF00FFFFFF00FFFFFF00F7F7F700B5B5B500BDBDBD00A5A5
+ A5007B7B7B00424242004A4A4A00ADADAD00CECECE00E7E7E700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E7E7E700CECECE000000000000000000000000009494
+ 94009C9C9C00949494008C8C8C008C8C8C00949494009C9C9C009C9C9C009C9C
+ 9C00949494006B6B6B002121210000000000393939006B6B6B004A4A4A007B7B
+ 7B009C9C9C00000000000000000000000000000000000000000000000000EFEF
+ EF008484840031427B000839C6000852EF004284F70094ADF700CED6F7008C94
+ BD00525A840031315A00ADADBD0000000000ADB5B500316384004AADE70063AD
+ E700C6E7EF00000000009CA59C00526B630000310800B5E7BD00FFF7F700F7EF
+ EF00F7EFEF00FFF7FF00FFF7FF00FFF7FF00FFFFFF00D6EFFF0052ADFF007BC6
+ FF00108CFF000073EF0000318400314A6B00ADADAD00C6C6C600DEDEDE00FFF7
+ FF00FFFFFF00FFF7FF00F7E7E700F7EFEF0021212100D6D6D600F7F7F700EFEF
+ EF00EFEFEF00F7F7F700F7F7F700F7F7F700FFFFFF00EFEFEF00BDBDBD00CECE
+ CE00A5A5A5008C8C8C00424242004A4A4A00ADADAD00C6C6C600DEDEDE00F7F7
+ F700FFFFFF00F7F7F700E7E7E700EFEFEF000000000000000000000000006363
+ 63005A5A5A007B7B7B00ADADAD00A5A5A50063636300313131004A4A4A004A4A
+ 4A002121210000000000000000007B7B7B00424242006B6B6B008C8C8C009494
+ 940000000000000000000000000000000000000000000000000000000000F7F7
+ F7009C9C9C00424A6B001039B5000042EF003173FF00396BE7002152CE000839
+ 9C000831840000186300949CB50000000000B5BDBD00396384005AADDE0073BD
+ E700D6E7F70000000000ADADB500636B730000310800B5E7BD00FFF7FF00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6D6D600F7F7EF00D6EFFF0052AD
+ FF007BC6FF00108CFF000073EF0000318400314A6B009C9C9400ADA5AD00BDBD
+ BD00D6D6D600DEDEDE00DEDEDE00DEDEDE0021212100D6D6D600F7F7F700DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6D6D600EFEFEF00EFEFEF00BDBD
+ BD00CECECE00A5A5A5008C8C8C00424242004A4A4A009C9C9C00A5A5A500BDBD
+ BD00D6D6D600DEDEDE00DEDEDE00DEDEDE0000000000000000007B7B7B005A5A
+ 5A00ADADAD00DEDEDE00EFEFEF00EFEFEF00DEDEDE007B7B7B00313131001010
+ 1000000000000000000042424200424242005A5A5A008C8C8C00949494000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500525A6B002142A5000039E700296BFF00316BF7000842E7000039
+ B5000029940008216B00ADB5C60000000000BDC6C600394A63004A7B94007B9C
+ B500E7EFF70000000000BDBDC600636B730000310800B5E7BD00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D6EF
+ FF0052ADFF0084C6FF00108CFF000073EF0000318400314A6B00B5B5AD00CECE
+ CE00E7EFE700FFFFFF00FFFFFF00FFFFFF0021212100D6D6D600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEF
+ EF00BDBDBD00CECECE00A5A5A5008C8C8C00424242004A4A4A00ADADAD00CECE
+ CE00E7E7E700FFFFFF00FFFFFF00FFFFFF00000000000000000042424200C6C6
+ C600D6D6D600CECECE00ADADAD00A5A5A500B5B5B500DEDEDE00BDBDBD003939
+ 390000000000424242007B7B7B005A5A5A008C8C8C008C8C8C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000DEDEDE00848C8C0039528C001039B500104AE7002963F7000842D6000029
+ A50000187B0039427B00DEDEE70000000000CECECE0039393900394242008484
+ 84000000000000000000C6CECE00737B7B0008390800B5E7BD00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00B5C6DE00428CEF0084C6FF00108CFF000073EF0000318400314A6B00ADAD
+ AD00CECECE00E7E7E700FFFFFF00FFFFFF0029292900D6D6D600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00CECECE009C9C9C00CECECE00A5A5A5008C8C8C00424242004A4A4A00ADAD
+ AD00CECECE00E7E7E700FFFFFF00FFFFFF00000000006363630063636300C6C6
+ C600BDBDBD00B5B5B50094949400848484009494940084848400C6C6C600D6D6
+ D6005A5A5A006B6B6B0042424200737373007373730063636300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6C60063737B00214284001039B500315ADE002152C6000831
+ 940008216B005A5A8400F7F7F70000000000D6CECE0042424200394239008C8C
+ 84000000000000000000DED6DE007B84840008390800BDE7C600FFE7EF00FFEF
+ EF00FFE7DE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00CEC6C6006B6B730052ADFF007BC6FF00108CFF000073EF0000318400314A
+ 6B00ADADAD00CECECE00E7CECE00FFF7F70029292900D6D6D600EFEFEF00EFEF
+ EF00E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C60073737300BDBDBD00CECECE00A5A5A5008C8C8C00424242004A4A
+ 4A00ADADAD00CECECE00CECECE00F7F7F700000000005A5A5A00BDBDBD00C6C6
+ C600B5B5B500949494007B7B7B008C8C8C00848484008484840084848400B5B5
+ B500CECECE0042424200525252005A5A5A005A5A5A005A5A5A005A5A5A000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7EFEF009C948C0042526300294A8C004A6BB500637BBD004A63
+ 9C00314A7300424A5A00B5B5BD0000000000D6CED6004A4A520031393100949C
+ 94000000000000000000EFE7E7008C8C940008390800BDE7C600FFDEE700FFDE
+ DE00FFC6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C6007B736B00C6D6E70052ADFF007BC6FF00108CFF000073EF000031
+ 8400314A6B00B5B5AD00C6ADAD00E7CECE0029292900D6D6D600E7E7E700DEDE
+ DE00CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C60073737300D6D6D600BDBDBD00CECECE00A5A5A5008C8C8C004242
+ 42004A4A4A00ADADAD00ADADAD00CECECE00B5B5B50084848400C6C6C600B5B5
+ B5008C8C8C007B7B7B008C8C8C008C8C8C0094949400949494008C8C8C008C8C
+ 8C00CECECE008C8C8C00525252005A5A5A005A5A5A005A5A5A00525252005A5A
+ 5A00000000000000000000000000000000000000000000000000000000000000
+ 000000000000EFEFEF009C9C9400525A63004A6384005A7BAD007B8CBD005A6B
+ 8C0042526B0029425200636B7300FFF7F700D6D6DE004A52520031393100A5A5
+ A5000000000000000000F7F7F700A5A5AD0008390800BDE7C600FFF7F700EFEF
+ EF00EFE7E700EFEFEF00EFEFEF00EFEFEF00E7EFE700F7F7F700FFFFFF00FFFF
+ FF00CECECE006B6B7300F7F7EF00D6EFFF0052ADFF007BC6FF00108CFF000073
+ EF0000318400314A6B00ADA5AD00BDBDBD0029292900D6D6D600F7F7F700EFEF
+ EF00E7E7E700EFEFEF00EFEFEF00EFEFEF00E7E7E700F7F7F700FFFFFF00FFFF
+ FF00CECECE0073737300EFEFEF00EFEFEF00BDBDBD00CECECE00A5A5A5008C8C
+ 8C00424242004A4A4A00A5A5A500BDBDBD00C6C6C600A5A5A500B5B5B5008484
+ 84009C9C9C00A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5
+ A5009C9C9C00C6C6C6008C8C8C008484840084848400737373005A5A5A005A5A
+ 5A00525252000000000000000000000000000000000000000000000000000000
+ 000000000000EFEFEF00A5ADAD00636B73004A637B00638CAD00739CC6005273
+ 9C004A637B00425A6B00BDBDC60000000000CECED6004A52520029313100ADAD
+ A500000000000000000000000000CED6D60008390800BDE7C600FFF7FF00EFEF
+ EF00EFEFEF00E7E7E700E7E7E700E7E7E700E7E7E700F7F7F700FFFFFF00FFFF
+ FF00B5B5B50063636300DEDEDE00FFFFFF00D6EFFF0052ADFF007BC6FF00108C
+ FF000073EF0000318400314A6B009C9C940029292900D6D6D600F7F7F700EFEF
+ EF00EFEFEF00E7E7E700E7E7E700E7E7E700E7E7E700F7F7F700FFFFFF00FFFF
+ FF00B5B5B50063636300DEDEDE00FFFFFF00EFEFEF00BDBDBD00CECECE00A5A5
+ A5008C8C8C00424242004A4A4A009C9C9C000000000094949400A5A5A500C6C6
+ C600B5B5B500ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00A5A5
+ A5008C8C8C00B5B5B5009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009494
+ 94008C8C8C006363630000000000000000000000000000000000000000000000
+ 00000000000000000000DEDEDE0084848C004A5A7300637BA5006B8CBD006B8C
+ BD00637B9C00394A5A00ADADB500F7F7FF00B5B5BD004A4A4A0029312900A5A5
+ A500000000000000000000000000E7DEE70008390800BDE7C600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ADA5AD008C94
+ 9400B5B5B5008C949400BDBDBD007B7B8400D6CECE00D6EFFF0052ADFF007BC6
+ FF00108CFF000073EF0000318400314A6B0029292900D6D6D600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5A5A5009494
+ 9400B5B5B50094949400BDBDBD007B7B7B00CECECE00EFEFEF00BDBDBD00CECE
+ CE00A5A5A5008C8C8C00424242004A4A4A00000000007B7B7B00B5B5B500D6D6
+ D600D6D6D600CECECE00C6C6C600BDBDBD00B5B5B500B5B5B500ADADAD009494
+ 940084848400ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00ADAD
+ AD00ADADAD009C9C9C006B6B6B00000000000000000000000000000000000000
+ 00000000000000000000F7F7F700B5B5B500737B8C0073849C007B94BD00849C
+ BD007B94A500848C9400BDC6C600EFEFEF00ADA5A5002929290008101800636B
+ 7300EFEFEF000000000000000000DEDEDE0008390800BDE7C600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007B7B8400314A
+ 6B00B5BDCE00EFEFEF0094A5AD0021424A00ADADAD00FFFFFF00D6EFFF0052AD
+ FF007BC6FF00108CFF000063DE000031840029292900D6D6D600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007B7B7B004A4A
+ 4A00BDBDBD00EFEFEF00A5A5A50042424200ADADAD00FFFFFF00EFEFEF00BDBD
+ BD00CECECE00A5A5A5007B7B7B0042424200000000006B6B6B00B5B5B500E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700DEDEDE00D6D6D600BDBDBD00ADAD
+ AD0094949400A5A5A5008C8C8C00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00BDBDBD00CECECE0084848400000000000000000000000000000000000000
+ 0000000000000000000000000000E7E7E700C6CECE00B5C6CE00BDCEDE00C6D6
+ E700DEE7EF000000000000000000F7F7EF00ADA5A50018102900101039003942
+ 5200CED6D6000000000000000000E7E7E70008390800C6EFC600E7DEFF00E7EF
+ FF00C6C6FF00F7F7FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEDEDE00DEDE
+ DE00CECECE00737B7300E7EFE700CECECE00EFEFEF00FFFFFF00FFFFFF00D6EF
+ FF0052ADFF007BB5FF000073EF00428CEF0029292900DEDEDE00E7E7E700EFEF
+ EF00D6D6D600F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEDEDE00DEDE
+ DE00CECECE0073737300E7E7E700CECECE00EFEFEF00FFFFFF00FFFFFF00EFEF
+ EF00BDBDBD00C6C6C6008C8C8C009C9C9C00000000007B7B7B006B6B6B00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00D6D6D600CECECE00ADAD
+ AD007B7B7B00BDBDBD00C6C6C600CECECE00CECECE00CECECE00CECECE00CECE
+ CE00CECECE00A5A5A50084848400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE0029215A0018107B004A4A
+ 9C00D6D6E7000000000000000000F7EFEF0008390800C6EFC600E7EFFF00E7DE
+ FF00D6DEFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00CECECE006B6B7300EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00D6EFFF0063ADFF007BB5FF00EFF7FF0029292900DEDEDE00EFEFEF00E7E7
+ E700E7E7E700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00CECECE0073737300EFEFEF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00EFEFEF00BDBDBD00C6C6C600F7F7F70000000000000000005A5A5A00C6C6
+ C600EFEFEF00F7F7F700F7F7F700F7F7F700EFEFEF00CECECE00C6C6C6007B7B
+ 7B008484840000000000000000009C9C9C00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE008484840000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000F7F7F7006363A50008008400736B
+ CE00F7F7FF000000000000000000FFF7F7000842100084D68C00FFF7FF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFF7
+ F700BDB5BD00ADA5AD00CEC6CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00F7F7FF00FFFFFF0031313100B5B5B500F7F7F700FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7
+ F700B5B5B500A5A5A500CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00F7F7F700FFFFFF000000000000000000000000003131
+ 3100292929005A5A5A006B6B6B0084848400BDBDBD005A5A5A005A5A5A000000
+ 000000000000000000000000000000000000CECECE00A5A5A500F7F7F700C6C6
+ C6008C8C8C000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C6CEE700636BA500CED6
+ EF00000000000000000000000000FFFFFF000839080039D64A004ACE5A004ACE
+ 5A004ACE5A004ACE5A004ACE5A004ACE5A004ACE5A004ACE5A0039B54A006BA5
+ 73009CAD9C00BDC6BD009CAD9C005A9C5A0039B54A0039B54A0039B54A0039B5
+ 4A0031A54A0031A54A0031A54A0031A54A00292929009C9C9C009C9C9C009C9C
+ 9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C00848484008C8C
+ 8C00A5A5A500BDBDBD00A5A5A500848484008484840084848400848484008484
+ 84007B7B7B007B7B7B007B7B7B007B7B7B000000000000000000000000000000
+ 000063636300424242006363630094949400A5A5A50084848400000000000000
+ 00000000000000000000000000000000000000000000CECECE008C8C8C008C8C
+ 8C00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000EFEFF7000000
+ 000000000000000000000000000000000000737B730008421000084210001039
+ 1000103910001039100010391000083908000839080008390800083908000031
+ 0800000000000008000000000000003108000031080000310800003108000031
+ 0800003108000031080000310800003108007373730031313100313131002929
+ 2900292929002929290029292900292929002929290029292900292929002121
+ 2100000000000000000000000000212121002121210021212100212121002121
+ 2100212121002121210021212100212121000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005252D6000808C6000808
+ C6000808CE000808CE000808D6000808D6000808DE000808DE000808DE000000
+ D6000000D6000000D6000000D6000000D6000000D6002121D600C6C6CE00F7F7
+ F700FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
+ 000000EFFF0010FFFF0018FFFF0000E7FF0000DEF70000D6EF0000D6E7006331
+ 3100BD9C9C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CED6EF008C94CE00C6BDCE0000000000A5BD8C0018BD080000D6000008DE
+ 000000EF000021E7210010AD000008C6000008D6000000E7000000FF000021DE
+ 1800BDB5AD00DED6D600E7DEDE00DED6D600000000006B6BDE000808C6000808
+ C6000808CE000808D6000808DE000808DE000808DE000808DE000808DE000808
+ DE000000D6000000D6000000D6000000D6002121D600C6C6CE00E7E7E700FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000EFFF00000000000000000000EF
+ FF0008F7FF0021FFFF0010F7FF0000DEF70000DEF70000DEEF00298C94009C73
+ 6B00DECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DECECE00DECECE00DECECE00DECE
+ CE00DECECE00DECECE00DECECE00DECECE00DECECE00DECECE00DECECE00DECE
+ CE00DECECE00DECECE00DECECE00DECECE00DECECE00DECECE00E7D6D600E7D6
+ D60000000000000000000000000000000000000000000000000000000000CED6
+ EF00315AD6000039E700294ACE008C84C6007BAD6B0008C6000008CE000008D6
+ 000000E7000029E7210010A5000008B5000008CE000008DE000000EF000029DE
+ 2100BDB5AD00DED6D600E7DEDE00DED6D600000000008C8CE7000808C6000808
+ CE001010D6000808DE000808DE001010E7001010E7001010E7000808E7000808
+ DE000000DE000000D6000000D6002121D600C6C6CE00DEDEDE00F7F7F700FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0008BDD60000EFFF0000EFFF0000EF
+ FF0010FFFF0021FFFF0000EFFF0000DEF70000DEF70000D6E70063313100B594
+ 9400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006B2929006B2929006B2929006B29
+ 29006B2929006B2929006B2929006B2929006B2929006B2929006B2929006B29
+ 29006B2929006B2929006B2929006B2929006B2929006B2929006B292900B58C
+ 8C00B58C8C000000000000000000000000000000000000000000C6CEEF00295A
+ DE00004AFF00185AFF000842FF000831EF0021737B0018C6000008C6000008CE
+ 000008DE000031C62100219C080010AD000008BD000008CE000000E7000029D6
+ 2100B5B5AD00DECED600E7DEDE00DED6D60000000000B5B5F7000808CE001010
+ D6001010DE001010DE001010E7001010EF001010EF001010EF000808E7000808
+ E7000000DE000000DE002121D600C6C6CE00DEDEDE00F7F7F700FFFFFF00FFFF
+ FF00FFFFFF00F7F7F700F7F7F700F7F7F70010849C0000EFFF0000EFFF0008F7
+ FF0021FFFF0010FFFF0000E7FF0000DEF70000DEF700298C94009C736B00DECE
+ CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00297B9400297B9400297B9400297B
+ 9400297B9400297B9400297B9400297B9400297B9400297B9400297B9400297B
+ 9400297B9400297B9400297B9400297B9C004A525A0063212100632121006321
+ 2100B58C8C00B58C8C00000000000000000000000000B5C6EF002963E700085A
+ FF00105AFF002163FF00185AFF00104AFF00217BA50021BD000008BD000010C6
+ 000018C6100018A5000018A5000018AD080018B5080008C6000000DE000029D6
+ 2100B5B5AD00DECED600E7DEDE00DED6D60000000000DEDEFF006363E7001010
+ D6001010DE001818DE001010EF001818EF001818EF001818EF001010EF000808
+ E7000000E7002121D600C6C6CE00DEDEDE00F7F7F700FFFFFF0000000000FFFF
+ FF00EFEFEF00D6D6D600A5A5BD00B5B5B500215A6B0000EFFF0000F7FF0010FF
+ FF0021FFFF0000EFFF0000E7F70000DEF70000DEEF005A393900B5949400FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000A5CE0000A5CE0000A5CE0000A5
+ CE0000A5CE0000A5CE0000A5CE0000A5CE0000A5CE0000A5CE0000A5CE0000A5
+ CE0000A5CE0000A5CE0000ADD60000ADD60000B5DE00317B8C00632121006321
+ 21006B292900DECECE000000000000000000ADC6F700296BEF001063FF001863
+ FF001863FF002973FF00216BFF001863FF00298CA50018B5000010B5080021C6
+ 100010BD000008BD000008BD000008BD000010BD000018C6080008D6000029CE
+ 2100B5B5A500DECED600E7DED600DED6D60000000000000000006363E7001010
+ DE001818DE001818EF001818EF001818F7001818F7001818F7001818F7001010
+ EF003131E700C6C6CE00DEDEDE00F7F7F700FFFFFF0000000000FFFFFF00E7E7
+ E700B5B5B5008484AD000808D6003131C6003129420000EFFF0008FFFF0021FF
+ FF0010FFFF0000E7FF0000E7F70000DEF700298C94009C6B6B00DECECE00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000ADD60000ADD60000ADD60000AD
+ D60000ADD60000ADD60000ADD60000ADD60000ADD60000ADD60000ADD60000AD
+ D60000ADD60000ADD60000ADD60000B5DE0000B5DE0000BDE7004A525A006321
+ 21006B292900DECECE0000000000000000004284F7001873FF002173FF002173
+ FF00186BFF003184FF00297BFF002973FF002994A50031A5000021C6100000DE
+ 000000D6000008D6000008D6000008D6000008D6000008D6000008DE000039BD
+ 2900C6C6BD00E7D6DE00DED6D600DED6D60000000000000000006363E7001818
+ DE001818EF001818EF002121F7002121FF002121FF002121FF002121FF003131
+ E700C6C6CE00DEDEDE00F7F7F700FFFFFF0000000000FFFFFF00E7E7E700B5B5
+ B5008484AD000808DE000000DE000000DE003900180000F7FF0010FFFF0021FF
+ FF0000EFFF0000E7F70000E7F70000DEEF005A393900B5949400FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000BDE70000BDE70000BDE70000BD
+ E70000BDE70000BDE70000BDE70000BDE70000BDE70000BDE70000BDE70000BD
+ E70000BDE70000BDE70000BDE70000BDE70000BDE70000BDE700298CA5006321
+ 210073312900DECECE0000000000000000004A8CF700297BFF00297BFF00217B
+ FF00217BFF00398CFF003994FF00298CFF0052849400C67B1000AD8C100031BD
+ 000000EF000000F7000000F7000000EF000000F7000000EF000021CE1800A5C6
+ 9C00E7DEDE00E7DEDE00DED6D600DED6D6000000000000000000B5B5F7001818
+ DE001818EF002121F7002121FF002929FF002929FF002929FF004242F700B5B5
+ BD00D6D6D600EFEFEF00FFFFFF0000000000FFFFFF00E7E7E700B5B5B5008484
+ AD000808DE000000E7000000E7000000E7003900180008FFFF0021FFFF0010FF
+ FF0000EFFF0000E7F70000E7F70021A5AD009C6B6B00DECECE00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000CEFF0000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEF70000C6EF0000C6EF0000BDEF0000BDEF0021A5AD006321
+ 2100AD848400DECECE0000000000000000004A8CFF00298CFF002984FF003184
+ FF00217BFF001063FF001873FF005A7BCE00D67B3100FFAD1000FFAD1000E794
+ 08008C9C080021D6000000FF000000FF000000FF000029D62100ADC6A500EFDE
+ E700E7DEDE00DED6D600DED6D600DECECE000000000000000000EFEFFF007373
+ EF001818EF002121F7002929FF002929FF002929FF003939F700A5A5A500B5B5
+ B500E7E7E700FFFFFF00FFFFFF00FFFFFF00E7E7E700B5B5B50073739C000808
+ DE000000E7000000E7000000E7000000E7003100180010FFFF0021FFFF0008F7
+ FF0000E7F70000E7F70000E7EF005A393900B5949400FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A738C0000D6FF0000D6FF0000D6
+ FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6
+ FF0000D6FF0008D6FF0000CEFF0000C6F70000C6EF0000C6EF00397384006B29
+ 2100CEADB5000000000000000000000000004A94FF003194FF003994FF002984
+ FF00106BFF000063FF004A5ABD00DE842900FFB50000FFB50800FFAD0800FFB5
+ 0000FFAD0000E794080073A5000018DE000039DE3100C6CEB500F7E7EF00E7DE
+ DE00E7DEDE00DED6D600DED6D600DECECE000000000000000000000000008484
+ EF001818EF002121FF002929FF003131FF003131FF003939FF006363AD00A5A5
+ A500DEDEDE00FFFFFF00FFFFFF00E7E7E700B5B5B50073739C000808E7000000
+ E7000000E7000000E7000000E7000000E700215A6B0021FFFF0010FFFF0000EF
+ FF0000E7F70000E7F70021A5AD009C6B6B00DECECE00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00946B730000D6FF0000D6FF0000D6
+ FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6
+ FF0008E7FF0010E7FF0000CEFF0000C6F70000C6EF0000C6EF00524A4A00A573
+ 7300DECECE00000000000000000000000000529CFF00399CFF003994FF00217B
+ FF001873FF005A6BB500E7942100FFBD0000FFBD0000FFB51000FFAD0800FFAD
+ 0000FFB50000FFBD0000FFAD0000C6840800BDAD9400EFE7E700F7EFEF00EFE7
+ EF00EFE7E700E7DEDE00DED6D600D6CECE00000000000000000000000000DEDE
+ FF007B7BF7002121FF003131FF003939FF003939FF004242FF004242FF006363
+ AD00A5A5A500DEDEDE00DEDEDE00ADADAD0073739C001010EF000000EF000000
+ EF000000EF000000E7000000E7000000E70018EFEF0021FFFF0000F7FF0000EF
+ F70000E7F70000E7EF00524A4A00AD8C8C00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0063314A0000D6FF0000D6FF0000D6
+ FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0008DE
+ FF0018EFFF0010E7FF0000CEF70000C6F70000C6EF0010ADCE006B212100C6A5
+ A500000000000000000000000000000000004A9CFF00399CFF00318CFF00218C
+ FF004A7BCE00E79C2100FFC60000FFC60000FFC60000FFBD1000FFA50800FFA5
+ 0000FFAD0000FFB50000FFC60000F7940800D69CA500E7E7E700F7EFEF00EFEF
+ EF00EFE7E700E7E7E700E7DEDE00DED6D6000000000000000000000000000000
+ 00008C8CF7002121FF003131FF003939FF004242FF004A4AFF004A4AFF005252
+ FF006363AD008C8C8C008C8C8C0073739C002121FF001818FF001010FF000808
+ F7000000EF000000EF000000EF000000EF0021FFFF0010FFFF0000EFFF0000EF
+ F70000EFF70021A5AD0094636300DECECE00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003129420000D6FF0000D6FF0000D6
+ FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000DEFF0010E7
+ FF0018F7FF0000D6FF0000CEF70000C6F70000C6F70042637300A5737300DECE
+ CE0000000000000000000000000000000000A5C6FF004294FF002994FF00299C
+ FF006B8CC600FFBD0800FFD60000FFCE0000FFCE0000FFC61000FFA51000FFA5
+ 0000FFAD0000FFB50000FFBD0000EF940800D6A5A500E7E7E700F7EFEF00EFEF
+ EF00EFE7E700E7E7E700E7DEDE00E7DEDE000000000000000000000000000000
+ 0000EFEFFF008484FF002929FF003939FF004242FF004A4AFF005252FF005A5A
+ FF005A5AFF006363AD00737373004A4AF7003939FF002929FF002121FF001818
+ FF001010FF001010FF000808F7000808F70021FFFF0008F7FF0000EFF70000EF
+ F70000EFF700524A4A00AD8C8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001073940000D6FF0000D6FF0000D6
+ FF0000D6FF0000D6FF0000D6FF0000D6FF0000D6FF0000DEFF0000DEFF0018F7
+ FF0018EFFF0000D6FF0000CEF70000CEEF0008BDDE0063292100BD9C9C000000
+ 00000000000000000000000000000000000000000000DEEFFF0084B5FF003194
+ FF00638CC600F7C61000FFDE0000FFD60000FFD60000FFC61800FFA51800FFA5
+ 0000FFA50000FFAD0000FFB50000EF940800D6A59C00E7E7E700F7EFEF00EFEF
+ EF00EFE7E700E7E7E700E7DEDE00E7DEDE000000000000000000000000000000
+ 000000000000C6C6FF009494FF003131FF004242FF005252FF005A5AFF006363
+ FF006363FF006B6BFF006363F7005A5AFF005252FF004A4AFF003939FF002929
+ FF002929FF002121FF001818FF001818FF0010FFFF0000F7FF0000EFF70000EF
+ F70021A5AD0094636300D6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000D6FF0000D6FF0000DEFF0000DE
+ FF0000D6FF0000D6FF0000DEFF0000D6FF0000D6FF0000DEFF0010EFFF0021FF
+ FF0008DEFF0000CEF70000CEEF0000CEEF00397384009C736B00DECECE000000
+ 000000000000000000000000000000000000000000000000000000000000C6DE
+ FF00A5A5C600F7C61000FFE70000FFDE0000FFCE1000FFAD0000FFAD0000FFAD
+ 0800FFAD0800FFAD0000FFB50000EF940800D6A5A500E7E7E700F7EFEF00EFEF
+ EF00EFE7E700E7E7E700E7DEDE00E7DEDE000000000000000000000000000000
+ 00000000000000000000A5A5FF009C9CFF003939FF004A4AFF005A5AFF006363
+ FF006B6BFF007373FF007373FF007373FF006B6BFF006363FF005A5AFF005252
+ FF004242FF003939FF003939FF003131FF0000FFFF0000EFF70000EFF70000EF
+ F700524A4A00AD8C8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000DEFF0000DEFF0000DEFF0000DE
+ FF0000DEFF0000DEFF0000DEFF0000DEFF0000DEFF0008E7FF0021F7FF0021F7
+ FF0000D6FF0000CEF70000CEEF0000C6EF0063313100BD9C9C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FFDEC600FFCE1000FFE70000FFCE1000FFBD0000FFB50000FFBD0000FFBD
+ 0000FFBD0000FFB50800FFB50000F7940800D6A59C00E7E7E700F7EFEF00EFEF
+ EF00EFE7E700E7DEE700E7DEDE00DED6D6000000000000000000000000000000
+ 00000000000000000000000000008C8CFF00A5A5FF004242FF005252FF006363
+ FF006B6BFF007B7BFF008484FF008484FF008484FF008484FF007B7BFF007373
+ FF006363FF006363FF005A5AFF005252FF0000F7FF0000EFF70000EFF70018BD
+ BD0094636300D6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000DEFF0000DEFF0000DEFF0000DE
+ FF0000DEFF0000DEFF0000DEFF0000DEFF0000DEFF0010F7FF0021FFFF0008E7
+ FF0000D6F70000CEF70000CEF700317B8C00A5737300DECECE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FFDEC600FFD61000FFD61000FFC60000FFC60000FFC60000FFC60000FFC6
+ 0000FFC60000FFC60000FFC60000EF8C2100E7BDBD00F7F7F700F7EFEF00EFEF
+ EF00EFE7E700DED6D600C6BDBD00C6B5B5000000000000000000000000000000
+ 0000000000000000000000000000000000009494FF00A5A5FF004A4AFF005A5A
+ FF006B6BFF007373FF008484FF008484FF008C8CFF008C8CFF008C8CFF008C8C
+ FF008484FF008484FF007B7BFF007373FF0000F7F70000EFF70000EFF700524A
+ 4A00AD848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000DEFF0000DEFF0000DEFF0000DE
+ FF0000DEFF0000DEFF0000DEFF0000DEFF0008EFFF0021FFFF0018F7FF0000DE
+ FF0000D6F70000CEF70000C6EF0063313100C6A5A50000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FFE7CE00FFBD2900FFCE0000FFD60000FFD60000FFD60000FFD60000FFD6
+ 0000FFD60000FFD60000EF9C1800E7BDA500F7F7FF00F7F7F700EFEFEF00EFEF
+ EF00EFE7EF00DED6D600CEC6C600EFE7E7000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A5A5FF00ADADFF004A4A
+ FF005A5AFF006B6BFF007B7BFF008484FF008C8CFF009494FF009C9CFF009C9C
+ FF009C9CFF009494FF009494FF008C8CFF0000F7F70000EFF70018BDBD009463
+ 6300D6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000DEFF0000DEFF0000DEFF0000DE
+ FF0000DEFF0000DEFF0000DEFF0000E7FF0010F7FF0021FFFF0000DEFF0000D6
+ F70000D6F70000D6F70039738400A5737300DECECE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FFDEC600FFBD5200FFC60800FFDE0000FFE70000FFDE0000FFDE
+ 0000FFDE0000EFAD2100EFC6B500FFFFFF00F7F7F700F7F7F700EFEFEF00EFEF
+ EF00EFE7E700DED6D600DED6D600FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6C6FF00A5A5
+ FF004A4AFF005A5AFF006B6BFF007B7BFF008484FF009494FF009C9CFF009C9C
+ FF009C9CFF009C9CFF009C9CFF009494FF0000F7F70000F7F7004A525A00B594
+ 9400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000DEFF0000DEFF0000DEFF0000DE
+ FF0000DEFF0000DEFF0000DEFF0008EFFF0021FFFF0010F7FF0000DEFF0000D6
+ F70000D6F70008C6DE0063292900C6A5A5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFD6AD00F7BD3900FFCE0000FFE70000FFDE
+ 0000EFAD2900EFCEC600FFFFFF00FFFFFF00F7F7F700F7F7F700EFEFEF00EFEF
+ EF00EFE7E700DED6D600DED6D600FFFFFF000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7E7
+ FF00A5A5FF00BDBDFF005252FF006363FF007373FF008484FF008C8CFF009494
+ FF009C9CFF009C9CFF009C9CFF009494FF0000F7F70018BDBD00B58C8C00B58C
+ 8C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000E7FF0000E7FF0000E7FF0000DE
+ FF0000E7FF0000E7FF0000E7FF0010F7FF0021FFFF0000E7FF0000D6F70000D6
+ F70000D6F70039738400A5737300DECECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7D6D600EFBD8400FFC62100F7B5
+ 3900F7DED600FFFFFF00FFFFFF00FFF7FF00F7F7F700F7F7F700EFEFEF00EFEF
+ EF00EFE7E700DED6D600DED6D600F7EFF7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000DEDEFF00ADADFF00BDBDFF005252FF006363FF007373FF007B7B
+ FF008484FF008484FF008484FF008484FF0021F7F700BDC6C600BDC6C600FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000E7FF0000E7FF0000E7FF0000E7
+ FF0000E7FF0000E7FF0008EFFF0018FFFF0010F7FF0000DEF70000D6F70000D6
+ F70008C6DE0063313100BD9C9C00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7DEE700F7F7F700FFEFDE00FFEF
+ E700FFFFFF00FFFFFF00FFFFFF00FFF7FF00F7F7F700F7EFF700EFEFEF00EFEF
+ EF00EFE7E700E7DED600DED6D600E7E7E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7E7FF00C6C6FF00BDBDFF00CECEFF00D6D6
+ FF006363FF006363FF006363FF006363FF00C6EFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000E7FF0000E7FF0000E7FF0000E7
+ FF0000E7FF0000E7FF0008F7FF0018FFFF0000E7FF0000DEF70000D6F70000D6
+ F70039738400A5737300DECECE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7DEDE00F7F7F700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700F7F7F700F7EFEF00EFEF
+ EF00EFE7E700E7DEDE00DED6D600DECECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7E7
+ FF00D6D6FF00CECEFF00C6C6FF00BDBDFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000E7FF0000E7FF0000E7FF0000E7
+ FF0000E7FF0000EFFF0010FFFF0010F7FF0000DEF70000D6F70000D6EF0000D6
+ E70063313100BD9C9C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7E7E700F7EFEF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFF7F700F7F7F700F7F7F700F7F7F700F7EFF700F7EF
+ EF00F7EFEF00EFE7E700DED6D600DED6D6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000E7FF0000E7FF0000E7FF0000E7
+ FF0000E7FF0008F7FF0018FFFF0008EFFF0000DEF70000D6EF0000D6EF00317B
+ 8C009C736B00DECECE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFE7E700DED6D600DED6D600DED6
+ D600DECECE00D6CECE00D6CECE00D6C6C600D6C6C600D6C6C600CEC6C600CEBD
+ BD00CEBDBD00CEC6C600E7DEDE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009C63
+ 6300FF9C9C00FFCECE00FFFFFF00FF9C9C00FF9C9C0000000000737373000000
+ 000000CEFF005252520052525200525252000000000000000000000000000000
+ 000000000000527BAD008CC6FF0073B5FF0052B5FF0042A5FF003184F700397B
+ DE00396BC6003963AD00425A9400425A73004252630039424200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6C600C6C6C600C6C6C6000000000084000000FF000000FF00
+ 0000FF0000000000000000000000C6C6C600C6C6C600C6C6C600000000000000
+ 0000FF000000FF00000084000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7EFEF0063D6EF0063EFFF006BEFFF006BEF
+ FF005AE7FF005ABDE700EFE7DE00FFFFFF00FFFFFF00FFFFFF00ADADAD008484
+ 8400848484008C8C8C008C8C8C00848484000000000000000000000000000000
+ 0000000000000000000000000000000000007373730073737300000000009C63
+ 6300FF9C9C00FFCECE00FFFFFF00FF9C9C00FF9C9C0000000000737373000000
+ 000000CEFF0000CEFF0052525200525252000000000000000000000000000000
+ 000000000000527BAD0094CEFF0084CEFF005AB5FF0042A5FF003184FF003184
+ EF00396BC6003963AD004263A5004252840042526B00424A5200292129000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6C600C6C6C600000000008400000000000000FF000000FF00
+ 0000FF000000FF0000000000000000000000000000000000000000000000FF00
+ 0000FF000000FF000000FF000000840000000000000000000000000000000000
+ 0000000000000000000000000000EFF7F70084BDCE0084CEDE008CD6E7008CD6
+ EF008CD6E700ADD6EF00F7F7EF00FFFFFF00FFFFFF00FFFFFF00F7F7F700ADAD
+ AD007B7B7B008484840084848400848484000000000000000000000000000000
+ 0000000000009C636300000000009C6363000000000073737300000000009C63
+ 6300FF9C9C00FFCECE00FFFFFF00FF9C9C00FF9C9C0000000000737373000000
+ 00005252520000CEFF0000CEFF00525252000000000000000000000000000000
+ 000000000000527BAD009CDEFF008CC6FF005AB5FF0042A5FF00398CFF003184
+ EF002973CE00316BBD00395A9C00425A8C00425A730042525A00394242001810
+ 1000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6C6000000000084000000FF000000FF000000FF000000FF00
+ 0000FF0000008400000000000000000000000000000000000000FF000000FF00
+ 0000FF000000FF000000FF000000FF0000000000000000000000000000000000
+ 0000000000000000000000000000D6D6D600BDBDBD00C6BDC600C6C6C600CEC6
+ C600D6CECE00E7E7E700F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7
+ F700ADADAD007B7B7B0084848400848484000000000000000000000000000000
+ 00009C6363009C636300000000009C6363009C63630000000000000000009C63
+ 6300FF9C9C00FFCECE00FFFFFF00FF9C9C00FF9C9C0000000000000000000000
+ 0000525252005252520000CEFF0000CEFF000000000000000000000000000000
+ 000000000000527BAD00ADDEFF008CDEFF0063BDFF004AA5FF00429CFF003184
+ F7003173D600316BBD003952A500395A8C00425A73004A4A6300424A4A003131
+ 3100000000000000000000000000000000000000000000000000000000000000
+ 0000C6C6C600C6C6C6000000000084000000FF000000FF00000084000000FF00
+ 0000FF000000840000000000000000000000000000000000000084000000FF00
+ 000084000000FF000000FF000000FF0000000000000000000000000000000000
+ 00000000000000000000DED6D600BDBDC60063BDDE0052C6E7005AC6DE005AC6
+ DE0052C6E7007BBDDE00EFE7E700FFFFFF00F7F7F700F7F7F700F7F7F700FFFF
+ FF00F7F7F700ADADAD00737373007B7B7B000000000000000000000000000000
+ 00009C6363009C636300000000009C6363009C6363009C636300000000000000
+ 0000000000000000000000000000000000000000000000000000FF9C9C000000
+ 000052525200525252005252520000CEFF000000000000000000000000000000
+ 00000000000031527300B5E7FF009CDEFF006BC6FF004AA5FF00398CFF003184
+ FF00317BDE00296BC600315AA500395294004252840042526B0042525A003942
+ 3900212118000000000000000000000000000000000000000000000000000000
+ 0000C6C6C600C6C6C60000000000FF000000FF000000FF000000840000008400
+ 0000840000008484000084000000000000000000000084000000848400008400
+ 000084000000FF000000FF000000FF0000000000000000000000000000000000
+ 000000000000D6D6D600CEC6C600CECEDE004AC6F70039DEFF0042DEFF0042DE
+ FF0039DEFF005ABDE700F7E7E700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700A5A5A500737373000000000073737300737373000000
+ 00009C6363009C636300000000009C6363009C6363009C63630000000000FFCE
+ CE00FFCECE00FFCECE00FFFFFF00FF9C9C00FF9C9C0000000000FF9C9C000000
+ 0000525252005252520052525200525252000000000000000000000000000000
+ 00000000000018214200B5E7FF00A5E7FF0084CEFF0052ADFF004294FF003184
+ FF00317BDE00316BBD00295AAD003152940039528400425A730042526300424A
+ 4A00313131000000000000000000000000000000000000000000000000000000
+ 0000C6C6C600000000000000000084000000FF000000FF000000FF000000FF00
+ 000084000000FF00000084000000000000000000000084000000840000008400
+ 0000FF000000FF000000FF000000FF0000000000000000000000000000000000
+ 0000D6D6D600C6C6C600DEDEDE00DEDEDE00B5CEDE00ADC6DE00A5C6D600A5C6
+ D600A5CEDE00CEDEEF00F7EFEF00F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700A5A5A5000000000000000000000000000000
+ 00009C63630000000000000000009C6363009C6363009C63630000000000FFCE
+ CE00FFFFFF00FFCECE00FFCECE00FFFFFF00FF9C9C0000000000FF9C9C000000
+ 000000CEFF005252520052525200525252000000000000000000000000000000
+ 00000000000008082100B5E7FF00ADEFFF008CDEFF005AB5FF00429CFF00398C
+ FF00297BEF00296BCE00295AAD003152940039528400425A730042526B004252
+ 5200394239001810180000000000000000000000000000000000000000000000
+ 0000C6C6C600000000000000000084000000FF000000FF000000FF000000FF00
+ 0000848400008400000084000000000000000000000084000000FF0000008484
+ 000084000000FF000000FF000000FF000000000000000000000000000000D6D6
+ D600C6C6C600DEDEDE00DEDEDE00DEDED600BDCECE0084BDD6005ABDD60063B5
+ DE0094B5C600D6CECE00EFEFE700F7F7F700F7F7F70000000000000000000000
+ 00000000000000000000F7F7F700F7F7F7000000000063313100633131000000
+ 000000000000FFCECE00FFCECE00000000009C6363009C63630000000000FFCE
+ CE00FFCECE00FFFFFF00FFCECE00FFCECE00FFFFFF0000000000FF9C9C000000
+ 000000CEFF0000CEFF00525252009C9C9C000000000000000000000000000000
+ 000000000000000000009CC6EF00B5E7FF009CE7FF006BC6FF00429CFF003184
+ FF00317BF700296BD600295AAD0029529C00314A84004252730042526B004252
+ 6300424A4A00313131000000000000000000000000000000000000000000C6C6
+ C600C6C6C60000000000FF000000840000008400000084000000FF000000FF00
+ 0000FF000000FF00000084000000000000000000000084000000840000008400
+ 0000FF000000FF00000084000000840000000000000000000000CECECE00C6C6
+ C600DEDEDE00DEDEDE00DED6D60094BDD60021BDF70008D6FF0010D6FF0010D6
+ FF0010C6F7004AADD600BDC6C600EFEFE70000000000EFEFEF00000000000000
+ 0000000000000000000000000000F7F7F7000000000063313100633131000000
+ 0000FFCECE00FFCECE00FFCECE00FFCECE00000000009C63630000000000FFCE
+ CE00FFCECE00FFCECE00FFFFFF00FFCECE00FFCECE0000000000FF9C9C000000
+ 0000FFFFFF00FFFFFF0000FFFF009C9C9C000000000000000000000000000000
+ 000000000000000000005273A500BDF7FF009CE7FF0073CEFF0052A5FF00398C
+ FF003184F700296BDE00215ABD00295294002942730031426B00394A5A004252
+ 5A00394A4200313131001008080000000000000000000000000000000000C6C6
+ C60000000000FF00000084000000FF0000008400000084000000840000008484
+ 0000840000008400000084000000000000000000000084000000840000008400
+ 00008484000084000000840000008400000000000000EFEFEF009C9C9C00D6D6
+ D600DEDEDE00DEDEDE00B5C6D60018BDF70000D6FF0029C6EF0052BDE70042C6
+ EF0010CEFF0000CEFF0052A5D600D6CECE00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000063313100633131006331
+ 310000000000FFCECE00FFCECE00FFCECE00FFCECE0000000000FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFFFFF00FFCECE0000000000000000000000
+ 00009C9C9C0000FFFF0000FFFF0000FFFF000000000000000000000000000000
+ 0000000000000000000018294A00BDEFFF00ADEFFF0084D6FF005AB5FF004294
+ FF00317BFF00296BD600395A6B0042634A00395A4A0039524A0031424A003131
+ 42003142390031313100314231004A5A3900000000000000000000000000C6C6
+ C6000000000084000000FF000000FF000000FF000000FF000000840000008400
+ 0000FF0000008400000084000000000000000000000084000000FF0000008400
+ 00008400000084000000FF000000FF00000000000000E7E7E7009C9C9C00D6D6
+ D600DEDEDE00E7DEDE0063BDE70000CEFF0021B5E700ADBDD600E7E7DE00DEDE
+ E7006BC6EF0000C6FF0010B5F700ADBDC600EFE7E700E7EFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000063313100633131006331
+ 31006331310000000000FFCECE00FFCECE00FFCECE00FFCECE00FF9C9C00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFFFFF00FFCECE00FFCECE00FFFF
+ FF00000000009C9C9C0000FFFF0000FFFF000000000000000000000000000000
+ 0000000000000000000000001000ADDEFF00ADF7FF008CDEFF005AB5FF00429C
+ FF00317BF70039636B00425A4200426B52003963520042634A0039634A003131
+ 3100292929003142390042634A004A5A42000000000000000000000000000000
+ 00000000000084000000FF000000FF000000FF000000FF00000084840000FF00
+ 0000840000008400000000000000000000000000000084000000840000008400
+ 0000FF00000084840000FF0000008400000000000000E7E7E70094949400DED6
+ D600E7E7E700E7DEDE0039B5EF0000C6FF005AA5CE00DED6CE00EFEFE700EFEF
+ E700C6CEDE0010BDF70000BDFF008CB5C600E7DEDE00E7E7E700E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 0000000000000000000000000000FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ CE0000000000000000000000000000000000FFCECE00FFFFFF00FFCECE00FFCE
+ CE00FFFFFF00000000009C9C9C0000FFFF000000000000000000000000000000
+ 00000000000000000000000000006B94C600B5F7FF0094E7FF0063C6FF0042A5
+ FF00397BC600396342003963520042635200426B5A00426B5A004A736300426B
+ 5A0031423100426352004A634A004A634A000000000000000000000000000000
+ 000084000000FF000000FF000000FF000000FF000000FF000000FF0000008400
+ 0000840000000000000000000000000000000000000000000000840000008400
+ 000084000000FF000000FF000000FF00000000000000E7E7E7008C8C8C00DEDE
+ DE00EFE7E700E7DED60039ADEF0000C6FF0042A5CE00C6BDBD00DEDEDE00E7DE
+ D6009CBDD60008B5F70000B5FF0094B5C600E7DEDE00E7E7E700E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700000000009C636300FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FFCECE00FFCECE009C6363000000
+ 000063313100633131009C6363009C636300000000009C636300FFFFFF00FFCE
+ CE00FFCECE00FFFFFF0000000000000000000000000000000000000000000000
+ 000000000000000000000000000029426300B5E7FF009CEFFF0073DEFF004AB5
+ FF00427B9C0042634A004A735A004A7363004A7B6B005A846B00639484006394
+ 8C00527B6300426B52004A6B52004A634A00000000000000000000000000FF00
+ 0000FF000000FF000000FF000000FF00000084840000FF000000840000008400
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008400000084000000FF0000008484000000000000F7F7F7009C9C94009C9C
+ A50094ADCE00CEC6C6006BB5E70000BDFF0008B5F700639CCE009CADB5008CAD
+ C60031ADE70000BDFF0018A5EF00BDBDC600DED6D600D6D6D600DEDEDE00DEE7
+ E700E7E7E700E7E7E700E7E7E700E7E7E70000000000FF9C9C009C636300FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FFCECE00000000006331
+ 310063313100633131009C6363009C6363009C63630000000000FFCECE00FFFF
+ FF00FFCECE00FFCECE00FFFFFF00FF9C9C000000000000000000000000000000
+ 0000000000000000000000000000000008009CC6F7009CEFFF0073DEFF005AC6
+ FF00528C9C0052846B00528473005A8C6B0063948C006BA594006B9C94006B9C
+ 94005A8C6B004A7363004A7363004A6B52000000000000000000000000008400
+ 0000FF000000FF00000084000000FF0000000000000000000000FF0000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000084000000FF000000000000000000000000000000DEDEE700428C
+ BD0000A5F7005A9CCE00ADADBD0021A5F70000BDFF0000B5FF0008ADF70000AD
+ F70000BDFF0000ADFF0073ADD600CEC6C6005AA5DE006B9CCE00CEC6BD00DEDE
+ DE00E7E7E700E7E7E700E7E7E700CECECE0000000000FF9C9C00FF9C9C009C63
+ 6300FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C009C6363000000
+ 000063313100633131006331310063313100000000009C636300FFCECE00FFCE
+ CE00FFFFFF00FFCECE00FFCECE00FFFFFF000000000000000000000000000000
+ 000000000000000000000000000000000000314A7300527BBD00527BBD003963
+ B5006394A50084B59C006B9C8C006B9C940073AD9C0073A5940073A594006B9C
+ 8C00639484005A846B005A846B0052846B000000000000000000840000008484
+ 00008400000000000000FF000000FF0000008400000084000000840000000000
+ 0000000000000000000000000000C6C6C600C6C6C60000000000000000000000
+ 00000000000000000000840000008400000000000000F7F7F700E7DEEF0063B5
+ E70031C6FF0010B5F7005A94CE0094ADBD0039A5EF0000A5FF0000ADFF0000AD
+ FF0010A5F70073B5DE00CEC6C6005AA5DE0000ADFF0000A5F700639CC600CEC6
+ C600E7E7DE00E7E7E700D6D6CE00CECECE0000000000FF9C9C00FF9C9C00FF9C
+ 9C009C636300FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FFCE
+ CE0000000000000000000000000000000000FFCECE00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFFFFF00FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000031423900394239001810
+ 18004A735A0094CEBD0073A594006B9C8C006B9C8C006B9C8C0073A5940073A5
+ 8C006B9C8C006B9C94006394840021313100000000000000000000000000C6C6
+ C600000000008400000084840000840000008400000084000000000000000000
+ 00000000000000000000C6C6C6000000000000000000C6C6C600000000000000
+ 000000000000000000008400000000000000F7F7EF007BADE70073A5CE00CEC6
+ CE0073B5E7006BCEFF0052C6FF006B9CCE00B5BDBD00ADC6D6008CBDE70094BD
+ DE00C6CED600D6CECE0052A5DE0000A5FF0000ADFF0000ADFF0010A5FF006B9C
+ C600CEC6C600CECECE00CECED600000000000000000000000000000000000000
+ 0000000000000000000000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C
+ 9C00FFCECE00FFCECE00FFCECE00FFCECE00FF9C9C00FFCECE00FFCECE00FFCE
+ CE00FFCECE000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000084A58C00A5C6A50073948400849C8C005A7B
+ 5A005A846B0084B59C006BA58C006B9C84006B9C8C0073A58C006B9C8C0073A5
+ 8C006B9C8400426B520010181800000000000000000000000000000000000000
+ 0000840000008400000084000000840000008400000084000000000000000000
+ 000000000000C6C6C60000000000000000000000000000000000C6C6C6000000
+ 00000000000000000000840000008400000084B5DE0084CEF7007BCEF7007BA5
+ C600C6C6CE007BB5E70094DEFF007BCEFF0073A5D600E7DEDE00F7EFE700F7EF
+ E700EFE7E7006BADE70031B5FF0039C6FF0052C6FF006BD6FF0094DEFF0073C6
+ FF00639CBD00B5B5B50000000000000000000000000000000000000000000000
+ 0000FF9C9C00FF9C9C0000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FFCECE00FFCECE00FFCECE00FFCECE00FF9C9C00FFCECE00FFCE
+ CE00FFCECE00FFCECE0000000000FF9C9C000000000000000000000000000000
+ 00000000000000000000000000005A7B6300CEF7D600D6FFDE00C6EFCE00A5CE
+ AD0094BD9C0073AD8C0073A58C00739C8C00739C840073A5940042634A002942
+ 3900000000000000000000000000000000000000000000000000000000008400
+ 0000840000008400000084000000840000000000000000000000000000000000
+ 000000000000C6C6C6000000000000000000000000000000000000000000C6C6
+ C60000000000000000000000000000000000A5C6EF008CC6F700C6EFFF008CCE
+ F7007BA5CE00BDC6CE0084BDE70063ADE7006384AD00DEDEDE00EFEFEF00EFEF
+ EF00EFEFEF0094BDEF007BC6F700C6EFFF00CEEFFF00C6EFFF00CEEFFF00C6EF
+ FF0063A5E700BDCED60000000000000000000000000000000000000000000000
+ 0000FF9C9C0000000000FF9C9C009C636300FF9C9C00FF9C9C0000000000FF9C
+ 9C00FF9C9C00FF9C9C00FFCECE00FFCECE00FFCECE000000000000000000FFCE
+ CE00FFCECE00FFCECE00FFCECE00000000000000000000000000000000000000
+ 000000000000000000000000000008100800C6EFCE00DEFFE700CEF7D600BDE7
+ BD00A5CEAD0094BDA50084B59C0084AD9C0052846B001018180042634A002942
+ 3900000000000000000000000000000000000000000000000000000000000000
+ 0000840000008400000084000000000000000000000000000000000000000000
+ 0000C6C6C6000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000ADCEEF009CCEF700DEF7
+ FF00A5D6F70084ADCE00C6CEDE00B5C6DE008C84840094949400EFEFEF00F7F7
+ F700F7F7EF00F7EFEF009CC6EF0094CEF700DEF7FF00DEF7FF00D6F7FF008CC6
+ EF00A5BDDE000000000000000000000000000000000000000000000000000000
+ 000000000000FF9C9C00FF9C9C00FF9C9C009C6363000000000000000000FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FFCECE00FFCECE0000000000000000000000
+ 0000FFCECE00FFCECE00FFCECE00FFCECE000000000000000000000000000000
+ 00000000000000000000000000000000000031423100D6FFDE00DEFFE700C6EF
+ CE00BDE7C600ADD6AD009CC6A50084AD9C001018100000000000294239005284
+ 7300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000ADCEEF00A5CE
+ F700E7F7FF007BADE700CED6EF0000000000EFEFEF008C8C8C0094949400EFEF
+ EF00FFF7FF00F7F7F700EFEFF7009CC6EF00A5D6F700E7FFFF009CC6EF00A5BD
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000FF9C9C00FF9C9C00FF9C9C00FF9C9C00000000000000000000000000FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FFCECE0000000000000000000000
+ 000000000000FFCECE00FFCECE00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001018100073948400BDE7
+ C600ADD6B50094BDA50042634A0000080000000000000000000000000000394A
+ 420073A58C000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000ADCE
+ EF0084B5E700B5CEE700000000000000000000000000EFEFEF008C8C8C009494
+ 9400EFEFEF00FFFFFF00FFFFF700F7F7F70094BDDE007BADE700ADC6DE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF9C9C00FF9C9C0000000000000000000000000000000000FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000008
+ 0000000808000000000000000000000000000000000000000000000000000000
+ 0000212921006B9C840000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000E7E7F7000000000000000000000000000000000000000000EFEFEF008484
+ 84008C8C8C0000000000FFFFFF00E7E7E700CECECE00D6DEEF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000001810100042634A00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFEF
+ EF00848484008C8C8C00D6D6D600D6D6DE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000080800080800000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000EFEFEF008C8C8C00BDBDBD00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000031639C00639C
+ CE00639CCE00FFFFFF00639CCE00639CCE00639CCE00639CCE0031639C00639C
+ CE00639CCE00639CCE0031639C0031639C00000000000000DE000000DE00CECE
+ FF006363FF006363FF00000000000000DE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000029292900FFFFFF00FFFF
+ FF00FFFFFF00000000000000000000000000292929002929290029292900DEDE
+ DE000000000029292900DEDEDE00D6D6D6000000000000000000000000000000
+ 00005252520000000000000000009C6363000000000000000000FFCECE00CE9C
+ 9C00FFCECE00CE9C9C00FFCECE00CE9C9C00FFCECE00CE9C9C00000000000000
+ 0000FFCECE00CE9C9C00FFCECE00000000000000000000000000000000000000
+ 000000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C000000000000000000FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FFCECE00FFCECE0063313100000000000000
+ 000000000000633131000000000052525200000000000000000000000000639C
+ CE00639CCE00FFFFFF00FFFFFF00639CCE00639CCE0031639C009CCEFF00639C
+ CE00639CCE00639CCE00639CCE0031639C00000000006363FF006363FF006363
+ FF00CECEFF000000000052525200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000029292900FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF000000000000000000000000000000000000000000DEDE
+ DE00292929002929290029292900DEDEDE000000000000000000000000009C63
+ 63000000000000000000000000000000000000000000FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE0000000000CE9C9C006331
+ 310000000000FFCECE00FFCECE00FFCECE000000000000000000000000000000
+ 000000000000FF9C9C00FF9C9C000000000000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FFFFFF00FFFFFF00FFCECE00FFCECE00FFCECE00633131000000
+ 0000000000006331310063313100000000000000000000000000000000000000
+ 0000639CCE00639CCE00639CCE0031639C0031639C0000000000000000009CCE
+ FF00639CCE00639CCE00639CCE0031639C0031639C00000000006363FF006363
+ FF006363FF000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000029292900FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000002929
+ 29007B7B7B007B7B7B007B7B7B002929290000000000000000009C6363000000
+ 000000000000000000000000000042424200639CFF000000000000000000FFCE
+ CE00FFCECE00FFCECE00FFCECE00000000000000000000000000CE9C9C006331
+ 310000000000FFCECE00FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FFFF
+ FF00FFFFFF00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FF9C9C000000
+ 0000633131000000000063313100633131000000000000000000000000000000
+ 0000000000000000000031639C00639CCE000000000031639C0031639C000000
+ 00009CCEFF00639CCE00639CCE00639CCE0031639C0031639C00000000000000
+ 00000000000031639C0031639C00000000000000000000000000000000000000
+ 000000000000292929002929290029292900000000002929290029292900FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000292929007B7B
+ 7B007B7B7B007B7B7B007B7B7B007B7B7B00000000009C636300000000000000
+ 0000FFCECE00FFFFFF00000000009C9CFF00639CFF00639CFF00639CFF000000
+ 0000FFCECE00FFFFFF0000000000CE9C9C000000000000000000CE9C9C006331
+ 310000000000FFFFFF00FFCECE00FFFFFF000000000000000000000000000000
+ 000000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FFFFFF00FFFFFF00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FF9C9C000000
+ 0000633131006331310000000000633131000000000000000000000000000000
+ 000000000000000000000000000031639C00639CCE0000000000000000000000
+ 0000000000009CCEFF00639CCE00639CCE00639CCE0031639C0031639C003163
+ 9C0031639C0031639C0031639C0031639C000000000000000000000000002929
+ 2900292929000052DE000052DE000052DE00292929009CDEFF009CDEFF002929
+ 2900FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000292929002929
+ 2900292929002929290029292900292929000000000000000000FFFFFF00FFCE
+ CE00FFFFFF00FFCECE00FFFFFF00000000000000000000000000000000000000
+ 0000000000000000000000000000633131000000000000000000CE9C9C006331
+ 310000000000FFCECE00FFFFFF00FFCECE00000000000000000000000000FFCE
+ CE0000000000FF9C9C00FF9C9C00FFFFFF00FFFFFF00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FF9C9C00FF9C9C00000000000000
+ 0000FFCECE006331310063313100000000000000000000000000000000000000
+ 00000000000000000000000000000000000031639C00639CCE00000000000000
+ 000031639C00000000009CCEFF00639CCE00639CCE00639CCE0031639C003163
+ 9C0031639C0031639C0031639C0031639C000000000000000000292929000052
+ DE000052DE000018520000185200001852000052DE00292929009CDEFF002929
+ 2900FFFFFF00292929002929290029292900FFFFFF0029292900292929009CDE
+ FF009CDEFF009CDEFF009CDEFF009CDEFF000000000000000000FFCECE00FFFF
+ FF00FFCECE00FFFFFF00FFCECE00000000000000000000FFFF0000FFFF000000
+ 0000639CFF000000000063313100633131000000000000000000CE9C9C006331
+ 310000000000FFFFFF00FFCECE00FFFFFF0000000000FFCECE00FFCECE00FFCE
+ CE0000000000FFFFFF00FFFFFF00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FF9C9C00FF9C9C000000000000000000FFFFFF00FFFF
+ FF00FFCECE00FFCECE0063313100633131000000000000000000000000000000
+ 0000000000000000000000000000000000000000000031639C00639CCE000000
+ 00000000000000000000000000009CCEFF00639CCE00639CCE00639CCE003163
+ 9C0031639C0031639C0031639C0031639C0000000000292929000052DE000052
+ DE0000185200424242004242420042424200001852000052DE00292929002929
+ 290029292900FFFFFF00FFFFFF00FFFFFF00292929009CDEFF009CDEFF009CDE
+ FF009CDEFF00292929002929290029292900000000000000000000000000FFCE
+ CE00FFFFFF00FFCECE00FFFFFF00FFCECE00000000000000000000FFFF0000FF
+ FF0000000000639CFF000000000000000000FFFFFF0000000000CE9C9C006331
+ 310000000000FFCECE00FFFFFF00FFCECE0000000000FFCECE00FFCECE00FF9C
+ 9C00FF9C9C0000000000FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ CE00FF9C9C00FF9C9C000000000000000000FFFFFF00FFFFFF00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00633131000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000031639C00639C
+ CE00000000000000000031639C00000000009CCEFF00639CCE00639CCE003163
+ 9C0031639C0031639C0031639C0031639C0000000000292929000052DE000018
+ 520042424200BDBDBD00BDBDBD00BDBDBD00001852000052DE000052DE002929
+ 2900FFFFFF00FFFFFF00FFFFFF00292929009CDEFF009CDEFF009CDEFF009CDE
+ FF0029292900FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000FFCECE00FFFFFF00FFFFFF00FFFFFF00000000009CFFFF000000000000FF
+ FF0000FFFF0000000000639CFF0000000000FFFFFF0000000000CE9C9C006331
+ 310000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FF9C9C000000
+ 000000000000FFFFFF0000000000FFCECE00FFCECE00FFCECE00FF9C9C00FF9C
+ 9C000000000000000000FFFFFF00FFFFFF00FFCECE00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000003163
+ 9C00639CCE000000000031639C000000000000000000639CCE00639CCE003163
+ 9C0031639C0031639C0031639C0031639C00292929000052DE00001852000052
+ DE0042424200BDBDBD00000000000000000042424200001852000052DE002929
+ 2900FFFFFF00FFFFFF00292929009CDEFF009CDEFF009CDEFF009CDEFF009CDE
+ FF0029292900FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 000000000000FFCECE00FFFFFF00FFFFFF00FFFFFF00000000009CFFFF000000
+ 000000FFFF0000FFFF0000000000639CFF000000000000000000CE9C9C006331
+ 310000000000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000FF9C9C00FF9C9C00000000000000
+ 0000FFFFFF00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ CE005252520021212100FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031639C00639CCE00000000000000000000000000639CCE00639CCE003163
+ 9C0031639C0031639C0031639C0031639C00292929000052DE000052DE000052
+ DE004242420000000000000000000000000042424200001852000052DE002929
+ 2900FFFFFF00FFFFFF00292929009CDEFF009CDEFF009CDEFF009CDEFF009CDE
+ FF009CDEFF002929290029292900292929000000000000000000000000000000
+ 00000000000000000000FFCECE00FFFFFF00FFFFFF00FFFFFF00000000009CFF
+ FF000000000000FFFF0000FFFF00000000000000000000000000CE9C9C006331
+ 310000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFF
+ FF00FFCECE00FFFFFF006331310063313100FFCECE00FFCECE00212121005252
+ 5200FFCECE00FFCECE00FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031639C00639CCE000000000031639C0000000000639CCE00639CCE000000
+ 0000000000000000000031639C0031639C00292929000052DE000052DE000052
+ DE000052DE004242420042424200424242000052DE00001852000052DE002929
+ 2900FFFFFF00292929009CDEFF009CDEFF009CDEFF009CDEFF009CDEFF009CDE
+ FF009CDEFF009CDEFF009CDEFF009CDEFF000000000000000000000000000000
+ 0000000000000000000000000000FFCECE00FFFFFF00FFCECE00FFFFFF000000
+ 00009CFFFF000000000000FFFF0000FFFF000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFCECE00FFCE
+ CE00633131006331310000AD0000009C0000FFFFFF00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE0052525200212121000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031639C00639CCE00000000000000000000000000639CCE00000000003163
+ 9C0031639C0031639C000000000031639C00292929000052DE000052DE000052
+ DE000052DE000052DE000052DE000052DE00001852000052DE000052DE002929
+ 2900292929009CDEFF009CDEFF009CDEFF009CDEFF009CDEFF009CDEFF009CDE
+ FF009CDEFF009CDEFF009CDEFF009CDEFF000000000000000000000000000000
+ 000000000000000000000000000000000000FFCECE00FFFFFF00FFFFFF000000
+ 0000000000009CFFFF000000000000FFFF0000000000CE9C9C00CE9C9C00CE9C
+ 9C00CE9C9C00CE9C9C0000000000000000000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFCE
+ CE00FFCECE006331310000AD0000009C000000AD0000FFFFFF00FFCECE00FFCE
+ CE002121210052525200FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031639C00639CCE000000000031639C000000000000000000639CCE003163
+ 9C0031639C0031639C000000000031639C0000000000292929000052DE000052
+ DE000052DE000052DE000052DE000052DE00001852000052DE00292929000000
+ 0000292929009CDEFF009CDEFF00292929009CDEFF009CDEFF009CDEFF002929
+ 29009CDEFF009CDEFF009CDEFF009CDEFF000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFCECE00FFFFFF000000
+ 0000CE9C9C00000000009CFFFF000000000000000000FF9CFF00FF9CFF00FF9C
+ FF00FF9CFF00CE9C9C000000000000000000000000000000000000000000FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+ 0000FFCECE00FFCECE006331310000AD0000009C000000AD0000FFFFFF00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000639CCE00000000000000000000000000639CCE00639CCE003163
+ 9C0031639C00000000000000000031639C0000000000292929000052DE000052
+ DE000052DE000052DE000052DE000052DE00001852000052DE00292929000000
+ 0000292929009CDEFF0029292900292929009CDEFF009CDEFF009CDEFF002929
+ 29009CDEFF009CDEFF009CDEFF009CDEFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFCECE000000
+ 0000CE9C9C0000000000000000009CFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0000000000FFCECE00FFCECE006331310000AD0000009C000000AD0000FFFF
+ FF00FFCECE00FFCECE0021212100525252000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DEDEDE000000
+ 000031639C00000000000000000031639C0000000000639CCE00639CCE003163
+ 9C0031639C000000000031639C0031639C000000000000000000292929000052
+ DE000052DE000052DE000052DE000052DE000052DE000052DE00292929000000
+ 0000292929002929290029292900292929009CDEFF009CDEFF009CDEFF009CDE
+ FF009CDEFF009CDEFF009CDEFF009CDEFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CE9C9C00CE9C9C0000000000000000009CFFFF000000000000FFFF0000FF
+ FF0000000000639CFF0000000000000000000000000000000000000000000000
+ 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF0000000000FFCECE00FFCECE006331310000AD0000009C000000AD
+ 0000FFFFFF00FFCECE00FFCECE00FFCECE000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DEDEDE00DEDEDE000000
+ 000031639C00639CCE0000000000000000000000000000000000000000000000
+ 000000000000639CCE0031639C0031639C000000000000000000000000002929
+ 2900292929000052DE000052DE000052DE000052DE0029292900000000000000
+ 00002929290029292900292929002929290029292900529CDE00529CDE00529C
+ DE00529CDE00529CDE00529CDE00529CDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FF9CFF00CE9C9C000000000000000000000000009CFFFF000000000000FF
+ FF0000FFFF000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF0000000000FFCECE00FFCECE006331310000AD0000009C
+ 000000AD0000FFFFFF00FFCECE00FFCECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DEDEDE000000
+ 000031639C000000000000000000000000000000000021212100212121002121
+ 21002121210021212100639CCE0031639C000000000000000000000000000000
+ 0000000000002929290029292900292929002929290000000000000000000000
+ 0000292929000000000000000000DEDEDE002929290029292900292929002929
+ 2900292929002929290029292900292929000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000CE9C9C00000000000000000000000000000000009CFFFF000000
+ 000000FFFF0000FFFF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF0000000000FFCECE00FFCECE0063313100FFFF
+ FF00FFFFFF00FFCECE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000639CCE00212121000000000000000000000000002121
+ 2100212121002121210021212100639CCE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000292929000000000000000000DEDEDE0000000000DEDEDE00DEDEDE002929
+ 29007B7B7B007B7B7B009C9C9C007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF9CFF00CE9C9C00FFFFFF005252520052525200000000009CFF
+ FF000000000000FFFF0000FFFF00000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF000000000000000000FFCECE0000000000FFCECE00FFCECE00FFCE
+ CE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031639C002121210021212100212121002121210021212100212121000000
+ 0000212121002121210021212100639CCE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029292900FFFFFF000000000000000000DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE0029292900292929009C9C9C009C9C9C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FF9CFF00FF9CFF000000000000000000000000000000
+ 00009CFFFF0000000000000000000000AD000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+ 000000000000FFCECE00FFCECE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000639CCE002121210021212100212121002121210021212100212121002121
+ 2100212121002121210021212100639CCE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029292900FFFFFF0000000000FFFFFF0000000000DEDEDE0000000000DEDE
+ DE00DEDEDE00D6D6D60029292900292929000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000052525200424242000000
+ 0000000000009CFFFF00000000000000AD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000639CCE002121210021212100212121002121210021212100212121002121
+ 210021212100639CCE00639CCE00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000029292900FFFFFF0000000000FFFFFF0000000000DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00D6D6D600D6D6D6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000021212100A5A5A500DEDEDE00C6C6C6004242
+ 42000000000000000000000000000000AD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000639CCE002121210021212100212121002121210021212100639C
+ CE00639CCE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000029292900FFFFFF000000000000000000000000000000
+ 0000DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000DEDEDE00FFFFFF00DEDEDE005252
+ 52000000000000000000000000000000AD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000639CCE00639CCE00639CCE00639CCE00639CCE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002929290029292900FFFFFF00000000000000
+ 000000000000DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002121210021212100C6C6C6009C9C9C004242
+ 4200000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000029292900292929002929
+ 2900292929002929290029292900292929000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000002100000000004242
+ 4200000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0063313100633131006331
+ 310063313100310000000000000031319C0031319C006363CE006363CE006363
+ CE006363CE006363CE006363CE000000AD0000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0063313100633131006331
+ 310063313100310000000000000031319C0031319C006363CE006363CE006363
+ CE006363CE006363CE006363CE000000AD000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE009CCEFF0031639C0031639C003163
+ 9C0000316300639CCE0031639C0031639C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000CE636300CE636300CE636300CE636300CE9C9C00CE9C9C00CE9C9C00FFCE
+ CE00FFCECE00FFFFFF00FFCECE00FFCECE0000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0063313100633131006331
+ 310031000000520000000000000031319C0031319C0031319C006363CE006363
+ CE006363CE006363CE006363CE000000AD0000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0063313100633131006331
+ 310031000000520000000000000031319C0031319C0031319C006363CE006363
+ CE006363CE006363CE006363CE000000AD000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE009CCEFF0031639C0031639C003163
+ 9C0031639C0000316300639CCE0031639C000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF000000000000000000CE63
+ 6300CE636300CE636300CE636300CE636300CE9C9C00CE9C9C00CE9C9C00FFCE
+ CE00FFCECE00FFFFFF00FFCECE00FFCECE0000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FFFFFF00FFFFFF0063313100633131006331
+ 310031000000520000000000000031319C00000000000000000031319C006363
+ CE006363CE00FFFFFF00FFFFFF000000AD0000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FFFFFF00FFFFFF0063313100633131006331
+ 310031000000520000000000000031319C00000000000000000031319C006363
+ CE006363CE00FFFFFF00FFFFFF000000AD000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE009CCEFF0031639C0031639C003163
+ 9C0031639C0000316300639CCE0031639C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000CE636300CE63
+ 6300CE636300CE636300CE636300CE636300CE9C9C00CE9C9C00CE9C9C00FFCE
+ CE00FFCECE00FFFFFF00FFCECE00FFCECE0000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FFFFFF00FFFFFF00FFCECE00FFCECE00FFCECE00633131006331
+ 31003100000052000000000000000000000000CEFF00009CFF00000000009C9C
+ FF009C9CFF006363CE009C9CFF009C9CFF0000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FFFFFF00FFFFFF00FFCECE00FFCECE00FFCECE00633131006331
+ 31003100000052000000000000000000000000CEFF00009CFF00000000009C9C
+ FF009C9CFF006363CE009C9CFF009C9CFF000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE009CCEFF0031639C0031639C003163
+ 9C0031639C0031639C000031630031639C000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CE9C9C00000000000000
+ 0000CE636300CE636300CE636300CE636300CE9C9C00CE9C9C00CE9C9C00FFCE
+ CE00FFCECE00FFFFFF00FFCECE000000000000000000FF9C9C00FF9C9C00FFFF
+ FF00FFFFFF00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE003100
+ 0000520000000000000000CEFF0000CEFF0000CEFF00009CFF00009CFF000000
+ 00006363CE006363CE006363CE009C9CFF0000000000FF9C9C00FF9C9C00FFFF
+ FF00FFFFFF00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE003100
+ 0000520000000000000000CEFF0000CEFF0000CEFF00009CFF00009CFF000000
+ 00006363CE006363CE006363CE009C9CFF000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE009CCEFF0031639C0031639C003163
+ 9C0031639C0031639C0000316300639CCE000000000000000000000000000000
+ 000000000000FFFFFF000000000000000000CE636300CE9C9C00CE9C9C00CE9C
+ 9C000000000000000000CE636300CE6363007373730000000000000000000000
+ 0000000000000000000042424200C6C6C60000000000FFFFFF00FFFFFF00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00000000000000
+ 000000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00000000006363CE006363CE006363CE0000000000FFFFFF00FFFFFF00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00000000000000
+ 000000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00000000006363CE006363CE006363CE000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE009CCEFF0031639C0031639C003163
+ 9C0031639C0031639C0000316300003163000000000000000000000000000000
+ 0000000000000000000000000000CE636300CE636300CE9C9C00CE9C9C00CE9C
+ 9C00FFCECE00FFCECE00C6C6C600000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00000000000000000000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00000000006363CE006363CE0000000000FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00000000000000000000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00000000006363CE006363CE000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00639CCE00639CCE00FFFFFF00FFFFFF00FFFFFF0031639C003163
+ 9C0031639C0031639C0000316300639CCE000000000000000000000000000000
+ 00000000000000000000CE636300CE636300CE636300CE9C9C00CE9C9C00CE9C
+ 9C00FFCECE004242420000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF0000000000FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00000000006363CE00C6ADA50000000000FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00000000006363CE000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639C
+ CE00639CCE00FFFFFF00FFFFFF00316363003163630031636300FFFFFF003163
+ 9C0031639C0031639C0000316300639CCE000000000000000000000000000000
+ 000000000000CE636300CE636300CE636300CE636300CE9C9C00CE9C9C00CE9C
+ 9C00424242000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF0000000000FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA50000000000FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF00000000000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00639CCE00FFFF
+ FF00FFFFFF000000AD0000009C0000000000316363003163630031636300FFFF
+ FF0031639C0031639C0000316300639CCE0000000000FFFFFF00000000000000
+ 0000CE636300CE636300CE636300CE636300CE636300CE9C9C00CE9C9C00C6C6
+ C6000000000000000000000000000000000000000000424242009CCE9C009C9C
+ 9C00FFCE9C00FFCE9C004242420000000000EFEFEF00EFEFEF00EFEFEF000000
+ 0000FFCECE00FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA5000000
+ 0000FFCECE00FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF00000000000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00639CCE00639CCE00FFFFFF00FFFFFF000000
+ AD0000009C006363CE000000AD000000AD0000000000000000000000000000CE
+ FF00FFFFFF0031639C0000316300639CCE00000000000000000000000000CE63
+ 6300CE636300CE636300CE636300CE636300CE636300CE9C9C00CE9C9C000000
+ 0000000000000000000000000000000000009CCE9C009CCE9C009CCE9C009C9C
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF0000000000FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A50000000000FFCECE00FFCECE00FFCECE000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF00000000000000000000000000639CCE00639C
+ CE00639CCE00639CCE00639CCE00FFFFFF00FFFFFF00000000000000AD006363
+ CE006363CE006363CE0000009C000000AD000000AD000000000000CEFF0000CE
+ FF00009CFF00FFFFFF0000316300639CCE00000000000000000000000000CE63
+ 6300CE636300CE636300CE636300CE636300CE636300CE9C9C00C6C6C6000000
+ 00000000000000000000000000009CCE9C009CCE9C009CCE9C009CCE9C009C9C
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF0000000000FFCECE00000000000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA50000000000FFCECE00000000000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF00000000000000000000000000639CCE00639C
+ CE00639CCE00FFFFFF00FFFFFF009CFFFF00CEFFFF00000000006363CE006363
+ CE006363CE006363CE000000AD0000009C000000AD000000AD000000000000CE
+ FF00009CFF00009CFF00FFFFFF00639CCE000000000000000000000000000000
+ 000000000000CE636300CE636300CE636300CE636300CE9C9C00424242000000
+ 00000000000000000000424242009CCE9C009CCE9C009CCE9C009CCE9C009C9C
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF0000000000EFEFEF000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF00FFFFFF00FFFFFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA50000000000C6ADA5000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF00FFFFFF00FFFFFF00009CFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF00000000000000000000000000639CCE00FFFF
+ FF00FFFFFF0000316300000000009CFFFF00CEFFFF00000000006363CE006363
+ CE006363CE006363CE000000AD0000009C000000AD000000AD000000000000CE
+ FF00009CFF00009CFF0000000000FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000CE636300CE636300CE9C9C00000000000000
+ 000000000000000000009CCE9C009CCE9C009CCE9C009CCE9C009CCE9C000000
+ 000000000000FFCE9C00FFCE9C00FFCE9C00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000CEFF0000CEFF0000CE
+ FF0000CEFF00FFFFFF00FFFFFF0000FFFF0000FFFF0000FFFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000CEFF0000CEFF0000CE
+ FF0000CEFF00FFFFFF00FFFFFF0000FFFF0000FFFF0000FFFF00009CFF00009C
+ FF00009CFF00009CFF00009CFF00000000000000000000000000FFFFFF000031
+ 6300003163000000000063FFFF009CFFFF00CEFFFF00000000006363CE006363
+ CE006363CE006363CE000000AD0000009C000000AD000000AD000000000000CE
+ FF00009CFF00009CFF000000000031639C000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CE9C9C00000000000000
+ 000000000000000000009C9C9C009C9C9C009C9C9C009C9C9C0000000000FFFF
+ FF00DEDEDE00000000009C9C9C009C9C9C00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000CEFF0000CEFF00FFFF
+ FF00FFFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00009C
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000CEFF0000CEFF00FFFF
+ FF00FFFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00009C
+ FF00009CFF00009CFF00009CFF0000000000000000000000000000000000FFFF
+ FF00003163000000000063FFFF009CFFFF0031636300000000006363CE006363
+ CE00FFFFFF00FFFFFF009C9CFF000000AD0000009C000000AD000000000000CE
+ FF0000CEFF00009CFF00009CFF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000639CFF00639CFF00639CFF00639CFF0000000000DEDE
+ DE00FFFFFF0000000000000000009CCEFF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF0000000000FFFFFF00FFFFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF00009CFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA50000000000FFFFFF00FFFFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF00009CFF00009CFF00009CFF00000000000000000000000000000000000000
+ 00000000000000FFFF0063FFFF009CFFFF003163630000000000FFFFFF00FFFF
+ FF009C9CFF009C9CFF009C9CFF009C9CFF000000AD0000009C000000000000CE
+ FF0000CEFF00009CFF00009CFF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000639CFF00639CFF00639CFF00639CFF00639CFF000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF00009CFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF00009CFF00009CFF00000000000000000000000000000000000000
+ 00000000000000FFFF0063FFFF00316363003163630031636300000000009C9C
+ FF009C9CFF009C9CFF009C9CFF009C9CFF009C9CFF000000AD000000000000CE
+ FF0000CEFF00009CFF00009CFF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000424242000000
+ 0000000000000000000042424200639CFF00639CFF00639CFF00639CFF009C9C
+ 9C0000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF00009CFF0000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA5000000000000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF00009CFF00000000000000000000000000000000000000
+ 000000FFFF0000FFFF0063FFFF0031636300639C9C009CCECE009CCECE000000
+ 00009C9CFF009C9CFF009C9CFF009C9CFF00000000000000000000CEFF0000CE
+ FF0000CEFF00009CFF00009CFF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6C6C6000000
+ 0000000000000000000000000000639CFF00639CFF00639CFF00639CFF009C9C
+ 9C009CCEFF00000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF000000000000000000EFEFEF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA5000000000000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF000000000000000000C6ADA5000000000000000000000000000000
+ 00000000000000FFFF0063FFFF009CFFFF00316363009CCECE00CEFFFF00CEFF
+ FF00000000009C9CFF0000000000000000000000000000CEFF0000CEFF0000FF
+ FF0000FFFF0000FFFF0000FFFF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000639CFF00639CFF00639CFF009C9C
+ 9C009CCEFF009CCEFF000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000
+ 000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000
+ 000000000000EFEFEF00EFEFEF00EFEFEF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA5000000
+ 000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000
+ 000000000000C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 000000000000000000009CFFFF009CFFFF00CEFFFF009CCECE00CEFFFF000000
+ 0000003163000000000031639C0031639C000000000000FFFF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C6C6
+ C600000000000000000000000000000000000000000042424200639CFF009C9C
+ 9C009CCEFF009CCEFF004242420000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF000000000000FFFF0000FFFF0000FFFF0000FFFF000000000000000000EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A5000000000000FFFF0000FFFF0000FFFF0000FFFF000000000000000000C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 00000000000000000000000000009CFFFF00CEFFFF00CEFFFF00CEFFFF000000
+ 00000031630031639C0031639C00FFFFFF00FFFFFF0000000000A5A5A500DEDE
+ DE00A5A5A5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000424242000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF000000000000FFFF000000000000000000EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA5000000000000FFFF000000000000000000C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 000000000000000000000000000000000000CEFFFF00CEFFFF00000000000031
+ 630000316300FFFFFF00FFFFFF00000000000000000010101000F7FFFF00F7FF
+ FF00DEDEDE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004242420000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF0000000000EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA50000000000C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CEFFFF0000000000FFFF
+ FF00FFFFFF000000000000000000000000000000000021212100A5A5A500F7FF
+ FF00A5A5A5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C6C6C600000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000101010001010
+ 1000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6C6C60042424200000000000000
+ 0000000000000000000042424200C6C6C6000000000000000000000000000000
+ 0000CE9C9C00CE9C9C0063313100CE9C9C00CE9C9C0063313100633131000000
+ 000000CEFF0000CEFF000031CE0000CEFF0000CEFF000063FF000063FF000063
+ FF00000000009C63CE0031009C0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF218400000000000000000000FF840000FF840000FF840000FF84000000
+ 000000000000FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF218400000000000000000000FF840000FF840000FF840000FF84000000
+ 000000000000FF218400FF218400FF2184000000000000000000000000000000
+ 00004284FF000084210000842100008421000063210000632100006321000063
+ 2100006363000063210000212100002121000063000000630000002121000000
+ 000000000000000000000084210000C621000000000000000000000000000000
+ 0000CE9C9C00CE9C9C0063313100CE9C9C00CE9C9C0063313100633131000000
+ 000000CEFF0000CEFF000031CE0000CEFF0000CEFF000031CE000031CE000031
+ CE00000000009C63CE0031009C0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF2184000000000000000000000000000000000000000000000000000000
+ 000000000000FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF2184000000000000000000000000000000000000000000000000000000
+ 000000000000FF218400FF218400FF2184000000000000000000000000004284
+ FF00008421000084210000842100006321000063210000632100006321000063
+ 2100006321000021210000212100002121004221000042210000000000000000
+ 000000000000000000000084000000FF21000000000000000000000000000000
+ 0000CE9C9C00CE9C9C0063313100CE9C9C00CE9C9C0063313100633131000000
+ 000000CEFF0000CEFF000031CE0000CEFF0000CEFF0000CEFF000031CE000031
+ CE00000000009C63CE0031009C0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF2184000000000000000000000000000000000000000000000000000000
+ 000000000000FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF2184000000000000000000000000000000000000000000000000000000
+ 000000000000FF218400FF218400FF21840000000000000000004284FF000084
+ 2100008421000063210000632100006321000063210000632100006321000063
+ 2100006321000063000000212100002121000021210000000000000000000000
+ 0000000000000084210000FF210042FF21000000000000000000000000000000
+ 0000CE9C9C00CE9C9C0063313100CE9C9C00CE9C9C00633131000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000063FF000031
+ CE00000000009C63CE0031009C0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF218400000000004284FF00008463000084
+ 6300008463000063210000846300006321000063210000632100006321000063
+ 2100006321000063210000632100002121000000000000000000000000000000
+ 00000063210000C6000000FF210084FF84000000000000000000000000000000
+ 0000CE9C9C00CE9C9C0063313100CE9C9C00CE9C9C00633131000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000063FF000063
+ FF000031CE000000000031009C0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000846300008463000084
+ 63004284FF004284FF00008484004284FF00008484000084FF00008484000084
+ 8400008484000063630000636300002121000021210000000000006300000063
+ 00000084000000C6000000FF210084FF63000000000000000000000000000000
+ 0000CE9C9C00CE9C9C0063313100CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000063FF000063
+ FF000063FF00000000009C63CE00000000000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184004284FF0000846300008463004284
+ FF000000000000000000000000000063840084C6FF0084C6FF0084C6FF0042C6
+ FF00008484000084840000848400006363004263630000000000000000000063
+ 00000084000000C6000000FF000000FF2100000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000063FF000063
+ FF000063FF00000000009C63CE0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184004284FF00008463004284FF000000
+ 00000000000000000000000000000063840084C6FF0084C6FF0084C6FF0084C6
+ FF000084FF000084840000848400008484000084840000636300002121000021
+ 210000630000006300000084000000630000000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000063FF000063
+ FF000063FF00000000009C63CE0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 000000C6FF00000000000000000000C6FF000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 000000C6FF00000000000000000000C6FF000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184004284FF00008421004284FF000000
+ 00000000000000000000000000000063840084C6FF0084C6FF0084C6FF0042C6
+ FF000084FF000084000000842100008484000084630000846300006363000000
+ 000000000000000000000000000000000000000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000063FF000063
+ FF000063FF00000000009C63CE0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF21840000000000008484004284FF000000
+ 00000000000000000000000000000063840084C6FF0084C6FF0084C6FF0084C6
+ FF000084FF000084000000840000008400000084000000848400008463000084
+ 840000636300000000000000000000000000000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000063FF000063
+ FF000063FF00000000009C63CE0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF218400000000004284FF00008484004284
+ FF000000000000000000000000000063840084C6FF0084C6FF0084C6FF0042C6
+ FF000084FF000084000000840000008400000084000000840000008484000084
+ 210000846300006363000063630000636300000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF00FFFFFF00FFFFFF000063FF000063
+ FF000063FF00000000009C63CE0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 000000C6FF00000000000000000000C6FF000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 000000C6FF00000000000000000000C6FF000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF21840000000000000000004284FF000084
+ 84004284FF0000000000000000000063840084C6FF0084C6FF0084C6FF0084C6
+ FF000084FF000084000000840000008400000084000000840000008400000084
+ 000000840000000000000000000000000000000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF0000CEFF0000CEFF00FFFFFF00FFFFFF0063CEFF0063CEFF0063CEFF0063CE
+ FF000063FF00000000009C63CE0031009C000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000000000
+ 0000000000000000000000000000FF84C600FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400FF2184000000000000000000000000004284
+ FF00008484004284FF00000000000063840084C6FF0084C6FF0084C6FF0042C6
+ FF000084FF000084000000840000008400000084000000840000008400000084
+ 000000840000000000000000000000000000000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C000000000000CE
+ FF00FFFFFF00FFFFFF000063FF000063FF000063FF000063FF000063FF000063
+ FF0063CEFF00000000009C63CE0031009C000000000000000000000000000000
+ 000000000000000000000000000000000000FF84C600FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400842163000000000000000000000000000000
+ 000000000000000000000000000000000000FF84C600FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000FF218400FF21
+ 8400FF218400FF218400FF218400842163000000000000000000000000000000
+ 00004284FF00008484004284FF000063840084C6FF0084C6FF0084C6FF0084C6
+ FF000084FF000084000000840000008400000084000000840000008400000084
+ 000000840000000000000000000000000000000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00FFFFFF00FFFFFF00000000000000
+ 000063CEFF0052525200000000000000000000000000000000000063FF000000
+ 000000000000FFFFFF009C63CE0031009C000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF84C600FF218400FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF84C600FF218400FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF218400FF218400000000000063840000636300006363000063
+ 6300006363000063630000636300006363000063840084C6FF0084C6FF0042C6
+ FF000084FF000084000000840000008400000084000000840000008400000084
+ 000000840000006384000000000000000000000000000000000000000000CE9C
+ 9C00CE9C9C00CE9C9C00FFFFFF00FFFFFF00FFCECE00FFCECE00FFCECE000000
+ 000063CEFF00000000005252520052525200424242005252520000000000FFFF
+ FF00CE9CFF00CE9CFF00CE9CFF00CE9CFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FF84C600FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF21840000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FF84C600FF21
+ 8400FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF218400FF21840000000000000000000063840000638400006363000063
+ 630000636300006363000063630000636300006363000063840084C6FF0084C6
+ FF000084FF000084000000840000008400000084000000840000008400000084
+ 000000840000006363000063630000638400000000000000000000000000CE9C
+ 9C00FFFFFF00FFFFFF0063313100633131006331310063313100633131006331
+ 31001010100042424200A5A5A500A5A5A500A5A5A50052525200424242000000
+ 000031009C0031009C0031009C0031009C000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FF84
+ C600FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF2184000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FF84
+ C600FF218400FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400FF2184000000000000000000000000000063840084C6FF00006384000063
+ 6300006363000063630000636300006363000063630000636300006384000063
+ 84000084FF000084000000840000008400000084000000840000008400000084
+ 0000008400000063630000636300006363000000000000000000000000000000
+ 0000FFCECE005252520000000000000000000000000000000000633131000000
+ 000021212100A5A5A500DEDEDE00DEDEDE00C6C6C6009C9C9C00424242000000
+ 0000000000000000000031009C00000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000000000000000000000000000
+ 0000FF84C600FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000000000000000000000000000
+ 0000FF84C600FF218400FF218400FF218400FF218400FF218400FF218400FF21
+ 8400000000000000000000000000000000000063840084C6FF0084C6FF000063
+ 6300006363000063630000636300006363000063630000636300006363000063
+ 6300006384000084000000840000008400000084000000840000008400000084
+ 0000008400000063630000636300006363000000000000000000000000000000
+ 0000FFCECE00000000005252520052525200424242005252520000000000FFFF
+ FF0010101000DEDEDE00FFFFFF00FFFFFF00DEDEDE00A5A5A500525252000000
+ 0000424242005252520000000000000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000000000000000000000
+ 000000000000FF84C600FF218400FF218400FF218400FF218400FF2184000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000000000000000000000
+ 000000000000FF84C600FF218400FF218400FF218400FF218400FF2184000000
+ 0000000000000000000000000000000000000063840084C6FF0084C6FF0084C6
+ FF00006363000063630000636300006363000063630000636300006363000063
+ 6300006363000084000000840000008400000084000000840000008400000084
+ 0000008400000063630000636300006363000000000000000000000000000000
+ 00001010100042424200A5A5A500A5A5A500A5A5A50052525200424242000000
+ 000021212100DEDEDE00FFFFFF00FFFFFF00DEDEDE00A5A5A500424242000000
+ 0000A5A5A5005252520042424200000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000008400000000000000
+ 00000000000000000000FF84C600FF218400FF218400FF218400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000008400000000000000
+ 00000000000000000000FF84C600FF218400FF218400FF218400000000000000
+ 0000000000000000000000000000000000000063840084C6FF0084C6FF0084C6
+ FF00008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000000000000000000000000000000
+ 000021212100A5A5A500DEDEDE00DEDEDE00C6C6C6009C9C9C00424242000000
+ 00000000000021212100DEDEDE00C6C6C6009C9C9C004242420010101000DEDE
+ DE00C6C6C6009C9C9C0042424200000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000008400000000000000
+ 0000000000000000000000000000FF84C600FF21840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000008400000000000000
+ 0000000000000000000000000000FF84C600FF21840000000000000000000000
+ 000000000000000000000000000000000000000000000063840084C6FF0084C6
+ FF00008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000000000000000000000000000000
+ 000010101000DEDEDE00FFFFFF00FFFFFF00DEDEDE00A5A5A500525252000000
+ 0000000000000000000010101000101010000000000042424200FFFFFF00FFFF
+ FF00DEDEDE00A5A5A50052525200000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000008400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004221FF000000C60000008400000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000063840084C6FF0084C6
+ FF00008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000000000000000000000000000000
+ 000021212100DEDEDE00FFFFFF00FFFFFF00DEDEDE00A5A5A500424242000000
+ 00000000000000000000000000000000000021212100DEDEDE00FFFFFF00FFFF
+ FF00DEDEDE00A5A5A50042424200000000000000000000000000000000000000
+ 00000000000000000000000000004221FF004221FF004221FF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004221FF004221FF004221FF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000063840084C6
+ FF00008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000000000000000000000000000000
+ 00000000000021212100DEDEDE00C6C6C6009C9C9C0042424200101010000000
+ 0000000000000000000000000000000000000000000021212100DEDEDE00C6C6
+ C6009C9C9C004242420010101000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000063840084C6
+ FF00008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000000000000000000000000000000
+ 0000000000000000000010101000101010000000000042424200000000000000
+ 0000000000000000000000000000000000000000000000000000101010001010
+ 1000000000004242420000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000063
+ 8400008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000084000000840000008400000084
+ 0000008400000084000000840000008400000000000000000000000000000000
+ 0000BDBDBD00DEDEDE00EFEFEF00EFEFEF00EFEFEF00E7D6D600E7848400E77B
+ 7B00E7737300E79C9C00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00E7EFEF00EFEFEF00EFE7E7000000000073737300E7E7E700F7F7
+ F700F7F7F700F7F7F700EFEFEF00EFEFEF00F7F7F700F7F7F700F7F7F700F7F7
+ F700DEDEDE00CECECE00CEC6C600ADADAD00525A520039AD4A005ADE63003984
+ 420094949400D6D6D600D6D6D600BDBDBD00000000000000000000000000C6C6
+ C600FFFF0000C6C6C600FFFF0000C6C6C6000000000084840000000000008484
+ 840000FFFF00C6C6C60000FFFF00C6C6C60000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000633100006363
+ 00009C6300009C630000FF630000FF630000FF630000FF630000FF630000FF63
+ 0000FF630000FF630000FF630000FF630000FF63000000000000009CFF00009C
+ FF0000CEFF0000CEFF0000CEFF0000CEFF000000000000000000000000000000
+ 0000B5B5B500E7E7E700EFEFEF00EFEFEF00EFEFEF00E7BDBD00E7848400EF84
+ 8400EF848400EFBDBD00EFF7F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF005A5A5A00BDBDBD00F7F7
+ F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00F7F7F700E7E7
+ E700B5BDB500737B7300395A4200297B310039B54A006BE7730094F773006BDE
+ 6B00398C420084848400DED6DE00CECECE00000000000000000000000000FFFF
+ 0000C6C6C600FFFF0000C6C6C600FFFF00000000000084848400848400000000
+ 00008484840000FFFF00C6C6C60000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF000000000063310000636300009C63
+ 00009C6300009C630000FF630000FF630000FF63000000000000000000000000
+ 000000000000FF630000FF630000FF630000FF63000000000000009CFF0000CE
+ FF0000CEFF0000FFFF0000FFFF0000FFFF00000000000000000000000000CECE
+ CE00C6C6C600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFADAD00EF848400F78C
+ 8C00F7949400F7DEDE00F7F7F70000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00F7F7F7008484840073737300EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00F7F7F700F7EFEF006373
+ 6300105A180031A539005AE7630084F77B0094F7730094EF630094EF630094F7
+ 6B0063DE6B00398C420094949400DEDEDE00000000000000000000000000C6C6
+ C600FFFF0000C6C6C6000000000000000000FFFF000000000000848484008484
+ 0000000000008484840000FFFF00C6C6C60000FFFF0000FFFF0000FFFF0000FF
+ FF00000000000000000000000000000000000000000063310000636300009C63
+ 00009C630000FF630000FF630000FF63000000000000FF630000FF630000FF63
+ 0000FF63000000000000FF630000FF63000000000000009CFF0000CEFF0000CE
+ FF0000FFFF000000000000FFFF0000FFFF00000000000000000000000000BDBD
+ BD00D6D6D600F7F7F700EFEFEF00EFF7F700EFE7E700F79C9C00F78C8C00F78C
+ 8C00F7A5A500F7EFEF00F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700EFEF
+ EF00DEDEDE00DEDEDE00DEDEDE00DEDEDE00EFEFEF00EFEFEF005A5A5A00C6C6
+ C600F7F7F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00F7F7F700E7DEE7004273
+ 420052CE52008CF76B0094EF630094EF630094EF630094EF630094EF630094EF
+ 630094F76B0063D65A00397B42009C9C9C00000000000000000000000000FFFF
+ 0000C6C6C60000000000FFFF0000FFFF0000FFFF0000FFFF0000000000008484
+ 840084840000000000008484840000FFFF0000FFFF0000000000000000000000
+ 00000000FF00FF00FF000000FF00FF00FF000000000063310000636300009C63
+ 00009C630000FF630000FF630000FF63000000000000FF630000FF630000FF63
+ 0000FF9C000010101000FF9C0000FF63000000000000009CFF0000CEFF0000CE
+ FF0000FFFF000000000000FFFF0000FFFF00000000000000000000000000B5B5
+ B500E7E7E700F7F7F700F7EFF700F7F7F700EFD6D600FF9C9C00FF949400FF94
+ 9400FFBDBD00F7F7F700F7F7F700F7F7F700F7F7F700E7E7E700BDBDBD009C9C
+ 9C0094949400949494009494940094949400EFEFEF00F7F7F700848484008484
+ 8400FFFFFF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00E7DEE700427B
+ 4A005ACE520094EF5A0094E75A0094EF5A0094EF5A0094EF5A0094EF5A0094EF
+ 5A009CEF6300BDF7A50084D68C00427B4200000000000000000000000000C6C6
+ C60000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000
+ 000084848400848400000000000000000000000000000000FF00FF00FF000000
+ FF00FF00FF000000FF00FF00FF000000FF000000000063310000636300009C63
+ 00009C630000FF630000FF630000FF63000000000000FF630000FF630000FF9C
+ 0000FF9C000010101000FF9C0000FF9C000000000000009CFF0000CEFF0000CE
+ FF0000FFFF000000000000000000101010000000000000000000DEDEDE00B5B5
+ B500EFEFEF00F7F7F700F7F7F700F7F7F700F7C6C600FF9C9C00FF9C9C00FF9C
+ 9C00FFCECE00F7FFFF00FFFFFF00EFEFEF00BDBDBD009C9C9C00ADA5A500C6B5
+ B500D6CECE00D6D6D600D6D6D600D6CECE00EFEFEF00EFEFEF00CECECE005A5A
+ 5A00D6D6D600EFEFEF00EFEFEF00E7E7E700D6D6D600EFE7EF00E7DEE7004273
+ 42006BC65200A5DE6300ADDE6300A5DE6300A5E76300A5E76300A5E76300A5DE
+ 6300C6E78C00DEFFD6007BCE84004A7B52000000000000000000848400000000
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000000000008484840084840000000000000000FF00FF00FF000000FF00FF00
+ FF000000FF00FF00FF000000FF00FF00FF000000000063310000636300009C63
+ 0000FF630000FF630000FF630000FF63000000000000FF630000FF9C0000FF9C
+ 0000FF9C000010101000FF9C0000FF9C000010101000009CFF0000CEFF0000FF
+ FF0000FFFF001010100000FFFF0000FFFF0000000000F7F7F700BDC6C600BDBD
+ BD00F7FFFF00F7F7F700F7F7F700F7F7F700FFB5B500FF9C9C00FFA5A500FFA5
+ A500FFDEDE00FFFFFF00E7E7E700A5A5A50094949400D6C6C600F7E7E700FFEF
+ EF00F7EFEF00F7EFE700F7EFE700F7EFE700EFEFEF00EFEFEF00EFEFEF007B7B
+ 7B0084848400F7F7F700DEDEDE00CECECE00CECECE00E7E7E700E7DEE7004273
+ 420052C6520094E77300A5E77300ADE76B00ADE76B00ADE76B00ADE76B00B5E7
+ 7B00CEF7BD0084D69400427B4A00BDB5BD00000000000000000000000000FFFF
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000000000008484840000000000FF00FF000000FF00FF00FF000000
+ FF00FF00FF000000FF00FF00FF000000FF000000000063310000636300009C63
+ 0000FF630000FF630000FF630000FF63000000000000FF630000FF9C0000FF9C
+ 0000FF9C000021212100FF9C0000FF9C000010101000009CFF0000CEFF0000FF
+ FF0000FFFF001010100000FFFF0000FFFF0000000000F7F7F700BDB5B500D6B5
+ B500F7E7E700F7EFEF00F7FFFF00F7EFEF00FFADAD00FFA5A500FFA5A500FFB5
+ B500FFF7F700F7F7F700ADADAD009C9C9C00D6CECE00EFDEDE00EFE7DE00EFE7
+ E700EFE7E700EFE7E700EFE7E700EFE7E700EFEFEF00EFEFEF00F7F7F700B5B5
+ B50063636300E7E7E700ADADAD0073737300BDBDBD00EFEFEF00EFE7EF00737B
+ 7300185A2100298C29004ACE5A007BE77B009CEF7B00ADE77300B5E77300BDEF
+ 9C0073CE84004A7B4A00BDBDBD00F7F7F700000000000000000000000000FFFF
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF000000000000000000000000FF00FF00FF000000FF00FF00
+ FF000000FF00FF00FF000000FF00FF00FF000000000010101000633100009C63
+ 0000FF630000FF630000FF630000FF630000FF63000010101000101010001010
+ 100021212100FFCE0000FFCE0000FF9C0000FF9C00001010100000CEFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000BDADAD00F79C
+ 9C00FFA5A500FFB5B500F7CECE00F7CEC600FFADAD00FFADAD00FFADAD00FFCE
+ CE00FFFFFF00CECECE00A5A5A500CECECE00EFDEDE00F7E7E700F7EFEF00F7E7
+ E700F7D6BD00F7CEA500F7CEA500F7D6B500EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF007B7B7B008C8C8C00425A4200314A3100BDBDBD00D6D6D600DEDEDE00E7DE
+ E700D6D6D6009C9C9C0052635200316B3100319C420063DE6B00BDF79C0084CE
+ 8400427B4A00BDB5BD00F7F7F700EFEFEF00000000000000000000000000FFFF
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF0000FFFF000000000000FF00FF000000FF00FF00FF000000
+ FF00FF00FF000000FF00FF00FF000000FF000000000010101000633100009C63
+ 0000FF630000FF630000FF630000FF630000FF630000FF630000FF9C0000FF9C
+ 0000FF9C0000FFCE0000FFFFFF00FF9C0000FF9C000010101000009CFF0000CE
+ FF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000C6A5A500FF9C
+ 9C00FFA5A500FFA5A500FFADAD00FFADAD00FFB5B500FFB5B500FFB5B500FFCE
+ CE00EFE7E700B5B5B500D6CECE00EFE7E700F7EFEF00FFEFEF00F7C6B500EF8C
+ 5200EF843100F78C2900FF943100F7B55A00EFEFEF00EFEFEF00EFEFEF00F7F7
+ F7009C949C00214A290018842100427B4A00BDB5BD00D6D6D600CECECE00CECE
+ CE00D6D6D600D6D6D600DEDEDE00D6D6D600737B73004AAD52007BD684004A84
+ 4A00B5B5B500F7F7F700EFEFEF00EFEFEF00000000000000000000000000FFFF
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF0000FFFF0000000000000000FF00FF00FF000000FF00FF00
+ FF000000FF00FF00FF000000FF00FF00FF000000000010101000101010006331
+ 00009C630000FF630000FF630000FF630000FF630000FF630000FF630000FF9C
+ 0000FF9C0000FF9C0000FF9C0000FF9C0000FF630000FF6300001010100000CE
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000000000D6D6D600CEBDBD00FFCE
+ CE00FFBDBD00FFB5B500FFB5B500FFB5B500FFB5B500FFBDBD00FFBDBD00FFBD
+ BD00DEADAD00D6BDBD00EFDEDE00EFDEDE00F7E7DE00F7C69400E77B3100E76B
+ 1800EF731800EF731800F7943900F7A54A00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF006B8C730042B54A005ADE6300316B3900737B7300B5B5B500C6C6C600C6C6
+ C600CECECE00CECECE00DEDEDE00E7E7E700949C9400298C31004A845200A5A5
+ A500F7EFF700EFEFEF00EFEFEF00EFEFEF00000000000000000000000000FFFF
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF0000FFFF000000000000FF00FF000000FF00FF00FF000000
+ FF00FF00FF000000FF00FF00FF000000FF000000000000000000101010006331
+ 00009C630000FF630000FF630000FF630000FF630000FF630000FF630000FF63
+ 0000FF9C0000FF9C0000FF9C0000FF630000FF630000FF630000FF6300001010
+ 10001010100000FFFF0000FFFF0000FFFF0000000000C6C6C600D6DEDE00FFFF
+ FF00FFFFFF00FFF7F700FFDEDE00FFBDBD00FFBDBD00FFC6BD00FFC6C600FFC6
+ C600EFB5B500DECECE00D6CECE00DED6DE00DE947B00D65A1800E77B3100EF94
+ 4200EF9C4200EF944200F7AD5200EF843100EFEFEF00EFEFEF00EFEFEF007394
+ 7B0039A542008CF773008CF76B0052D66300319C39002963290042634A007B8C
+ 7B00A5A5A500BDBDBD00DEDEDE00E7E7E7009494940042524200BDBDBD00EFEF
+ EF00E7E7E700E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF0000FFFF0000000000000000FF00FF00FF000000FF00FF00
+ FF000000FF00FF00FF000000FF00FF00FF000000000000000000101010001010
+ 1000633100009C630000FF630000FF630000FF630000FF630000FF630000FF63
+ 0000FF630000FF630000FF630000FF630000FF630000FF630000101010000000
+ 00000000000010101000101010001010100000000000B5B5B500E7E7E700FFFF
+ FF00FFFFFF00FFFFFF00F7E7E700FFBDBD00FFC6C600FFC6C600FFDEDE00FFE7
+ E700EFCECE00C6BDBD00C6C6C600D6BDB500C64A2100C6210000CE390000DE52
+ 1000DE631800E7843100EFAD5200E7631800EFEFEF00E7E7E7006B8C6B0042AD
+ 4A008CFF73009CEF63009CEF63009CF76B0094FF7B0073F773004AD652002194
+ 2900185221008C8C8C00D6D6D600E7E7E700B5B5B500BDBDBD00E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF0000FFFF000000000000FF00FF000000FF00FF00FF000000
+ FF00FF00FF000000FF00FF00FF000000FF000000000000000000009CFF0000CE
+ FF0010101000101010009C630000FF630000FF630000FF630000FF630000FF63
+ 0000FF630000FF630000FF630000FF6300001010100010101000000000000000
+ 00000000000000000000000000000000000000000000ADADAD00F7F7F700FFFF
+ FF00FFFFFF00FFFFFF00FFD6D600FFC6C600FFCECE00FFCECE00FFF7F700FFFF
+ FF00E7DEDE00ADADAD00B5B5B500CEAD9400D6733900D66B2900D6521800D642
+ 0800D6390000DE6B2100E78C3900D6420800EFEFEF006B8463004AB552008CF7
+ 7B0094EF630094EF630094EF630094EF630094EF630094EF630094EF630084F7
+ 630031943100737B7300D6D6D600E7E7E700E7E7E700E7E7E700E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 00000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF0000FFFF0000000000000000FF00FF00FF000000FF00FF00
+ FF000000FF00FF00FF000000FF00FF00FF000000000000000000009CFF0000CE
+ FF0000CEFF00101010001010100010101000FF630000FF630000FF630000FF63
+ 0000FF630000FF63000010101000101010001010100000000000000000000000
+ 000000000000000000000000000000000000DEDEDE00BDBDBD00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFCECE00FFCECE00FFCECE00FFD6DE00FFFFFF00FFFF
+ FF00E7E7E700ADADAD00B5B5B500BD8C8400BD421000CE5A2100D6733100DE7B
+ 3100DE6B2900E7944200D6632100CE310000849484004AAD5A00C6FFC600B5EF
+ 8C0094E7520094EF5A0094EF5A0094EF5A0094EF5A0094E75A0094E75A008CEF
+ 5A0031943900737B7B00D6CED600DEDEDE00DEDEDE00DEDEDE00E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 000000000000000000000000000000000000FFFF0000FFFF0000FFFF0000FFFF
+ 0000FFFF0000FFFF0000FFFF000000000000FF00FF000000FF00FF00FF000000
+ FF00000000000000000000000000000000000000000000000000009CFF0000CE
+ FF0000CEFF0000CEFF0000FFFF00101010001010100010101000101010001010
+ 1000101010001010100000FFFF0000FFFF001010100000000000000000000000
+ 000000000000000000000000000000000000D6CECE00D6D6D600FFFFFF00FFFF
+ FF00FFFFFF00FFF7F700FFCECE00FFCED600FFCED600FFE7E700FFFFFF00FFFF
+ FF00EFEFEF00C6BDBD00CEC6C600C6A5A50094180800AD180000BD290000BD29
+ 0800C6521800DE8C4200BD310000BD290000C6CEC600529C5A00B5EFBD00E7F7
+ C600ADDE6B00A5DE63009CE76300A5E76300A5DE6300ADDE6300ADDE6300A5E7
+ 6300399439007B847B00D6D6D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFFF
+ 0000FFFF0000FFFF0000FFFF0000000000000000FF0000000000000000000000
+ 00000000FF00840084000000FF00840084000000000000000000009CFF0000CE
+ FF0000CEFF0000FFFF0000FFFF000000000000FFFF0000FFFF001010100000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF001010100000000000000000000000
+ 000000000000000000000000000000000000D6D6D600E7E7E700FFFFFF00FFFF
+ FF00FFFFFF00F7EFEF00FFCED600FFCED600FFCEDE00FFEFF700FFFFFF00FFFF
+ FF00FFFFFF00DEDEDE00D6CECE00E7DED6008C4A4A0084080000AD210000B521
+ 0000CE5A2100CE632900B5290000B5290000EFEFEF00CECECE00529C5A00B5EF
+ B500CEEFA500ADE76B00ADE76B00ADE76B00ADE76B00ADE76B00A5E7730084E7
+ 7300298C3100848C8400DED6D600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00C6C6C600C6C6C600DEDEDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000FF00840084000000
+ FF00840084000000FF00840084000000FF000000000000000000009CFF0000CE
+ FF0000CEFF0000FFFF0000FFFF000000000010101000101010001010100063FF
+ FF0063FFFF0000FFFF0000FFFF0000FFFF001010100000000000000000000000
+ 000000000000000000000000000000000000EFEFEF0000000000FFFFFF00FFFF
+ FF00FFFFFF00FFE7E700FFCECE00FFCED600FFD6DE00FFF7FF00FFFFFF00FFFF
+ FF00FFFFFF00F7F7F700E7D6D600F7EFEF00D6C6C6007329290084100000BD4A
+ 2100D6844A00CE734200CE5A3100C65A3100EFEFEF00EFEFEF00DEDEDE00529C
+ 5A00A5EF9C00C6EF8C00ADE77300A5E77B008CE77B0063DE6B0039AD42002173
+ 210031523900A5A5A500BDBDBD0000000000D6D6D600DEDEDE00DEDEDE00DEDE
+ DE00DEDEDE00949494007B7B7B00C6C6C6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF00FF000000FF008400
+ 84000000FF00840084000000FF0084008400000000000000000000000000009C
+ FF0000CEFF0000FFFF0000FFFF000000000000FFFF0000FFFF00212121009CFF
+ FF0063FFFF0000FFFF0000FFFF00101010000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFFFFF00F7F7
+ F700F7EFEF00F7D6D600FFCECE00FFCED600FFDEE700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00F7EFEF00EFDEDE00FFF7F700D6C6C6008C4A4200A542
+ 2900BD634A00C6735200C66B5200C6633900EFEFEF00EFEFEF00EFEFEF00E7E7
+ E7004A8C5200ADF7A5009CEF8C0042BD520018732100214221006B6B6B00ADAD
+ AD00D6D6D600DEDEDE00848484006363630000000000D6D6D600DEDEDE00DEDE
+ DE00DEDEDE009C9C9C004A4A4A009C9C9C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FF00FF000000
+ FF00840084000000FF00840084000000FF00000000000000000010101000009C
+ FF0000CEFF0000CEFF0000FFFF001010100000FFFF0000FFFF002121210063FF
+ FF0063FFFF0000FFFF0000FFFF00101010000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000EFE7E700E7DEDE00FFEFEF00FFE7EF00FFE7EF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00F7F7F700EFE7E700F7EFEF00E7DEDE00CEAD
+ A500C6948C00C6948400CE948C00D69C8C00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00CED6CE004A9C52005ACE6B0052845A00847B840063636300B5B5B500DEDE
+ DE00D6D6D600D6D6D600A5A5A5005A5A5A00ADADAD00D6D6D600D6D6D600DEDE
+ DE00D6D6D600A5A5A5009C9C9C00DEDEDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FF00
+ FF000000FF00840084000000FF00840084000000000000000000000000001010
+ 1000009CFF00009CFF0000CEFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0010101000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000EFEFEF00EFEFEF00000000000000000000000000000000000000
+ 0000F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00EFEFEF00EFEFEF00F7F7
+ F700FFFFFF00FFF7FF00FFFFFF00FFFFFF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00C6CEC600085A10005A8C6300EFEFEF00A5A5A5008C8C8C00C6C6
+ C600D6D6D600D6D6D6009C9C9C007B7B7B00C6C6C600C6C6C600C6C6C600C6C6
+ C600B5B5B5006B6B6B0052525200848484000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FF00FF000000FF00840084000000FF000000000000000000000000000000
+ 00001010100010101000009CFF0000CEFF0000FFFF0000FFFF0000FFFF0000FF
+ FF00101010001010100000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7F7F7000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00FFFFFF00F7F7F700F7F7
+ F700F7F7F70000000000EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00ADB5AD005A635A00EFEFEF00EFEFEF00CECECE008484
+ 8400848484007B7B7B005A5A5A00292929006B6B6B00636363004A4A4A006363
+ 6300737373006363630010101000424242000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF00FF000000FF00840084000000000000000000000000000000
+ 0000000000000000000010101000101010001010100010101000101010001010
+ 1000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000F7F7F70000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000EFEFEF0000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF0000000000A5A5A500BDBDBD0021212100393939006B6B6B009C9C9C00EFEF
+ EF00EFEFEF00EFEFEF0063636300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000EFEFEF00EFEFEF0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00DEDEDE001010100039393900E7E7E700EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00ADADAD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000008494AD002142
+ 5A0010314A00636B6300C6F7CE0039DE6B0018DE520029D65A0018CE520010CE
+ 420008D6420010BD420073AD7B00EFEFEF00F7EFEF00EFE7DE007B8484001052
+ 8400185AD60000009C00081863002194BD0000000000000000009C9CFF009C9C
+ FF0000000000FFCE63000000000000FFFF0000FFFF0000000000FFCE6300FFCE
+ 6300FFCE630000000000003163003163CE003163CE003163CE0000000000CE63
+ 3100CE633100FFCE630000000000CE633100000000000000000084949C002142
+ 5A0010314A00636B6300C6F7CE0039DE6B0018DE520029D65A0018CE520010CE
+ 420008D6420010BD420073AD7B00EFEFEF00F7EFEF00EFE7DE007B8484001052
+ 8400185AD60000009C00081863002194BD000000000000000000000000000000
+ 00000000DE003131FF00000000000000000000FF000031FF0000CE310000FF00
+ 0000FF000000FF00000021000000000073003131FF003100FF00000052000000
+ 0000000000000000000073000000FF00000000000000000000009CADBD000831
+ 4A0018394A00635A6300BDE7CE0021D6520000D6310000AD2900008418000094
+ 210000C6310000BD39006BA57B00F7E7EF00F7EFEF00DECEC600847B7B002142
+ 6B000008940000006B00184A7300217BE7000000000000000000000000000000
+ 9C0000000000FFCE63000000000000FFFF0000FFFF0000000000FFCE6300FFCE
+ 6300000000000000000000316300003163003163CE003163CE00000000000000
+ 0000CE633100CE63310000000000CE6331000000000000000000949CA5000831
+ 4A0018394A00635A6300BDE7CE0021D6520000D6310000AD2900008418000094
+ 210000C6310000BD39006BA57B00F7E7EF00F7EFEF00DECEC600847B7B002142
+ 6B000008940000006B00184A7300217BE7000000000000000000000000000000
+ 00003100FF003100FF000021000000DE000000FF00009C310000FF000000FF00
+ 0000FF00000021000000000000000000000000009C003131FF000000FF000000
+ 21002100000000000000CE000000FF0000000000000000000000C6CED6000831
+ 4A0021394A005252520094AD9C0029CE4A0000CE290000942100087B2100007B
+ 180000B5290000BD310073B58C00FFEFF700FFEFEF00DECEC600EFD6D6008473
+ 940000005A0008214A002963B5000818BD000000000000000000000000009C9C
+ FF0000000000FFCE63000000000000FFFF0000FFFF0000000000FFCE63000000
+ 00009C9C9C000000000000316300003163000031630000316300000000009C9C
+ 9C0000000000CE63310000000000CE6331000000000000000000949494000831
+ 4A0021394A005252520094AD9C0029CE4A0000CE290000942100087B2100007B
+ 180000B5290000BD310073B58C00FFEFF700FFEFEF00DECEC600EFD6D6008473
+ 940000005A0008214A002963B5000818BD000000000000000000000000000000
+ 21000000FF003131FF00009C310000FF0000639C0000FF000000FF000000FF00
+ 000021000000000000000000000000000000000000000000DE003131FF000000
+ CE000000210000000000FF000000FF0000000000000000000000DEE7EF00216B
+ 8400295A7300424A5A0039424A0008521800006B100000521000005A10000073
+ 180008A5390063DE8400DEEFDE00FFEFF700FFF7F700FFEFE700EFD6CE008463
+ 8C001018390008426B000818BD00080084000000000000000000000000000000
+ 9C0000000000FFCE63000000000000FFFF0000FFFF0000000000FFCE63000000
+ 0000424242009C9C9C00000000000031630000316300000000009C9C9C004242
+ 420000000000CE63310000000000CE633100000000000000000084848400216B
+ 8400295A7300424A5A0039424A0008521800006B100000521000005A10000073
+ 180008A5390063DE8400DEEFDE00FFEFF700FFF7F700FFEFE700EFD6CE008463
+ 8C001018390008426B000818BD00080084000000000000000000000000000000
+ 00003131FF000000FF0031CE310000AD0000FF000000FF000000FF0000007300
+ 00000000000000000000000000000000000000000000000031003100FF003131
+ FF0000008C0042000000FF000000FF0000000000000000000000CEEFF70039D6
+ F7004AC6EF0042B5D60031A5B50021737B0010524A0008392900002910000831
+ 080052734200C6CEAD00F7E7DE00FFE7F700FFE7DE00D6B5B5006B4A94000008
+ 63000818630008109C0000008C0042396B000000000000000000000000009C9C
+ FF0000000000CE63310000000000000000000000000000000000CE633100CE63
+ 310000000000424242009C9C9C0000000000000000009C9C9C00424242000000
+ 0000CE633100CE63310000000000CE63310000000000000000008C94940039D6
+ F7004AC6EF0042B5D60031A5B50021737B0010524A0008392900002910000831
+ 080052734200C6CEAD00F7E7DE00FFE7F700FFE7DE00D6B5B5006B4A94000008
+ 63000818630008109C0000008C0042396B000000000000000000000000000000
+ 00000000FF003100FF00009C9C009C310000FF000000FF000000CE0000000000
+ 0000000000000000000000000000000000000000000000000000000073000000
+ FF003131FF009C000000FF000000CE00000000000000000000008CE7FF0029D6
+ FF0031D6FF0039CEFF0042D6FF0042CEFF0042CEF70031BDE700299CB500318C
+ 9C004A7384005A636B006B636300846B73008C7373004A315200080052000010
+ 5A000010840008008C0008185A00398CAD000000000000000000000000000000
+ 9C0000000000CE633100CE633100CE633100CE633100CE633100CE633100CE63
+ 3100CE63310000000000424242009C9C9C009C9C9C004242420000000000CE63
+ 3100CE633100CE63310000000000CE63310000000000000000008CC6D60029D6
+ FF0031D6FF0039CEFF0042D6FF0042CEFF0042CEF70031BDE700299CB500318C
+ 9C004A7384005A636B006B636300846B73008C7373004A315200080052000010
+ 5A000010840008008C0008185A00398CAD000000000000000000000000000000
+ 00003100CE000031FF0063319C00FF000000FF000000FF000000210000000000
+ 0000000000000000000000000000000000000000000000000000000000003100
+ CE003131FF00FF003100FF0000009C00000000000000000000006BDEFF0031CE
+ FF0042CEFF0039CEFF0039CEFF0039CEFF0039CEFF0039CEFF0039CEFF0039CE
+ FF0031C6FF0039BDEF0039A5D600398CAD00296B940010396B00082142000818
+ 42000000310008104200083163003194D6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000424242004242420000000000000000000000
+ 00000000000000000000000000000000000000000000000000006BCEEF0031CE
+ FF0042CEFF0039CEFF0039CEFF0039CEFF0039CEFF0039CEFF0039CEFF0039CE
+ FF0031C6FF0039BDEF0039A5D600398CAD00296B940010396B00082142000818
+ 42000000310008104200083163003194D6000000000000000000000000000000
+ 000000639C003100FF00CE003100FF000000FF00000073000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 520063009C00FF000000FF00000021000000000000000000000052D6FF0039CE
+ FF0042CEFF0042CEFF0039CEFF0031CEFF0031CEFF0031CEFF0039C6FF0039C6
+ FF0042C6FF0039C6FF0031C6FF0039C6FF0039C6FF0039BDF70039ADE700318C
+ CE00216B9C00216B8C00104A73003184BD000000000000000000000000000000
+ 00003163CE003163CE003163CE003163CE003163CE003163CE003163CE003163
+ CE003163CE003163CE003163CE0000000000000000003163CE003163CE003163
+ CE003163CE003163CE003163CE003163CE00000000000000000052D6F70039CE
+ FF0042CEFF0042CEFF0039CEFF0031CEFF0031CEFF0031CEFF0039C6FF0039C6
+ FF0042C6FF0039C6FF0031C6FF0039C6FF0039C6FF0039BDF70039ADE700318C
+ CE00216B9C00216B8C00104A73003184BD000000000000000000000000000031
+ 0000009C63003100CE00FF000000FF000000CE00000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002100
+ 0000FF000000FF0000009C0031000000000000000000EFEFF70039D6FF0031CE
+ FF0039CEFF0042CEFF0042CEFF006BD6FF0063D6F7004ACEF70039C6FF0031C6
+ F70031C6FF0039C6FF0039BDFF0039BDFF0039BDFF0031BDFF0031BDFF0039C6
+ FF0039BDFF0031BDFF0039B5EF008CDEFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000039D6F70031CE
+ FF0039CEFF0042CEFF0042CEFF006BD6FF0063D6F7004ACEF70039C6FF0031C6
+ F70031C6FF0039C6FF0039BDFF0039BDFF0039BDFF0031BDFF0031BDFF0039C6
+ FF0039BDFF0031BDFF0039B5EF008CC6DE00000000000000000000000000008C
+ 000000FF00009C006300FF000000FF0000005200000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000009C00
+ 0000FF000000FF0000003131CE001010100000000000C6EFFF0031CEFF0042CE
+ FF0042CEFF0031CEFF0052D6FF00E7F7FF00EFFFFF00CEF7FF00ADE7FF0094DE
+ FF0073D6FF0052CEFF0042C6F70031BDFF0031BDFF0031BDFF0031BDFF0039BD
+ FF0039B5FF0029BDFF0039B5F7008CDEFF000000000000000000000000009C9C
+ FF0000000000FFCE6300FFCE6300FFCE6300FFCE6300FFCE6300FFCE6300FFCE
+ 6300FFCE6300FFCE6300FFCE6300FFCE6300FFCE6300FFCE6300FFCE6300FFCE
+ 6300FFCE6300FFCE630000000000424242000000000094A5AD0031CEFF0042CE
+ FF0042CEFF0031CEFF0052D6FF00E7F7FF00EFFFFF00CEF7FF00ADE7FF0094DE
+ FF0073D6FF0052CEFF0042C6F70031BDFF0031BDFF0031BDFF0031BDFF0039BD
+ FF0039B5FF0029BDFF0039B5EF008CC6DE0000000000000000000000000000BD
+ 000031FF0000FF000000FF000000FF0031000000210000210000000000000000
+ 000000000000000000000000000000000000000000000000000021000000FF00
+ 0000FF0000009C009C000000FF0000005200000000009CE7FF0031CEFF0039CE
+ FF0039CEFF0031CEFF006BDEFF00FFFFFF00FFFFF700FFFFFF00FFFFFF00FFFF
+ FF00F7FFFF00DEFFFF00C6EFFF00A5E7F70073D6FF0039C6FF0031BDFF0039BD
+ FF0039B5FF0031BDFF0039BDFF00000000000000000000000000000000000000
+ 9C0000000000FFCE6300FFCE6300FFCE6300FFCE6300FFCE6300000000000000
+ 00000000000000000000000000000000000000000000CE633100CE633100FFCE
+ 6300FFCE6300FFCE6300000000009C9C9C000000000094BDCE0031CEFF0039CE
+ FF0039CEFF0031CEFF006BDEFF00FFFFFF00FFFFF700FFFFFF00FFFFFF00FFFF
+ FF00F7FFFF00DEFFFF00C6EFFF00A5E7F70073D6FF0039C6FF0031BDFF0039BD
+ FF0039B5FF0031BDFF0039BDFF000000000000000000000000000000000000FF
+ 0000639C0000FF003100FF00000063009C003100CE0000000000000000000000
+ 00000000000000000000000000000000000000000000000000009C000000FF00
+ 0000CE00000031009C003131FF000000AD00000000006BD6FF0031CEFF0039CE
+ FF0042CEFF0031C6FF008CDEFF00FFFFFF00FFFFFF00949C9C0084847B00BDB5
+ AD00E7DEDE00F7F7F700FFFFFF00FFFFFF00DEEFFF005AC6FF0031BDFF0031BD
+ FF0031B5FF0039BDFF008CDEFF00000000000000000000000000000000009C9C
+ FF0000000000FFCE6300FFCE6300FFCE6300FFCE6300FFCE63000000000000FF
+ FF0000FFFF000000000000FFFF0000FFFF0000000000CE633100CE633100FFCE
+ 6300FFCE6300FFCE630000000000424242000000000073CEEF0031CEFF0039CE
+ FF0042CEFF0031C6FF008CDEFF00FFFFFF00FFFFFF00949C9C0084847B00BDB5
+ AD00E7DEDE00F7F7F700FFFFFF00FFFFFF00DEEFFF005AC6FF0031BDFF0031BD
+ FF0031B5FF0039BDFF008CC6DE000000000000000000000000000000000000FF
+ 00009C630000FF000000CE0031003100FF000031FF0000003100210000000000
+ 0000000000000000000000000000000000000000000052000000FF000000FF00
+ 000052000000000042000000FF003100CE00DEF7FF0052D6FF0031CEFF0039CE
+ FF0042CEFF0031C6FF00B5EFFF00FFFFFF00F7F7F70039293100000000000000
+ 0000101010005A5A5A00F7F7F700FFFFFF00B5E7F70042BDF70031BDFF0031B5
+ FF0031B5FF0039B5F7008CDEFF00000000000000000000000000000000000000
+ 9C0000000000FFCE6300FFCE6300FFCE6300FFCE6300FFCE63000000000000FF
+ FF0000FFFF000000000000FFFF0000FFFF0000000000CE633100CE633100FFCE
+ 6300FFCE6300FFCE6300000000009C9C9C008C94940052CEF70031CEFF0039CE
+ FF0042CEFF0031C6FF00B5EFFF00FFFFFF00F7F7F70039293100000000000000
+ 0000101010005A5A5A00F7F7F700FFFFFF00B5E7F70042BDF70031BDFF0031B5
+ FF0031B5FF0039B5EF008CC6DE000000000000000000000000000000000000FF
+ 0000CE310000FF000000CE0031003131FF003100FF000000BD00002100000000
+ 00000000000000000000000000000000000021000000FF000000FF0000009C00
+ 000000000000000000003131FF003131FF00C6EFFF0042D6F70039CEFF0031CE
+ FF0039C6FF004ACEFF00D6F7FF00FFFFFF00D6DED60018181800000000000000
+ 00000000000052524A00FFFFF700FFFFFF0094D6F70031BDFF0031BDFF0031BD
+ FF0029BDFF0039BDFF0000000000000000000000000000000000000000009C9C
+ FF0000000000FFCE6300FFCE6300FFCE6300FFCE6300FFCE6300000000000000
+ 00000000000000000000000000000000000000000000CE633100CE633100FFCE
+ 6300FFCE6300FFCE6300000000009C9C9C00C6EFFF0042D6F70039CEFF0031CE
+ FF0039C6FF004ACEFF00D6F7FF00FFFFFF00D6DED60018181800000000000000
+ 00000000000052524A00FFFFF700FFFFFF0094D6F70031BDFF0031BDFF0031BD
+ FF0029BDFF0039BDFF00000000000000000000000000000000000000000000DE
+ 0000FF000000FF0000009C0000000000AD000031FF003100FF00000073000021
+ 000000000000000000000000000000000000FF000000FF000000CE0000002100
+ 000000000000000000000000DE003100FF00A5E7FF0039CEFF0042C6FF0039CE
+ FF0031C6FF006BD6FF00FFFFFF00FFFFFF00F7EFF700C6BDB5008C948C005A63
+ 5A00293131009C9C9C00FFFFFF00FFFFFF006BC6F70021BDFF0039BDFF0031B5
+ FF0021BDFF008CDEFF0000000000000000000000000000000000000000000000
+ 9C0000000000CE633100CE633100CE633100CE633100CE6331000000000000FF
+ FF0000FFFF000000000000FFFF0000FFFF0000000000CE633100CE633100CE63
+ 3100CE633100CE6331000000000000000000A5E7FF0039CEFF0042C6FF0039CE
+ FF0031C6FF006BD6FF00FFFFFF00FFFFFF00F7EFF700C6BDB5008C948C005A63
+ 5A00293131009C9C9C00FFFFFF00FFFFFF006BC6F70021BDFF0039BDFF0031B5
+ FF0021BDFF008CC6DE00000000000000000000000000000000000000000000AD
+ 0000FF000000FF00000063000000000021003100CE000031FF003100FF000000
+ 4200000000000000000021000000CE000000FF000000FF000000000000000000
+ 000000000000000000003100CE00009C63007BDEFF0029CEFF0031C6FF0031CE
+ FF0031CEFF0052D6FF00BDEFFF00D6F7FF00EFF7FF00FFFFFF00FFFFFF00FFFF
+ FF00F7EFEF00F7F7F700FFFFFF00DEEFFF0052BDF70029BDFF0039BDFF0031B5
+ FF0039BDFF008CDEFF0000000000000000000000000000000000000000009C9C
+ FF0000000000CE633100CE633100CE633100CE633100CE6331000000000000FF
+ FF0000FFFF000000000000FFFF0000FFFF0000000000CE633100CE633100CE63
+ 3100CE633100CE63310000000000000000007BDEFF0029CEFF0031C6FF0031CE
+ FF0031CEFF0052D6FF00BDEFFF00D6F7FF00EFF7FF00FFFFFF00FFFFFF00FFFF
+ FF00F7EFEF00F7F7F700FFFFFF00DEEFFF0052BDF70029BDFF0039BDFF0031B5
+ FF0039BDFF008CC6DE0000000000000000000000000000000000000000000042
+ 0000FF000000FF0000005200000000000000000031003100FF000031FF003100
+ FF000000210031000000CE000000FF000000FF00000021000000000000000000
+ 000000000000000000000063630000FF000052CEFF0031CEFF0039CEFF0039CE
+ FF0042C6FF0039C6FF004AC6F70052CEF70063CEFF0073DEF7009CE7FF00BDEF
+ FF00DEF7FF00F7FFFF00FFFFFF00B5E7FF0039B5FF0031BDFF0039BDFF0031B5
+ FF0039BDFF000000000000000000000000000000000000000000000000000000
+ 9C00000000000000000000000000000000000000000000000000000000000000
+ 000000FFFF000000000000FFFF00000000000000000000000000000000000000
+ 00000000000000000000000000000000000052CEFF0031CEFF0039CEFF0039CE
+ FF0042C6FF0039C6FF004AC6F70052CEF70063CEFF0073DEF7009CE7FF00BDEF
+ FF00DEF7FF00F7FFFF00FFFFFF00B5E7FF0039B5FF0031BDFF0039BDFF0031B5
+ FF0039BDFF000000000000000000000000000000000000000000000000000021
+ 00009C000000FF00000042000000000000000000000000009C003100FF003100
+ FF003131FF00CE003100FF000000FF0000002100000000000000000000000000
+ 0000000000000063000000FF000000FF310052D6FF0042CEFF0031C6FF0029C6
+ FF0029C6FF0031C6FF0029C6FF0031BDFF0031BDFF0039BDFF0029BDFF0039C6
+ FF004AC6FF0063CEF70084DEFF0063CEFF0031B5FF0039B5FF0039B5FF0031BD
+ FF008CDEFF000000000000000000000000000000000000000000000000000000
+ 0000424242009C9C9C009C9C9C0042424200424242009C9C9C00000000003163
+ CE000000000000000000000000003163CE00000000009C9C9C009C9C9C004242
+ 4200424242009C9C9C00424242000000000052CEF70042C6FF0031C6FF0029C6
+ FF0029C6FF0031C6FF0029C6FF0031BDFF0031BDFF0039BDFF0029BDFF0039C6
+ FF004AC6FF0063CEF70084DEFF0063CEFF0031B5FF0039B5FF0039B5FF0031BD
+ FF008CC6DE000000000000000000000000000000000000000000000000000000
+ 000042000000FF000000420000000000000000000000000000000000AD003131
+ FF000000FF003100FF00CE003100210000000000000000000000000000000000
+ 000000AD000000FF000000CE31003131CE0000000000EFEFEF00D6EFF70084DE
+ F7006BD6FF0052CEFF0031CEFF0031C6FF0031BDFF0021BDFF0031BDFF0039BD
+ FF0039BDFF0031BDFF0031B5FF0031BDFF0031BDFF0039B5FF0031B5FF0029BD
+ FF008CDEFF000000000000000000000000000000000000000000000000000000
+ 9C000000000042424200424242009C9C9C009C9C9C0042424200424242000000
+ 00003163CE003163CE003163CE00000000009C9C9C0042424200424242009C9C
+ 9C009C9C9C0042424200000000000000000000000000000000008C8C8C0084C6
+ D60073C6E70052C6F70031CEFF0031C6FF0031BDFF0021BDFF0031BDFF0039BD
+ FF0039BDFF0031BDFF0031B5FF0031BDFF0031BDFF0039B5FF0031B5FF0029BD
+ FF008CC6DE000000000000000000000000000000000000000000000000000000
+ 00000000000042000000730000000000000042000000CE000000FF0000006300
+ 9C003100FF000031FF003100FF000000630000000000000000000031000000DE
+ 000000FF000000CE00003131FF000000BD000000000000000000000000000000
+ 00000000000000000000EFEFF700C6EFF7007BD6FF005ACEFF0042C6FF0039BD
+ FF0031B5FF0029B5FF0029BDFF0029B5FF0039BDFF0039B5FF0029B5FF0039B5
+ F7008CDEFF000000000000000000000000000000000000000000000000009C9C
+ FF0000000000000000009C9C9C0042424200424242009C9C9C009C9C9C004242
+ 420000000000000000000000000042424200424242009C9C9C009C9C9C004242
+ 4200424242000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000949C9C007BC6E7005AC6F70042C6FF0039BD
+ FF0031B5FF0029B5FF0029BDFF0029B5FF0039BDFF0039B5FF0029B5FF0039B5
+ F7008CC6DE000000000000000000000000000000000000000000000000000000
+ 00000000000000000000210000009C310000FF000000FF000000FF000000CE00
+ 0000310063003100CE003131FF003100FF0000639C00008C000000FF000000FF
+ 0000008C0000310063000000DE00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFEF
+ F700B5E7FF0073CEFF005AC6FF004ABDFF0031B5FF0029ADFF0029B5FF004AB5
+ EF00B5E7FF000000000000000000000000000000000000000000000000000000
+ 9C000000000000000000000000009C9C9C009C9C9C0042424200424242009C9C
+ 9C009C9C9C0042424200424242009C9C9C009C9C9C0042424200424242009C9C
+ 9C00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000094ADB5007BC6E7005ABDEF004AB5FF0031B5FF0029ADFF0029B5FF004AAD
+ E70094ADB5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003131000031630000006300000042
+ 00000042000000633100009C630000639C0031639C003163CE0000319C000031
+ 63000000630000008C0000002100000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000D6EFF7008CDEFF0073CEF700DEEF
+ F700000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000424242009C9C9C009C9C9C004242
+ 4200424242009C9C9C009C9C9C0042424200424242009C9C9C009C9C9C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008C8C8C008CC6DE007BBDDE008484
+ 8400000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000310000008C
+ 000000BD000000CE0000009C000000633100000042000000AD003100CE000000
+ 6300000021000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000525252005252
+ 5200525252000000000000000000000000000000000042424200424242009C9C
+ 9C009C9C9C0042424200424242009C9C9C009C9C9C0042424200000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008463
+ 0000FF0000000000000000636300006363000063630000000000006363000063
+ 630000000000FF0000008463000000000000000000000000000000000000D6D6
+ F7002118DE001010F7004A4AFF004242FF004242FF004242FF004239FF002929
+ FF001010EF000808EF000808F7000000F7001008B500AD6B1800FF8C0000EF84
+ 0800EF8C0800FF940800FF9C0800FF940800000000000063FF000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000000000000CEFF0000CE
+ FF0000CEFF0000CEFF000000000000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF000000000000CEFF0000CEFF000000000000000000000000000000
+ 00002118DE001010F7004A52FF004242FF004242FF004242FF004239FF002929
+ FF001010EF000808EF000808F7000000F7001808B500AD6B1800FF940000EF8C
+ 0800EF8C0800FF940800FF9C0800FF9408000000000000000000000000000000
+ 0000000000000000000000000000000000000063630000000000000000008463
+ 0000FF0000000000000000000000000000000000000000000000000000000000
+ 000000000000FF000000FF00000000000000000000000000000000000000EFEF
+ F700635AEF001008D6006B63FF007B63FF006B6BFF006363FF006363FF006363
+ FF005A52FF005A52FF005252FF000810EF005A296B00DE8C1800FF9C0800F78C
+ 1000FF8C1000FF840800FF8C0000FF8C0000000000000000000000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00000000000000
+ 0000000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000000000000000000000000000000000000000000000
+ 0000635AEF000808D6006363FF008473FF006B63FF006363FF006363FF006363
+ FF005A52F7006352F7005252FF000810EF0063316B00DE8C1800FF9C0000F78C
+ 0800FF8C1000FF840000FF8C0000FF8400000000000000000000000000000000
+ 0000000000000000000000636300006363000000000000000000000000000000
+ 000000000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+ 0000FF000000FF0000000000000000000000000000000000000000000000F7F7
+ F700C6CEF7002121CE003931EF00948CFF008484F7008484FF00848CF700948C
+ F7009C94EF009C94FF005252EF001808BD00C67B3900FFA54200FF9C2100F79C
+ 2900FF9C2900FF9C2100FF8C1000FF841000000000000063FF000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FF
+ FF0000FFFF0000FFFF000000000000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF000000000000FFFF0000FFFF000000000000000000000000000000
+ 0000000000002121CE003121E7009494FF009494F700848CF700848CF700948C
+ F700A59CF7009C9CFF004A52EF001808BD00C67B4200FF9C3900FF9C2100F79C
+ 2900F79C2900FF9C2100FF8C1000F78408000000000000000000000000000000
+ 0000000000000000000000636300006363000000000000000000000000000000
+ 00000000000000000000FF000000FF000000FF000000FF000000FF000000FF00
+ 000000000000000000000000000000000000000000000000000000000000F7F7
+ EF00F7FFFF00A5A5EF001818C6003942EF009CA5FF00BDBDFF00ADADFF00B5B5
+ FF00A5ADFF004252FF001808BD0073395200F7AD3900F7B56B00F7A56300FFAD
+ 5A00EFAD6300EFAD5A00FFAD5A00F7A54A00000000000063FF00009CFF000000
+ 000000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF000000000000FFFF0000FFFF0000FFFF0000FF
+ FF000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+ 000000000000000000001810C6003131E7009C9CFF00C6C6FF00B5B5FF00BDBD
+ FF00A5ADFF00394AFF001808BD0073395200F7AD3900FFB56B00F7A56300FFAD
+ 5A00F7AD5A00EFAD5A00F7AD5200F7A552000000000000000000000000000000
+ 0000000000000063630000636300006363000063630000000000000000000000
+ 0000000000000000000000000000FF000000FF000000FF000000FF0000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7F7EF00FFFFF700ADA5E7003121D6003929E7007363F7007B7BF7006B73
+ EF003931E7002918D6008C7BC600D69C6300DE7B1800FFC67300FFD69400FFC6
+ 8400F7C68400FFC68400F7CE8400FFD68C00000000000063FF00009CFF00009C
+ FF000000000000000000000000000000000000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000000000000000
+ 000000FFFF0000FFFF0000FFFF0000FFFF000000000000000000000000000000
+ 00000000000000000000000000003121D6003929E7006B63F7007B7BF7006B73
+ EF004231DE002921D60000000000D69C6B00DE7B1800FFC67300FFDE9C00F7C6
+ 8C00F7BD8400FFBD8400F7CE8C00FFE794000000000000000000000000000000
+ 0000000000000000000000636300006363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000EFEFEF00FFFFF700D6DEEF00425ACE000010C6000010B5000018
+ AD00424AB500BDADD600FFFFFF00EFE7E700D6844A00E78C2900FFCE7B00F7EF
+ C600F7EFD600FFE7D600FFE7C600F7BD7300000000000063FF00009CFF000000
+ 000000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF000000000063FFFF0063FFFF0063FFFF0063FF
+ FF000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+ 000000000000000000000000000000000000425ACE000010C6000010B5000018
+ AD003942B500000000000000000000000000D6844A00E78C2900FFCE7B00FFF7
+ C600F7EFD600FFEFDE00FFE7C600F7B573000000000000000000000000000000
+ 0000000000000000000000636300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7F7F700CEDEE7007BA5BD005A9CBD00528CCE00527BD6004A84
+ CE004A84AD007394B500B5BDCE00EFF7EF00EFDED600D6945A00E77B3100F7A5
+ 6B00FFC68C00FFC67B00DE945A00B55A2900000000000063FF000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FF
+ FF0000FFFF0000FFFF000000000063FFFF0063FFFF0063FFFF0063FFFF0063FF
+ FF0063FFFF000000000000FFFF0000FFFF000000000000000000000000000000
+ 00000000000000000000000000007BA5BD005294BD00528CCE00527BD6004284
+ C6004A7BAD007394AD00000000000000000000000000D6945A00E77B3100F7A5
+ 6B00FFC68C00FFC67B00DE8C5A00B55A29000000000000000000000000000000
+ 0000000000000063630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000F7EF
+ EF00F7F7F700BDCEE7004A8CCE004A9CE70084C6F700A5DEFF00A5E7FF009CDE
+ F7008CC6EF004294D600316BA500A5B5AD00F7EFEF00F7EFEF00C6A59400A563
+ 4200945242007B52310094634200CEAD9400000000000000000000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00000000000000
+ 0000000000000000000063FFFF0063FFFF0063FFFF0063FFFF0063FFFF0063FF
+ FF0063FFFF0063FFFF0000000000000000000000000000000000000000000000
+ 00000000000000000000528CCE004A9CE70084C6F700A5DEFF00A5E7FF009CD6
+ F70094C6EF004A94D6003173AD00000000000000000000000000C6A59400A563
+ 4A00945242007B52390094634A00CEAD94000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFF7
+ F700C6DEE7004294CE0084ADF7009CDEFF0084D6F70094D6FF0094D6F70094D6
+ FF0094D6FF008CD6FF00639CDE004A73A5009CADCE0084A5CE00528CCE004A94
+ D6004A94D6004A94D6003984C6004284B500000000000063FF000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FF
+ FF0000FFFF0000FFFF000000000063FFFF0063FFFF0063FFFF0063FFFF0063FF
+ FF0063FFFF000000000000FFFF0000FFFF000000000000000000000000000000
+ 0000000000004294D60084ADF7009CDEFF008CD6F70094D6F70094D6F70094CE
+ FF0094D6FF008CD6FF0063A5DE004A73AD009CADCE0084A5CE005A94C6005294
+ D6004A94D6004A94D6004284C6004284B5000000000000000000000000000000
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000FF0000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF000000FF000000FF000000000000000000000000000000F7F7
+ F7007BA5DE0052ADEF0094CEFF008CCEFF0084CEFF008CC6FF0084C6FF0084CE
+ FF0084CEFF008CCEFF007BCEFF00318CCE00296BA50063A5D6007BC6EF0094D6
+ FF009CD6FF00ADDEFF009CD6FF006BADDE00000000000063FF00009CFF000000
+ 000000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF000000000063FFFF0063FFFF0063FFFF0063FF
+ FF000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+ 000073A5DE0052A5E70094CEFF008CC6FF0084CEFF0094C6FF0084C6FF0084CE
+ FF0084CEFF008CCEFF007BC6FF00318CD6002973A50063A5D6007BC6EF0094D6
+ FF009CD6FF00ADDEFF009CD6FF006BADDE000000000000000000000000000000
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF000000FF000000FF00000000000000000000000000000084B5
+ DE00187BC6001894D6004AA5E7005A9CEF0084BDFF008CC6FF0073C6FF006BBD
+ F7007BBDFF0084B5FF007BBDFF0052ADEF003184C60084CEFF0094D6FF0094D6
+ F70094D6F70094D6F7009CD6FF009CDEFF00000000000063FF00009CFF00009C
+ FF000000000000000000000000000000000000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000000000000000
+ 000000FFFF0000FFFF0000FFFF0000FFFF0000000000000000000000000084B5
+ DE002184C6002194DE004AA5E7005A9CEF007BB5FF008CC6FF0073C6FF006BBD
+ FF007BB5FF0084B5FF007BBDFF0052ADEF003184CE0084CEFF0094DEFF0094D6
+ F70094D6F70094D6F7009CD6FF009CDEFF00000000000000000000000000FF00
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+ 0000FF0000000000000000000000000000000000000000000000000000000000
+ 0000FF000000FF000000FF000000FF000000000000000000000000000000088C
+ CE0008CEF70000BDF70010A5EF00189CDE00218CD6005A9CDE0094BDFF008CBD
+ FF006BADFF005AADFF0063B5F7005AA5E7003184CE007BC6FF0094CEFF0094CE
+ FF008CCEFF0084C6FF0084C6FF0084C6FF00000000000063FF00009CFF000000
+ 000000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF000000000000FFFF0000FFFF0000FFFF0000FF
+ FF000000000000FFFF0000FFFF0000FFFF000000000000000000000000000084
+ CE0008C6EF0000BDEF0008A5E700189CDE002994D6005A9CDE008CBDF7008CC6
+ FF006BADFF005AADFF0063ADFF0063ADEF003184CE007BC6FF0094CEFF0094CE
+ FF008CCEFF007BC6FF007BC6FF0084C6FF00000000000000000000000000FF00
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FF0000000000000000000000000000000000000000000000000000000000
+ 0000FF0000000000000000000000000000000000000000000000000000000094
+ DE0008EFFF0000DEFF0010DEFF0010DEFF0000C6EF00009CD600298CCE0073AD
+ EF00A5CEFF008CC6FF007BC6FF0063ADF7001863AD004A84C6007BADE70094C6
+ FF008CC6FF006BB5FF0063B5FF006BB5FF00000000000063FF000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000000000000FFFF0000FF
+ FF0000FFFF0000FFFF000000000000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF000000000000FFFF0000FFFF00000000000000000000000000008C
+ DE0010EFFF0000E7FF0010DEFF0010DEFF0000C6EF00009CD600298CD60073AD
+ E7009CC6FF0094C6FF007BC6FF0063ADEF001863AD004A84C6007BADE70094C6
+ FF008CCEFF006BB5FF0063B5FF006BB5FF00000000000000000000000000FF00
+ 0000000000000063630000636300006363000000000000636300006363000000
+ 0000FF0000000000000000000000000000000000000000000000000000000000
+ 0000FF0000000000000000636300006363000000000000000000000000000884
+ D60010D6FF0029EFFF0029E7F70021E7FF0029E7FF0021E7FF0010BDE700108C
+ C6005294D60094BDEF00ADD6FF006BA5DE000052940000397B0010427B00426B
+ A5007BB5E7008CD6FF006BBDF7005AADFF00000000000000000000CEFF0000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF00000000000000
+ 0000000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000000000000000000000000000000000000000000884
+ D60018D6FF0029EFF70029E7F70021E7FF0029EFFF0018DEFF0008BDE7001094
+ C6005294D60094B5E700A5D6F70063A5DE000852940000397B0010428400426B
+ A50073ADDE008CCEFF0073BDFF0063ADFF00000000000000000000000000FF00
+ 0000000000000063630000636300006363000000000000636300006363000000
+ 0000FF0000000000000000000000000000000000000000000000000000000000
+ 0000FF0000000000000000636300006363000000000000000000000000002994
+ DE0029BDEF006BF7FF0063E7EF005AE7FF0063E7FF0052E7FF005AEFFF0052E7
+ FF0031B5DE00298CCE00428CD6002973B500005AA5001063A500105A94000042
+ 730010426B005A7BAD00A5CEFF009CDEFF00000000000063FF000000000000CE
+ FF0000CEFF0000CEFF0000CEFF0000CEFF0000CEFF000000000000CEFF0000CE
+ FF0000CEFF0000CEFF000000000031FFFF0031FFFF0031FFFF0031FFFF0031FF
+ FF0031FFFF000000000000FFFF0000FFFF000000000000000000000000002994
+ DE0031BDE7006BF7FF0063E7F7005AE7FF0063E7FF0052EFFF005AEFFF004ADE
+ FF0031B5DE003194D6004A94D6002973BD00005AA5000863A50008528C000042
+ 7300104273005A7BAD0094C6F7009CD6FF00000000000000000084630000FF00
+ 0000000000000063630000636300006363000000000000636300006363000000
+ 0000FF0000008463000000000000000000000000000000000000000000008463
+ 0000FF000000000000000063630000636300000000000000000000000000A5CE
+ EF003994C60073DEFF0094F7FF009CF7F7008CEFFF008CEFFF009CEFFF0094F7
+ FF008CFFFF0073EFFF0039BDF700006BCE00216BAD00317BB5003184B5003184
+ B5002963940010396B00214A73007B94AD00C6ADA500000000000063FF000000
+ 000000CEFF0000CEFF0000CEFF0000CEFF000000000000CEFF0000CEFF0000CE
+ FF0000CEFF0000CEFF0000FFFF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00003194C6006BDEFF009CFFFF009CF7F7008CEFFF008CEFFF0094EFFF009CF7
+ FF008CFFFF007BEFF70039BDF700006BC6002163A500317BB5003184B5003184
+ AD0021638C001039730029527B00738CAD00000000000000000084630000FF00
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FF000000FF00000000000000000000000000000000000000000000008463
+ 0000FF000000000000000000000000000000000000000000000000000000EFEF
+ EF00639CD600299CE70094EFFF00CEFFF700CEFFF700BDFFF700BDFFF700CEFF
+ F700CEFFFF0094EFFF0029A5E7001873CE005A94B5006BA5BD0063A5BD0063A5
+ BD0063A5C6005A94C6004A739C0039527300C6ADA500C6ADA500000000000063
+ FF000000000000000000000000000000000000CEFF0000CEFF0000CEFF0000CE
+ FF0000CEFF0000FFFF0000000000C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000639CD6002194E7008CEFFF00D6FFFF00D6FFFF00C6FFFF00C6FFF700D6FF
+ F700D6FFFF0094EFFF0029A5E700217BD6005A9CB50063A5BD0063A5BD0063A5
+ C60063A5CE005A94C600426B9400395273000000000000000000000000000000
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+ 0000FF0000000000000000000000000000000000000000000000000000000000
+ 000000000000FF000000FF000000FF000000000000000000000000000000F7F7
+ F700D6E7EF0073ADD6005AA5D60084CEEF00BDEFFF00DEF7FF00D6F7FF00ADEF
+ FF0063BDEF00298CDE0000529C005284BD009CCEDE0094BDD60094B5C6009CBD
+ CE009CBDD60094BDD6009CBDD6009CBDDE00C6ADA500C6ADA500C6ADA5000000
+ 00000063FF00009CFF00009CFF00009CFF000000000000CEFF0000CEFF0000CE
+ FF0000FFFF0000000000C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 00000000000073ADD6005AA5CE007BBDE700BDEFF700DEFFFF00DEF7FF00A5E7
+ FF0063BDEF00218CDE0000529C004A7BBD009CCEDE0094BDD60094B5C6009CBD
+ CE009CBDD60094BDDE009CC6DE009CBDDE000000000000000000000000000000
+ 000000000000FF000000FF000000FF000000FF000000FF000000FF0000000000
+ 0000000000000000000000636300000000000000000000636300000000000000
+ 00000000000000000000FF000000FF000000000000000000000000000000EFEF
+ EF00F7F7EF00FFFFF700ADC6E700639CD600639CE70063A5E700529CDE003994
+ DE00398CD6008CB5DE008CA5BD00295A7B0084ADC600C6E7FF00CEE7F700CEDE
+ E700CED6E700CEDEE700CEE7FF009CCEEF00C6ADA500C6ADA500C6ADA500C6AD
+ A500000000000063FF00009CFF00009CFF00009CFF000000000000CEFF0000FF
+ FF0000000000C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 00000000000000000000000000006B9CDE00639CE700639CDE00529CDE003994
+ DE004294D6000000000000000000295A7B0084ADC600CEE7FF00D6E7F700CEDE
+ E700CEDEE700D6DEEF00D6EFFF00A5D6F7000000000000000000000000000000
+ 00000000000000000000FF000000FF000000FF000000FF000000000000000000
+ 0000000000000000000000000000006363000063630000636300006363000000
+ 0000000000000000000000000000FF0000000000000000000000000000000000
+ 000000000000EFEFEF00F7F7FF00EFEFFF00CEDEF700A5CEEF00A5C6DE00BDD6
+ E700DEE7F700FFF7FF00F7F7F700A5B5C600426384007B94AD00BDCEE700D6E7
+ FF00DEEFFF00CEDEF7008CA5CE00294A6B00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA5000000000000000000000000000000000000000000000000000000
+ 0000C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000004A6B8C007B94AD00BDCEE700DEEF
+ FF00DEEFFF00C6DEF70084A5C600294A6B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000063630000636300006363000063
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7EFEF00F7F7EF00F7F7F700FFFFF700FFF7F700FFF7
+ F700F7F7EF00EFEFEF00F7F7F700FFF7F700CED6DE006B8CA5004A6B7B004263
+ 840039638400184A7B0021427B007B8CAD00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000007394A5004A6B7B004263
+ 84003963840018527B00214A8400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000636300000000000000
+ 0000006363000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000847B8C00847B8C008C847B008C5A840073299400738CBD005ABD
+ D60052A5C60063BDD60084C6EF006BB5D600529CCE004AA5D60063A5CE007384
+ A500527B8C007BADB5008C849C008C7B94000000000000000000000000000000
+ 000000000000000000001831630073ADEF0052BDEF000831630052636300A5AD
+ A50029424200427384006384B5005284A5005284A5005284A5006384A5006384
+ A50052849400528494005284A500527394000000000000000000000000000000
+ 000000000000847B8C00847B8C008C847B008C5A840073299400738CBD005ABD
+ D60052A5C60063BDD60084C6EF006BB5D600529CCE004AA5D60063A5CE007384
+ A500527B8C007BADB5008C849C008C7B94000000000000000000000000000000
+ 00000000000000000000213152006BA5E70039C6F70000315A0052636B0084A5
+ A500394A4A00526B7B00638CB5004284B5005284A5005284A5005A84A5005A84
+ AD005A8494004A8494003984B5005A7B8C000000000000000000000000000000
+ 0000000000006BC6D60073C6CE0073BDB50063A5B50073B5DE006BCEE70042A5
+ BD0084BDD600ADE7E700A5CEC600B5C6CE0084A5C6005A9CC600529CC6005A8C
+ A5006384AD00739CDE006B8CD6009494DE000000000000000000000000000000
+ 00000000000000000000000000000831630073ADEF0052BDEF00083163007331
+ 2900A5ADA50018425200427384006384B5006384A5005284A5006384A5005284
+ A5005284A500528494005284A500525252000000000000000000000000000000
+ 0000000000006BC6D60073C6CE0073BDB50063A5B50073B5DE006BCEE70042A5
+ BD0084BDD600ADE7E700A5CEC600B5C6CE0084A5C6005A9CC600529CC6005A8C
+ A5006384AD00739CDE006B8CD6009494DE000000000000000000EFF7F700F7F7
+ F70000000000EFF7F700C6DEFF000839730073ADF7006BC6E700213952005A31
+ 29008CA5AD0021424A00396B94004A84AD006384A5006384AD006B84A5005A7B
+ AD005A7B9400528C9C004284AD00734242000000000000000000000000000000
+ 0000000000005ABDD6004ADEDE005ADEE70063DEE70052D6EF00399CC60063CE
+ E7008CE7E700B5D6DE00BDCECE00BDBDB5007B94A5005A94BD00529CC6005294
+ BD004A84BD006B84CE00949CD6008C84CE000000000000000000000000000000
+ 0000000000000000000084BDEF006394CE000831630084BDEF006394A5002931
+ 2900733129004273840018425200427384006384B5006384B5005284A5005284
+ 94006384A5005273A5005284A500FF4208000000000000000000000000000000
+ 0000000000005ABDD6004ADEDE005ADEE70063DEE70052D6EF00399CC60063CE
+ E7008CE7E700B5D6DE00BDCECE00BDBDB5007B94A5005A94BD00529CC6005294
+ BD004A84BD006B84CE00949CD6008C84CE000000000000000000000000000000
+ 000000000000CEEFFF0094BDEF006B8CC60000296B009CB5EF00849494003931
+ 39006331210052848C0008394A004A6B9400738CAD005284AD004A7B9C004A84
+ AD006B84A500397B9C004A849C00F74221000000000000000000B5ADBD008473
+ 94007B6394005A4A840052848C0063C6BD0063CEEF0052BDEF0042A5CE005AD6
+ E70063D6DE0084D6DE00BDDEDE00BDBDB50073737B0042849C0042ADCE004A8C
+ BD004A73B500A5B5D600C6BDC600A58CC6000000000000000000000000000000
+ 000084BDEF005284B5006394CE006394CE006394CE0052636300FFFFFF00B5BD
+ 840018211800733129004273840018425200426363006384B5005284A5005284
+ A5005284A5005284A5005284A500FF4208000000000000000000B5ADBD008473
+ 94007B6394005A4A840052848C0063C6BD0063CEEF0052BDEF0042A5CE005AD6
+ E70063D6DE0084D6DE00BDDEDE00BDBDB50073737B0042849C0042ADCE004A8C
+ BD004A73B500A5B5D600C6BDC600A58CC600000000000000000000000000D6EF
+ F700A5C6DE005284AD006394C6007B9CD6005A9CDE0042527300FFF7FF00B5BD
+ 9400081808005A3921005A7B8C0021425200315A7300528CAD005A8CAD00397B
+ A500527BA500397BA5004A8C9C00FF4200000000000000000000C6C6B500BDB5
+ 9C00C6BD9C00BDAD8C00C69C5A009473390042ADA50039C6EF004AA5D6005ACE
+ EF0039CEDE0052D6E7007BE7EF0094B5AD0042424A003173940042A5C600396B
+ BD00737BB500B59CC600AD73C6009C73CE0000000000000000000000000084BD
+ EF0063ADDE006394CE007394CE006394CE006394DE006394B50052636300FFFF
+ FF00B5BD840018211800733129004273840018425200427384006384B5005284
+ A5005284A5006384A5005284A500FF4208000000000000000000C6C6B500BDB5
+ 9C00C6BD9C00BDAD8C00C69C5A009473390042ADA50039C6EF004AA5D6005ACE
+ EF0039CEDE0052D6E7007BE7EF0094B5AD0042424A003173940042A5C600396B
+ BD00737BB500B59CC600AD73C6009C73CE0000000000000000000000000094C6
+ D6007BB5DE006B94CE006B94CE006394CE005A94C600638CBD005A636300EFFF
+ FF00BDC68C00181810006331210052737300104A52004A6B84007384A5004A8C
+ AD00637BAD005284B500528C9C00F74A0000000000000000000000000000ADA5
+ A50000000000BDA58C00CEAD6300AD7B31008C845A004AB5CE004AA5DE0042AD
+ DE0021B5DE00219CD6002994D60042637B0021395A00428CB5003194BD00426B
+ B500845AC6009C4ACE009C4AD6008C4ADE000000000000000000000000006394
+ DE0073ADDE0063ADDE007394CE006394CE006394DE006394CE006394CE005263
+ 6300FFFFFF00B5BD840018211800733129004273840029424200426363005273
+ A5006384A5005284A5005284A500FF420800000000000000000000000000ADA5
+ A50000000000BDA58C00CEAD6300AD7B31008C845A004AB5CE004AA5DE0042AD
+ DE0021B5DE00219CD6002994D60042637B0021395A00428CB5003194BD00426B
+ B500845AC6009C4ACE009C4AD6008C4ADE0000000000DEE7EF00D6EFFF00639C
+ C6006BADE7007BA5E7006B94D6005A94D600739CD60063A5C6005A94BD005A6B
+ 5A00FFFFFF00CEBD9C000821180052312900526B730018425A00315A6B004A7B
+ A50063739C005A84AD006B849C00FF39080000000000EFEFEF00000000000000
+ 00000000000000000000A5946B00C6945200D6AD7B00739C9C0039A5DE004AA5
+ DE00219CDE000873D6000842AD0008428C003973A500398CBD001873AD003963
+ AD005A31CE005A10D6006329CE006B39CE00000000000000000073ADDE0063AD
+ DE007394DE006394DE006394DE006394DE007394CE006394CE006394CE006394
+ CE0052636300FFFFFF00FFFFFF00293129005242520018315200184252001842
+ 5200294252006384A5005284A500FF4208000000000000000000000000000000
+ 00000000000000000000A5946B00C6945200D6AD7B00739C9C0039A5DE004AA5
+ DE00219CDE000873D6000842AD0008428C003973A500398CBD001873AD003963
+ AD005A31CE005A10D6006329CE006B39CE00EFEFE700E7FFFF007BA5DE0073AD
+ EF00639CD6006394D600739CE7006394E7006B8CCE005A94DE005A9CCE00739C
+ CE005A5A6300DEFFFF00FFFFF70039312900524A5A0008313900084242001842
+ 630031395A005A8CA5006B7BA500C63929000000000000000000000000000000
+ 0000000000000000000000000000AD8C5A00DEB58400ADB59C0029A5D600319C
+ DE00429CCE003194DE002984D6002973AD00296B9C002973B500185294003952
+ 9400424AB5001821C6003129DE005231DE000000000084BDEF0063ADDE007394
+ DE0073ADDE006394DE006394DE006394DE007394DE006394DE006394CE006394
+ DE006384CE005263630042636300000800000000000000080000182118001831
+ 5200183152005284A5005284A500528494000000000000000000000000000000
+ 0000000000000000000000000000AD8C5A00DEB58400ADB59C0029A5D600319C
+ DE00429CCE003194DE002984D6002973AD00296B9C002973B500185294003952
+ 9400424AB5001821C6003129DE005231DE00F7F7EF0094BDD60063A5E7006394
+ EF007BA5EF006394CE006394D6006394E7007394E700738CE700638CE7005A9C
+ DE005A8CBD005A5A6B005A636300000000000000080000000000212129001829
+ 4A0018314A005A7B94004A7BA500638C7B000000000000000000000000000000
+ 00000000000000000000000000009C8C5200C6AD5200A5BD73001894CE001094
+ EF002194DE00318CCE000039520010ADAD0021B5B50018526B0021426B00294A
+ 84005A73BD002139AD002129CE003131CE000000000084BDEF0073ADDE0073AD
+ DE006394DE0063ADDE0073ADDE0063ADDE006394DE006394DE007394CE006394
+ CE006394CE006394B50052739400182118000000000000000000080029000800
+ 080018315200294242006384A500526394000000000000000000000000000000
+ 00000000000000000000000000009C8C5200C6AD5200A5BD73001894CE001094
+ EF002194DE00318CCE000039520010ADAD0021B5B50018526B0021426B00294A
+ 84005A73BD002139AD002129CE003131CE00EFEFF7009CBDE70084A5DE0063B5
+ E7006B9CDE005AADE70073ADE70063A5DE006B94E7006B9CDE006394CE006394
+ C600639CCE006394B5005A738C00101829000808000000000800000039000008
+ 000029315200184239005284A50063639C000000000000000000000000000000
+ 0000000000000000000000000000AD945A00BD8C4A00639494000084D6001073
+ CE00297BB50031527300086B7B0029EFE70021FFEF0063DEE7004A7B8C001839
+ 630042639400526BD6002942C6004A5AC6000000000084BDEF007394DE0008DE
+ FF0008DEFF0008DEFF0008DEFF0008DEFF0073ADDE0063ADDE007394CE006394
+ CE006394CE006394CE005284A500293129000808000000000000080029001800
+ 520042217300184252006352B500FF0884000000000000000000000000000000
+ 0000000000000000000000000000AD945A00BD8C4A00639494000084D6001073
+ CE00297BB50031527300086B7B0029EFE70021FFEF0063DEE7004A7B8C001839
+ 630042639400526BD6002942C6004A5AC600EFEFF7007BBDE70052B5E70008DE
+ FF0008D6FF0000DEFF0000E7FF0000E7FF00739CE70073A5E700739CDE00638C
+ D6006394D6006B94CE0063849C00182931000000100000001000210031002100
+ 520039187B00293952008463A500E70884000000000000000000000000000000
+ 0000000000000000000000000000B59C5A007B8C7300218CDE002173C600637B
+ 9C00B5948400214A630018C6CE0021FFFF0018FFEF005AFFFF0094F7FF006BAD
+ BD00316384005A73AD005A73CE004A5AC6000000000084BDEF0073BDEF0000EF
+ FF0000DEFF0000EFFF0000EFFF0000EFFF007394DE006394DE0063ADDE006394
+ DE007394DE006394DE006384B500426363002921420000080000180052002900
+ 630042087300183152006373A500FF0884000000000000000000000000000000
+ 0000000000000000000000000000B59C5A007B8C7300218CDE002173C600637B
+ 9C00B5948400214A630018C6CE0021FFFF0018FFEF005AFFFF0094F7FF006BAD
+ BD00316384005A73AD005A73CE004A5AC600FFEFFF0084BDE70063B5EF0000F7
+ FF0000E7FF0000E7FF0000EFFF0000EFFF00639CD6006B9CD6007BA5E7006B94
+ E7006394DE006B9CDE006B94B500395A63002921310000100000100039001800
+ 6B0039106B00183152006B6BA500FF0084000000000000000000000000000000
+ 000000000000F7F7DE00BDBD7B009C9C4A00949C63005A6B730073635200CEC6
+ 9C00394A6B0010849C0018FFFF0010FFFF0052FFFF0052F7F70084FFFF0084FF
+ FF0052CEDE00297B9C00215284003163CE000000000084BDEF0073BDEF0000EF
+ FF0000DEFF0000DEFF0000EFFF0000DEFF0073ADDE006394DE0063ADDE006394
+ DE007394DE006394CE006394CE005284B5005252520029315200420873004200
+ 84006300B500293152006373A500FF0884000000000000000000000000000000
+ 00000000000000000000BDBD7B009C9C4A00949C63005A6B730073635200CEC6
+ 9C00394A6B0010849C0018FFFF0010FFFF0052FFFF0052F7F70084FFFF0084FF
+ FF0052CEDE00297B9C00215284003163CE00EFEFF70084BDEF0073B5EF0000EF
+ FF0000E7FF0000E7FF0000EFFF0000EFFF0063A5EF005A94D6006BA5E7006B9C
+ E7005A94DE005A94DE006394C6005A8CAD005A5263002142290031086B004200
+ 94006B08A50018295A00427BA500F7088C000000000000000000000000000000
+ 0000E7EFDE00ADB573009CA55A00ADAD7300B5AD7300846B42006B523100A5A5
+ 9C00084A730010E7E70008FFFF0039FFFF0052F7F70084FFFF007BE7F70031C6
+ D60010DEEF0042E7F700317B9C0010396B000000000084BDEF0073ADEF0000EF
+ FF0000EFFF0000EFFF0000EFFF0000EFFF0073ADEF0073ADDE006394DE0073AD
+ DE006394DE006394DE006394CE006394CE005284B50052638400522173006300
+ B5007308FF001821630052639400FF0894000000000000000000000000000000
+ 000000000000ADB573009CA55A00ADAD7300B5AD7300846B42006B523100A5A5
+ 9C00084A730010E7E70008FFFF0039FFFF0052F7F70084FFFF007BE7F70031C6
+ D60010DEEF0042E7F700317B9C0010396B00F7EFF70084C6EF0073B5EF0000EF
+ FF0000E7FF0008E7FF0000EFFF0000EFFF007BB5FF006BA5E70073A5DE006BA5
+ DE005A9CD6005A94DE00638CDE007394DE00527BAD0042638C00522173005A00
+ C6007300EF0018107B00526BAD00FF008C000000000000000000000000000000
+ 0000DEE7DE00B5B59400DEDEC600F7F7EF00FFFFF700C6BDB5004A4A39005273
+ 940021A5BD0008FFFF0018FFFF0063FFFF0063F7FF0084FFFF004ACEE70018CE
+ DE0000BDCE00088CA50031638C00637B9C000000000084BDEF0084BDEF0000DE
+ FF0000EFFF0000EFFF0000DEFF0000EFFF0073ADEF0073ADDE0073ADDE0073AD
+ DE0063ADDE0063ADDE007394CE007394CE006394CE006394CE006384B5006352
+ B5006321CE00420084006373A500FF0884000000000000000000000000000000
+ 000000000000B5B59400000000000000000000000000C6BDB5004A4A39005273
+ 940021A5BD0008FFFF0018FFFF0063FFFF0063F7FF0084FFFF004ACEE70018CE
+ DE0000BDCE00088CA50031638C00637B9C00FFEFF7008CC6EF0063B5E70000EF
+ FF0000EFFF0000EFFF0000EFFF0000EFFF0073ADE7007BADDE007BADD6007BB5
+ D60073B5E70073ADEF006B9CDE006B8CCE006B94DE00638CCE006B7B94005A52
+ BD006B29BD00310094006B5A9C00DE217B000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECED6005A7394000073
+ 8C0029F7F70018FFFF004AFFFF006BF7F7008CFFFF007BFFFF0039EFF70010D6
+ E700007B940039738C006B7B9C00394A63000000000084BDEF0073BDEF0008DE
+ FF0008DEFF0008DEFF0008DEFF0008DEFF0073ADDE0073ADEF0073ADEF0073AD
+ EF0073ADEF0073ADEF0073ADEF006394DE006394CE006394DE006394CE006394
+ CE006384B5007308FF006384B5006394B5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000005A7394000073
+ 8C0029F7F70018FFFF004AFFFF006BF7F7008CFFFF007BFFFF0039EFF70010D6
+ E700007B940039738C006B7B9C00394A6300E7EFE7008CCEEF005AB5E70008DE
+ F70010DEFF0000DEFF0000DEF70000DEFF0073ADDE0084BDEF006BA5E70063A5
+ FF0063ADFF0063A5FF006BA5F7006B9CDE00739CD6006384E7007394E7005A8C
+ DE008473C6007318EF007373CE007B8CA5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A5B5BD00315A8C0021C6
+ D60000FFF70039FFFF0073FFFF0073FFFF009CFFEF0094FFFF0039E7E70010CE
+ DE0018849C0029425A0084848C00E7DED600000000000000000084BDEF0073AD
+ EF0084ADEF0073ADEF0063ADDE0073ADEF0073ADEF0073ADEF000042FF000052
+ FF000052FF000042FF000852FF006394DE007394DE006331DE007308FF007308
+ FF007308FF007308FF006331DE005294B5000000000000000000000000000000
+ 00000000000000000000000000000000000000000000A5B5BD00315A8C0021C6
+ D60000FFF70039FFFF0073FFFF0073FFFF009CFFEF0094FFFF0039E7E70010CE
+ DE0018849C0029425A0084848C00C6ADA500F7F7EF00BDE7FF00A5BDF7006BBD
+ EF0084A5EF0063ADEF0073A5E70073ADEF0063ADF7005AA5FF00215AE700104A
+ FF00084AFF000042F7002163E7004A8CEF007B94DE005A29DE006B10F7004A00
+ FF007310F7007B00FF005A31EF004A94B5000000000000000000000000000000
+ 000000000000000000000000000000000000F7F7F7005A7BA5000863940010D6
+ EF0000E7E70042FFFF007BFFFF008CFFFF0094FFE700A5F7FF0042DEF70008D6
+ E70000636B008C9494000000000000000000000000000000000084BDEF006394
+ CE0073ADEF0073ADEF0073ADEF0073ADEF0073ADEF0073ADEF000052FF000052
+ FF000042FF000052FF000852FF0073ADDE006394DE007308FF007308FF007300
+ FF007308FF007308FF006331DE006394CE000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA5005A7BA5000863940010D6
+ EF0000E7E70042FFFF007BFFFF008CFFFF0094FFE700A5F7FF0042DEF70008D6
+ E70000636B008C9494000000000000000000F7F7EF00DEEFF7009CC6E7005A94
+ CE0063ADEF006BB5F70073ADEF0073ADE70084ADEF007BB5EF00084AFF000052
+ FF000042FF000052FF000042FF0063B5DE005A8CE7005221EF007300FF007300
+ FF007300F7007B00FF005221DE006394D6000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE008C8CAD0010426300108C
+ 9C0039DEDE006BFFF70094FFFF0094FFF700B5FFEF00BDF7FF0052E7FF0008D6
+ DE0010737B00E7E7E700000000000000000000000000000000000000000084BD
+ EF0073BDEF0073ADEF0084BDEF0073ADEF0073ADEF0073ADEF000052FF000052
+ FF000042FF000052FF000852FF0073ADDE0063ADDE006331DE007300FF007308
+ FF007308FF007308FF006331DE007394CE000000000000000000000000000000
+ 000000000000000000000000000000000000BDADA5008C8CAD0010426300108C
+ 9C0039DEDE006BFFF70094FFFF0094FFF700B5FFEF00BDF7FF0052E7FF0008D6
+ DE0010737B00C6B5AD000000000000000000FFF7EF00EFF7F700CEE7FF009CC6
+ EF007BB5EF0073ADEF0073B5F7007BB5FF0073ADF70073ADFF000042FF000052
+ FF00004AFF000852F700184AFF0073B5D6007BADEF005A29DE006B00F7007B08
+ F7008410FF008408FF005A29D6006B9CCE000000000000000000000000000000
+ 000000000000000000000000000000000000D6C6CE00AD9CA500525263000829
+ 31002163630094EFEF00ADFFFF00ADFFF700B5F7FF00B5FFFF0029D6EF0000DE
+ E700086B7300E7E7E70000000000000000000000000000000000000000000000
+ 000084BDEF0073ADEF0073ADEF0073ADEF0073ADEF0073ADEF000042FF000052
+ FF000052FF000042FF000852FF0063ADDE007394DE006331DE007308FF007300
+ FF007308FF007308FF006331DE006394CE000000000000000000000000000000
+ 00000000000000000000000000000000000000000000AD9CA500525263000829
+ 31002163630094EFEF00ADFFFF00ADFFF700B5F7FF00B5FFFF0029D6EF0000DE
+ E700086B7300C6B5AD000000000000000000000000000000000000000000CEE7
+ F700A5C6EF007BADE7006BADEF006BADF70073ADEF0073ADF700084AFF000052
+ FF00004AFF00084AFF00184AFF0063A5DE007394D6006331DE007B00FF007B00
+ FF007B00FF007300FF006331DE006B94CE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000CECECE00E7E7
+ E700294A4A00A5EFEF00A5FFFF00ADFFFF0073FFFF0042E7F70010F7FF0018F7
+ FF00186B7300E7E7E70000000000000000000000000000000000000000000000
+ 00000000000084BDEF0073BDEF0073ADEF0073ADEF0073ADEF000042FF000042
+ FF000042FF000042FF000852FF0073ADDE0073ADDE006331DE007308FF007308
+ FF007308FF007308FF006331DE006394CE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000294A4A00A5EFEF00A5FFFF00ADFFFF0073FFFF0042E7F70010F7FF0018F7
+ FF00186B7300C6B5AD0000000000000000000000000000000000000000000000
+ 0000DEE7F700ADCEEF007BB5E7006BADEF007BB5F7006BA5F7001042FF000039
+ FF000031FF000842FF002152FF005AA5EF0084A5EF006339E7005A00F7006308
+ FF006308FF006308FF005A39E7006B8CDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000396363008CF7FF0063F7FF004ADEF70000DEDE0018EFF70018E7EF000094
+ 9C0029525A00EFE7E70000000000000000000000000000000000000000000000
+ 0000000000000000000084BDEF0084BDEF0073ADEF0073ADEF0073ADEF0073AD
+ EF0073ADEF0073ADEF0073ADDE006394DE0073ADEF0073ADEF0073ADEF0073AD
+ EF0073ADEF0073ADEF0073ADEF006394CE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000396363008CF7FF0063F7FF004ADEF70000DEDE0018EFF70018E7EF000094
+ 9C0029525A000000000000000000000000000000000000000000000000000000
+ 0000F7F7F700D6E7F700A5CEE70094BDE70063ADEF0063BDEF005AADF70063BD
+ EF005AB5EF0063ADF7006394F7006BADD60063BDE7006BA5F7007BADFF007BAD
+ EF007BADEF0084ADFF006BA5EF004A9CC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029525A0042BDC60021DEE70008DEEF0021D6DE00108C9C0000525A004A73
+ 7B00DEDEE7000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000084BDEF0084BDEF0084BDEF0084AD
+ EF0073ADEF0073ADEF007394DE0073ADDE0063ADDE0073ADDE0073ADDE0073AD
+ DE0063ADDE0063ADDE006394CE007394CE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029525A0042BDC60021DEE70008DEEF0021D6DE00108C9C0000525A004A73
+ 7B00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000DEEFFF00D6EFFF0094BDEF008CC6E7008CBDF70084BD
+ EF006BADE7007BB5F7007BA5EF006BA5CE006BADDE0063A5E7006BB5EF006BB5
+ DE0063ADCE0073ADDE006B9CD6006394BD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007B8C8C0008525A0018949C000894A500104A5A005A6B7B00E7E7E7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000084BDEF0084BDEF0084BDEF006394CE0073ADDE006394DE0073ADDE006394
+ DE006394DE006394DE0052738400293129000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007B8C8C0008525A0018949C000894A500104A5A005A6B7B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000DEF7F700E7EFFF00D6DE
+ F700ADC6EF009CBDEF0094ADDE006BA5BD0084ADD60073A5DE006BADEF00639C
+ E7006394DE00739CCE004A638C00292939000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6CE0031394A004A5A7300E7DEE700FFFFFF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084BDEF0084BDEF0073AD
+ EF0084BDEF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000BDB5B50031394A004A5A73000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FFEF
+ F700E7EFFF00EFEFFF00F7F7F700DEF7EF00D6EFFF009CC6E70084BDE7007BAD
+ E70094BDF700CEEFFF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7E7E700AD9C9C00CE9C9C00FFDEDE00FFDE
+ E700FFCED600FFD6DE00DEC6CE00C6BDBD00F7F7F700E7E7E700DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE000000000000000000000000000000
+ 00006B6B29006B6B29008484000084840000427B94001863CE002163C6002163
+ BD0010213900294A84002952B5002952AD00107BE700107BE700107BE700107B
+ E700107BE700107BE700107BE700107BE7000000000000000000000000000000
+ 0000000000000000000000000000CEB5AD00AD9C9C00CE9C9C00FFDEDE00FFDE
+ E700FFCED600FFD6DE00DEC6CE00C6BDBD00F7F7F700E7E7E700CEB5AD000000
+ 000000000000CEB5AD0000000000000000000000000000000000000000000000
+ 00009C948C00DEBDAD00F7DECE00D6BDB500BDB5AD00BDBDBD00BDBDBD00B5B5
+ B500C6C6BD00BDBDBD00BDB5B500CEC6C600CECEC600C6C6BD00C6BDBD00C6BD
+ B500CEBDBD00D6CEC600E7DED600F7EFE7000000000000000000000000000000
+ 00000000000000000000E7E7E700B59C9C00CE9C9C00F7D6DE00FFDEE700FFCE
+ D600FFCECE00FFCED600DEBDBD00C6BDBD00F7F7FF00E7E7E700DEDEDE00DEDE
+ DE00E7E7E700F7EFF700F7F7F700F7F7F7000000000000000000000000000000
+ 0000000000004A4A390084840000848400003173B500216BCE002163CE00295A
+ BD0018213900294A9C003152B5002152AD00107BE700107BE700107BE700107B
+ E700107BE700107BE700107BE700107BE7000000000000000000000000000000
+ 00000000000000000000CEB5AD00B59C9C00CE9C9C00F7D6DE00FFDEE700FFCE
+ D600FFCECE00FFCED600DEBDBD00C6BDBD00F7F7FF00E7E7E700CEB5AD00CEB5
+ AD00CEBDBD00F7EFF700F7F7F700F7F7F700000000000000000000000000A59C
+ 9C00C6AD9C00F7D6C600F7DECE00C6B5AD00C6BDB50094949400424242005252
+ 5200737373007B7B7B008C8C8C0094949400848484009C9C9C00ADADAD00ADAD
+ AD00C6C6C600D6D6D600CECECE00D6CECE000000000000000000000000000000
+ 000000000000E7E7E700B59C9C00CE9C9C00FFDEDE00FFDEE700FFCED600FFCE
+ CE00FFCECE00FFCECE00DEB5BD00C6BDBD00F7F7FF00E7E7E700DEDEDE00DEDE
+ DE00DEDEDE00DED6DE00DEDEDE00DEDEDE000000000000000000000000000000
+ 000000000000393918007B7B2100848400002973C600216BCE002163CE00215A
+ AD00182139003152AD003152AD002152AD00107BE700107BE700107BE700107B
+ E700107BE700107BE700107BE700107BE7000000000000000000000000000000
+ 000000000000CEB5AD00B59C9C00CE9C9C00FFDEDE00FFDEE700FFCED600FFCE
+ CE00FFCECE00FFCECE00DEB5BD00C6BDBD00F7F7FF00E7E7E700DEDEDE00DEDE
+ DE00DEDEDE00DED6DE00DEDEDE00DEDEDE000000000000000000BDBDBD00AD9C
+ 9400E7CEB500F7DECE00EFD6CE00BDADA500CEC6BD0063636300000000000808
+ 0800000000000000000000000000000000000808080018181800313131003131
+ 31003939390039393900424242005A5A5A000000000000000000000000000000
+ 0000E7E7E700AD9C9400CE9C9C00F7D6D600FFDEE700FFCED600FFCECE00FFCE
+ CE00FFCECE00FFCECE00DEB5BD00C6BDBD00FFFFFF00F7F7FF00F7EFF700F7F7
+ F700D6D6D6007B7B7B006B6B6B009C9C9C000000000000000000000000000000
+ 0000000000005A5A18006B6B290084840000186BD600216BCE002163CE001852
+ 9C0018214200315AB5002952AD002152AD00107BE700107BE700107BE700107B
+ E700107BE700107BE700107BE700107BE7000000000000000000000000000000
+ 0000CEB5AD00B59C9C00CE9C9C00F7D6D600FFDEE700FFCED600FFCECE00FFCE
+ CE00FFCECE00FFCECE00DEB5BD00C6BDBD00FFFFFF00F7F7FF00F7EFF700F7F7
+ F700D6D6D6007B7B7B006B6B6B009C9C9C0000000000E7E7E700A59C9C00D6B5
+ A500F7D6C600F7DECE00E7CEBD00BDA59C00D6CEC6005A5A5A00212121004242
+ 42004242420042424200181818000000000000000000000000004A4A4A004242
+ 420031313100393939001818180029292900000000000000000000000000E7E7
+ E700B59C9C00CE9C9C00FFDEDE00FFDEE700FFCED600FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00DEB5BD00B5ADB500DEDEDE00DEDEDE00DEDEDE00E7DE
+ E700C6C6C60063635A0042393900ADADAD000000000000000000000000000000
+ 000000000000000000004A42290084840000186BD600186BCE002163CE001842
+ 7B0018294A00315ABD003152AD002152B500187BE700107BE700107BE700107B
+ E700107BE700107BE700107BE700107BE700000000000000000000000000CEB5
+ AD00B5A59C00CE9C9C00FFDEDE00FFDEE700FFCED600FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00DEB5BD00B5ADB500DEDEDE00DEDEDE00DEDEDE00E7DE
+ E700C6C6C60063635A0042393900ADADAD0000000000C6CECE00AD9C9400EFCE
+ BD00F7DEC600F7DECE00DEC6B500BDA59C00C6BDB50063636300292929007373
+ 730063636300636363005A5A5A00393939003131310031313100393939003131
+ 31003939390031313100101010004A4A4A000000000000000000E7E7E700AD9C
+ 9C00CE9C9C00F7D6DE00FFDEE700FFCED600FFCECE00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00EFBDC600C6A5AD00BDA5B500BDADB500BDADB500BDAD
+ B500BDADB500B59C9C00946B63006B5252000000000000000000000000000000
+ 000000000000000000004A422900296B9C001873DE00186BCE00296BCE001829
+ 4A0021397300315ABD003152AD002152B500187BE700107BE700107BE700107B
+ E700107BE700107BE700107BE700107BE7000000000000000000CEB5AD00B59C
+ 9C00CE9C9C00F7D6DE00FFDEE700FFCED600FFCECE00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00EFBDC600C6A5AD00BDA5B500BDADB500BDADB500BDAD
+ B500BDADB500B59C9C00946B63006B525200F7F7F700B5ADAD00C6AD9C00F7D6
+ C600F7D6C600F7DECE00D6BDAD00BDA59C00B5ADA50052525A00000000000000
+ 00000000000010101000212121003131310042424200424242004A4A4A005252
+ 52004A4A4A004A4A4A00525252004A4A4A0000000000E7E7E700B59C9C00CE9C
+ 9C00FFDEDE00FFDEE700FFCED600FFC6CE00FFC6C600FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFC6CE00FFC6CE00FFC6CE00FFD6
+ D600FFDEE700FFD6DE00EFB5B500945A5A000000000000000000000000000000
+ 000000000000000000005A5A420010427B001873E700186BCE002163BD001021
+ 3100294A9C00315ABD003152AD002152B500187BE700107BE700107BE700107B
+ E700107BE700107BE700107BE700107BE70000000000CEB5AD00B5A59C00CE9C
+ 9C00FFDEDE00FFDEE700FFCED600FFC6CE00FFC6C600FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFC6CE00FFC6CE00FFC6CE00FFD6
+ D600FFDEE700FFD6DE00EFB5B500945A5A00E7E7E700ADA59C00DEC6B500F7D6
+ C600F7D6C600EFD6C600CEB5A500BDAD9C00BDB5AD0042424200292929004242
+ 4200393939002929290008080800080808000808080010101000393939004242
+ 42003131310029292900424242004A4A4A0000000000BDADAD00B5848400F7D6
+ D600FFDEE700EFBDBD00DEA5AD00E7ADB500E7ADAD00FFC6C600FFCED600FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ D600FFD6DE00FFDEE700FFC6CE00B5737B000000000000000000000000000000
+ 000000000000000000000000000010427B002173D600186BD6002152A5001018
+ 2900315AAD00315ABD003152AD002152B500187BE700107BE700107BE700107B
+ E700107BE7001073E7001073E7001073E70000000000BDADAD00B5848400F7D6
+ D600FFDEE700EFBDBD00DEA5AD00E7ADB500E7ADAD00FFC6C600FFCED600FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ D600FFD6DE00FFDEE700FFC6CE00B5737B00D6D6D600B5A59C00EFCEBD00EFD6
+ C600F7D6C600EFD6BD00C6AD9C00BDAD9C00ADADA50039393900525252007B7B
+ 7B006B6B6B00525252005A5A5A005A5A5A006B6B6B0042424200212121002121
+ 210010101000181818003131310031313100E7E7E700AD949400C69C9C00FFDE
+ DE00FFCED600C68C9400844A5200BD848400D69C9C00DEADAD00FFC6C600FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCED600E7ADB500A56B73000000000000000000000000000000
+ 000000000000000000000000000094A5BD001873DE00186BD600213973001829
+ 4A00295AC6003152AD00314AA500294AAD001873E7001073E700106BE7001073
+ E7001073E7001073E7001873E7001073E700CEB5AD00AD949400C69C9C00FFDE
+ DE00FFCED600C68C9400844A5200BD848400D69C9C00DEADAD00FFC6C600FFCE
+ CE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ CE00FFCECE00FFCED600E7ADB500A56B7300CECECE00BDADA500EFCEBD00EFD6
+ C600F7D6C600E7CEBD00B5A59400C6B5A500ADA5A50018181800181818003131
+ 3100424242005A5A5200636363005A5A5A0063635A005A5A52004A4A4A004A4A
+ 4A0042424200424242004242420031313100C6B5B500AD7B7B00DEA5AD00FFC6
+ CE00FFCED600C68C94006331310084525200B57B7B00C68C9400E7ADAD00F7BD
+ C600F7CECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ D600F7C6CE00DEADAD00A57373009C8C8C000000000000000000000000000000
+ 000000000000000000004239290042424200395A8400398CDE00213952001852
+ 9C00187BE7002973C6002163C6002973C60031ADEF0031B5F70031B5F70031B5
+ F70018CEF70010D6FF0008DEFF0008E7FF00C6B5B500AD7B7B00DEA5AD00FFC6
+ CE00FFCED600C68C94006331310084525200B57B7B00C68C9400E7ADAD00F7BD
+ C600F7CECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCECE00FFCE
+ D600F7C6CE00DEADAD00A5737300A5948C00C6C6C600C6B5A500EFD6BD00EFD6
+ C600F7D6C600DEC6B500B59C9400C6B5A500B5B5AD0008081800000042000000
+ 4200000031000000210000001800000018000000100008081000181018002121
+ 210029292900313131003131310039393100BDB5B500A5737300CE949400E7AD
+ AD00EFB5B500B57B8400845A5A007B5A5A007B424200A5636300CE8C8C00D6A5
+ A500D6BDBD00EFC6CE00F7C6CE00F7C6CE00F7C6CE00F7C6CE00F7C6CE00E7C6
+ CE00C6A5AD009C6B73009C848400EFEFEF000000000000000000000000000000
+ 00000000000000000000100810002121290052525A006BA5BD008C8C8C0052AD
+ EF00089CEF00189CF700188CF70031B5F70052FFFF0052FFFF0039F7FF0018FF
+ FF0008F7EF0008E7EF0008FFFF0008F7FF00BDB5B500A5737300CE949400E7AD
+ AD00EFB5B500B57B8400845A5A007B5A5A007B424200A5636300CE8C8C00D6A5
+ A500D6BDBD00EFC6CE00F7C6CE00F7C6CE00F7C6CE00F7C6CE00F7C6CE00E7C6
+ CE00C6A5AD009C6B73009C8C8C00C6B5AD00C6BDBD00CEB5AD00EFD6BD00EFD6
+ BD00EFD6C600CEB5A500B59C9400C6ADA500A5A59C00080821000800AD001000
+ C60010009C00100094001000AD0008009C00080073000800840008007B000000
+ 630000004A0000004A000000390000002900BDADAD0094636300AD737300BD84
+ 8C00B57B8400BD848400D69C9C00BD8C8C009C5A5A00844A42009C636300C68C
+ 8C00CEA5AD00CEB5B500CEB5BD00C6BDC600C6BDC600C6BDC600CEBDC600C6A5
+ A5009C6B73009C8C8C00EFEFEF00000000000000000000000000000000000000
+ 0000000000005273390010081000292131006B6B6B008C8C8C006B6B6B0094A5
+ BD00299CF7001894EF00188CEF0031ADEF0039F7FF0018FFFF0018FFFF0010B5
+ BD0010949C00185A630010B5BD0010849400BDADAD0094636300AD737300BD84
+ 8C00B57B8400BD848400D69C9C00BD8C8C009C5A5A00844A42009C636300C68C
+ 8C00CEA5AD00CEB5B500CEB5BD00C6BDC600C6BDC600C6BDC600CEBDC600C6A5
+ A5009C6B7300A5948C00C6B5AD0000000000C6C6C600CEBDAD00EFCEBD00EFCE
+ BD00EFD6BD00C6AD9C00B59C8C00C6B5AD008C8C8C0000000800000063000800
+ 7B0008006B0008007B0008009C000800A500080084001000AD001000BD001000
+ 9C0010009C001000B5000800AD0010008C00CEC6C60094736B00A56B6B00B584
+ 8400CEA5A500F7C6CE00F7C6C600DEA5AD00C68C8C00945A5A007B424200A563
+ 6300C6949400CE9C9C00CEA5A500C6B5B500C6B5B500C6B5B500BDA5A5009C6B
+ 73009C848400EFEFEF0000000000000000000000000000000000000000000000
+ 00000000000039635A0010081000312931004242420039394200635A52007B9C
+ AD00299CF7001894EF001884EF0010ADEF0018FFFF0000FFFF0000F7F700185A
+ 630008E7EF0008DEE700187B840010737B00CEB5B50094736B00A56B6B00B584
+ 8400CEA5A500F7C6CE00F7C6C600DEA5AD00C68C8C00945A5A007B424200A563
+ 6300C6949400CE9C9C00CEA5A500C6B5B500C6B5B500C6B5B500BDA5A5009C6B
+ 73009C8C8C00C6B5AD000000000000000000CECECE00CEB5AD00EFCEBD00EFCE
+ BD00E7CEBD00B5A59400AD9C8C00B5AD9C00ADADAD004A4A4A00313131001818
+ 2100101018000808180000001800000018000000210000003100000039000000
+ 420000004A000000630000006B000000630000000000C6BDB500AD848400DEB5
+ B500F7DEE700F7E7E700FFD6DE00F7BDC600DEA5A500C68C84009C5A5A00844A
+ 42009C636300BD848400C68C8C00C68C8C00C68C8C00BD8484009C6B73009C8C
+ 8C00EFEFEF000000000000000000000000000000000000000000000000000000
+ 000000000000185A630031182100424242004242420021212900524A4A006BA5
+ BD00299CF700108CEF001884EF0008ADEF0000FFFF0000FFFF0000FFFF00109C
+ AD0010949C00109CAD0008ADBD0008DEE70000000000C6B5AD00AD848400DEB5
+ B500F7DEE700F7E7E700FFD6DE00F7BDC600DEA5A500C68C84009C5A5A00844A
+ 42009C636300BD848400C68C8C00C68C8C00C68C8C00BD8484009C6B7300A594
+ 8C00C6B5AD00000000000000000000000000DEDED600CEB5A500E7C6B500EFCE
+ BD00DEC6B500B5A59400B59C9400A59C9400DEDEDE00FFFFFF00D6D6D600A5A5
+ A5009C9C9C00A5A59C008C8C8C00A5A5A50084847B0063635A005A5A52003939
+ 3900313139003131310021212900212129000000000000000000CEC6C600B594
+ 9400EFC6C600F7EFEF00FFE7EF00FFD6DE00F7BDC600DEA5AD00C68C8C00945A
+ 5A007B424200945A5A009C6B63009C6B63009C635A00845252009C848400EFEF
+ EF00000000000000000000000000000000000000000000000000000000000000
+ 000000000000009CDE0021395200524A4A004A4A4A006B6B6B004A4A390073AD
+ D600189CF700188CEF001884EF0008ADEF0000FFFF0000F7FF0000F7FF0000FF
+ FF0000D6DE0000D6DE0000EFFF0000F7FF000000000000000000C6B5B500BD94
+ 9400EFC6C600F7EFEF00FFE7EF00FFD6DE00F7BDC600DEA5AD00C68C8C00945A
+ 5A007B424200945A5A009C6B63009C6B63009C635A00845252009C8C8C00C6B5
+ AD000000000000000000000000000000000000000000C6B5AD00DEBDAD00E7C6
+ B500EFD6C600DECEBD00DEC6BD00B5ADA500C6C6C600E7E7E700DEDEDE00ADAD
+ AD00A5A5A5008C8C8C0084848400E7E7E700DEDEDE00ADADAD00ADADAD009C9C
+ 9C00EFEFEF00EFEFEF008C8484009C9C9C00000000000000000000000000C6BD
+ BD00B58C8C00E7C6C600FFEFF700FFE7EF00FFD6DE00F7BDC600DEA5A500C68C
+ 84009C5A5A00844A42008C525200945A5200845252009C8C8C00EFEFEF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004A9C840000ADFF00009CDE0029526B008C8C8C00393942002118180073AD
+ D6001894EF00188CEF00187BEF0008ADEF0000F7FF0000F7FF0010EFFF0018EF
+ F70039F7FF0052FFFF006BE7F7008CEFF700000000000000000000000000C6B5
+ AD00B5948C00E7C6C600FFEFF700FFE7EF00FFD6DE00F7BDC600DEA5A500C68C
+ 84009C5A5A00844A42008C525200945A5200845252009C8C8C00C6B5AD000000
+ 00000000000000000000000000000000000000000000CEC6BD00D6B5A500E7C6
+ AD00EFD6C600EFDECE00F7DED600B5ADA5005A5A5A006B6B6B007B7B7B007B7B
+ 7B00848484007B7B7B0094949400ADADAD00949494007B7B7B009C9C9C009C9C
+ 9C00BDBDBD00BDC6BD00847B7B008C8C8C000000000000000000000000000000
+ 0000C6C6BD00B58C8C00EFC6C600F7EFEF00FFE7EF00FFD6DE00F7BDC600DEA5
+ AD00C68C8C00945A5A007B424200844A4A009C848400EFEFEF00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031B5AD0000ADEF0000ADFF0042ADDE00C6BDB5008C8C8C002118180073AD
+ D600188CF7002184EF00187BEF0008ADEF0000F7FF0010EFFF00ADD6D600DEE7
+ DE00F7EFE700E7DEDE00FFF7F700FFFFFF000000000000000000000000000000
+ 0000C6B5B500B5948C00EFC6C600F7EFEF00FFE7EF00FFD6DE00F7BDC600DEA5
+ AD00C68C8C00945A5A007B424200844A4A009C8C8C00C6ADAD00000000000000
+ 00000000000000000000000000000000000000000000DEDEDE00CEB5A500DEBD
+ A500DECEBD00E7D6CE00EFDECE00635A520008101000A5A5A500DEDEDE005252
+ 52002121210084848400BDBDBD0063636300393939006B6B6B008C8C8C007B7B
+ 7B0073737300737373007B7B7B007B7B7B000000000000000000000000000000
+ 000000000000C6BDB500B58C8C00E7BDC600FFEFF700FFE7EF00FFD6DE00F7BD
+ C600DEA5A500C68C8400945A5A007B5A5A00BDBDBD0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000010ADDE0000ADF70000A5F70042ADDE007B9CAD0094A5BD008C8C8C0052AD
+ EF00108CF7002184EF00187BEF0008ADEF0000F7FF0010EFFF00CED6D600FFFF
+ FF00FFFFFF00E7DEDE00FFF7F700FFFFFF000000000000000000000000000000
+ 000000000000C6B5AD00B5948C00E7BDC600FFEFF700FFE7EF00FFD6DE00F7BD
+ C600DEA5A500C68C8400945A5A007B5A5A00C6B5B50000000000000000000000
+ 0000000000000000000000000000000000000000000000000000CEC6BD00D6B5
+ 9C00BDA59400AD9C9400ADA59C00424239008C8C8C00EFEFEF00635A5A000000
+ 000063636300FFFFFF00949494000000000031313100DEDEDE00C6C6C6001821
+ 210021212100BDBDBD00BDBDBD00393939000000000000000000000000000000
+ 00000000000000000000C6BDBD00B58C8C00EFC6C600F7EFEF00FFEFEF00FFD6
+ DE00F7BDC600DEA5AD00C68C8C00945A5A0084636300D6CECE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000ADF70000A5F70000A5F700009CF70018A5F700299CF70031A5FF00299C
+ F7001884EF001884EF00187BEF0008ADEF0000F7FF0010EFFF00CED6D600EFE7
+ DE00EFE7DE00CED6D600CED6D600ADD6D6000000000000000000000000000000
+ 00000000000000000000C6B5B500B5948C00EFC6C600F7EFEF00FFEFEF00FFD6
+ DE00F7BDC600DEA5AD00C68C8C00945A5A0084636300CEB5B500000000000000
+ 0000000000000000000000000000000000000000000000000000EFE7E700D6BD
+ AD00C69C8C00B5A59400B5ADA500ADA59C00C6BDB500BDB5AD00847B7B008C84
+ 7B00CECEC600C6BDBD005A52520052524A00D6D6D600D6CECE00292921002121
+ 1800BDBDB500E7E7E70042424200000000000000000000000000000000000000
+ 0000000000000000000000000000C6BDBD00B58C8C00E7BDC600FFEFF700FFE7
+ EF00FFD6DE00F7BDC600DEA5A500C68484008C5A5A008C7B7B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000004A9C
+ 840000A5F70000A5F700009CF700089CEF00189CF7001894EF001894EF00188C
+ EF00188CEF001884EF00187BE70008ADEF0000F7FF0010EFFF008CD6D6006BC6
+ CE004AC6DE0029D6EF0008D6F70000D6F7000000000000000000000000000000
+ 0000000000000000000000000000C6B5AD00B5948C00E7BDC600FFEFF700FFE7
+ EF00FFD6DE00F7BDC600DEA5A500C68484008C5A5A008C7B7B00000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7DE
+ DE00CEB5A500D6B59C00EFD6CE00F7EFE700F7E7DE00EFE7D600F7E7DE00FFEF
+ E700F7E7DE00E7DED600E7DED600F7E7DE00EFDED600CEB5A500BD9C8400C6AD
+ 9C00EFDED600D6D6D600949494009C9C9C000000000000000000000000000000
+ 000000000000000000000000000000000000C6BDBD00B58C8C00EFC6C600F7EF
+ EF00FFEFEF00FFD6DE00F7BDC600DEA5AD00AD737300846B6B00000000000000
+ 00000000000000000000000000000000000000000000000000000000000052B5
+ 8C0029B5DE0010ADEF00009CF700089CEF00108CEF00108CEF00108CEF00108C
+ F7001084EF001884EF00187BE70008ADEF0000EFFF0000E7FF0000DEFF0000DE
+ FF0000DEFF0000DEFF0008DEFF0018D6E7000000000000000000000000000000
+ 000000000000000000000000000000000000C6B5B500B5948C00EFC6C600F7EF
+ EF00FFEFEF00FFD6DE00F7BDC600DEA5AD00AD737300846B6B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000E7E7DE00D6B5A500D6AD9C00D6BDB500DECEC600EFE7DE00F7EFE700C6BD
+ B500B5ADA500E7DED600F7EFEF00A59C940073635A00BDA59C00EFDED6007363
+ 630031313100B5B5B500FFFFFF006B6B6B000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C6BDBD00B58C8C00E7BD
+ C600FFEFF700FFEFEF00FFD6D600DEA5AD009C6B6B009C8C8C00F7FFFF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000004A9C840073B594006BA5BD005294CE00398C
+ DE002184EF00107BEF001073E70000A5F70000E7FF0008E7FF0029D6EF0039CE
+ C60052B5AD000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C6B5AD00B5949400E7BD
+ C600FFEFF700FFEFEF00FFD6D600DEA5AD009C6B6B00A5948C00CEB5AD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7F7EF00DECEC6008C7B7300181818005A525200EFEFEF009C9C
+ 9C000000000029292900DEDEDE00B5B5B5000808080018181800C6CECE00CECE
+ D6002121210008080800BDBDBD00E7E7E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6C6C600B58C
+ 8C00E7BDBD00E7D6D600DEBDBD00AD7B7B009C848400E7E7E700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004A9C84007B9C8C0052B5AD0073B5940000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6B5B500B594
+ 9400E7BDBD00E7D6D600DEBDBD00AD7B7B009C848400C6B5AD00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7E7E7006B6B6B0018181800848484000000
+ 00009C94940039393900948C8C0000000000C6C6C60084848400B5B5B5000000
+ 0000E7E7E700C6C6C600E7E7E700000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000BDAD
+ AD00A5736B00AD737300A57373009C847B00E7E7E70000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000BDAD
+ AD00A5736B00AD737300A57373009C847B00CEB5AD0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A0000E7E70000E7E7
+ 0000E7E70000E7E7000084840000848400005A5A0000A5AD9C00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7E7DE00C6AD6B00DEAD
+ 0000DEAD0000CED6CE00FFFFFF00FFFFFF000000000000000000000000000000
+ 000000000000000000000000000000000000CE4A0000CE4A0000000000008463
+ 0000FFBD5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD
+ 0000CE4A0000FFBD5A00CE4A0800000000000000000000000000000000000000
+ 00000000000000000000CEB5AD00FFE7CE00CE9C8C00CE9C8C00CE9C8C00CE9C
+ 8C00FFDEC600FFDEBD00FFDEBD00FFDEBD00FFD6BD00FFD6BD00FFD6B500FFD6
+ B500FFD6BD00D6948400CE003100F7BD840000000000000000005A947B00109C
+ D60008ADE70010ADEF0008B5F7001063B50021318C00109CEF0008ADFF0010A5
+ FF0010A5FF00109CFF00109CFF00109CFF00109CFF00109CEF00183994002939
+ 630094B5B500EFF7F700F7FFFF00F7FFFF0000000000BDBD0000E7E70000E7E7
+ 0000E7E70000E7E70000BDBD00005A5A000021212100CED6CE00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700C6AD6B00DEAD
+ 0000C6AD6B00F7F7EF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000CE4A00006BBD0000CE4A0000CE4A00008463
+ 0000FFBD5A00CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000CE4A0000FFBD5A00D6B59400CE4A08000000000000000000000000000000
+ 00000000000000000000D6BDAD00FFE7CE00FFE7CE00FFE7CE00FFE7CE00FFDE
+ C600CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00FFD6
+ B500FFD6BD00D6948400D6CECE00CE0031000000000021ADD60008A5DE0008AD
+ E70008BDEF0008BDF70008BDFF002163B50029399C0008ADF70008BDFF0008B5
+ FF0008ADFF0008ADFF0008ADFF0008A5FF0008A5FF0000A5FF002942AD001839
+ 9400087BC600CEEFE700FFFFFF00FFFFFF005A5A0000E7E70000E7E70000E7E7
+ 0000E7E70000E7E700005A5A00000000000000000000CED6CE00FFFFFF00FFFF
+ FF00FFFFFF00B5BDB500B5BDB50084948C006B6B6B00CED6CE00C6AD6B009C8C
+ 3900A5AD9C00CED6CE00F7F7F700FFFFFF000000000000000000000000000000
+ 000000000000000000006BBD00006BBD0000CE4A00000000000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00FFBD5A00CE4A0000000000000000000000000000000000000000
+ 00000000000000000000D6BDAD00FFE7D600CE9C8C00CE9C8C00CE9C8C00CE9C
+ 8C00FFE7CE00FFDEC600FFDEC600FFDEC600FFDEC600FFDEBD00FFDEBD00FFD6
+ BD00FFD6BD00D6948400CE003100FFCE94000000000021ADD60008ADE70008B5
+ EF0008C6EF0008C6F70008C6FF002163B50029399C0008B5F70008BDFF0008BD
+ FF0008B5FF0008B5FF0008B5FF0008ADFF0008B5FF0008ADFF002942AD001839
+ 940031B5F700F7FFFF00FFFFFF00FFFFFF005A5A0000BDBD0000E7E70000E7E7
+ 0000BDBD00005A5A0000848400000000000000000000C6CEB500FFFFFF00EFEF
+ EF0084948C006B6B6B00B5BDB500CED6CE00CED6CE006B6B6B00DEAD0000DEAD
+ 00006B6B6B006B6B6B006B6B6B00CED6CE000000000000000000000000000000
+ 000000000000CE4A00006BBD00006BBD0000CE4A000000000000000000000000
+ 0000CE4A0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00CE4A0000CE4A000000000000000000000000000000000000000000000000
+ 00000000000000000000D6BDB500FFE7D600FFE7D600FFE7D600FFE7CE00FFE7
+ CE00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00FFDE
+ BD00FFD6BD00CE003100CE003100CE0031000000000010BDDE0008B5E70008C6
+ EF0010CEF70010CEFF0010CEFF00295AB50029399C0010BDFF0008C6FF0008BD
+ FF0008BDFF0008BDFF0008BDFF0008BDFF0008BDFF0008B5FF002952B5001839
+ AD0052A5DE00FFFFFF00FFFFFF00FFFFFF00000000005A5A0000E7E70000E7E7
+ 0000313131003131310031313100000000000000000084948C0084948C006B6B
+ 6B00CED6CE00EFEFEF00FFFFFF00FFFFFF00FFFFFF00E7DEDE00DEAD0000DEAD
+ 000084948C00F7F7F700EFEFEF006B6B6B000000000000000000000000000000
+ 0000CE4A00006BBD00006BBD00006BBD00006BBD0000CE4A0000000000000000
+ 000000000000CE4A0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00CE4A
+ 0000CE4A00000000000000000000CE4A00000000000000000000000000000000
+ 00000000000000000000DEC6B500FFEFDE00CE9C8C00CE9C8C00CE9C8C00CE9C
+ 8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00FFDEC600FFDE
+ C600FFD6BD00D6948400D6CECE00000000000000000010C6DE0010C6E70010CE
+ F70010D6F70010D6FF0010D6FF00295ABD002942AD0010C6FF0008CEFF0008C6
+ FF0008C6FF0008C6FF0008C6FF0008BDFF0008C6FF0008BDFF002952BD001839
+ AD005A9CD600FFFFFF00FFFFFF00FFFFFF0000000000000000005A5A00000000
+ 000031313100000000000000000000000000000000000039520084948C00F7F7
+ F700FFFFFF00FFFFFF00E7DEDE00CED6CE00B5BDB500C6CEB50084948C008494
+ 8C00E7E7DE00FFFFFF00FFFFFF00EFEFEF000000000000000000000000000000
+ 000000000000CE4A00006BBD00006BBD0000CE4A000000000000000000000000
+ 00000000000000000000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000DEC6B500FFEFDE00FFEFDE00FFEFD600FFE7D600FFE7
+ D600FFE7D600FFE7CE00FFE7CE00FFE7CE00FFE7CE00FFDEC600FFDEC600FFDE
+ C600FFD6BD00D6948400D6CECE00000000000000000010CEE70008C6EF0008D6
+ EF0010DEF70008DEFF0010DEFF00295ABD003152B50010CEFF0008DEFF0008CE
+ FF0008CEFF0010CEFF0008CEFF0010CEFF0008CEFF0008C6FF00295AC6002942
+ B5002994DE00EFF7F700FFFFFF00FFFFFF000000000000000000000000000000
+ 000000000000313131000000000000000000635A5A00CED6CE00FFFFFF00C6CE
+ B500394239003942390031313100394239003942390039423900394239003942
+ 3900394239006B6B6B00E7DEDE00FFFFFF000000000000000000000000000000
+ 000000000000CE4A00006BBD0000CE4A00000000000000000000000000000000
+ 0000000000000000000000000000CE4A0000CE4A0000CE4A0000CE4A00000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000DEC6B500FFEFDE00CE9C8C00CE9C8C00CE9C8C00CE9C
+ 8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00CE9C8C00FFDECE00FFDE
+ C600FFD6BD00D6948400D6CECE00000000000000000008D6E70010CEF70010DE
+ F70010E7FF0010E7FF0010DEFF00315AB500315ABD0010D6FF0008DEFF0010D6
+ FF0010D6FF0010D6FF0010D6FF0008CEFF0008CEFF0010CEFF003163CE00394A
+ B50008ADFF006BADD600EFEFEF00FFFFFF000000000000000000000000000000
+ 0000000000006B6B6B000000000039423900E7DEDE00EFEFEF00212121003942
+ 390000639C0000639C0000639C0021ADFF0021ADFF0021ADFF0021ADFF000063
+ 9C00394239002121210031313100A5AD9C000000000000000000000000000000
+ 0000CE4A00006BBD0000CE4A0000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CE4A0000CE4A0000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000E7CEBD00FFEFE700FFEFE700FFEFDE00FFEFDE00FFEF
+ DE00FFEFDE00FFE7D600FFE7D600FFE7D600FFE7CE00FFE7CE00FFE7CE00FFDE
+ CE00FFD6BD00D6948400D6CECE00000000000000000008D6E70008D6EF0010E7
+ F70010E7FF0010EFFF0010E7FF00315ABD00395ABD0010E7FF0010E7FF0010DE
+ FF0008DEFF0010DEFF0010DEFF0010D6FF0010DEFF0010D6FF003163CE00394A
+ B50010BDFF0000BDF70039A5D600ADCED6000000000000000000000000000000
+ 000000000000000000006B6B6B0031313100E7E7DE0021212100000000003942
+ 390000639C0021ADFF0021ADFF0021ADFF0021ADFF0021ADFF0021ADFF0021AD
+ FF0021ADFF00008CCE003131310021212100000000000000000000000000CE4A
+ 0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000CE4A00000000000000000000000000000000000000000000000000000000
+ 0000CE4A0000CE4A0000CE4A0000CE4A00000000000000000000000000000000
+ 00000000000000000000E7CEBD00FFF7E700CE9C8C00CE9C8C00CE9C8C00CE9C
+ 8C00CE9C8C00CE9C8C00FFEFD600FFDEC600FFDEC600FFDEC600FFDEC600FFE7
+ CE00FFD6BD00D6948400D6CECE00000000000000000000E7EF0008D6EF0010EF
+ F70010F7FF0010F7FF0010E7FF00395ABD003163CE0010EFFF0010EFFF0010E7
+ FF0010E7FF0010E7FF0010E7FF0008DEFF0010DEFF0010DEFF00396BD600394A
+ B50010BDFF0008D6FF0000BDFF0008ADF7000000000000000000000000000000
+ 00000000000000000000635A5A00CED6CE002121210000000000000000000000
+ 0000000000003942390000639C0021ADFF0021ADFF0021ADFF0021ADFF0021AD
+ FF0021ADFF0021ADFF0000639C0000639C000000000000000000CE4A0000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00CE4A0000CE4A00000000000000000000000000000000000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A000000000000000000000000000000
+ 00000000000000000000EFD6BD00FFF7EF00FFF7E700FFEFE700FFEFE700FFEF
+ DE00FFEFDE00FFEFDE00C66331008C4A2100FFDEC600FFDEC600FFDEC600FFDE
+ C600FFD6BD00D6948400B5B5B500D6CECE000000000000E7EF0008D6EF0010FF
+ FF0010FFFF0010FFFF0018EFFF004252BD003973D60010F7FF0010F7FF0010F7
+ FF0010EFFF0010EFFF0010EFFF0010EFFF0010EFFF0010EFFF003973D6004252
+ BD0010CEFF0008DEFF0010D6FF0000CEFF000000000000000000000000000000
+ 0000000000000000000000000000212121000000000000000000000000000000
+ 00000000000039423900394239003942390000639C0000639C0000639C00008C
+ CE0021ADFF0021ADFF0021ADFF0021ADFF000000000000000000CE4A0000FFBD
+ 5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A000000000000000000000000000000
+ 00000000000000000000EFD6C600FFF7EF00CE9C8C00CE9C8C00CE9C8C00FFEF
+ E700FFEFE700FFEFDE00C6633100E7AD94008C4A2100FFDEC600FFDEC6008C4A
+ 21008C4A2100A5522900944A2100944A21000000000000E7EF0010CEE70010CE
+ E70010CEE70008D6E70008B5E7002942AD00215AB50010D6F70010D6FF0010CE
+ F70010C6FF0010CEFF0010CEFF0010CEFF0008CEFF0008BDF700395AC6003142
+ AD0010ADEF0008BDF70008B5F70008BDEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00006B6B6B00EFEFEF00FFFFFF006B6B6B002121210039423900394239003942
+ 3900394239003942390039423900394239000000000000000000CE4A0000FFBD
+ 5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A008400000084000000840000008400
+ 000084000000840000008400000084000000FFF7EF00FFF7EF00FFF7EF00FFF7
+ E700FFF7E700FFEFE700FFEFDE00DEC6B50084848400AD522900AD5A2900E7AD
+ 9400EFD6C600EFBDA500E7A58C00D6845A000000000008EFEF0010E7EF0010DE
+ EF0010DEEF0010DEEF0010C6E7003142AD004239A5002994DE0010CEF70010CE
+ F70010D6FF0010CEFF0010D6FF0010D6FF001063B500087BC600109CD600109C
+ D60008B5EF0008B5EF0008A5DE00295AAD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000006B6B
+ 6B00CED6CE00FFFFFF00B5BDB500A5AD9C003131310021212100212121008494
+ 8C00C6CEB50084948C0000000000000000000000000000000000CE4A0000FFBD
+ 5A00CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00CE4A0000CE4A0000CE4A0000CE003100DE4A0000DE4A0000E763
+ 1800E7631800EF7B390084000000FFF7F700FFF7EF00FFF7EF00FFF7EF00FFF7
+ EF00FFF7E700FFEFE700FFEFE700FFEFDE00C6C6C600C6633100FFF7F700FFF7
+ EF00F7DED600EFC6AD00E7AD8C00DE9C73000000000008EFEF0010F7F70010FF
+ FF0010FFFF0010FFFF0018DEFF00525AC6005A4ABD0029ADE70010F7FF0010E7
+ FF0010FFFF0010FFFF0010FFFF0010C6E7000852BD0010DEF70010FFFF0010FF
+ FF0010EFFF0010EFFF0010CEFF004252BD000000000000000000000000000000
+ 00000000000000000000000000006B6B6B000000000000000000000000002121
+ 2100F7F7F700CED6CE0021212100B5BDB500313131002121210084948C00FFFF
+ FF00FFFFFF00EFEFEF00635A5A00000000000000000000000000CE4A0000FFBD
+ 5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD0000CE4A
+ 0000FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00CE4A00006BBD00006BBD0000DE4A0000DE4A0000E7631800E763
+ 1800EF7B390084000000F7DEC600FFFFF700CE9C8C00CE9C8C00CE9C8C00CE9C
+ 8C00CE9C8C00CE9C8C00CE9C8C00FFEFE700FFEFE700F7E7DE00FFFFFF00FFF7
+ EF00EFCEBD00E7A58C00D68C6300D68C5A000000000010EFEF0010F7F70010FF
+ FF0010FFFF0010FFFF0029D6F700525AC6005A4ABD0029ADE70010FFFF0010EF
+ FF0010DEFF0008CEFF0008A5FF000873DE0008BDF70010FFFF0010F7FF0010F7
+ FF0010EFFF0010EFFF0010D6FF00395AC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002121
+ 2100EFEFEF00EFEFEF00E7DEDE006B6B6B000000000021212100CED6CE00FFFF
+ FF00C6CEB500B5BDB50084948C00000000000000000000000000CE4A0000FFBD
+ 5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD0000CE4A
+ 0000FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00CE4A00006BBD00006BBD0000DE4A0000E7631800E7631800EF7B
+ 3900EF7B3900EF8C4A0084000000FFFFF700FFFFF700FFFFF700FFF7F700FFF7
+ EF00FFF7EF00FFF7EF00FFF7EF00FFF7E700FFEFE700FFFFFF00FFFFFF00F7E7
+ D600E7AD8C00D6845A00CE734200CE7342000000000010EFEF0010F7F70010FF
+ FF0010FFFF0010FFFF0029D6F700525AC6005A4ABD0029ADE70010FFFF0010FF
+ FF0010F7FF0008DEFF0008BDFF0010E7FF0010FFFF0010F7FF0010F7FF0010F7
+ FF0010EFFF0010EFFF0010D6FF00395AC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000021212100EFEFEF006B6B6B00212121000000000031313100E7E7DE00FFFF
+ FF0021212100B5BDB5006B6B6B0000000000CE5208000000000084630000FFBD
+ 5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD0000CE4A
+ 0000FFBD5A00CE4A0000000000000000000000000000CE4A0000000000008463
+ 0000FFBD5A00CE4A00006BBD00006BBD0000E7631800E7631800EF7B3900EF7B
+ 3900EF8C4A00EF8C4A00EF945A0084000000FFFFFF00FFFFF700FFFFF700FFFF
+ F700FFF7F700FFF7EF00FFF7EF00FFF7EF00FFF7E700FFFFFF00FFF7EF00EFC6
+ B500DE946B00D67B4A00CE734200C66331000000000010EFEF0010F7F70010FF
+ FF0010FFFF0010FFFF0029D6F700525AC6005A4ABD0031B5F70010FFFF0010FF
+ FF0010FFFF0010FFFF0010FFFF0010FFFF0010FFFF0010F7FF0010F7FF0010EF
+ FF0010EFFF0010EFFF0010D6FF00395AC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003131310021212100000000000000000000000000B5BDB500FFFF
+ FF00E7DEDE00A5AD9C00000000000000000000000000CE4A000084630000FFBD
+ 5A00CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000FFBD5A00FFBD5A00CE4A0000000000000000000000000000CE4A00008463
+ 0000FFBD5A00CE4A0000CE4A0000CE4A0000E7631800EF7B390084000000EF8C
+ 4A00EF8C4A00EF945A00EF945A00F7A56B0084000000FFFFFF00FFFFF700FFFF
+ F700FFFFF700FFF7EF00FFF7EF00FFF7EF00FFF7EF00FFFFFF00FFEFEF00E7BD
+ A500D68C6300D67B4A00B55A29008C4221000000000000E7EF0000EFEF0008F7
+ FF0008F7FF0008F7FF0018C6F7004252BD004A42B50010ADEF0008F7FF0010F7
+ FF0008F7FF0008F7FF0000E7FF0000E7FF0000E7FF0000E7FF0000E7FF0000DE
+ FF0008E7FF0000DEFF0000BDFF002952BD000000000000000000000000000000
+ 000000000000000000000000000000000000000000006B6B6B00000000000000
+ 000000000000000000000000000000000000000000000000000000395200A5AD
+ 9C00A5AD9C003131310000000000000000000000000000000000CE4A0000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00CE4A0000CE4A00000000000000000000CE4A000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A00EF7B39008400000000000000CE00
+ 3100EF945A00EF945A00F7A56B00F7A56B00F7AD730084000000F7D6B500EFCE
+ B500EFCEAD00EFC6AD00E7C6AD00E7C6AD00E7BDA500FFFFFF00FFF7EF00EFC6
+ B500DE946B00D67B4A008C4A2100E7BDA50000000000000000009CCEB5009CCE
+ B5009CCEB5009CCEB50094B5B5007384A5007384A50094B5B5007BD6DE0029D6
+ F70084B5A50084B5A5009CCEB5009CCEB50094BD9C0094BD9C0094BD9C0094BD
+ 9C00429CCE0052A5DE007BA5B500526B8C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000635A5A000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000635A5A00000000000000000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00CE4A
+ 0000CE4A0000CE4A00006BBD0000CE4A0000CE4A00006BBD0000CE4A00000000
+ 0000CE4A0000CE4A0000FFBD5A00FFBD5A00CE00310000000000000000000000
+ 0000CE003100F7A56B00F7A56B00F7AD7300F7AD7300F7BD8400840000000000
+ 00000000000000000000EF8C4A00EF8C4A00CE003100FFFFFF00FFFFFF00F7DE
+ D600E7B59400C6633100D68C6300F7E7D6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006BD6CE0031F7
+ F700848400008484000084840000848400008484000084840000848400008484
+ 00005273C60052A5DE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000006B6B
+ 6B00000000000000000000000000000000000000000000000000000000000000
+ 00000000000021212100635A5A00000000000000000000000000000000000000
+ 0000CE4A0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00CE4A0000CE4A
+ 00000000000000000000CE4A00006BBD00006BBD00006BBD00006BBD0000CE4A
+ 000000000000CE4A0000CE4A0000FFBD5A000000000000000000000000000000
+ 000000000000CE003100F7AD7300F7AD7300F7BD8400F7BD8400FFCE94008400
+ 0000EF8C4A00EF8C4A00EF8C4A00CE0031009C630000E7BDA500FFFFFF00FFF7
+ F700F7DED600C6633100E7B59C00FFF7EF000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000052EF
+ DE006BD6CE0084840000848400008484000084840000848400008484000052A5
+ DE003173C6000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000635A5A006B6B6B0031313100000000000000000000000000212121000039
+ 5200635A5A000000000000000000000000000000000000000000000000000000
+ 000000000000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A00000000
+ 0000000000000000000000000000CE4A00006BBD00006BBD00006BBD00006BBD
+ 0000CE4A000000000000CE4A0000CE4A00000000000000000000000000000000
+ 00000000000000000000CE003100F7BD8400F7BD8400FFCE9400FFCE9400FFD6
+ A5008400000084000000CE003100CE00310000000000C69C8C00EFCEBD00FFFF
+ FF00FFFFFF00DE947300DE946B00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000031F7F70063CEDE008484000084840000848400008484000052A5DE002163
+ E70052A5DE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000006B6B6B00635A5A00635A5A00635A5A00635A5A000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE4A0000CE4A0000CE4A0000CE4A0000000000000000
+ 000000000000000000000000000000000000CE4A00006BBD0000CE4A0000CE52
+ 180073BD0000CE52180000000000CE4A00000000000000000000000000000000
+ 0000000000000000000000000000F7BD8400FFCE9400FFCE9400FFD6A500FFD6
+ A500FFE7B500FFE7B500FF9C6300000000000000000000000000C69C8C00D67B
+ 4A00EFBDA500EFCEBD00944A2100FFEFE7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000052EFDE004AE7F70063CEDE0052ADDE0052A5DE00429CCE0052A5
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CE4A0000CE4A000000000000000000000000
+ 00000000000000000000000000000000000000000000CE4A0000000000000000
+ 0000CE5218000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C6AD
+ A500C69C8C00D67B4A00D67B4A009C4A29000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000006BD6CE006BD6CE006BD6CE006BD6CE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CE736300944A3900AD635200CE736300F79C
+ 8C00FFB59400F79C8C00AD635200F79C8C000000000000000000000000000000
+ 0000000000000000000000000000EFEFEF00EFEFEF00E7E7E700C6CECE00CEB5
+ A500D6946300D6AD8C00CEBDAD00D6CECE00EFEFE700ADADA5004A4A42001818
+ 180052525200CECECE00EFEFEF00EFEFEF0000000000FFD6D600F7D6D6005242
+ 4200423139003931390073737B005252520029292900E7ADAD00A5424A000800
+ 00001818180031101000181821006394BD0094CEFF004273B500002152000000
+ 0800312929004A4A4A0084736B008C7B73000000000000000000000000000000
+ 000000000000000000000000000000000000CE4A0000CE4A0000000000008463
+ 0000FFBD5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD
+ 0000CE4A0000FFBD5A00CE4A0000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF7B7300FF7B7300FF7B
+ 7300CE736300CE736300AD635200AD635200CE736300E78C7300FF7B7300FF7B
+ 7300EF844200FF7B7300E78C7300E78C73000000000000000000000000000000
+ 0000000000000000000000000000EFEFEF00EFEFEF00DEDEDE00D6DEE700E7AD
+ 8C00F77B2100FF842900E77B3100C6B5AD007384CE008C94D60063637B003939
+ 3100181818007B7B7B00EFEFEF00EFEFEF0010080800F7CECE004A3942002929
+ 310031293100524A5200635A63000808100029212100DEA5A500AD4A52001808
+ 10000810100008080800101821006B9CBD0094C6FF004A73B500184284000821
+ 4A0008080800100808007B7B84006B6B84000000000000000000000000000000
+ 0000000000000000000000000000CE4A00006BBD0000CE4A0000CE4A00008463
+ 0000FFBD5A00CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00CE4A00000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFE7DE00FFDE
+ D600FFDED600FFDED600FFDED600FFDED600FFDED600FFDEC600FFDEC600FFDE
+ C600FFCEBD00FFCEBD00FFCEBD00FFC6A5000000000000000000000000000000
+ 00000000000000000000E7E7E700EFEFEF00F7F7F700D6D6D600CED6D600DE94
+ 6B00F77B2900F77B2900E78C4A00C6BDD600425AF7004A63FF004A63DE004A4A
+ 5A002121210029292900738C7300BDCEBD0008000000FFDEDE00AD848C002118
+ 2100423942001010180021101800A5848C00CECECE00EFD6DE00AD424A005A10
+ 1800311821004A10100029182900639CBD0094CEFF00527BB500315A9C00214A
+ 8C0000214A0000184200214A8C00396BAD000000000000000000000000000000
+ 000000000000000000006BBD00006BBD0000CE4A00000000000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00FFBD5A00CE4A0000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFF7EF00FFFF
+ FF00FFFFFF00FFFFFF00FFF7EF00FFEFEF00FFEFE700FFEFE700FFE7DE00FFE7
+ DE00FFDED600FFDED600FFCEBD00FFBDAD000000000000000000000000000000
+ 00000000000000000000E7E7E700EFEFEF00EFEFEF00D6D6D600DED6CE00D67B
+ 4200E7732900E7732900DE9C63009C9CDE003952F700425AFF003952F7007373
+ 9C00524A4A0018181800104210004AAD4A00A5A5A50063525200F7CECE000000
+ 000018101800A5848400C6BDBD00FFF7F700F7DEDE00DEB5B500CE848400B56B
+ 6B00943142007B101800312929004A84BD004252DE0018298C00315A9400396B
+ A5002952940021529400315A9C003963A5000000000000000000000000000000
+ 000000000000CE4A00006BBD00006BBD0000CE4A000000000000000000000000
+ 0000CE4A0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00CE4A0000CE4A000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFEFE700FFB5
+ 9400FFA56B00FFBD4A00FFAD4200FFBD4A00FFBD4A00FFAD4200FFBD4A00FFBD
+ 4A00FFAD4200FFAD4200FF9C3100FFAD42000000000000000000000000000000
+ 00000000000000000000EFEFEF00EFEFEF00EFEFEF00CED6D600E7CEC600DE73
+ 3100EF7B3100E7732900DEB594007384E7003142EF003952F700424AE700ADBD
+ BD004A7342003939390010101000526B5200C6B5AD0008080800F7C6C600A584
+ 8C00ADADAD00FFF7F700F7D6D600DEC6C600CE9C9C00C6ADAD00B5CECE00C684
+ 8400BD6363004A18180008080800184284000839E7000018B500101873001829
+ 7B00395A9C00396BAD003963A5003963A5000000000000000000000000000000
+ 0000CE4A00006BBD00006BBD00006BBD00006BBD0000CE4A0000000000000000
+ 000000000000CE4A0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00CE4A
+ 0000CE4A00000000000000000000CE4A00000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFE7DE00EF84
+ 1000FFB50000FFB50000FFB50000FFB50000FFB50000FFB50000FFAD0000FFAD
+ 0000FFAD0000FFAD0000FFAD0000FFAD00000000000000000000000000000000
+ 00000000000000000000F7F7F700F7F7F700E7E7E700D6D6D600D6AD9400D66B
+ 2900DE6B3100DE733100D6C6BD005263EF002939F7002942F7006363E70094D6
+ 940018BD18004A5A4A002921290029212900C6ADA50008080800FFF7F700FFFF
+ FF00F7D6D600E7C6C600D69C9C00CE9C9C00D69C9C00E7BDBD00B5B5B5005A31
+ 31004229290010213100001842000042B5000052FF000031DE000010AD000018
+ 9C0010217B0021317B00315A9C00396BA5000000000000000000000000000000
+ 000000000000CE4A00006BBD00006BBD0000CE4A000000000000000000000000
+ 00000000000000000000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFEFE700FFA5
+ 6B00FFBD0000FFC62100FFBD0000FFBD0000FFB50000FF9C0000FF9C0000FF9C
+ 0000FFAD0000FFB50000FFAD0000FFAD00000000000000000000000000000000
+ 000000000000E7E7E700F7F7F700F7F7F700DEDEDE00E7E7E700DE9C7300D663
+ 2900D66B2900D67B4200BDB5D6002939E7002931EF002131EF008484EF006BD6
+ 630008CE0000299429004A4A4A0018181800C6ADA500000000006B6B6B00EFD6
+ D600DEA5A500CEA5A500B5C6CE00C67B8400CE949400735A52004A3939000818
+ 2100001039000031A5001052DE00529CFF005A9CF7002152BD00002994000029
+ A5000018AD000018A50018217B0021317B000000000000000000000000000000
+ 000000000000CE4A00006BBD0000CE4A00000000000000000000000000000000
+ 0000000000000000000000000000CE4A0000CE4A0000CE4A0000CE4A00000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CE736300CE736300CE736300CE73
+ 6300DE731800DE731800DE731800DE731800EF844200EF844200E78C7300FF7B
+ 7300EF844200FF9C0000FFB50000FFAD00000000000000000000000000000000
+ 000000000000EFEFEF00F7F7F700F7F7F700D6D6D600DEDED600D67B5200D65A
+ 2100D6632900E7A57300A5A5E7001021E7002129EF002129E7009CA5DE0031CE
+ 290000BD000008C608003973390039313900C6ADA5009C9494008C8484005A42
+ 420073525200D6B5B500BDC6C6005A2929005231310008102100001039000031
+ A5001052D600428CF7006BADFF00A5D6FF009CCEEF004A73AD0018396B000829
+ 3900002963000029A5000018A50000109C000000000000000000000000000000
+ 0000CE4A00006BBD0000CE4A0000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CE4A0000CE4A0000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000F79C8C00E78C7300F79C8C00F79C8C00FFBD
+ AD00FFCEBD00FFCEBD00FFCEBD00FFDED600FFE7DE00FFF7EF00FFEFE700FFB5
+ 9400DE731800FF9C0000FFB50000FFB500000000000000000000000000000000
+ 000000000000EFEFEF00F7F7F700F7F7F700D6D6D600EFE7E700DEB59400DE94
+ 7300D68C5200EFC6A5007373E7000818E7001821EF002931E700B5CEC60039CE
+ 310008BD080008C6080073BD73006B636B00C6ADA500C6ADA500C6ADA5002121
+ 2900000000005A4242006B4A4A0008102100001031000039A5000852CE00428C
+ FF0063ADFF009CCEFF00ADD6FF00ADDEFF009CCEEF004A73B500214A8C000829
+ 31000010000000212900003194000031AD00000000000000000000000000CE4A
+ 0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000CE4A00000000000000000000000000000000000000000000000000000000
+ 0000CE4A0000CE4A0000CE4A0000CE4A00000000000000000000000000000000
+ 00000000000000000000FF7B7300CE736300FF7B7300FFCEBD00FFCEBD00FFDE
+ C600FFDED600FFDEC600FFE7DE00FFE7DE00FFEFE700FFBDAD00F79C8C00EF84
+ 4200EF841000FFB50000FFB50000FFB500000000000000000000000000000000
+ 000000000000F7F7F700F7F7F700EFEFEF00DED6D600EFF7F700F7FFFF00F7F7
+ F700EFE7E700EFE7E7003939DE000810E7000810E700424ADE00EFF7EF00D6EF
+ D600BDE7BD0094E79400D6EFD600A5A5A500C6ADA500C6ADA500C6ADA5005A52
+ 5A00101010005A5A52000008180000319C00084AC600398CFF005AA5FF009CCE
+ FF00ADDEFF009CCEFF00A5CEFF00D6F7FF00D6FFFF0073A5D60029529C001039
+ 7B0018394A0018394A0018396300082942000000000000000000CE4A0000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00CE4A0000CE4A00000000000000000000000000000000000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A000000000000000000000000000000
+ 00000000000000000000F79C8C00FFDED600CE736300FFCEBD00FFDEC600FFDE
+ C600FFDED600FFE7DE00FFEFE700FFEFE700F79C8C00FFC6A500FFB59400EF84
+ 1000FFB50000FFB50000FFB50000FFB500000000000000000000000000000000
+ 0000E7E7E700F7F7F700F7F7F700E7E7E700DEDEDE00EFEFEF00EFEFEF00EFEF
+ EF00F7F7F700D6D6F7001010E7000000E7000000E7007B7BE700FFFFF700FFF7
+ FF00FFF7FF00FFF7FF00FFF7FF00EFEFEF00C6ADA500C6ADA500C6ADA500524A
+ 520021212100E7E7E700212939003173E70052A5FF00A5D6FF00ADDEFF009CCE
+ FF009CD6FF00BDE7FF00D6EFFF00C6DEEF00ADD6EF008CBDEF006B9CD6005A8C
+ C6003963AD00315AA500395A9C00183942000000000000000000CE4A0000FFBD
+ 5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A000000000000000000000000000000
+ 000000000000FF7B7300FFEFE700FFFFFF00FF7B7300FFCEBD00FFDED600FFE7
+ DE00FFE7DE00FFEFE700FFEFE700F79C8C00FFCEBD00FFCEBD00EF841000FFB5
+ 0000FFBD0000FFB50000FFB50000FFB500000000000000000000000000000000
+ 0000E7E7E700F7F7F700F7F7F700DEDEDE00E7E7E700F7F7F700F7F7F700F7F7
+ F700F7F7F700BDBDE700424AE7002931E7001829E700B5BDEF00FFFFF700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700C6ADA500C6ADA500C6ADA500524A
+ 520018181800D6D6D6003131390094BDDE00B5E7FF009CCEFF009CCEFF00BDE7
+ FF00C6E7FF00BDE7F700B5D6E70073ADD6005A94CE006BA5D6008CC6F7008CC6
+ F7006B9CCE005A84BD003963A500295294000000000000000000CE4A0000FFBD
+ 5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A000000000000000000000000000000
+ 0000FF7B7300FFBDAD00FFFFFF00FFFFFF00FFBDAD00F79C8C00FFE7DE00FFE7
+ DE00FFEFEF00FFEFE700FFBDAD00FFE7DE00FFE7DE00EF844200FFB51800FFBD
+ 0000FFBD0000FFBD0000FFB50000FFB500000000000000000000000000000000
+ 0000F7EFEF00FFF7F700F7F7F700EFEFEF00F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F700F7F7F700EFEFF700CECEF700B5B5EF00E7E7F700FFF7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700C6ADA500C6ADA500C6ADA5009C94
+ 940018181800D6D6D6003131390084B5DE00A5DEFF00B5E7FF00C6E7FF00BDE7
+ F700BDD6EF0073ADD6005294C6004273A5004273A500639CCE006BA5D6006BA5
+ D6008CC6F70094C6F7006394CE005284BD000000000000000000CE4A0000FFBD
+ 5A00CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00CE4A0000CE4A0000CE4A00000000000000000000000000000000
+ 0000F79C8C00FFF7EF00FFFFFF00FFFFFF00FFEFE700FF7B7300FFBDAD00FFEF
+ EF00FFCEBD00FFB59400FFF7EF00FFEFE700FFA56B00FFB51800FFC62100FFC6
+ 2100FFBD0000FFBD0000FFBD0000FFBD0000000000000000000000000000C6AD
+ A500CEEFF700EFF7F700FFFFF700FFFFFF00FFFFF700FFF7F700FFF7F700F7F7
+ F700F7F7F700F7F7F700FFFFF700FFFFF700FFFFF700FFFFF700F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700C6ADA500C6ADA500C6ADA500C6AD
+ A50084847B00C6B5AD00293131009CC6E700CEEFFF00BDEFF700C6DEEF0073A5
+ D6005294CE005A8CC6004A7BB500315A9400315A9400396BA5004A7BB500639C
+ CE00639CCE006BA5D60094C6F70094C6F7000000000000000000CE4A0000FFBD
+ 5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD0000CE4A
+ 0000FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00CE4A00006BBD00006BBD0000000000000000000000000000FF7B
+ 7300FFE7DE00FFFFFF00FFF7EF00FFFFFF00FFFFFF00FFCEBD00F79C8C00FFBD
+ AD00FFCEBD00FFFFFF00FFFFFF00FFC6A500FFB51800FFBD4A00FFC62100FFC6
+ 2100FFC62100FFBD0000FFBD0000FFBD000000000000000000000000000094CE
+ E70031CEFF0052D6FF007BDEFF0094E7FF00BDEFFF00E7F7FF00F7F7F700FFFF
+ F700FFFFF700FFFFF700FFFFF700FFF7FF00FFF7F700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6B5AD0018212100ADD6DE00D6F7FF006BA5D6005A94CE00639C
+ CE005A8CC6004A7BB500638CCE00A5D6FF009CCEF700426BA50029528C004A7B
+ AD00639CCE006BA5D600639CCE0063A5CE000000000000000000CE4A0000FFBD
+ 5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD0000CE4A
+ 0000FFBD5A00CE4A00000000000000000000000000000000000000000000CE4A
+ 0000FFBD5A00CE4A00006BBD00006BBD00000000000000000000FF7B7300FFBD
+ AD00FFF7EF00FFF7EF00FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFCEBD00FF9C3100FFAD4200FFC62100FFC62100FFC6
+ 2100FFC62100FFC62100FFBD0000FFBD000000000000000000000000000073CE
+ EF0029CEFF007BDEFF00C6E7F7008CDEF7004AD6FF0042D6FF005AD6FF008CE7
+ FF00ADEFFF00CEEFFF00E7F7FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADAD0063636300315A840042739C0063A5D60073ADDE005A94
+ C6004A7BB5007BA5DE0094C6F700A5D6FF00A5D6FF0094C6FF006B9CCE003163
+ 9400528CBD00639CCE00639CCE006BA5D600CE4A00000000000084630000FFBD
+ 5A00CE4A00006BBD00006BBD00006BBD0000CE4A00006BBD00006BBD0000CE4A
+ 0000FFBD5A00CE4A0000000000000000000000000000CE4A0000000000008463
+ 0000FFBD5A00CE4A00006BBD00006BBD000000000000FF7B7300F79C8C00FFEF
+ E700FFF7EF00FFF7EF00FFF7EF00FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFEFEF00FFDED600FFBDAD00FFBDAD00FFB59400FFA56B00FFA56B00FFAD
+ 4200FF9C3100FFB51800FFB51800FFAD00000000000000000000000000005ACE
+ F7005AD6FF00F7F7F700BDEFF70063D6FF009CE7F7005AD6FF0029CEFF0029CE
+ FF0029CEFF0039CEFF0052D6FF006BDEFF0094E7FF00BDEFFF00DEF7FF00F7F7
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6B5AD00524A4A0031313900426B94005284AD006BA5
+ D6006BA5D600396BA500426BAD007BA5DE007BADDE003963A500214A8400528C
+ BD005A8CC6004A73B5006394CE006394CE0000000000CE4A000084630000FFBD
+ 5A00CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A
+ 0000FFBD5A00FFBD5A00CE4A0000000000000000000000000000CE4A00008463
+ 0000FFBD5A00CE4A0000CE4A0000CE4A000000000000E78C7300FFE7DE00FFEF
+ E700FFEFE700FFF7EF00FFF7EF00FFF7EF00FFEFEF00FFEFEF00FFBDAD00FFBD
+ AD00FFBDAD00FFDED600FFF7EF00FFF7EF00FFEFEF00FFEFEF00FFE7DE00FFE7
+ DE00FFE7DE00FFEFE700FFE7DE00FFC6A5000000000000000000C6B5AD0052CE
+ F700B5EFFF00FFFFFF0063DEFF0042D6FF00C6EFFF005AD6FF0039CEFF0039CE
+ FF0039CEFF0031CEFF0029CEFF0029CEFF0029CEFF0031CEFF0039D6FF005ADE
+ FF0084DEFF00ADEFFF00CEEFFF00E7F7FF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6B5AD004A4A4200292931004A73
+ 9400528CB5006BADDE00639CCE0010427B0010397300528CBD00639CCE00426B
+ AD00426BAD005A94C6005A8CC6004273AD000000000000000000CE4A0000CE4A
+ 0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD
+ 5A00FFBD5A00CE4A0000CE4A00000000000000000000CE4A000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FF7B7300F79C8C00FFEFE700FFE7
+ DE00FFE7DE00FFE7DE00FFDED600FFBDAD00FFBDAD00FFBDAD00000000000000
+ 00000000000000000000FFDED600FFDED600FFDED600FFDED600FFDED600FFDE
+ D600FFDED600FFDED600FFF7EF00FFFFFF000000000000000000C6C6BD005AD6
+ FF00DEF7FF00C6EFFF0094E7FF00BDEFFF00A5E7FF0042CEFF0042D6FF0042D6
+ FF0042D6FF0039D6FF0039D6FF0039D6FF0039D6FF0039CEFF0031CEFF0029CE
+ FF0029CEFF0021CEFF0031CEFF0052D6FF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6B5AD004A42
+ 3900212129004A7394005A8CBD006BA5D6006BA5D600426BAD003963A5005A94
+ C6005A94C600396BA500396BA5005A94C600000000000000000000000000CE4A
+ 0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00FFBD5A00CE4A
+ 0000CE4A0000CE4A00006BBD0000CE4A0000CE4A00006BBD0000CE4A00000000
+ 0000CE4A0000CE4A0000FFBD5A00FFBD5A00F79C8C00FFDED600FFDED600FFBD
+ AD00FFBDAD00FFBDAD00FFBDAD00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFDED600FFDED600000000000000000000000000B5E7
+ EF00ADE7F70084DEFF0084DEFF007BDEFF004AD6FF0042D6FF0042D6FF0042D6
+ FF0042D6FF0042D6FF0042D6FF0042D6FF0042D6FF0042D6FF0039CEFF0039CE
+ FF0039CEFF0039CEFF0029CEFF0052CEF700C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6B5AD0042393900181821004A7B9C005A94C6006BA5D600639CD600396B
+ A5003963A5005A94C6006394CE003963A5000000000000000000000000000000
+ 0000CE4A0000CE4A0000FFBD5A00FFBD5A00FFBD5A00FFBD5A00CE4A0000CE4A
+ 00000000000000000000CE4A00006BBD00006BBD00006BBD00006BBD0000CE4A
+ 000000000000CE4A0000CE4A0000FFBD5A00FFBDAD00FFBDAD00FFBDAD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C6ADA500C6BDBD00ADE7F7008CDEFF006BD6FF005AD6
+ FF004AD6FF0042D6FF0042D6FF0042D6FF0042D6FF0042D6FF0042D6FF0042D6
+ FF0042D6FF0039D6FF0031CEFF008CD6EF00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6B5AD004239310010101800527BA500639CCE006BA5
+ D600639CD600396BA500396BAD00639CCE000000000000000000000000000000
+ 000000000000CE4A0000CE4A0000CE4A0000CE4A0000CE4A0000CE4A00000000
+ 0000000000000000000000000000CE4A00006BBD00006BBD00006BBD00006BBD
+ 0000CE4A000000000000CE4A0000CE4A00000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C6AD
+ A500C6C6BD00A5E7F70084DEF7006BD6FF0052D6FF004AD6FF0042D6FF0042D6
+ FF0042D6FF0042D6FF0042CEFF00C6BDBD00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6B5AD0039393100081018005284
+ A500639CD600639CCE0063A5D6005A8CB5000000000000000000000000000000
+ 00000000000000000000CE4A0000CE4A0000CE4A0000CE4A0000000000000000
+ 000000000000000000000000000000000000CE4A00006BBD0000CE4A0000CE4A
+ 00006BBD0000CE4A000000000000CE4A00000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6CECE009CE7F7007BDE
+ FF0063D6FF0052D6FF0063D6F700C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6B5AD004A4A
+ 4200101821004A7B9C0010182900181810000000000000000000000000000000
+ 0000000000000000000000000000CE4A0000CE4A000000000000000000000000
+ 00000000000000000000000000000000000000000000CE4A0000000000000000
+ 0000CE4A00000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D6EFFF00CEBDB50000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6B5AD0042424200C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFF7
+ F700D6E7E700C6D6D600A5B5B5007B8484006B7B8C00BDD6EF00EFFFFF00E7F7
+ FF005A73940008213900393942004A4A4A00525A5A006B7373007B848400848C
+ 8C007B8C8C007B8484007B8C8C00949C9C000000000000000000000000000000
+ 000000000000EFEFEF00C6C6C600BDBDBD00C6C6CE00A5A5A5009C9C9C00C6C6
+ CE00BDCEF700B5BDF700A5B5EF009CB5EF00849CDE00849CDE00526BAD008C94
+ B500BDBDBD00EFEFEF000000000000000000000000005A630800DEE7F700ADBD
+ CE003994630042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B5
+ 7B009CADB500E7F7FF00636B52005A630800D6DEEF00CED6E700BDB5A500EFE7
+ BD00E7DEBD00E7DEBD00E7DEBD00E7DEBD000000000000000000000000000000
+ 00000000000000000000C6C6C600BDBDBD00C6C6CE00A5A5A5009C9C9C00C6C6
+ CE00BDCEF700B5BDF700A5B5EF009CB5EF00849CDE00849CDE00526BAD008C94
+ B500BDBDBD000000000000000000000000000000000000000000EFF7F700D6E7
+ E700C6D6D600A5B5B5007B8484006B7B8C00BDCEE700EFFFFF00DEF7FF00E7FF
+ FF00E7FFFF005A7B94000018420029313900424242004A524A00525A5A005A63
+ 6300525A5A00525252005A5A5A006B7373000000000000000000000000000000
+ 000000000000EFEFEF00DEDEE700C6C6CE00C6BDCE00CECED600B5B5B500B5BD
+ D600ADBDF7009CADE7008CADE700849CE7006B84CE005273C600294A9C006B7B
+ A500BDBDBD00EFEFEF00000000000000000000000000525A2100DEEFFF009CAD
+ B5003994630042B57B0042B57B0042B57B0042B57B0042B57B0042B57B003994
+ 63009CADB500E7F7FF00636B52005A630800D6DEEF00D6DEEF00949C9C00EFE7
+ BD00E7DEBD00E7DEBD00E7DEBD00E7DEBD000000000000000000000000000000
+ 00000000000000000000DEDEE700C6C6CE00C6BDCE00CECED600B5B5B500B5BD
+ D600ADBDF7009CADE7008CADE700849CE7006B84CE005273C600294A9C006B7B
+ A500BDBDBD0000000000000000000000000000000000EFF7F700D6E7E700C6D6
+ D600A5B5B5007B8484006B7B8400B5CEDE00EFFFFF00E7F7FF00E7F7FF00E7F7
+ FF00E7FFFF00EFFFFF005A7B9C0000214A001829420031393900394242002939
+ 42001829310018293100394242004A5252000000000000000000000000000000
+ 0000EFEFEF00EFEFEF00CECECE00C6C6CE00CECED600BDBDC600ADADC600ADB5
+ EF00ADB5EF009CADE700849CDE00849CDE006B84CE005273BD0031529C006B7B
+ A500CECECE00F7F7F700000000000000000000000000525A2100E7EFFF009CAD
+ B5003994630042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B5
+ 7B009CADB500E7F7FF00636B52005A630800CED6E700BDCEDE00BDB5A500E7DE
+ BD00E7DEBD00E7DEBD00E7DEBD00E7DEBD000000000000000000000000000000
+ 00000000000000000000CECECE00C6C6CE00CECED600BDBDC600ADADC600ADB5
+ EF00ADB5EF009CADE700849CDE00849CDE006B84CE005273BD0031529C006B7B
+ A500C6B5AD00000000000000000000000000EFF7F700D6E7E700C6D6D600A5B5
+ B5007B8484006B7B8C00B5CEDE00EFFFFF00EFFFFF00E7F7FF00EFF7FF00E7F7
+ FF00E7F7FF00EFFFFF00E7FFFF007394BD0000295A0000183900102139000829
+ 5200103963004263940010294A0031393900000000000000000000000000F7F7
+ F700EFEFEF00DED6DE00CEC6CE00B5B5BD00A5A5AD00B5ADB500ADB5DE0094AD
+ EF009CADEF009CADE700849CD6007B94D6005A7BC6004A6BB500314A94007384
+ AD00DEDEDE0000000000000000000000000000000000525A2100BDCEDE00737B
+ 840042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B57B003994
+ 63009CADB500E7F7FF00636B390073730000737B8400BDB5A500E7DEBD00E7DE
+ BD00E7DEBD00E7DEBD00E7DEBD00E7DEBD000000000000000000000000000000
+ 000000000000DED6DE00CEC6CE00B5B5BD00A5A5AD00B5ADB500ADB5DE0094AD
+ EF009CADEF009CADE700849CD6007B94D6005A7BC6004A6BB500314A94007384
+ AD0000000000000000000000000000000000D6E7E700C6D6D600ADB5B5007B84
+ 84006B7B8C00BDD6E700EFFFFF00EFFFFF00E7F7FF00E7F7FF00E7F7FF00E7F7
+ FF00EFF7FF00E7F7FF00EFFFFF00E7FFFF0094B5D600294A7B0000214A000021
+ 4A0008317300ADC6E7006B8CB50010294200000000000000000000000000EFEF
+ EF00EFEFEF00D6D6D600C6C6C600ADADB500C6C6C600A5ADC6009CB5EF009CB5
+ EF0094ADE7009CADE700849CD6007B94D6005A73BD004A6BAD00294A8C007B84
+ AD00E7E7DE000000000000000000EFEFEF0000000000525A21003994630042B5
+ 7B0042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B5
+ 7B0039946300ADBDCE004A52310073730000737B8400EFE7BD00EFE7BD00EFE7
+ BD00EFE7BD00EFE7BD00EFE7BD00EFE7BD000000000000000000000000000000
+ 0000EFEFEF00D6D6D600C6C6C600ADADB500C6C6C600A5ADC6009CB5EF009CB5
+ EF0094ADE7009CADE700849CD6007B94D6005A73BD004A6BAD00294A8C007B84
+ AD0000000000000000000000000000000000CEDEDE00ADBDBD007B8C8C00737B
+ 8C00C6DEEF00EFFFFF00EFFFFF00E7F7FF00E7F7FF00E7F7FF00E7F7FF00E7F7
+ FF00E7F7FF00E7F7FF00DEF7FF00E7F7FF00EFFFFF00CEE7F700849CC6004A6B
+ 94007394BD00D6EFFF00D6EFFF006B8CBD00000000000000000000000000EFEF
+ EF00E7DEE700C6C6C600D6D6D600D6D6D600B5B5CE009CADEF00738CCE009CB5
+ EF0094ADEF00849CE700849CD600849CD6005A73BD004263AD00294A9C008C94
+ AD00CECEC600EFE7EF00DEDED600B5B5B50000000000525A210042B57B0042B5
+ 7B0042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B5
+ 7B0042B57B00399463004A4A100000000000636B3900EFE7BD00EFE7BD00EFE7
+ BD00EFE7BD00BDB5A500949C9C00BDB5A5000000000000000000000000000000
+ 0000E7DEE700C6C6C600D6D6D600D6D6D600B5B5CE009CADEF00738CCE009CB5
+ EF0094ADEF00849CE700849CD600849CD6005A73BD004263AD00294A9C008C94
+ AD00CECEC6000000000000000000B5B5B500C6CECE00949C9C007B8C9C00CEDE
+ EF00EFFFFF00E7F7FF00E7F7FF00E7F7FF00E7F7FF00EFF7FF00EFF7FF00E7F7
+ FF00DEF7FF00DEF7FF00DEEFFF00D6EFFF00DEEFFF00E7F7FF00DEEFFF00C6DE
+ F700BDD6F700B5CEEF00B5CEE700ADCEEF000000000000000000EFEFEF00EFEF
+ EF00CECED600CECED600C6C6CE00BDBDC600ADBDEF00637BC6007B8CBD0094AD
+ EF0094B5EF007B94E700849CDE007B94D600395AAD003952AD004A63AD009494
+ A5009C9C9C00ADA5A5009C9CAD007384BD00000000005A6308003994630042B5
+ 7B0042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B57B0042B5
+ 7B0042B57B0042B57B004A4A10000000000073730000636B3900636B3900636B
+ 3900636B52009CADB500D6DEEF00949C9C000000000000000000000000000000
+ 0000CECED600CECED600C6C6CE00BDBDC600ADBDEF00637BC6007B8CBD0094AD
+ EF0094B5EF007B94E700849CDE007B94D600395AAD003952AD004A63AD009494
+ A5009C9C9C00ADA5A5009C9CAD007384BD00BDC6C60094A5AD00CEE7EF00EFFF
+ FF00E7F7FF00E7F7FF00E7F7FF00E7F7FF00E7F7FF00E7F7FF00E7F7FF00E7F7
+ FF00DEF7FF00DEF7FF00DEF7FF00D6EFFF00CEE7FF00B5CEEF00A5BDE70094B5
+ D6008CA5CE00849CC6007394BD007B94BD000000000000000000EFEFEF00DEDE
+ E700CECECE00C6C6CE00C6C6C600A5A5B5007B94D6006B7BB5009CB5EF007B8C
+ C60094ADE7007B94DE008CA5E700738CDE00314AAD00395AB5006373A5009494
+ 9C007B7B8C007B849C006384BD005273C60000000000000000005A6308004A52
+ 3100399463003994630039946300399463003994630042B57B0042B57B0042B5
+ 7B0042B57B003994630073730000000000000000000000000000000000007373
+ 0000525A2100BDCEDE00E7F7FF00BDCEDE00000000000000000000000000DEDE
+ E700CECECE00C6C6CE00C6C6C600A5A5B5007B94D6006B7BB5009CB5EF007B8C
+ C60094ADE7007B94DE008CA5E700738CDE00314AAD00395AB5006373A5009494
+ 9C007B7B8C007B849C006384BD005273C600C6D6D600DEEFF700EFFFFF00E7F7
+ FF00E7F7FF00E7F7FF00E7F7FF00E7FFFF00EFFFFF00E7F7FF00DEF7FF00E7F7
+ FF00DEF7FF00E7F7FF00DEF7FF00C6DEF7009CB5DE0094ADD6009CB5D6009CB5
+ DE008CADCE00849CC6007394BD00637BAD0000000000F7F7EF00EFEFEF00CECE
+ CE00C6BDC600CECECE00ADADAD00BDBDC6009494AD009CADDE00637BC6008494
+ BD0094A5E7004A5A8C00849CD6006B84CE00395AAD004A63B500636B84007B84
+ 8400737B94006384C6005A7BCE005A7BBD000000000000000000000000000000
+ 0000000000005A630800636B5200D6DEEF00BDCEDE00399463004A523100525A
+ 2100525A21005A6308000000000000000000000000000000000073730000949C
+ 9C00DEE7F700DEEFFF00DEE7F700DEEFFF00000000000000000000000000CECE
+ CE00C6BDC600CECECE00ADADAD00BDBDC6009494AD009CADDE00637BC6008494
+ BD0094A5E7004A5A8C00849CD6006B84CE00395AAD004A63B500636B84007B84
+ 8400737B94006384C6005A7BCE005A7BBD00E7FFFF00EFFFFF00EFF7FF00E7F7
+ FF00E7F7FF00E7F7FF00E7F7FF00E7FFFF00E7FFFF00E7F7FF00E7F7FF00E7F7
+ FF00DEF7FF00D6E7FF00ADC6E7008CA5CE007B94BD007B94BD00738CBD007394
+ BD007394BD006384B5004A73AD00526BA50000000000F7F7F700E7E7E700DEDE
+ E700BDBDC600A5A5AD00B5B5B500BDBDBD00C6C6C600ADBDE700637BBD008CA5
+ E7007384BD00525A8C007B94DE007384B5005A6BB5007B84AD00ADADAD00636B
+ 8C006B84C6007394E700738CD600738CCE000000000000000000000000005A63
+ 0800636B52009CADB500CED6E700DEEFFF00E7EFFF009CADB5004A5231005A63
+ 08000000000000000000000000000000000000000000737300009CADB500E7F7
+ FF00DEEFFF00DEE7F700DEE7F700DEE7F7000000000000000000E7E7E700DEDE
+ E700BDBDC600A5A5AD00B5B5B500BDBDBD00C6C6C600ADBDE700637BBD008CA5
+ E7007384BD00525A8C007B94DE007384B5005A6BB5007B84AD00ADADAD00636B
+ 8C006B84C6007394E700738CD600738CCE00DEF7F700E7FFFF00EFF7FF00E7F7
+ FF00E7F7FF00E7F7FF00E7FFFF00E7FFFF00EFFFFF00E7FFFF00E7F7FF00DEEF
+ FF00CEE7FF0094B5DE005A7BB500315A940031529400214A8C00103973001842
+ 840021429400295AAD00215AAD005273AD0000000000EFEFEF00D6D6D600E7E7
+ E700DEDEDE00DEDEDE00BDBDBD00B5B5BD00ADADB500B5B5BD00BDC6E70094A5
+ E7008C94B5007B94CE006B84C600848C9C009C9CAD009C9CA5007B84A5006B84
+ D6005A7BD6005A73B5007B94DE006B8CCE000000000000000000525A2100ADBD
+ CE00E7EFFF00E7F7FF00DEEFFF00DEE7F700DEE7F700E7F7FF00E7EFFF00949C
+ 9C004A4A1000000000005A6308002929290073730000949C9C00E7F7FF00DEE7
+ F700DEE7F700DEE7F700DEE7F700DEE7F700000000000000000000000000E7E7
+ E700DEDEDE00DEDEDE00BDBDBD00B5B5BD00ADADB500B5B5BD00BDC6E70094A5
+ E7008C94B5007B94CE006B84C600848C9C009C9CAD009C9CA5007B84A5006B84
+ D6005A7BD6005A73B5007B94DE006B8CCE00F7FFFF00EFF7FF00E7F7FF00E7FF
+ FF00E7F7FF00E7F7FF00E7FFFF00EFFFFF00E7F7FF00D6EFFF00E7FFFF00E7F7
+ FF00DEF7FF006BA5E7004273CE0010398C00396BB50029529C0000184A000829
+ 6B00214AA5002963B5002152A5004A73AD000000000000000000EFEFEF00D6CE
+ CE00D6D6D600E7E7E700E7E7E700D6CED600C6C6CE00ADADB500ADADB500BDBD
+ C600BDB5BD00ADB5D6008C94A500BDBDBD00ADADAD009C9CBD006B84D6006B8C
+ E7005263A5006B84B5007394DE004A6BBD005A630800636B5200BDCEDE00E7F7
+ FF00DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEEFFF00E7F7
+ FF009CADB5005A6308005A630800292929004A523100DEE7F700DEEFFF00DEE7
+ F700DEE7F700DEE7F700DEE7F700DEE7F700000000000000000000000000C6AD
+ A50000000000E7E7E700E7E7E700D6CED600C6C6CE00ADADB500ADADB500BDBD
+ C600BDB5BD00ADB5D6008C94A500BDBDBD00ADADAD009C9CBD006B84D6006B8C
+ E7005263A5006B84B5007394DE004A6BBD0000000000F7F7F700EFF7FF00EFFF
+ FF00E7FFFF00E7F7FF00E7FFFF00E7FFFF00EFFFFF00A5C6DE009CB5C600F7FF
+ FF00BDDEFF004A84D6001842940008297B001031730000216300083173002152
+ 9C003163B5003163B500295AAD004A73AD000000000000000000000000000000
+ 0000DEDEDE00DEDEDE00E7E7EF00EFE7EF00DEDEE700D6D6D600C6C6C600ADAD
+ B500B5B5B500B5B5B500C6BDC600ADADB500B5ADB500ADADC600949CCE007373
+ 9C008494AD008CA5EF007394DE004A63BD00737B8400E7F7FF00E7EFFF00DEE7
+ F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEEF
+ FF00E7EFFF00636B52004A52310021215200426BA500D6DEEF00DEEFFF00DEE7
+ F700DEE7F700DEE7F700DEE7F700DEE7F7000000000000000000000000000000
+ 00000000000000000000E7E7EF00EFE7EF00DEDEE700D6D6D600C6C6C600ADAD
+ B500B5B5B500B5B5B500C6BDC600ADADB500B5ADB500ADADC600949CCE007373
+ 9C008494AD008CA5EF007394DE004A63BD00000000000000000000000000E7F7
+ F700DEF7F700EFFFFF00E7FFFF00E7FFFF00E7FFFF00D6EFEF005A7B940084AD
+ DE004A84CE00214AA500001052000008420008216B002952A5004273BD003973
+ BD00396BB500396BB500295AAD004A73B5000000000000000000000000000000
+ 000000000000F7F7F700E7E7E700E7E7E700E7E7EF00E7E7EF00DEDEDE00DEDE
+ DE00C6C6C600ADADB500ADA5AD00B5B5BD00B5B5B5009C9CA5007B84AD006B73
+ 9C0094ADE7007B94DE006384CE006B8CCE00636B5200DEEFFF00DEEFFF00DEE7
+ F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7
+ F700E7F7FF009CADB500394A6B00394A6B00426BA500CED6E700E7EFFF00DEE7
+ F700DEE7F700DEE7F700DEE7F700DEE7F7000000000000000000000000000000
+ 000000000000000000000000000000000000E7E7EF00E7E7EF00DEDEDE00DEDE
+ DE00C6C6C600ADADB500ADA5AD00B5B5BD00B5B5B5009C9CA5007B84AD006B73
+ 9C0094ADE7007B94DE006384CE006B8CCE000000000000000000000000000000
+ 000000000000E7EFEF00EFFFFF00E7FFFF00E7FFFF00EFFFFF00ADD6FF005A94
+ DE00316BBD0008317B000829630018428C003973BD004A84CE003973C600396B
+ B500396BB500396BB500295AA5004273B5000000000000000000000000000000
+ 0000000000000000000000000000EFEFEF00E7E7E700DEDEDE00E7DEE700E7E7
+ E700E7E7EF00D6D6D600CECECE00ADADB500A5A5AD00ADB5D6007B8CDE007B9C
+ E7006B8CD6005A7BC600738CCE006B8CCE0010181800636B5200D6E7F700DEEF
+ FF00DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEE7
+ F700E7EFFF00CED6E7004A4A10007373000021215200394A6B009CADB500D6E7
+ F700E7EFFF00D6E7F700DEE7F700DEE7F7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000E7DEE700E7E7
+ E700E7E7EF00D6D6D600CECECE00ADADB500A5A5AD00ADB5D6007B8CDE007B9C
+ E7006B8CD6005A7BC600738CCE006B8CCE000000000000000000000000000000
+ 00000000000000000000F7F7FF00DEEFF700DEF7F700E7F7FF00BDDEFF006394
+ DE00427BC600397BC600427BC600427BCE003973C6003973B5003973BD00316B
+ B500396BB5003163AD00295AA50029529C000000000000000000000000000000
+ 00000000000000000000000000000000000000000000EFEFEF00E7DEE700DEDE
+ DE00E7DEE700E7E7EF00E7DEE700DEDEDE00BDBDCE0094A5DE009CB5E7008CA5
+ E700637BCE006B84CE00637BCE006B8CCE002929290010181800636B5200E7EF
+ FF00DEE7F700DEE7F700DEE7F700DEE7F700DEE7F700DEEFFF00E7EFFF00E7F7
+ FF00E7F7FF00BDCEDE004A4A10005A630800292929002121520021215200737B
+ 8400BDCEDE00E7EFFF00DEE7F700DEE7F7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000E7DEE700E7E7EF00E7DEE700DEDEDE00BDBDCE0094A5DE009CB5E7008CA5
+ E700637BCE006B84CE00637BCE006B8CCE000000000000000000000000000000
+ 000000000000000000000000000000000000EFF7F700E7EFF700D6E7F70084AD
+ E7005284CE00528CD6005A94D6005A94D6004273BD003163AD003973B5004A84
+ C600528CC6003973BD00316BAD00315A9C000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFEF
+ EF00E7E7E700E7E7E700E7E7E700E7E7EF00E7E7E700D6D6DE00CECED600B5B5
+ BD009CA5CE007B8CBD008494CE00949CBD002929290010181800101818009CAD
+ B500E7F7FF00DEE7F700DEE7F700E7EFFF00E7F7FF00DEE7F700ADBDCE00737B
+ 8400394A6B0029292900101818005A6308002929290021215200212152002121
+ 5200394A6B009CADB500DEE7F700E7F7FF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000E7E7E700E7E7EF00E7E7E700D6D6DE00CECED600B5B5
+ BD009CA5CE007B8CBD008494CE00949CBD000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000BDD6
+ EF006B9CD600527BB5005A7BAD00638CC6006B9CE700639CDE006B9CDE00639C
+ D600528CCE006394CE0094B5CE00BDCEDE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000F7F7F700E7E7EF00E7E7E700E7E7E700E7E7E700E7DEE700D6D6
+ D600CECECE00BDBDBD00A5A5AD00ADADAD004A4A100010181800101818002929
+ 2900D6DEEF00E7EFFF00E7EFFF00CED6E700737B8400394A6B00101818001018
+ 1800101818001018180029292900000000007373000021215200212152002121
+ 52002121520021215200394A6B00ADBDCE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7E7E700E7E7E700E7DEE700D6D6
+ D600CECECE00BDBDBD00A5A5AD00ADADAD000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DEEF
+ EF005A8CCE00184AAD0039639C00081842003963A50073A5E7004A84C600427B
+ C6006394BD00ADC6CE00DEE7E700EFF7F7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000F7F7F700EFEFEF00EFE7EF00EFEFEF00EFE7
+ EF00E7E7E700E7E7E700D6D6D600C6BDC6005A63080010181800101818001018
+ 1800737B8400E7EFFF00949C9C00292929001018180010181800101818001018
+ 180010181800101818005A63080000000000000000005A630800292929002121
+ 5200212152002121520021215200212152000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C6BDC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C6DEEF009CBDE7009CC6F7007394B500081039003163A5006B94C60094AD
+ C600BDCECE00D6E7DE00DEEFEF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000004A4A100010181800101818001018
+ 180029292900394A6B0010181800101818001018180010181800101818001018
+ 1800101818004A4A100000000000000000000000000000000000737300004A4A
+ 1000292929002121520021215200212152000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000007B94A500425A7300C6D6D600CEDE
+ D600CEDEDE00D6E7E700DEEFEF00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005A63080029292900101818001018
+ 1800101818001018180010181800101818001018180010181800101818001018
+ 18005A6308000000000000000000000000000000000000000000000000000000
+ 0000737300004A4A10004A4A10005A6308000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000849CAD0063738400D6E7
+ E700D6E7E700DEEFEF00DEEFF700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000737300005A63
+ 08005A6308005A630800292929001018180010181800292929004A4A10007373
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000094A5BD00ADBD
+ D600E7F7F700E7F7F70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C6DE
+ E700F7FFFF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B5B5B500B5B5B500ADAD
+ AD00CECECE00C6C6C600BDBDB500B5ADAD00B5B5B500B5B5B500B5B5B500B5B5
+ B500C6C6C600B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500BDBDBD00BDBD
+ BD00B5B5AD00B5B5B500B5B5B500B5B5B500000000000000000000000000FFFF
+ FF00CECECE00B5B5B500B5B5B500A5A5A500D6D6D600F7F7F700F7F7F700EFEF
+ EF009C9C9C007B7B7300C6C6C600F7F7F700F7F7F700CECECE00CECECE00D6D6
+ D600E7E7E700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 000000000000000000001010080084846B00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00CECECE000000000000000000ADA5AD006B73
+ 94007B7BA500292942004A525200E7EFDE007B7BCE000000B5000008B5000000
+ B500735ADE0084BD840000840000088410000084000052A56300B5948C00FFBD
+ 9C00FFCEB500FFCEB500CEADA50000000000E7E7E700BDBDBD00ADADA500CECE
+ CE00CEC6C600CEC6C600BDBDBD00B5B5AD00B5B5B500B5B5B500B5B5B500BDBD
+ BD00CEC6C600B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500C6C6C600C6C6
+ C600B5B5B500B5B5B500B5B5B500B5B5B500000000000000000000000000FFFF
+ FF00B5B5B5009C9C9C008C8C8C0094949400F7F7F700FFFFFF00FFFFFF00FFFF
+ FF00B5B5B5007B7B7B0094949400F7F7F700F7F7F700BDBDBD00D6D6D600D6D6
+ D600F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000000000003131080010100800CECECE00FFFFFF00F7F7F7009CA5BD006363
+ AD006363AD00CECECE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000008C94BD00848C
+ BD009C9CC600393952006B6B6300FFFFFF008484D60000009C000008A5000000
+ A5007B63D60094D68C0008AD000000B5000000A5000063BD6B00B5948C00FFCE
+ B500FFDEC600FFDEC600E7C6B500E7B59C00E7E7E700BDBDBD00BDBDBD00D6CE
+ CE00CECECE00CECECE00BDBDB500B5B5B500B5B5B500B5B5B500B5B5B500BDBD
+ BD00CECECE00B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500CEC6C600CECE
+ C600B5B5B500B5B5B500B5B5B500B5B5B500000000000000000000000000FFFF
+ FF00B5B5B5009494940084848400D6D6D600FFFFFF00F7F7F700F7F7F700FFFF
+ FF00CECECE00848484007B7B7B00D6D6D600DEDEDE00C6C6C600DED6DE00DEDE
+ DE00F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000000000003131080029292900F7F7F700FFFFFF009CA5BD002121A5002129
+ D6002129D6006363AD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000007B84AD007373
+ AD008484B500312942006B736B00F7F7F7008C84C6000000730008087B000000
+ 7B006B73B5007BDE8C0000BD080000BD000000B508006BCE6B00B59C9400F7C6
+ AD00FFE7CE00FFDECE00FFDECE00FFD6BD00EFEFEF00C6C6C600CECECE00D6D6
+ D600D6D6D600D6D6CE00B5B5B500B5B5B500B5B5B500B5B5B500B5B5AD00C6C6
+ C600D6D6D600B5B5B500B5B5B500B5B5B500B5B5B500B5ADAD00CECECE00CECE
+ CE00B5B5B500B5B5B500B5B5B500B5B5B500000000000000000000000000FFFF
+ FF00B5B5B50084848400A5A5A500FFFFFF00FFFFFF00F7F7F700F7F7F700FFFF
+ FF00E7E7E700948C8C007B7B7B00A5A5A500C6C6C600D6CECE00D6D6D600E7E7
+ E700F7F7F700F7F7F700F7F7F700F7F7F7000000000000000000000000000000
+ 0000000000001010080029292900F7F7F700FFFFFF007B84BD002129D6002129
+ D6002121A5006363AD00EFEFEF00F7F7F700F7F7F700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000007B7BAD006B63
+ A5007373AD0031315200101821004A4A42002121310000002900000029000000
+ 2900211831002142290000310800083108000831080018391800BDB5B500C69C
+ 8C00FFDECE00FFE7DE00FFE7D600FFE7DE00EFEFEF00C6C6C600D6D6D600DEDE
+ D600DED6D600CECECE00A5A5A5009C9C9C00A5A59C00A5A59C00A5A5A500CEC6
+ C600D6D6CE00A5A5A500A59C9C00A5A5A500A5A59C009C9C9C00C6C6C600D6CE
+ CE00A5A5A500A5A59C00A5A5A500A59C9C00000000000000000000000000FFFF
+ FF00ADADAD0084848C00D6D6D600DEDED600F7EFEF00FFFFFF00F7F7F700F7F7
+ F700F7F7F700ADADAD00847B7B0073737300B5ADAD00D6D6D600D6D6D600EFEF
+ EF00F7F7F700F7F7F700F7F7F700F7F7F7003131080031310800313108003131
+ 0800313108001010080029292900EFEFEF00FFFFFF009CA5BD002121A5002121
+ A5002121A5002121A500294AA500294AA5006363AD007B84BD009CA5BD00E7E7
+ E700FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000007B7BA500635A
+ 9C00635A9C0042427B002931520042395A004A426300524A73004A4A6B005252
+ 6B004A426300423963004A39730052397B004A397300423963004A397300C6B5
+ AD00C69C8C00F7CEBD00FFDED600FFDECE00EFEFEF00CECECE00D6D6D600E7DE
+ DE00DEDEDE00D6CECE00ADADAD009C9C9C009C9C9C009C9C9C00A5A5A500CECE
+ CE00D6CECE00A5A5A5009C9C9C009C9C9C009C9C9C00A5A5A500CECEC600D6D6
+ CE00ADADAD009C9C9C009C9C9C009C9C9C00000000000000000000000000FFFF
+ FF00A5A5A500C6C6C600C6CEE700737BBD00B5BDBD00EFE7E700F7F7F700FFFF
+ FF00FFFFFF00C6C6C6008C8484007B7B7B00B5B5B500CEC6CE00DEDEDE00F7F7
+ F700F7F7F700F7F7F700F7F7F700000000003131080010100800101008001010
+ 0800101008001010080010100800CECECE00EFEFEF006363AD002121A5002129
+ D6002129D6002129D6002129D6002129D6002129D6002129D6002129D6002121
+ A5007B84BD00E7E7E700FFFFFF00F7F7F70000000000000000006B739C004A52
+ 8C005A529C004A4284004A4A840063639C0063639C00635A9C0063639C006363
+ 9C005A639C005A5A9C005A5A9C005A5A9C005A5A9C0063639C0063639C005A6B
+ 8C00C6BDBD00A58C8C00A5847B00A5847B00EFEFEF00DEDEDE00D6D6CE00E7E7
+ E700E7DEDE00DEDEE700D6DEE700D6DEDE00D6DEDE00D6DEDE00D6DEE700E7E7
+ E700EFE7E700D6DEE700D6DEDE00D6DEDE00D6DEDE00D6DEDE00E7E7E700E7E7
+ E700D6DEE700D6DEDE00D6DEDE00D6DEDE00000000000000000000000000FFFF
+ FF00A5A5A500CECEC600B5B5CE00525AC600BDBDD600CED6CE00B5BDB500E7E7
+ E700FFFFFF00DEDEDE00948C8C0094949400E7E7E700E7DEE700DEDEDE00F7F7
+ F7000000000000000000EFEFEF00EFEFEF000000000031310800101008001010
+ 0800101008001010080010100800394A6300294AA5002129D6002129D6002129
+ D6002129D6002129D6002129D6002129D6002129D6002129D6002129D6002129
+ D6002129D600294AA500CECECE008C8C8C00000000000000000063639C003939
+ 7B004A4A8C0039397B0042427B004A4A840042428400424A8400424A8400424A
+ 8400424A8400424A8400424A8400424A8400424A84004A42840042397B00637B
+ 8C006B6BDE002918C6003984630021AD2100EFEFEF00F7F7F700CECECE00EFE7
+ E700F7F7F700DECEBD00DE946300E79C6B00E79C6B00E7946300DE946B00F7E7
+ E700EFEFE700DE946B00E79C6300E79C6B00E79C6300DE8C5A00EFD6C600EFEF
+ EF00D6A58400E7946300E79C6B00E79C6B00000000000000000000000000FFFF
+ FF00A5A5A50084848400A5A5A500CECECE00F7EFF70052A5DE005AADC600DED6
+ D600D6CED600E7E7E70094949400C6BDBD00DEDEDE00EFE7EF00E7E7E700F7F7
+ F700EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000313108003131
+ 080010100800101008001818210018186B002121A5002129D6002121A5001818
+ 6B0018186B0018184200181842001818420018184200294AA500294AA5002121
+ A5002121A50018186B002121A500101008000000000000000000636394003131
+ 6B003939730039316B0039396B00393973003939730039427300394273003942
+ 730039427300393973003939730039397300393973003939730031396B005A6B
+ 8C006B73C60021219400315A630029634200EFEFEF00EFEFEF00DEDEDE00D6D6
+ D600FFFFFF00DEA58400E7732100EF7B3100EF7B3100EF7B3100DE732900EFD6
+ CE00E7CECE00DE6B2100EF843900EF843900EF843900E76B1800E7B59C00EFEF
+ EF00DE7B3900EF7B3100EF843900EF843900000000000000000000000000FFFF
+ FF00A5A5A50084848400848484008C8C8C00B5B5B500A5B5C600B5C6E700C6D6
+ C60063B58C00A5B5AD00ADADAD00CECECE00A5A5A500B5ADB500E7E7E700EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 000031310800313108001818420018186B002121A50018186B00101008001010
+ 080018184200294AA500294AA500294AA500294AA5002963E7002963E7001818
+ 4200181842002121A50018186B0018186B000000000000000000848CAD007384
+ A5007B84AD008484AD007B84AD007B84AD007B84AD007B84AD007B84AD007B84
+ AD007B84AD007B84AD007B84AD007B84AD007B84AD007B84AD007B7BB500848C
+ B5008C9CBD007384A5007B7BAD007373AD00EFEFEF00EFEFEF00EFEFEF00DEDE
+ DE00E7E7E700DE946B00EF844200EF8C4A00EF8C4A00EF944A00E7844200EFDE
+ CE00E7CEC600E77B3900EF945200EF945200EF9C5A00E77B3100E7B59C00EFEF
+ EF00DE845200EF945200EF945200EF945200000000000000000000000000FFFF
+ FF00A5A5A5007B7B7B0084848400848484007B7B7B008C8C8C00D6CECE00B5C6
+ BD0052AD7B008CA59400D6CED600FFFFFF00DED6D60084848400D6D6D600EFEF
+ EF00EFEFEF00EFEFEF00E7E7E700E7E7E7000000000000000000000000000000
+ 00000000000031310800181842002121A50018186B0010100800101008001818
+ 21002963E7002963E7002963E7002963E7002963E7002963E7002963E7002963
+ E70018186B00181821002121A500181842000000000000000000A5ADCE00BDC6
+ DE00BDC6DE00C6CEE700C6CEE700C6CEE700CECEE700CECEE700CECEE700CECE
+ E700C6CEE700C6CEE700C6CEE700C6CEE700C6CEE700C6CEE700CED6E700C6D6
+ DE00C6C6E700CEC6EF00C6CEDE00ADBDCE00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00E7EFF700CE7B5200EF7B3100EF8C4A00EF8C4A00EF8C4A00E7844A00F7DE
+ D600E7C6BD00DE733100EF945200EF945200EF945200E7733100E7B59400EFEF
+ EF00DE845200EF8C4A00EF945200EF945200000000000000000000000000FFFF
+ FF009C9C9C007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B0073737300948C
+ 9400BDBDBD00B5ADAD00EFEFEF00C6C6BD008484840094949400C6C6C600E7E7
+ E700EFEFEF00E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 00000000000000000000292929002121A5001010080010100800101008001010
+ 080018184200294AA5002963E7002963E7002963E7002963E7002963E7002963
+ E7002963E700294AA5001818420018186B000000000000000000B5B5D600DEE7
+ EF00C6CED6008C8C9C006B6B73006B6B73006B6B7B006B6B7B006B6B7B006B6B
+ 7B006B6B7B006B6B73006B6B73006B6B73006B6B7300736B7B006B6B7B006B6B
+ 730084848C00C6C6D600D6DEF700BDC6DE00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFF7F700D6734200E76B2100E7733100E7732900EF7B3100DE7B4200F7DE
+ DE00E7C6BD00DE732900EF843900EF843900EF843900E76B2100E7AD9400EFEF
+ EF00DE8C5A00EF7B3100EF843900EF843900000000000000000000000000FFFF
+ FF009C9C9C00737373007B7B7B007B7B7B007B7B7B0073737300737373007373
+ 73006B6B6B0094949400E7E7E700B5B5B500ADADAD00C6C6C600A5A5A500BDBD
+ BD00DEDEDE00E7E7E700E7E7E700E7E7E7000000000000000000000000000000
+ 000000000000000000004A4A210018186B001010080010100800101008001010
+ 08001010080010100800181821001818420018186B00294AA500294AA500294A
+ A5002963E700294AA5001818420018186B000000000000000000B5BDD600DEE7
+ FF00C6C6D6005A52630000000000080008000800080008000800080008000000
+ 0800000008000008080000080800000808000008080008000800080808000000
+ 000031394200B5BDD600DEE7FF00BDC6DE00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00E7E7E700CE5A2900D65A1800D6632100DE632100DE6B2900D6734200EFDE
+ DE00DEC6B500DE632100E7732900E7732900E7732900DE631800DE9C8400EFEF
+ EF00DE8C6300E76B2100E7732900E7732900000000000000000000000000FFFF
+ FF00949494006B6B6B00737373007373730073737300737373006B6B6B006B6B
+ 6B0052525200C6BDC600A5A5A5009C9C9C00DED6D600C6C6C600BDBDBD00ADAD
+ AD00CECECE00CECECE00DEDEDE00E7E7E7000000000000000000000000000000
+ 0000000000000000000000000000181821001010080010100800101008001010
+ 080063636B00E7E7E700DEDED6004A4A21001010080010100800394A63002929
+ 2900101008001818210010100800181821000000000000000000ADBDDE00DEEF
+ FF00C6CEE7005A5A7B00313142006363630063635A00635A5A005A5A5A00635A
+ 5A005A5A5A005A5A5A005A5A5A005A5A5A005A5A5A0063635A00635A5A003939
+ 3900424A5A00B5BDD600E7EFFF0000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00DECEC600CE633900DE733900DE6B4200DE734200DE7B4A00CE7B4A00EFE7
+ E700CEB59C00D65A1800DE6B2100DE6B2100DE6B2100DE631800C68C7300EFEF
+ EF00D68C6B00DE632100DE6B2100DE6B2100000000000000000000000000FFFF
+ FF00949494006B6B6B006B6B6B0073736B00737373006B6B6B00636363005252
+ 52008C8C8C00D6D6D600636363005A5A5A007B7B7B009C9C9C00D6D6D600B5B5
+ B500B5B5B500CECECE00C6C6C600CECECE000000000000000000000000000000
+ 0000000000000000000000000000313108001010080010100800101008001818
+ 2100E7E7E700FFFFFF00CECECE0063636B001010080063636B00F7F7F700CECE
+ CE00101008001010080010100800101008000000000000000000ADB5C600ADBD
+ C600A5ADC6008C8CAD008C8C94009CA59C009C9C9C009C9C9C009C9C9C009C9C
+ 9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009CA59C00949494008C8C
+ 94008C8CA5009CA5BD00C6ADAD0000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00E7D6CE00E7845A00EF8C6B00EF8C6B00EF8C6B00EF8C6B00D6735200F7EF
+ EF00D6B5AD00CE5A1800D65A1800D65A1800D65A1800CE521000C68C7B00EFEF
+ EF00DE947B00CE5A2100D65A1800D65A1800000000000000000000000000FFFF
+ FF0094949400636363006B6B6B006B6B6B005A5A5A005A5A5A00737373009C9C
+ 9C00D6D6D600737373005A5A5A00636363005A5A5A005A5A5A006B6B6B00BDBD
+ BD00ADADAD00ADADAD00ADADAD00BDBDBD000000000000000000000000000000
+ 0000000000000000000000000000000000001010080010100800101008001818
+ 2100EFEFEF00FFFFFF00101008008C8C8C0010100800BDBDC600BDBDC600BDBD
+ C6004A4A2100101008001010080000000000000000000000000000000000C6AD
+ A5000000000000000000C6ADA5009CA59C009C9C9C009CA5A5009CA5A5009CA5
+ A5009CA5A500A5A5A500A5A5A500A5A5A500A59CA500A5A5A5008C8C9400635A
+ 7B00C6ADAD00000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFBDAD00EFB59C00EFB5A500EFB5A500EFAD9C00E7C6B500EFEF
+ EF00DEB5A500C6521800CE521800C6521800C64A1800C64A1000CE8C6B00EFEF
+ EF00D69C8400CE521800CE4A1800C6521800000000000000000000000000FFFF
+ FF008C8C8C005A5A5A00636363005A5A5A007B7B7B00B5B5AD00BDBDBD00F7F7
+ F7009C9C9C004A4A4A005A5A5A005A5A5A005A5A5A005A5A5A004A4A4A007B7B
+ 7300E7E7E700BDBDBD00B5ADAD00949494000000000000000000000000000000
+ 0000000000000000000000000000000000003131080010100800101008001010
+ 080084846B00F7F7F700F7F7F70063636B0010100800BDBDC600CECECE001010
+ 080063636B001010080010100800000000000000000000000000000000000000
+ 00000000000000000000C6ADA500ADADAD00ADADAD00ADADAD00ADADAD00ADAD
+ AD00ADADAD00ADADAD00ADADAD00ADADAD00ADADAD00B5ADAD009C949C004239
+ 5200A59CA500000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00D6AD9400BD4A1800C6421800C6421800C6421800C6421000CE846B00EFEF
+ EF00CEA59400BD522900C6421800C6421800000000000000000000000000FFFF
+ FF00ADADAD00848C8C008C8C8C0084848400B5B5B5008C8C8C007B7B7B009494
+ 9400B5B5B5007B7B7B008C8C8C00848C8C00848C8400848C8C007B7B7B00B5B5
+ B5009C9C9C007B7B7B00B5B5B500B5B5B5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000010100800101008001010
+ 080010100800292929002929290010100800101008008C8C8C00FFFFFF00F7F7
+ F700181821001010080000000000000000000000000000000000000000000000
+ 00000000000000000000C6ADA500B5B5AD00B5B5B500B5B5B500B5B5B500B5B5
+ B500B5B5B500B5B5B500B5B5B500B5B5B500B5B5B500BDBDBD008C8C8C00ADA5
+ A50000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00CEA59400BD4A2100BD391000BD421800BD391000B5421800C6846300EFEF
+ EF00D6B5AD00BD522900BD391000BD421800000000000000000000000000FFFF
+ FF00FFFFFF00FFFFFF00F7F7F700ADADAD00DEDEDE00FFFFFF00FFFFFF00F7F7
+ F700BDBDBD00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F700BDBD
+ BD00EFEFEF00FFFFFF00FFFFFF00E7E7E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000101008001010
+ 08001010080010100800101008001010080010100800181821008C8C8C006363
+ 6B00101008000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000BDBDBD00BDBDC600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6CE00948C8C00C6AD
+ A50000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00CE9C8C00BD421800B5310800BD390800B5310800B5391000BD7B6300EFEF
+ EF00E7C6BD00BD523100BD391000BD3910000000000000000000000000000000
+ 00000000000000000000BDBDB5009C9C9C000000000000000000000000000000
+ 0000ADA5A500CECEC60000000000000000000000000000000000CECEC600A5A5
+ A500BDBDB5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004A4A
+ 2100101008001010080010100800101008001010080010100800101008001010
+ 0800000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CECECE00CECECE00CECECE00CECECE00CECE
+ CE00CECECE00CECECE00CECECE00CECECE00CECECE00D6D6D6008C8C8C00C6AD
+ A50000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00CEA58C00DE846300DE8C6300DE846300DE846300E7846300C67B6300EFEF
+ EF00DEC6BD00B5523100BD391000BD3910000000000000000000000000000000
+ 00000000000000000000B5ADAD00ADA5A500000000000000000000000000A5A5
+ 9C00ADA5A500CECEC6000000000000000000000000000000000000000000ADAD
+ A500A59C9C000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000004A4A21004A4A2100313108003131080031310800313108000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D6D6D600D6D6D600D6D6D600D6D6D600D6D6
+ D600D6D6D600D6D6D600D6D6D600D6D6D600D6D6D600E7DEE7008C8C8C00BDAD
+ A50000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00DEB5A500E7846300EF947300EF947300EF947300EF8C6300E79C8400EFEF
+ EF00DEC6C600B55A3900BD421800BD3910000000000000000000000000000000
+ 00000000000000000000BDBDB500ADADAD00C6BDB50000000000B5B5AD00A59C
+ 9C00BDBDB500000000000000000000000000000000000000000000000000C6BD
+ B500ADADAD00B5B5AD0000000000BDBDB5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000E7E7DE00E7E7E700E7E7E700E7E7E700E7E7
+ E700DEDEDE00E7E7E700E7E7E700E7E7E700DEDEDE00EFEFEF008C8C8C00ADA5
+ 9C0000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00FFF7F700F7DED600F7DED600F7DED600F7DED600F7DED600FFF7EF00EFEF
+ EF00DEC6C600B5634A00B5421800B53110000000000000000000000000000000
+ 0000000000000000000000000000BDBDB500BDBDBD00BDBDBD00B5B5B500BDB5
+ B500000000000000000000000000000000000000000000000000000000000000
+ 0000C6BDBD00C6C6C600BDB5B500BDBDBD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00DEC6C600C66B5200DE845A00D67B52000000000000000000000000000000
+ 000000000000000000000000000000000000C6C6BD00C6C6BD00C6C6BD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6BD00C6BDBD00C6BDBD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00E7D6D600D67B5200EF845A00EF8C5A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000007BA5BD00ADD6F70084AD
+ C60084A5BD0094BDD6007BA5BD007B9CB5008CB5CE008CADC60094BDD6009CC6
+ DE00739CB5007B9CAD006B8494005A737B00425A630042525200424A52003942
+ 420039393900424242007B7B7300BDBDB5000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00B5F7F700C6F7F700FFFF
+ FF0000000000000000009494FF008C8CFF008484FF007B84FF007B7BFF007373
+ FF007373FF000000AD000000AD00000000000000000000000000B5A59C00BD4A
+ 0000D67308008CAD9400D6D6C600CE732100E76B0000EF730000C6731800945A
+ 390084311000942900008C290000AD8C8400DEBD8400E7AD4A00D6BDA500EFD6
+ BD00DEC69C00E7DED600CEBDB500CEB5B5000000000000000000000000000000
+ 000000000000000000009C9C9C0063636300311818000000000000000000CECE
+ CE00D6DEDE00CEBDB500DEC6DE00B5BDB500BDBDB500C6CECE00CEBDBD00BDBD
+ B500BDBD9400CEBDB500B5B5B500B5A5A500A5B5BD006B8CAD00A5CEEF008CAD
+ CE0084A5C6008CADC6008CADC60084ADC6008CADC6008CB5CE009CBDD60084AD
+ BD005A7B8C00526B730052636300525A5A005A5A5A00525252004A4242003939
+ 39005252520094949400A5A5A500B5B5B5000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF008CEFEF00ADF7F700C6F7F700E7FF
+ FF00FFFFFF00000000008C8CFF008484FF008484FF007B7BFF007373FF007373
+ FF006B6BFF000000AD000000AD000000A5000000000000000000B5948400D65A
+ 0000BD7B18009CCEBD00FFFFFF00E7D6C600D67B2100EF730000EF730000D673
+ 18009C633900843110008C310800B59C9400EFD69400FFC65A00D6B57B00EFB5
+ 4200E78C0000E7BD9400F7EFEF00F7EFEF004231310063424200634242005242
+ 630031424200424242006342630052424200424242004242420052424200CECE
+ CE00EFEFEF00BDBDB500C6CECE00CEBDBD00BDBDB500BDBD9400CEBDB500B5B5
+ B500B5A5A5009C9C9C00A5B5B500A5949400ADB5C600527B9400A5CEEF0094BD
+ D60094B5CE008CB5C60084A5BD007394AD007B9CB5008CB5CE007B9CB5006373
+ 7B004A5A5A00525A5A0063636300635A5A0052524A004A4A42004A4242006B6B
+ 63009CA59C00848C84008C8C8C00A5A5AD000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF008CEFEF00A5F7F700C6F7F700DEFF
+ FF00CEFFFF00000000008484FF008484FF007B7BFF007373FF007373FF00ADAD
+ FF00ADADFF000000A5000000A5000000A50000000000000000009C6B4200E76B
+ 00009C843100B5DED600FFFFFF00FFFFFF00DEDECE00D6842900F77B0000F77B
+ 0000DE7B1000A563310084523900B5ADA500FFE7AD00F7D67B00D6A55200F7AD
+ 2900FF9C0000E7AD7300FFFFFF00FFFFFF009C9C9C00D6DEDE00D6DEDE00CECE
+ CE00D6DEDE00CECECE00CEBDB500CECECE00D6DEDE00CECECE00BDBDBD00CECE
+ CE00EFEFEF00D6DEDE00D6DEDE00D6DEDE00D6DEDE00D6DEDE00D6DEDE00EFEF
+ EF00EFEFEF00D6DEDE00D6DEDE00EFEFEF008494A500739CB50094BDDE008CAD
+ CE008CADC6006B94AD00739CB50084A5BD00738CA5006B8C9C00425A63004A5A
+ 5A0063736B006B737300636363005A5A5A00524A4A0042424200847B7B009CA5
+ 9C006B736B006B736B00ADADAD0094A5AD000000000000000000000000000000
+ 00000000000000000000FFFFFF006BE7E70084EFEF00A5EFEF00BDF7F700D6FF
+ FF00CEFFFF00000000008484FF007B7BFF007373FF00ADADFF00ADADFF009C9C
+ FF009C9CFF009494FF0000009C0000009C00000000000000000094521000F77B
+ 000084945200CEEFE700FFFFFF00FFFFFF00FFFFFF00E7DED600CE843100EF84
+ 0000F78C0000DE7B0800A5734200BDAD9C00FFEFBD00EFCE8C00EFBD6300E7A5
+ 3100EFA51000DE9C4A00F7EFF700FFFFFF009C9C9C00EFEFEF00D6DEDE00D6DE
+ DE00FFFFFF00D6DEDE00CECECE00D6DEDE00CEBDB500D6DEDE00CECECE00CECE
+ CE00EFEFEF00EFEFBD0063311800423131004231310042313100423131004231
+ 31004231310042313100423131004231310084949C0084ADC60094BDDE007BA5
+ C600739CB500739CB500739CB5007B9CB5005A7384004A5A5A005A636B00737B
+ 7B00737B7B00636B6B005A636300525252005A5A5A00948C9400949C9C00636B
+ 63006B6B63009C9C9C00A5ADB5007B94A5000000000000000000000000000000
+ 00000000000000000000FFFFFF0063E7E70084EFEF009CEFEF00B5F7F700D6FF
+ FF00CEFFFF00000000007B7BFF00ADADFF00ADADFF009C9CFF009C9CFF009C9C
+ FF009494FF009494FF008C8CFF00000094000000000000000000AD5A0000E784
+ 00007BAD7B00EFF7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7DEDE00CE8C
+ 3900EF840000FF8C0000E7840000BD844200CEB59400EFD6AD00FFDE8C00E7AD
+ 5200E7AD4200DE942900EFCEBD00FFF7EF009C9C9C00EFEFEF007352520000FF
+ 000000FF0000EFDED600D6DEDE00CECECE00D6DEDE00CECECE00CEBDB500CECE
+ CE00EFEFEF00D6DED60052314200734252008442630073425200734252006342
+ 5200844263004231310042313100423131008C94A5007BA5BD0084B5D60084AD
+ CE008CB5CE008CB5CE007BA5BD00637B8C0052636B00737373008C8484007B84
+ 7B0073737300636363005A5A5A006B6363009C9494008C8C8C00636363006B73
+ 6B008C8C8C00BDB5BD008494A5008CB5C6000000000000000000000000000000
+ 000000000000FFFFFF0042E7E70063E7E7007BEFEF0094EFEF00B5F7F700CEF7
+ F700E7FFFF0000000000ADADFF009C9CFF009C9CFF009C9CFF009C94FF009494
+ FF00948CFF008C8CFF008C8CFF008484FF0000000000B59C9400C6630000CE8C
+ 100084BD9C00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E7E7
+ DE00D6943900F78C0000FF940000EF8C0000B5845200E7D6C600FFE79C00DEAD
+ 7300EFB56300DE942900F7D6CE00F7E7CE009C9C9C00EFEFEF00314242007352
+ 520031424200D6DEDE00CECECE00CEBDB500CECECE00D6DEDE00CECECE00CECE
+ CE00EFEFEF00DEDEDE0052314200734252008442630084426300634252006342
+ 5200844263008442630063424200423131008494A5007BA5C60094C6E7007BA5
+ C60084B5CE007B9CB500527384004A5A63007B7B8400949494008C8C8C007B7B
+ 7B006B6B6B00635A5A00736B73009C949400848484006B6B6B0073737300848C
+ 8C00BDB5BD00A5A5AD00849CAD0084ADCE000000000000000000000000000000
+ 000000000000FFFFFF0039E7E7005AE7E70073EFEF0094EFEF00ADF7F700C6F7
+ F700E7FFFF00F7FFFF00000000009C9CFF009C9CFF009C94FF009494FF00948C
+ FF008C8CFF008C8CFF008484FF00847BFF00000000009C7B6B00E7730000AD8C
+ 290094C6B500FFFFFF00F7F7F700F7F7FF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00E7E7DE00DE943100FF9C0000F7940000BD946300EFE7E700F7EFD600EFD6
+ AD00EFC68400E7AD5200EFD6CE00F7EFD6009C9C9C00EFEFEF00EFEFEF00EFEF
+ EF00EFDED600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFDEDE00D6DEDE00CECE
+ CE00FFFFFF00EFEFBD0052314200844252007352520073425200844263008442
+ 5200734252007352520084425200423131008494A50073A5BD0094C6E70084AD
+ CE0073A5BD0052738C004A636B00848484009C9C9C00948C94008C848C007B73
+ 7B006B6363007B737300949494007B7B7B00737373007B737B00948C8C00B5B5
+ B500B5B5BD007B8C9C007B9CB50073A5BD000000000000000000000000000000
+ 0000FFFFFF0018DEDE0039DEDE0052E7E70073EFEF008CEFEF00A5F7F700C6F7
+ F700DEFFFF00F7FFFF00FFFFFF00000000009C94FF009494FF009494FF008C8C
+ FF008C8CFF008484FF008484FF007B7BFF0000000000946B4200EF840000848C
+ 3900BDD6D600F7F7F700F7F7F700F7F7F700F7F7FF00F7FFFF00FFFFFF00FFFF
+ FF00E7F7FF00AD9C5A00FF9C0000D6840800CEB5A500FFF7F700FFFFF700FFEF
+ E700F7E7BD00EFE7CE00F7EFE700F7E7C6006363630063636300636363006363
+ 630063636300636363006363630063636300636363006363630063636300CECE
+ CE00EFEFEF00B5CEBD0052314200845263006352420073525200846363008442
+ 6300734252007342520052426300844242008494A500739CC60094BDE7007B94
+ BD00526B8400425263007B848C00A5A59C009C9C94009494940084848C00736B
+ 6B007B7B7B00948C8C007B7B7B007B737B00848484009C9C9400BDBDB500C6C6
+ C600849CAD008CB5D6008CBDDE0084B5D6000000000000000000000000000000
+ 0000FFFFFF0018DEDE0031DEDE004AE7E7006BE7E70084EFEF00A5F7EF00BDF7
+ F700D6FFFF00EFFFFF00FFFFFF00FFFFFF0000000000948CFF008C8CFF008C8C
+ FF008484FF008484FF007B7BFF007B7BFF0000000000A56B2100EF9400007394
+ 5A00CEDEE700EFEFEF00EFEFEF00EFEFF700F7F7F700F7F7F700FFFFFF00FFFF
+ FF00C6E7E700848C4A00FF9C0000C6842900D6CEBD00FFFFFF00FFFFF700FFF7
+ F700FFF7E700F7EFCE00FFF7DE00F7E7BD007342520031181800311818003118
+ 180031181800311818003118180031181800311818003118180031181800CECE
+ CE00EFEFEF00EFEFD60052314200734252008442630084425200734252007342
+ 5200844252008442520073425200734242008494A50073A5C6008CBDE7006B8C
+ AD004A5A73006B7384009C9CA500A59C9C009C9C94008C949400737B7B007B7B
+ 8400948C8C00847B84008C84840094949400ADADAD00C6C6C600C6CECE008C9C
+ A50084A5BD0073ADC6007BB5D6008CBDDE00000000000000000000000000FFFF
+ FF0000D6D60010DEDE0029DEDE004AE7E70063E7E70084EFEF009CEFEF00B5F7
+ F700D6FFFF00EFFFFF00FFFFFF00FFFFFF0000000000000000008C8CFF008484
+ FF008484FF007B7BFF007B7BFF000000000000000000B56B0000DE941000739C
+ 7B00DEDEE700E7E7E700E7E7E700E7EFEF00EFEFEF00EFF7F700F7F7F700FFFF
+ FF009CC6C600AD8C2100FF940000BD8C5200E7E7DE00FFF7F700FFEFDE00FFEF
+ D600FFF7F700FFF7EF00FFEFCE00FFE7B500CECECE00D6DEDE00CEBDB500DEC6
+ DE00B5BDB500BDBDB500C6CECE00CEBDBD00BDBDB500BDBD9400CEBDB500CECE
+ CE00EFEFEF00EFEFEF0052314200734252009463630084426300634242007352
+ 5200844263008463630073425200634242008494A5006B9CBD007BB5D600527B
+ 8C005A63730094949C009C9C9C009C9C9C00949494007B8484007B848400949C
+ 9C0094949400ADA5A500B5B5B500C6BDC600CECECE00CECED6009CA5AD007394
+ AD00638CAD005A84A5006B94B50073A5CE00000000000000000000000000FFFF
+ FF0000D6D60010DEDE0029DEDE0042E7E70063E7E7007BEFEF0094EFEF00B5F7
+ F700CEF7F700E7FFFF00FFFFFF0000000000EFADAD00E7ADAD00000000008484
+ FF007B7BFF00000000000000000063313100BDB5AD00CE730000C69C29007BAD
+ 9C00E7DEE700DEDEDE00DEDEDE00E7E7E700E7E7EF00EFEFEF00F7F7F700F7F7
+ FF0084AD8C00DE940800EF8C0000BD9C7B00F7F7F700FFF7F700FFEFC600FFEF
+ C600FFF7EF00FFF7EF00FFEFCE00F7E7BD00CECECE00EFEFEF00BDBDB500C6CE
+ CE00CEBDBD00BDBDB500BDBD9400CEBDB500B5B5B500B5A5A5009C9C9C00CECE
+ CE00EFEFEF00BDCEC60052314200633118006331180063311800633118006331
+ 1800633118006331180063311800633118007B94A5006B9CBD0073A5C600526B
+ 7B0084848C009C9C9C009C9C9C00949494008484840094949400B5BDBD00ADB5
+ B500BDC6C600CECECE00D6CECE00CECECE00CED6D60094A5AD007394AD007BAD
+ C6005A8CAD006394B50084B5D6007BADD6000000000000000000FFFFFF0000D6
+ D60000D6D60008DEDE0021DEDE0039E7E7005AE7E70073EFEF0094EFEF00ADF7
+ F700CEF7F700E7FFFF00F7FFFF0000000000EFB5B500E7ADAD00DEA5A5000000
+ 000000000000CE9C9C00CE9C9C0063313100A58C6B00DE7B0000ADA5420042AD
+ 84009CC6B500E7D6DE00DED6DE00DEDEDE00E7E7E700EFEFEF00F7EFF700D6E7
+ EF007B945A00F7940000D68C1800CEBDB500F7FFF700FFF7EF00FFEFDE00FFEF
+ C600FFF7DE00FFF7DE00FFEFBD00F7EFC600CECECE00EFEFEF00B5CEBD00D6DE
+ DE00D6DEDE00D6DEDE00D6DEDE00D6DEDE00EFEFEF00EFEFEF00D6DEDE00CECE
+ CE00EFEFDE00D6DEDE00EFEFD600DEDEDE00DEEFD600EFEFD600D6DED600EFEF
+ D600EFEFDE00D6DED600EFEFD600DEDEDE008494A5004A739C0063849C00636B
+ 7B00949494009C9C9C009C9C9C008C8C8C009C9CA500D6D6D600D6D6D600CECE
+ CE00DED6D600DED6D600DED6D600CED6D60094ADA5007394A50073ADC60073A5
+ C600739CC6006B9CC6007BADD60073ADCE00000000000000000000000000FFFF
+ FF0000D6D60008D6D60018DEDE0039DEDE0052E7E70073EFEF008CEFEF00A5F7
+ F700C6F7F700DEFFFF000000000000000000EFB5B500E7ADAD00DEA5A500D69C
+ 9C00CE9C9C00CE9C9C00CE9C9C00633131009C6B3900F7940000DEA521005AA5
+ 730042AD7B009CBDAD00E7D6DE00DEDEDE00CEC6CE00C6C6C600F7F7F700ADCE
+ C600948C2900FF9C0000B57B4200E7DEDE00FFFFFF00FFFFFF00FFFFFF00FFFF
+ EF00FFF7DE00FFEFCE00EFE7CE00D6C69400CECECE00EFEFEF00EFEFBD006331
+ 180042313100423131004231310042313100423131004231310042313100CECE
+ CE00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFDED600EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFDEDE00EFEFEF00EFEFEF008494A5005A84A5005A7384008484
+ 84009C9C94009C9494008C8C8C00A5A5A500DEDEDE00D6DEDE00CECECE00E7DE
+ DE00E7DEDE00E7DEDE00D6D6D60094A5AD006B8C94006B9CB5006394BD006394
+ B5006B9CBD006B94C6006394BD006394B5000000000000000000000000000000
+ 0000FFFFFF0000D6D60018DEDE0031DEDE004AE7E7006BE7E70084EFEF00A5F7
+ EF00BDF7F700D6FFFF000000000000000000EFB5B500EFADAD00DEA5A500D6A5
+ A500CE9C9C00FFDEDE00FFDEDE00AD525200BDA59400BD730000FF9C0000D69C
+ 29005AA5730042A57B009CBDAD00D6CED600B5ADB5009C949C00C6BDC6007BA5
+ 9400C68C1000F7940000AD8C6B00C6C6C600DEDEDE00EFEFEF00F7F7F700FFF7
+ FF00FFFFFF00FFFFFF00EFE7EF00DEB54200CECECE00EFEFEF00D6DED6005242
+ 3100844263007342520073425200634252008442630084426300524231004231
+ 3100B5BDB500BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD008494A500527B9400637384009494
+ 8C009C94940094949400B5B5B500DEDEDE00E7E7E700DEDEDE0094949400B5B5
+ B500E7E7E700C6CECE007B8C9C007394AD006B9CBD00638CAD006384AD006BA5
+ C6005A94BD00639CBD006394BD006BA5C6000000000000000000000000000000
+ 000000000000FFFFFF0010DEDE0029DEDE004AE7E70063E7E70084EFEF009CEF
+ EF00B5F7F700000000000000000000000000EFB5B500EFADAD00E7ADAD00FFDE
+ DE00FFDEDE00FFCECE00FFCECE00D6A5A50000000000BDA59400BD730000FF9C
+ 0000CE9C2900529C7300429C7B0084A594007B7B7B008C94940073948C006B94
+ 6300F79C0000D6840800A5846B00D6CECE00E7DEDE00D6D6D600D6D6D600D6D6
+ D600DEDEDE00E7DEE700CEC6B500BDA55A00CECECE00EFEFEF00DEDEDE005231
+ 4200844263007342520073425200634252008442630084426300634242004231
+ 310042313100B5BDB5009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C009C9C9C009C9C9C009C9C9C009C9C9C008494A5004A6B8400737B8C009494
+ 940094949400B5ADB500E7E7E700E7E7E700E7E7E700EFE7EF00A5A5AD005A6B
+ 7B00849CAD006B8CA5006B94AD006B9CBD006B94BD00638CB500638CB5006B9C
+ C6006394BD006394AD00638CAD005A8CA5000000000000000000000000000000
+ 00000000000000000000FFFFFF0029DEDE0042E7E70063E7E7007BEFEF0094EF
+ EF00B5F7F700000000000000000000000000EFB5B500FFDEDE00FFDEDE006331
+ 3100633131006331310063313100633131000000000000000000BDA59C00BD73
+ 0000FF9C0000CE9C2900529C6B00318C63004A736300395A5200187B5A008C94
+ 4200FF9C0000C684290094736300CEBDB500CEB5AD00CEB5B500CEB5AD00CEB5
+ AD00CEBDB500CEBDB500CECEC600D6D6DE00CECECE00EFEFEF00EFEFBD005231
+ 4200844263008442630063425200634252008442630084426300634242008442
+ 52004231310042313100FFFFFF00C6BDCE009C9C9C0084848400311818000000
+ 00000000000000000000000000000000000084949C004263730084848C008C8C
+ 8C00B5B5BD00EFEFEF00F7EFEF00F7EFF700EFE7EF00D6DEDE009CADB5005A8C
+ A5005A8CAD00528CB5005A94BD006394BD00638CBD006394BD00639CBD005A94
+ B5005A84A500527B9400395A730042637B000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF0039E7E7005AE7E70073EFEF008CEF
+ EF0000000000000000000000000000000000FFDEDE00FFCECE00525252000000
+ 000000000000000000000000000063313100000000000000000000000000BDA5
+ 9400BD6B0800FF9C0000C69C290042735200A5B5A500CEBDAD0063735200C68C
+ 1800F7940000AD734200BDADA500000000000000000000000000000000000000
+ 000000000000CEB5AD00CEB5B500CEB5AD00CECECE00EFEFEF00B5CEBD005231
+ 4200735252007342520084426300844252007342520073525200844252005242
+ 63008442420042313100FFFFFF00B5A5A5009C9C9C0084848400311818000000
+ 000000000000000000000000000000000000848C94004A5A6B0084848C00B5AD
+ AD00F7F7EF00F7F7EF00DEDEDE00BDC6CE0094ADBD007BA5B5006B9CBD0073AD
+ D60073ADD6006BADDE006BA5D60073ADD60073ADD60073ADD60073ADD6006BA5
+ C6006394B5009CC6E7007394B50084ADCE000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF0052E7E70073EFEF008CEF
+ EF000000000000000000000000000000000000000000FFCECE00000000004A4A
+ 4A00424242004242420042424200000000000000000000000000000000000000
+ 0000BDA59C00B56B0800FF9C0000E79C1800EF9C2100F7941000FF9C0800FF9C
+ 0000EF9410008C634200CEBDB500000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE00EFEFEF00EFEFD6005231
+ 4200635242007352520084636300844263007342520073425200524263007342
+ 52007342420042313100FFFFFF00CEBDB5009C9C9C0084848400311818000000
+ 000000000000000000000000000000000000848C9400525A6B00A59C9C00E7E7
+ E700BDC6CE008494A5006B8C9C006B94B5006B9CBD00639CC600639CC600639C
+ C600639CC6005A94C600639CC600639CBD00528CAD00528CAD00639CC6006B9C
+ C6005284AD0094BDE70094C6EF007BADD6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFFFFF006BEFE7000000
+ 00000000000000000000000000000000000000000000101010006B6B6B007373
+ 73006B6B6B005A5A5A0042424200424242000000000000000000000000000000
+ 000000000000BDA59C00B56B0800FF9C0000FF9C0000FF9C0000FF9C0000FF94
+ 0000CE8421009C7B6B0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE00EFEFEF00EFEFEF005231
+ 4200844263008442520073425200734252008442520084425200734252007342
+ 42006331180042313100FFFFFF00BDBDB5009C9C9C0084848400311818000000
+ 000000000000000000000000000000000000848C9400636B7300C6CED60094A5
+ AD00527B9C004A7B9C005A8CB5005A94BD00639CC6005A8CBD005284AD005284
+ AD005A94B500528CAD005A8CB5005A8CB5005A8CB5004A84A5005A94B5006394
+ BD005284AD0084BDDE006BA5C600396B84000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFFFFF000000
+ 00000000000000000000000000000000000000000000212121009C9C9C00A5A5
+ A5009C9C9C007B7B7B005A5A5A00424242000000000000000000000000000000
+ 00000000000000000000BDAD9C00AD6B0800FF940000FF9C0000FF940000FF94
+ 0000A56B2900BDAD9C0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE00EFEFEF00BDCEC6005231
+ 4200523142005231420052314200523142005231420052314200523142005231
+ 42005231420042313100BDBDBD00BDBDB5009C9C9C0084848400311818000000
+ 0000000000000000000000000000000000008C8C94008C8C940094A5BD006394
+ B5005A9CC6005A9CC6006BA5CE006BA5D6006BA5CE00639CC600639CC6005A9C
+ C60063A5CE006BA5CE006BA5CE006BA5D6006BA5D6006BA5CE006BA5CE00528C
+ B5005A8CBD006394B5004A6B8400B5BDC6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021212100C6C6C600DEDE
+ DE00C6C6C6009C9C9C006B6B6B00424242000000000000000000000000000000
+ 0000000000000000000000000000C6ADA500AD631000F7940000FF940000EF8C
+ 08009C734A00CEBDB50000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE00EFEFDE00D6DEDE00EFEF
+ D600DEDEDE00DEEFD600EFEFD600D6DED600EFEFD600EFEFDE00D6DED600EFEF
+ D600DEDEDE00EFEFD600EFDEDE00BDBDBD009C9C9C0084848400311818000000
+ 0000000000000000000000000000000000008C949C006B849C00739CC60063AD
+ D60063A5D6006BA5D6006BA5D6006BA5D6006BA5D6006BADD6006BA5D6006BA5
+ D6006BA5D6006BA5D6006BA5D6006BA5D6006BA5D6006BA5D6005A9CCE00528C
+ B5004A739C0052738C00CED6DE00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000052525200DEDEDE00FFFF
+ FF00DEDEDE00A5A5A500737373004A4A4A000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500AD6B1800FF8C0000D67B
+ 1000947B6300C6B5AD0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000CECECE00EFEFEF00EFEFEF00EFEF
+ EF00EFDED600EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFDEDE00EFEFEF00EFEF
+ EF00EFDEDE00DEEFDE00DEEFDE00CECECE009C9C9C0084848400311818000000
+ 0000000000000000000000000000000000007B8C9C004A7BA500639CC6005A94
+ C6005A9CC600529CC6005294BD005294BD005294BD005294BD005294BD005294
+ BD005294BD005294BD005294BD005294BD005A9CC6005A9CC600528CB500396B
+ 84006B849400E7E7EF00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000021212100DEDE
+ DE00C6C6C6009C9C9C006B6B6B00101010000000000000000000000000000000
+ 00000000000000000000000000000000000000000000C6ADA500A5631800AD6B
+ 29009C8C7B000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B5BDB500BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBD
+ BD00BDBDBD00BDBDBD00BDBDBD00BDBDBD00BDBDBD0084848400311818000000
+ 000000000000000000000000000000000000ADB5BD00738C9C007B94A5008494
+ A5007B94A5007B94A5008494A500849CAD00849CAD00849CAD00849CAD007B94
+ AD007B94AD007B94AD007B94A5007B94A5007B94A500738CA500738C9C0094AD
+ B500EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001010
+ 1000101010000000000042424200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000C6ADA5008463
+ 5200CEBDB5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5BDB5009C9C
+ 9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000004200C6000021C6000063C60000218400002184000021
+ 63000021840000638400002184000063C6000021C6000063C6000063C6000021
+ C6000063C6000021C6000021C600002184000000000000000000000000000000
+ 000000000000EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00F7F7FF00E7F7EF00FFF7E700C67B63008C523900AD6B5200BD736300EF9C
+ 8400FFAD9400EF9C7B00BD735A00E7948400000000000000000000000000FFFF
+ FF009CCEFF00639CCE00639CCE0000000000FFFFFF009CCEFF009CCEFF00639C
+ CE00639CCE000000000000000000CECECE00CECECE00C6C6C600C6C6C600FFFF
+ FF00C6C6C600CECECE0000000000CECECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CE736300944A3900AD635200CE736300F79C
+ 8C00FFB59400F79C8C00AD635200F79C8C000000000000000000000000000000
+ 000000000000002184000063FF000063C6000021840000216300002163000021
+ 630000216300006363000021840000638400006384000063C6000063C6000063
+ C6000063C6000021C600002184000063C6000000000000000000EFEFEF000000
+ 000000000000EFEFEF0000000000EFEFEF00EFEFEF00DE848C00E77B7B00F784
+ 7B00D6736B00AD6B5A00BD6B5A00A55A4A00D66B5A00E77B6B00EF7B6B00FF84
+ 6B00F77B6300FF7B7300EF736B00FF8C8C000000000000000000000000000000
+ 0000FFFFFF009CCEFF00639CCE00639CCE0000000000FFFFFF009CCEFF000000
+ 000000000000CECECE00CECECE00C6C6C600C6C6C600FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF7B7300FF7B7300FF7B
+ 7300CE736300CE736300AD635200AD635200CE736300E78C7300FF7B7300FF7B
+ 7300EF844200FF7B7300E78C7300E78C73000000000000000000000000000000
+ 0000000000000021FF000063C6000084C6000063840000216300002163000021
+ 63000021630000216300006363000063840000638400006384000063C6000084
+ C6000063C6000063C6000063C600006384000000000000000000EFEFEF000000
+ 0000EFEFEF000000000000000000EFEFEF00EFEFEF00FFCECE00FFDED600FFDE
+ CE00F7D6C600FFE7DE00FFD6D600EFDEDE00FFE7CE00FFE7CE00FFE7C600FFDE
+ BD00F7CEA500FFE7BD00FFD6B500EFC6AD000000000000000000000000000000
+ 000000000000FFFFFF009CCEFF00639CCE00639CCE000000000000000000CECE
+ CE00CECECE00C6C6C600C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFE7DE00FFDE
+ D600FFDED600FFDED600FFDED600FFDED600FFDED600FFDEC600FFDEC600FFDE
+ C600FFCEBD00FFCEBD00FFCEBD00FFC6A5000000000000000000000000000000
+ 0000000000000063C6004284C60042C6FF000084C60000216300002121000021
+ 21000021630000216300002163000063630000636300006384000084C6000063
+ C6000084C6000063C6000063C600002184000000000000000000EFEFEF00EFEF
+ EF00EFEFEF000000000000000000EFEFEF00EFEFEF00F7E7DE00FFFFFF00FFFF
+ F700FFFFF700FFFFEF00FFEFE700FFF7EF00FFEFE700FFDEDE00FFDEDE00FFE7
+ DE00FFDEC600FFE7C600F7D6BD00E7BDAD000000000000000000000000000000
+ 00000000000000000000FFFFFF000000000000000000DEDEDE00DEDEDE00C6C6
+ C600C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFF7EF00FFFF
+ FF00FFFFFF00FFFFFF00FFF7EF00FFEFEF00FFEFE700FFEFE700FFE7DE00FFE7
+ DE00FFDED600FFDED600FFCEBD00FFBDAD000000000000000000000000000000
+ 00000063C6000084FF0084C6FF0084FFFF000084C60000636300002121000021
+ 2100002121000021210000636300002163000063630000638400006384000063
+ C6000063C6000084C600006384000063C6000000000000000000EFEFEF00EFEF
+ EF00000000000000000000000000EFEFEF00EFEFEF00F7D6D600FFDED600FFAD
+ 9400FFB57300EFAD5200F7AD4200FFB55200FFBD3900FFB54200FFB55200FFBD
+ 5200FFAD3900FFA53100F79C3100FFA542000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE00DEDEDE00C6C6C600C6C6C600FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFEFE700FFB5
+ 9400FFA56B00FFBD4A00FFAD4200FFBD4A00FFBD4A00FFAD4200FFBD4A00FFBD
+ 4A00FFAD4200FFAD4200FF9C3100FFAD42000000000000000000000000000000
+ 00000063C6000084FF0084FFFF0084FFFF0042C6C60000848400002121000021
+ 2100002121000021210000216300006363000063630000636300006384000084
+ C600008484000063C600006384000063C6000000000000000000EFEFEF000000
+ 0000000000000000000000000000EFEFEF00EFEFEF00EFDED600FFEFCE00E78C
+ 3100F79C0000FFC60000FFC60000F7BD0000FFBD0000FFAD0000F7A50000FFA5
+ 0800FFAD0800FFAD0000FFA50000FFA510000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE00C6C6C600FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFE7DE00EF84
+ 1000FFB50000FFB50000FFB50000FFB50000FFB50000FFB50000FFAD0000FFAD
+ 0000FFAD0000FFAD0000FFAD0000FFAD00000000000000000000000000000000
+ 00000063C6000084FF0084FFFF00FFFFFF0084C6C60042C6C600006384000021
+ 2100002121000021210000212100006363000021630000636300006363000084
+ 84000063C6000084C600006384000084C60000000000EFEFEF00EFEFEF000000
+ 00000000000000000000EFEFEF00EFEFEF00FFF7EF00FFDED600FFEFCE00EFAD
+ 5200F7B51800FFCE0800FFBD0000F7B50800FFBD0000F7A50000F79C0800EF9C
+ 0800F7A50000FFBD0000FFB50000FFAD00000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFDED600FFEFE700FFA5
+ 6B00FFBD0000FFC62100FFBD0000FFBD0000FFB50000FF9C0000FF9C0000FF9C
+ 0000FFAD0000FFB50000FFAD0000FFAD00000000000000000000000000000000
+ 00000084C60042C6FF00FFFFFF00FFFFFF0084C6C60042C6C600008484000021
+ 2100002163000021210000212100006363000063630000636300006384000084
+ 8400008484000084C600008484000063840000000000EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF0000000000BD7B6B00C6636300CE737300D673
+ 5200D6732900E7731000EF6B1800DE732900EF844200E7735200F78C7300F78C
+ 6300E78C3100EF9C1000FFAD0800FFAD00000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 000000000000000000000000000000000000CE736300CE736300CE736300CE73
+ 6300DE731800DE731800DE731800DE731800EF844200EF844200E78C7300FF7B
+ 7300EF844200FF9C0000FFB50000FFAD00000000000000000000000000000000
+ 00000084FF0000C6FF00FFFFFF0084FFC60084FFFF0084C6C60042C6C6000063
+ 6300006321000021630000212100002163000063630000636300008484000084
+ 840000848400008484000084840000848400EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00FF8C8C00F7847300F79C8C00EF9C9400EFBD
+ A500EFD6B500FFD6BD00FFC6BD00F7DED600F7DED600FFF7F700FFEFE700FFAD
+ 8400E7841800F78C0000FFB50800FFB500000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 0000000000000000000000000000F79C8C00E78C7300F79C8C00F79C8C00FFBD
+ AD00FFCEBD00FFCEBD00FFCEBD00FFDED600FFE7DE00FFF7EF00FFEFE700FFB5
+ 9400DE731800FF9C0000FFB50000FFB500000000000000000000000000000000
+ 000000C6FF0042C6FF0084FFFF00FFFFFF00FFFFFF00FFFFC60084C6C6000084
+ C600006363000063210000632100006321000063630000636300008463000084
+ 840000848400008484000084630000638400EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00DE848400AD736B00F7847300FFC6B500FFCEBD00FFD6
+ CE00FFDEC600FFDEC600FFEFDE00E7DED600FFE7E700E7BDB500E7A58400DE8C
+ 4200E7840800FFB50800FFAD0000FFB500000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00C6C6C600CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000FF7B7300CE736300FF7B7300FFCEBD00FFCEBD00FFDE
+ C600FFDED600FFDEC600FFE7DE00FFE7DE00FFEFE700FFBDAD00F79C8C00EF84
+ 4200EF841000FFB50000FFB50000FFB500000000000000000000000000000000
+ 000000C6C60000C6FF0084FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000C6
+ 8400008463000021210000212100006321000063210000846300006363000084
+ 630000846300008463000063630000846300EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00F78C9400EFE7CE00DE6B5A00FFDEC600FFE7D600FFCE
+ C600FFE7D600FFE7D600FFEFDE00FFE7E700CE9C9C00FFBDAD00FFAD7300E78C
+ 1800FFAD0800FFB50000FFBD0000FFAD00000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007373
+ 7300CECECE00CECECE0000000000C6C6C6000000000000000000000000000000
+ 00000000000000000000F79C8C00FFDED600CE736300FFCEBD00FFDEC600FFDE
+ C600FFDED600FFE7DE00FFEFE700FFEFE700F79C8C00FFC6A500FFB59400EF84
+ 1000FFB50000FFB50000FFB50000FFB500000000000000000000000000000000
+ 00000000000000FFFF0042FFC60084FFFF00FFFFFF00FFFFFF0084FFFF0000C6
+ C60000C684000063210000632100006321000084630000632100008421000084
+ 630000632100006363000084210000636300EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00F7848C00F7E7DE00FFFFF700F78C7B00F7C6B500EFE7D600F7E7
+ DE00FFE7DE00FFEFE700FFE7E700D6949400FFC6BD00FFCEA500EF942900FFA5
+ 0800FFBD0000FFBD0000FFB50000FFB500000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007373730073737300CECE
+ CE00CECECE000000000000000000C6C6C6000000000000000000000000000000
+ 000000000000FF7B7300FFEFE700FFFFFF00FF7B7300FFCEBD00FFDED600FFE7
+ DE00FFE7DE00FFEFE700FFEFE700F79C8C00FFCEBD00FFCEBD00EF841000FFB5
+ 0000FFBD0000FFB50000FFB50000FFB500000000000000000000000000000000
+ 00000000000000C6C60000FFFF0042FFFF0084FFFF0084FFFF0042C6C60000C6
+ 8400008463000063630000842100006321000063630000846300006363000084
+ 630000632100006321000063630000636300EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00E77B8400FFADAD00F7FFFF00FFF7EF00FFBDAD00DE948C00FFDED600FFEF
+ E700FFEFE700FFE7E700F7BDBD00FFDED600FFE7C600E7944A00FFA51800FFB5
+ 0000FFCE0000FFC60000F7B50000FFAD00000000000000000000000000000000
+ 0000639CCE00639CCE0000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF007373730073737300DEDEDE00DEDEDE000000
+ 000000000000FFFFFF0073737300CECECE000000000000000000000000000000
+ 0000FF7B7300FFBDAD00FFFFFF00FFFFFF00FFBDAD00F79C8C00FFE7DE00FFE7
+ DE00FFEFEF00FFEFE700FFBDAD00FFE7DE00FFE7DE00EF844200FFB51800FFBD
+ 0000FFBD0000FFBD0000FFB50000FFB500000000000000000000000000000000
+ 0000000000000000000000C6C60000FFC60000FFC60042FFC60000FFC60000C6
+ 8400008463000084630000846300000000000063210000842100006321000063
+ 210000632100006321000063210000632100EFEFEF00EFEFEF00EFEFEF00FFE7
+ E700FF949C00FFFFF700FFFFF700F7F7F700FFEFE700E78C8400FFADAD00FFEF
+ EF00F7C6C600E7B5B500FFEFDE00F7F7D600FFA55A00EFA53100FFBD2900FFD6
+ 1800EFB50000FFBD0000FFBD0000FFBD00000000000000000000000000000000
+ 00009CCEFF009CCEFF0000000000DEDEDE0073737300FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF007373730073737300DEDEDE00DEDEDE000000000000000000FFFF
+ FF007373730073737300CECECE00CECECE000000000000000000000000000000
+ 0000F79C8C00FFF7EF00FFFFFF00FFFFFF00FFEFE700FF7B7300FFBDAD00FFEF
+ EF00FFCEBD00FFB59400FFF7EF00FFEFE700FFA56B00FFB51800FFC62100FFC6
+ 2100FFBD0000FFBD0000FFBD0000FFBD00000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000846300008463000084
+ 630000842100000000000084630000C684000000000000212100006300000021
+ 210000632100006321000063210000210000EFEFEF00EFEFEF00EFEFEF00EF84
+ 8400F7E7DE00FFF7EF00FFFFF700F7FFFF00FFFFEF00FFC6BD00DE9C9C00E7BD
+ B500F7D6CE00FFF7E700FFFFE700F7C69C00FFAD3900FFC63900F7C62100FFC6
+ 1800FFCE1800F7AD0000FFBD0800FFBD00000000000000000000000000000000
+ 00009CCEFF009CCEFF0000000000DEDEDE0073737300FFFFFF00FFFFFF007373
+ 73007373730031CEFF0031CEFF000000000000000000FFFFFF00737373007373
+ 7300DEDEDE00DEDEDE000000000000000000000000000000000000000000FF7B
+ 7300FFE7DE00FFFFFF00FFF7EF00FFFFFF00FFFFFF00FFCEBD00F79C8C00FFBD
+ AD00FFCEBD00FFFFFF00FFFFFF00FFC6A500FFB51800FFBD4A00FFC62100FFC6
+ 2100FFC62100FFBD0000FFBD0000FFBD00000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000084630000C663000084630000212100000000000000
+ 000000000000000000000000000000000000EFEFEF00EFEFEF00F7737B00FFC6
+ BD00FFEFDE00FFFFEF00FFEFEF00F7FFFF00FFFFF700FFFFF700FFFFF700FFFF
+ F700FFFFEF00FFFFEF00FFD6B500FF846300FFB52900FFC62900EFC62900EFC6
+ 2100FFC62900FFC62100FFB50000FFC600000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0073737300737373007373730031CE
+ FF0031CEFF0031CEFF0031CEFF00000000007373730073737300DEDEDE00DEDE
+ DE00000000000000000000000000000000000000000000000000FF7B7300FFBD
+ AD00FFF7EF00FFF7EF00FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFCEBD00FF9C3100FFAD4200FFC62100FFC62100FFC6
+ 2100FFC62100FFC62100FFBD0000FFBD00000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000084210000C6840000FF840000846300000000000000
+ 000000000000000000000000000000000000EFEFEF00D67B7B00EF9C9400FFE7
+ DE00FFFFEF00FFEFE700FFEFE700FFF7F700FFFFF700FFFFF700FFFFF700FFFF
+ EF00FFEFE700FFDED600FFC6C600FFADB500FFAD8C00FFA57300FFA56300FFA5
+ 4A00F79C2900FFAD2100FFBD1800F7A500000000000000000000000000000000
+ 0000000000000000000000000000DEDEDE0031CEFF0031CEFF0031CEFF0031CE
+ FF0031CEFF0031CEFF0031CEFF000000000031CEFF0031CEFF00000000000000
+ 00000000000000000000000000000000000000000000FF7B7300F79C8C00FFEF
+ E700FFF7EF00FFF7EF00FFF7EF00FFF7EF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFEFEF00FFDED600FFBDAD00FFBDAD00FFB59400FFA56B00FFA56B00FFAD
+ 4200FF9C3100FFB51800FFB51800FFAD00000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000063630000FF840000C6840000C66300008463000000
+ 000000000000000000000000000000000000FFEFDE00C6948C00FFD6CE00FFF7
+ E700FFE7DE00FFFFF700FFFFF700FFEFE700F7FFEF00F7E7DE00F7C6C600F7B5
+ B500F7B5B500FFCECE00FFE7E700FFFFF700FFF7F700FFEFEF00FFEFE700FFEF
+ DE00FFE7CE00FFEFCE00FFE7C600EFCEAD000000000000000000000000000000
+ 000000000000000000000000000000FFFF0031CEFF0031CEFF0031CEFF0031CE
+ FF0031CEFF0000FFFF0000FFFF000000000031CEFF0031CEFF00000000000000
+ 00000000000000000000000000000000000000000000E78C7300FFE7DE00FFEF
+ E700FFEFE700FFF7EF00FFF7EF00FFF7EF00FFEFEF00FFEFEF00FFBDAD00FFBD
+ AD00FFBDAD00FFDED600FFF7EF00FFF7EF00FFEFEF00FFEFEF00FFE7DE00FFE7
+ DE00FFE7DE00FFEFE700FFE7DE00FFC6A5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000084630000C6C60000C68400006321000084
+ 630000000000000000000000000000000000F77B7B00E79C9400FFE7DE00FFE7
+ DE00FFDED600FFEFE700EFD6CE00CEC6BD00F7B5BD00F7C6CE00F7E7DE00F7F7
+ F700EFEFEF00F7F7EF00FFE7E700FFD6D600EFE7CE00EFDECE00EFDECE00EFD6
+ CE00EFD6CE00FFE7DE00FFEFEF00FFEFEF000000000000000000000000000000
+ 000000000000000000000000000000FFFF0031CEFF0031CEFF0031CEFF0000FF
+ FF0000FFFF00000000000000000031CEFF0031CEFF0031CEFF00000000000000
+ 000000000000000000000000000000000000FF7B7300F79C8C00FFEFE700FFE7
+ DE00FFE7DE00FFE7DE00FFDED600FFBDAD00FFBDAD00FFBDAD00000000000000
+ 00000000000000000000FFDED600FFDED600FFDED600FFDED600FFDED600FFDE
+ D600FFDED600FFDED600FFF7EF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000006321000084840042FFC600008463000084
+ 630000000000000000000000000000000000EF9C9400FFDED600FFDED600FFBD
+ BD00FFBDB500F7ADAD00FFBDBD00FFEFE700EFEFEF00EFEFEF00FFEFF700FFF7
+ F700EFEFEF00EFF7F700EFF7F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00FFEFE700F7E7DE00EFD6D6000000000000000000000000000000
+ 000000000000000000000000000000FFFF0031CEFF0000FFFF0000FFFF000000
+ 00000000000031CEFF0031CEFF0031CEFF0000FFFF0000FFFF00000000000000
+ 000000000000000000000000000000000000F79C8C00FFDED600FFDED600FFBD
+ AD00FFBDAD00FFBDAD00FFBDAD00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFDED600FFDED6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000008463000084840000FFC6000084
+ 630000842100000000000000000000000000FFADAD00F7BDB500EFC6BD00F7EF
+ DE00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 000000000000000000000000000000FFFF0000FFFF00000000000000000031CE
+ FF0031CEFF0031CEFF0000FFFF0000FFFF000000000000000000000000000000
+ 000000000000000000000000000000000000FFBDAD00FFBDAD00FFBDAD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000846300008463000084
+ 630000846300000000000000000000000000EFFFF700F7EFE700EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000FFFF0031CE
+ FF0000FFFF0000FFFF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000F7EFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000FFFF0000FF
+ FF00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000E7EFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFF7EF00EFF7EF00EFF7F700EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400000084000000
+ FF00000084000000FF00000084000000FF00000084000000FF00000084000000
+ FF00000084000000FF00000084000000FF000000840000008400000084000000
+ 8400000084000000840000008400000084000000000000000000DEDEDE00B5B5
+ B500ADADB500CECECE00DEDEDE00D6D6D600D6D6D600D6D6D600CECECE00BDBD
+ BD00C6BDC600ADADAD008C8C8C007B737B00848484008C848C007B7B7B009494
+ 9400ADADAD00C6C6C600CECECE00D6D6D6000000000000000000C6C6C6009494
+ 94007B7B7B0063A5D60063A5D60018BDEF0018BDEF0018BDEF0008A5E70008A5
+ E70018B5E70018B5E70029D6F70031DEF70008A5E700009CDE000094DE006BC6
+ FF000094DE006BC6FF000094DE006B6BFF0000000000CE000000FF9C9C00FF9C
+ 9C00FF9C9C00CE00000000000000C6ADA500C6ADA50073737300CE000000FF9C
+ 9C00FF9C9C00FF9C9C00CE0000000000000000000000FF9C9C00FF9C9C00FF9C
+ 9C00CE0000006331310073737300C6ADA50000000000848484000000FF000000
+ 84000000FF00000084000000FF00000084000000FF0000008400000084000000
+ 84000000FF00000084000000FF00000084000000FF0000008400000084000000
+ 840000008400000084000000840000008400EFEFE700B5B5B500ADA5AD00CECE
+ CE00DEDEDE00DEDEDE00D6D6D600D6D6D600D6D6D600CECECE00C6C6C600A5A5
+ A5009C9CA5008C8C8C007B7B7B006B6B730094949C00B5B5B500949494008484
+ 84008C8C8C00A5A5A500BDBDBD00CECECE00C6C6C600949494007B7B7B0063A5
+ D60063A5D60018B5E70018B5E70018B5E70008A5E70008A5E70018B5E70018B5
+ E70018BDEF0021CEEF0008A5E700009CDE000094DE0029D6F70029D6F70000AD
+ FF006BC6FF000094DE006BC6FF0000BDBD0000000000CE000000FF9C9C00FF9C
+ 9C00CE0000000000000073737300C6ADA500C6ADA50000000000CE0000000000
+ 0000000000000000000000000000000000000000000000000000FF9C9C00FF9C
+ 9C00CE6363006331310000000000C6ADA5000000000084848400000084000000
+ FF00000084000000FF0000008400000000000000840000000000000000000000
+ FF00000084000000FF00000084000000FF000000FF000000FF00000084000000
+ 840000008400000084000000840000008400ADADAD00B5B5B500D6D6D600DEDE
+ DE00D6D6D600D6D6D600D6D6D600D6D6D600CECECE00BDBDBD00B5B5B500A5A5
+ A5008C8C8C007B737B006B6B6B0084848400C6C6CE00C6C6CE00ADADAD009494
+ 94008C8C8C0094949400ADADAD00BDBDBD00313942004A73A50063A5D60018B5
+ E70018B5E70018B5E70008A5E70008A5E70018B5E70018B5E70018BDEF0018BD
+ EF0008A5E700009CDE000094DE0029D6F70029D6F70029D6F70031E7F70029D6
+ F70000ADFF006BC6FF000094DE006BC6FF0000000000CE636300FF9C9C00FF9C
+ 9C00CE00000000000000C6ADA500C6ADA500C6ADA50000000000000000000000
+ 000063313100CE000000CE000000CE000000CE00000000000000FF9C9C00FF9C
+ 9C00FF9C9C00CE00000000000000C6ADA50000000000848484000000FF000000
+ 84000000FF00000084000000FF000000000000000000000084000000FF000000
+ 84000000FF000000FF000000FF000000840000008400000084000000FF000000
+ 840000008400000084000000840000008400D6D6D600E7E7E700D6D6D600D6D6
+ D600D6D6D600D6D6D600D6D6D600CECECE00BDBDBD00B5B5B500ADADAD00ADA5
+ AD009C9C9C007B7B7B00948C9400DED6DE00EFEFF700DEDEDE00C6BDC600ADA5
+ AD00A5A5A500A5A5A500B5B5B500C6C6C60031394200394A730008A5E70018B5
+ E70008A5E70008A5E70018B5E70018B5E70018B5E70018B5E70008A5E700009C
+ DE000094DE0018BDEF0018BDEF0029D6F70031E7F70029D6F70031E7F70031E7
+ F70029D6F70000ADFF006BC6FF000094DE0000000000FF9C9C00FF9C9C00CE63
+ 63006331310000000000C6ADA500C6ADA5000000000000000000CE000000CE00
+ 0000CE636300FF9C9C00FF9C9C00FF9C9C00FF9C9C0000000000FF9C9C00FF9C
+ 9C00FF9C9C00CE00000000000000000000000000000084848400000084000000
+ FF00000084000000FF00000084000000FF00000084000000FF00000084000000
+ FF000000FF000000840000008400C6C6C600C6C6C600C6C6C600000084000000
+ FF000000840000008400000084000000840000000000F7F7F700E7E7E700DEDE
+ DE00D6D6D600D6D6D600D6D6D600CECECE00BDBDBD00B5B5B500B5B5AD00ADAD
+ AD00ADADAD00B5B5B500DEDEDE00EFEFF700EFEFF700EFE7EF00DED6DE00BDBD
+ BD00A5A5AD00BDBDBD00CECECE00CECECE0031394200394A73000084BD0008A5
+ E70008A5E70008A5E70008A5E70008A5E70008A5E700009CDE000084BD000094
+ CE000094CE0018B5E70018BDEF0018BDEF0029D6F70031E7F70029D6F70031E7
+ F70031E7F70029D6F70000ADFF006BC6FF0000000000FF9C9C00FF9C9C00CE63
+ 63000000000000000000C6ADA5000000000000000000CE000000FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0000000000FF9C9C00FF9C
+ 9C00FF9C9C00CE000000000000000000000000000000848484000000FF000000
+ 84000000FF00000084000000FF00000084000000FF000000FF000000FF000000
+ 840000008400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000
+ 84000000FF00000084000000840000008400000000000000000000000000F7F7
+ F700E7E7E700DEDEDE00D6D6D600CECECE00C6C6C600BDBDBD00BDBDBD00B5B5
+ B500BDBDBD00D6D6DE00E7DEE700E7E7E700E7E7EF00EFEFEF00E7E7EF00CECE
+ D600B5B5B500ADADB500CECECE00D6D6D60031394200394A73000084BD000084
+ BD000084BD000084BD000084BD000084BD000084BD000084BD000084BD000094
+ CE0008A5E70008A5E70018B5E70018BDEF0018BDEF0029D6F70031E7F70029D6
+ F70031E7F70031E7F70029D6F7006BC6EF0000000000FF9C9C00FF9C9C00CE63
+ 630000000000000000000000000000000000CE000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C0000000000FF9C9C00FF9C
+ 9C00FF9C9C00CE00000000000000CE0000000000000084848400000084000000
+ FF00000084000000FF00000084000000FF000000FF000000840000008400C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF00FFFFFF00C6C6C6000000
+ 0000000084000000FF0000008400000084000000000000000000000000000000
+ 00000000000000000000EFEFEF00DEDEDE00CECECE00CECECE00C6C6C600C6C6
+ C600D6D6D600DED6DE00DED6DE00DEDEE700E7E7E700E7E7EF00EFEFEF00E7E7
+ EF00CECED600B5B5B500B5B5B500D6D6D600395A840031394200313942003139
+ 4200313942003139420031394200313942003139420039425A00395A84000084
+ BD000084BD0008A5E70008A5E70018B5E70018BDEF0018BDEF0029D6F70031E7
+ F70031E7F70029D6F70084D6E7009C9C9C0000000000FF9C9C00FF9C9C00FF9C
+ 9C00633131000000000000000000CE000000FF9C9C00FF9C9C00FF9C9C00FF9C
+ 9C00000000000000000000000000000000000000000000000000FF9C9C00FF9C
+ 9C00FF9C9C00CE00000000000000CE00000000000000848484000000FF000000
+ 84000000FF000000FF000000FF000000840000008400C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C6000000
+ 0000C6C6C600000084000000FF00000084000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00DEDEDE00CECECE00CECE
+ CE00CECED600D6CED600D6D6DE00DED6DE00DEDEE700E7E7E700E7E7EF00EFE7
+ EF00E7E7E700CEC6CE00ADADAD00CECECE0000000000395A84004273CE00426B
+ B500426BB5004A73BD004A73BD004273C6004A73A5004A73A50039527B003139
+ 420039425A00395A8400009CDE0008A5E70018B5E70018BDEF0018BDEF0029D6
+ F70029D6F70084D6E700A5A5A500A58C8C004242420000000000FF9C9C00FF9C
+ 9C00CE000000000000000000000000000000FF9C9C00FF9C9C00FF9C9C000000
+ 000000000000CE000000000000000000000000000000FF9C9C00FF9C9C00FF9C
+ 9C00CE6363000000000000000000FF9C9C000000000084848400000084000000
+ FF000000FF000000840000008400C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C6000000
+ 0000C6C6C60000000000000084000000FF000000000000000000000000000000
+ 00000000000000000000000000000000000000000000EFE7EF00CEC6CE00C6C6
+ C600CEC6CE00CECECE00D6CED600D6D6DE00DEDEDE00DEDEE700E7E7E700E7E7
+ EF00EFE7EF00DEDEE700C6BDC600B5B5B5000000000000000000395A84004273
+ CE004A73BD004A73BD004273C6004273C6004273C6004273CE00427BCE004A73
+ A50039527B0039426300395A84007BADC6007BADC60073BDCE0073BDCE0073BD
+ CE0029D6F70052D6EF00A58C8C009C8C9C00C6C6C60000000000FF9C9C00FF9C
+ 9C00FF9C9C0063313100000000000000000000000000FF9C9C00000000000000
+ 0000FF9C9C00FF9C9C0063313100000000000000000000000000FF9C9C00FF9C
+ 9C00CE00000000000000FF9C9C00FF9C9C0000000000848484000000FF000000
+ 8400000084000000840084848400C6C6C600C6C6C600C6C6C600FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484008484
+ 8400C6C6C60000000000C6C6C600000084000000000000000000000000000000
+ 000000000000000000000000000000000000E7E7EF00BDBDBD00BDB5BD00BDBD
+ C600C6C6C600CEC6CE00CECED600D6CED600D6D6DE00DED6DE00DEDEE700E7E7
+ E700E7E7EF00EFE7EF00DED6DE00BDBDC600000000000000000000000000395A
+ 84004273CE004273C6004273C6004273C6004273CE00427BCE00427BCE00427B
+ D6004A73A50039527B006B7384009C8C8C00A59494009C8484009C848400A59C
+ 9C00B5B5B500A5A5A50084848C0031739400C6ADA5000000000000000000FF9C
+ 9C00FF9C9C00FF9C9C00CE000000000000000000000000000000000000000000
+ 0000FF9C9C00FF9C9C00FF9C9C00633131000000000000000000000000000000
+ 00000000000000000000FF9C9C00FF9C9C000000000000000000848484000000
+ FF00000084000000840084848400C6C6C600FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840084848400C6C6C600FFFF
+ FF00C6C6C60000000000C6C6C600000000000000000000000000000000000000
+ 0000000000000000000000000000EFEFEF00BDBDBD00ADADAD00B5ADB500BDB5
+ BD00BDBDC600C6C6C600CEC6CE00CECECE00D6CED600D6D6DE00DED6DE00DEDE
+ E700E7E7EF00E7E7EF00E7E7EF00D6D6D6000000000000000000000000000000
+ 0000395A84004273CE004273C6004273CE00427BCE00427BCE00427BD6004A73
+ A50094949400947B7B00CEA59C00EFD6BD00F7EFC600FFFFC600EFD6AD00DEBD
+ 9C00B5847B00AD9C9C009C9C9C00738C9C00C6ADA500C6ADA500000000000000
+ 0000FF9C9C00FF9C9C00FF9C9C00CE0000006331310000000000000000000000
+ 0000FF9C9C00FF9C9C00FF9C9C00FF9C9C00CE00000063313100000000000000
+ 00000000000000000000FF9C9C00FF9C9C000000000000000000000000008484
+ 84000000FF000000840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF008484840084848400C6C6C600FFFFFF00FFFFFF00FFFF
+ FF008484840084848400C6C6C600000000000000000000000000000000000000
+ 00000000000000000000EFEFEF00ADADB500A5A5A5009C9C9C009C9C9C00B5AD
+ B500BDB5BD00BDBDC600C6C6C600CEC6CE00CECECE00D6CED600D6D6DE00DED6
+ DE00DEDEE700E7DEE700E7E7EF00E7E7EF000000000000000000000000000000
+ 000000000000395A84004273CE00427BCE00427BCE00427BD6004A73A5009494
+ 9400A57B7B00E7D6C600FFFFE700FFFFDE00FFFFDE00FFFFD600FFFFCE00FFF7
+ CE00FFE7B500DEB59400A5848400ADADAD00C6ADA500C6ADA500C6ADA5000000
+ 000000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00CE000000CE000000CE00
+ 000000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00CE000000CE00
+ 0000CE000000CE00000063313100FF9C9C000000000000000000000000000000
+ 0000848484000000FF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF008484840084848400C6C6C600FFFFFF00FFFFFF00FFFFFF00848484008484
+ 8400C6C6C600FFFFFF00C6C6C600000000000000000000000000000000000000
+ 00000000000000000000C6BDC6008C8C9400948C94008484840084848C009C9C
+ A500B5ADB500BDB5BD00C6BDC600C6C6C600C6C6CE00CECECE00D6CED600D6D6
+ DE00DED6DE00DEDEE700E7DEE700EFEFEF000000000000000000000000000000
+ 00000000000000000000395A84004273CE00427BD600427BD60039527B009473
+ 7300EFDECE00FFFFFF00FFFFFF00FFFFEF00FFFFE700FFFFDE00FFFFD600FFF7
+ C600FFFFCE00FFE7B500E7B59400C6B5B500C6ADA500C6ADA500C6ADA500C6AD
+ A5000000000000000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C0000000000CE000000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C0000000000FF9C9C000000000000000000000000000000
+ 0000000000008484840084848400FFFFFF00FFFFFF00FFFFFF00848484008484
+ 8400C6C6C600FFFFFF00FFFFFF00FFFFFF008484840084848400C6C6C600FFFF
+ FF00FFFFFF00FFFFFF0084848400848484000000000000000000000000000000
+ 00000000000000000000BDBDBD00848484007B7B7B00737373007B737B008C8C
+ 9400BDBDC600B5B5B500BDB5BD00BDBDC600C6C6C600C6C6CE00CECECE00D6CE
+ D600D6D6DE00DED6DE00E7E7EF00000000000000000000000000000000000000
+ 0000000000000000000000000000395A84004273CE004A73A5008C848400C6A5
+ 9400FFFFEF00FFFFFF00FFFFFF00FFFFF700FFFFEF00FFFFE700FFFFD600FFFF
+ C600FFEFB500FFFFC600FFDEB500D6AD9C00C6ADA500C6ADA500C6ADA500C6AD
+ A50042424200000000000000000000000000FF9C9C00FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00CE0000000000000000000000CE000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C000000000063313100FF9C9C000000000000000000000000000000
+ 0000000000000000000084848400FFFFFF008484840084848400C6C6C600FFFF
+ FF00FFFFFF00FFFFFF008484840084848400C6C6C600FFFFFF00FFFFFF00FFFF
+ FF008484840084848400C6C6C600FFFFFF000000000000000000000000000000
+ 00000000000000000000EFEFEF009C949C0063636300636363006B6B6B00BDB5
+ BD00E7E7EF00C6C6CE00B5B5B500B5B5BD00BDBDC600C6C6C600C6C6CE00CECE
+ CE00CECED600DEDEE70000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000395A840039527B008C6B6B00F7EF
+ CE00FFFFDE00FFFFF700FFFFFF00FFFFFF00FFFFEF00FFFFE700FFFFD600FFFF
+ CE00FFEFB500FFE7B500FFFFCE00EFC6A500C6ADA500C6ADA500C6ADA500C6AD
+ A5007373730000000000FF9C9C00000000000000000000000000000000000000
+ 0000000000000000000000000000737373007373730000000000000000000000
+ 00000000000000000000FF9C9C00FF9C9C000000000000000000000000000000
+ 00000000000000000000848484008484840084848400FFFFFF00FFFFFF00FFFF
+ FF008484840084848400C6C6C600FFFFFF00FFFFFF00FFFFFF00848484008484
+ 8400C6C6C600FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000EFEFEF009494940073737B00ADADAD00EFEF
+ F700EFEFF700E7DEE700C6BDC600B5ADB500B5B5BD00BDBDC600C6C6C600C6C6
+ CE00D6D6DE000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000B5B5B5009C7B7300FFFF
+ D600FFFFDE00FFFFEF00FFFFF700FFFFF700FFFFEF00FFFFE700FFFFD600FFFF
+ C600FFEFB500FFDEAD00FFF7C600FFE7B500C6ADA500C6ADA500C6ADA500C6AD
+ A500A5A5A50000000000FF9C9C00FF9C9C00CE00000000000000000000000000
+ 0000C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A5000000000000000000FF9C9C00FF9C9C000000000000000000000000000000
+ 00000000000000000000000000000000000084848400FFFFFF00848484008484
+ 8400C6C6C600FFFFFF00FFFFFF00FFFFFF008484840084848400C6C6C600FFFF
+ FF00FFFFFF00FFFFFF0084848400848484000000000000000000000000000000
+ 000000000000000000000000000000000000EFEFEF00C6C6CE00D6CED600E7E7
+ EF00EFEFF700EFEFEF00DEDEE700C6C6CE00B5B5B500BDB5BD00BDBDC600D6D6
+ D600000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BDBDBD00B58C7B00FFFF
+ CE00FFFFD600FFFFE700FFFFE700FFFFE700FFFFE700FFFFDE00FFFFCE00FFF7
+ C600FFE7B500FFD6A500FFF7C600FFEFBD00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA50042424200CE636300FF9C9C00FF9C9C00CE000000000000000000
+ 000000000000C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA5000000
+ 000000000000FF9C9C00FF9C9C00FF9C9C000000000000000000000000000000
+ 000000000000000000000000000000000000848484008484840084848400FFFF
+ FF00FFFFFF00FFFFFF008484840084848400C6C6C600FFFFFF00FFFFFF00FFFF
+ FF008484840084848400C6C6C600FFFFFF000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7F7F700CECECE00CECE
+ CE00E7DEE700EFEFF700EFEFF700E7E7E700C6C6CE00B5ADB500CEC6CE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000CECECE00AD847B00FFF7
+ C600FFFFCE00FFFFD600FFFFDE00FFFFDE00FFFFD600FFFFD600FFFFCE00FFF7
+ C600FFEFC600FFDEAD00FFF7C600FFEFBD00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500A5A5A50000000000FF9C9C00FF9C9C00FF9C9C00633131000000
+ 0000000000000000000073737300C6ADA500C6ADA50073737300000000000000
+ 0000CE000000FF9C9C00FF9C9C00FF9C9C000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000084848400FFFF
+ FF008484840084848400C6C6C600FFFFFF00FFFFFF00FFFFFF00848484008484
+ 8400C6C6C600FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000F7F7F700C6C6
+ C600CEC6CE00E7E7E700EFEFF700EFEFF700E7DEE700C6BDC600C6C6CE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000E7E7E7009C737300FFEF
+ B500FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFC600FFF7BD00FFE7
+ AD00FFDEAD00FFF7D600FFFFCE00F7D6B500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA5007373730000000000FF9C9C00FF9C9C00FF9C9C00CE00
+ 0000633131000000000000000000000000000000000063313100CE000000CE00
+ 0000FF9C9C00FF9C9C00FF9C9C00CE0000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000848484008484
+ 840084848400FFFFFF00FFFFFF00FFFFFF008484840084848400C6C6C600FFFF
+ FF00FFFFFF00FFFFFF0084848400848484000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFEF
+ EF00CECECE00CEC6CE00E7DEE700EFEFF700EFEFF700E7DEE700C6C6CE00D6D6
+ D600000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5A5A500DEB5
+ 9400FFF7C600FFF7BD00FFEFBD00FFEFBD00FFEFBD00FFF7C600FFDEAD00FFEF
+ C600FFFFEF00FFFFEF00FFF7D600DEB5A500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA5000000000000000000FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00CE000000CE000000CE000000CE000000CE000000FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00CE000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000084848400FFFFFF008484840084848400C6C6C600FFFFFF00FFFFFF00FFFF
+ FF00848484008484840084848400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000F7F7F700CECECE00CEC6CE00E7DEE700EFEFF700EFEFF700E7DEE700CEC6
+ CE00E7E7EF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000EFEFEF00AD84
+ 8400FFD6A500FFFFCE00FFEFB500FFDEAD00FFDEAD00FFE7BD00FFE7B500FFF7
+ DE00FFFFFF00FFFFFF00F7E7C600DEBDBD00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000FF9C9C00FF9C
+ 9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C
+ 9C00FF9C9C00CE00000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000848484008484840084848400FFFFFF00FFFFFF00FFFFFF00848484008484
+ 8400848484000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C6C6CE00CEC6CE00E7DEE700EFEFF700EFEFF700DEDE
+ E700EFEFEF000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7E7
+ E700BD8C8400FFD6A500FFF7C600FFF7C600FFEFB500FFE7B500FFFFD600FFFF
+ E700FFFFFF00F7EFE700CEADA5003194F700C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA50073737300000000000000
+ 0000FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00FF9C9C00CE00
+ 0000000000000000000073737300C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000084848400FFFFFF008484840084848400848484000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000F7F7F700CECED600C6C6CE00E7DEE700EFE7EF00F7EF
+ F700000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000EFEFEF00C6948C00E7BD9C00FFE7B500FFEFC600FFF7C600FFF7C600FFEF
+ BD00DEBD9C00848CA5004A73A500425A8C00C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6C6C6007373
+ 7300000000000000000000000000CE000000CE00000000000000000000000000
+ 000073737300C6C6C600C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000084848400848484008484840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFF7FF00D6D6DE00D6CED600EFE7EF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000E7DEDE00D6B5B500DEAD9C00C6948C00B58C7B00CEAD
+ AD0000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA5009C9C9C00424242000000000000000000424242009C9C9C00C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 00004A52310031390800736B31008C7B31008C8C420094BD6B00A5D68C00A5DE
+ 9400ADD69400ADC68400A5BD73009CAD6B009C9C5A009C944A009C844200A573
+ 3900A56B3100A56B2900B58C630000000000000000000000000042424200CEC6
+ CE00E7BDE700CE9CCE00D6A5D600DEA5DE00E7B5E700B5A5B5008C8C8C00B5B5
+ B500CECECE009C94AD007B526300BD847300C68C7300C6847B00734242002921
+ 1800ADA5AD00F7DEF700DEC6DE00E7B5E7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF000000000000000000000000000000
+ 000000000000426363000000000042636300000000009C9C9C00DEDEDE009C9C
+ 9C005252520052525200525252009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 4200424242004242420010101000525252000000000000000000000000008484
+ 5A00394200005A6B29008C8C42009C843900A58C42009CBD6B00ADDE9400B5E7
+ 9C00B5E7A500ADD69C00A5C68400A5B56B009CA563009C9452009C8C42009C7B
+ 39009C6B31009C632900AD845A00BD94840000000000000000004A424A00D6CE
+ D600F7C6F700DEA5DE00E7ADE700F7BDF700DEBDDE00847B8400949494000000
+ 000000000000EFF7F7008C7B9400845A6300BD7B7300845A6B00948C9C006363
+ 6B00ADA5AD00B5ADB5008C848C00B5A5B5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF00FFFFFF0000000000000000000000
+ 00000000000042636300000000000000FF0000000000DEDEDE00525252005252
+ 5200FFFFFF00C6C6C600A5A5A5009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 4200424242004242420010101000525252000000000000000000000000006363
+ 3900526310008C9C4A009C9C5200AD944A00B5944A00A5BD6300A5E79400BDEF
+ AD00BDEFAD00B5DEA500ADCE8C00A5BD7B009CA56B009C9C5A009C8C4A009484
+ 39009C733100946329008C5A18008C4A1800000000000000000039313900BDBD
+ BD00F7DEF700F7CEF700EFCEF700F7D6FF00F7D6F700B59CB5008C7B8C00CECE
+ CE0000000000F7F7F7000000000084738C007B526300847B940000000000847B
+ 84005A525A008C8C8C00949494008C8C8C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0042636300000000004263630000FFFF000000000021212100A5A5A500C6C6
+ C600FFFFFF00C6C6C600A5A5A5009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 4200424242004242420010101000525252000000000000000000C6ADA5005A6B
+ 2900738431009CAD6300ADA55A00BD9C5200BD944A00A5AD6300A5EF9400BDF7
+ B500C6F7BD00B5EFAD00ADD69C00A5BD840094AD6B00949C6300948C4A00947B
+ 4200946B31008C5A29008452210073421800000000000000000031293100736B
+ 7300ADA5AD00A5A5AD009C9CA5009C9CA500ADA5B500ADA5AD00524A52004242
+ 420000000000000000000000000000000000847B8C0000000000000000007B73
+ 7B004A4A4A00CECECE0000000000C6C6C6000000000042636300426363004263
+ 6300426363004263630042636300426363004263630042636300426363004263
+ 6300426363004263630000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00426363000000000000000000FFFFFF00000000009C9C9C00A5A5A500C6C6
+ C600FFFFFF00C6C6C600DEDEDE00DEDEDE00DEDEDE00C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600A5A5A500A5A5A5000000000010101000424242004242
+ 42004242420042424200101010002121210000000000000000006B7B42006B84
+ 31008CA55200ADB56B00BDAD6300BD944A00AD8442009CA55A00ADE79C00BDF7
+ B500C6FFC600B5F7BD00A5D6A500A5C68C009CAD7B008C9C6300948C52008C73
+ 42007B6B31007B5A2900734A21005A31100000000000000000008C848C007B73
+ 7B004A4A5A001818180042210800421808002118180063636300847B84007B7B
+ 7B000000000000000000F7F7F700000000000000000000000000EFEFEF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF0042636300000000000000000000000000000000009C9C9C00A5A5A500DEDE
+ DE00DEDEDE00DEDEDE009C9C9C00212121002121210021212100212121000000
+ 0000000000000000000000000000000000000000000010101000424242004242
+ 4200424242004242420010101000525252000000000000000000737B3100849C
+ 52009CB56B00B5B56B00C6A55A00AD7339008C5221007B8C4200ADE79C00BDF7
+ BD00C6FFCE00BDF7C600A5E7BD00A5CE9C009CAD7B00849C6B007B8C5A007B73
+ 42007363310073522900634A2100422108000000000000000000000000000000
+ 00006B6363006B392900B5734200AD6B42006339210084736B00000000000000
+ 00000000000000000000F7F7F700000000000000000000000000000000000000
+ 00000000000000000000000000008C736B000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000000000FFFFFF000000000000000000000000000000
+ 00000000000000000000FFFFFF00FFFFFF00000000009C9C9C00DEDEDE009C9C
+ 9C005252520052525200525252009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 42004242420042424200101010005252520000000000000000007384390094B5
+ 6300B5CE8400BDB56B00C68C4200944A18005A2908005A6B4200A5EF9400BDFF
+ C600CEFFD600C6FFD600ADEFC6009CCE9C0094B57B0084A56B00738C5A006B6B
+ 42006B5A310063522900523918004A210800000000000000000000000000635A
+ 5A00844A3900CE8C7B00CE8C8400CE8C8400BD7B6B00734229007B6B63000000
+ 0000F7F7F700EFEFEF0000000000000000000000000000000000F7F7F700F7F7
+ F70000000000000000007B635A006B3921000000000000FFFF0000FFFF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000DEDEDE00525252005252
+ 5200FFFFFF00C6C6C600A5A5A5009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 4200424242004242420010101000525252000000000000000000738C42009CC6
+ 7300B5D68C00BDAD6300BD7329008C2908006321100073844A0094CE73007BAD
+ 84004A736B0018424A0010292900183129004A735A007BAD7B0073845200636B
+ 3900635A310052422100311800003110000000000000000000004A4242007342
+ 2100C6847B00C68C7B00BD7B7300BD847300C68C7300C6848C00846384007B73
+ 8400000000000000000000000000000000000000000000000000000000000000
+ 0000000000007363520073422900C68473000000000000FFFF0000000000FF00
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+ 0000FF000000FF00000000000000FFFFFF000000000000000000000000000000
+ 000000000000FFFFFF0000000000000000000000000021212100A5A5A500C6C6
+ C600FFFFFF00C6C6C600A5A5A5009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 42004242420042424200101010002121210000000000000000007B9C52009CCE
+ 7B00BDDE9400C6AD6300B563180094210000AD5A4A0000000000103929000029
+ 39000039520008526B000863840008525A00184221004A6B42006B8C6B004A63
+ 4200393910002118080031311800000000000000000000000000292931002108
+ 00009C634A00CE8C7B00C6847B00C6847B00BD8473007B42310073635A000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000736B6B0063392900B5736300CE8C7B000000000000FFFF0000000000FFFF
+ 0000FFFF0000FF000000FF000000FF000000FFFF0000FF000000FF000000FF00
+ 0000FF000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000009C9C9C00A5A5A500C6C6
+ C600FFFFFF00C6C6C600DEDEDE00DEDEDE00DEDEDE00C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600A5A5A500A5A5A5000000000010101000424242004242
+ 4200424242004242420010101000525252000000000000000000A5BD8C0094CE
+ 7300B5E79400C6B56B00CE5A1800B52900005A31210008526B00005A7300088C
+ A50010BDDE0031F7FF0021E7FF000894C600084242002139100042634200294A
+ 2900314231008C848400000000000000000000000000000000004A394A007352
+ 84004A29310084523900D6948400C6847B006B3921007B6B5A00000000000000
+ 000000000000000000000000000000000000000000000000000000000000F7F7
+ F700F7F7F700736B630073422900BD7B6B000000000000FFFF0000000000FF00
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+ 0000FF000000FF00000000000000FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000FFFFFF00000000009C9C9C00A5A5A500DEDE
+ DE00DEDEDE00DEDEDE009C9C9C00212121002121210021212100212121000000
+ 0000000000000000000000000000000000000000000010101000424242004242
+ 42004242420042424200101010005252520000000000000000000000000094C6
+ 7300A5E79400C6C68C00DE5A10008C31210010527300089CBD0018DEF70018D6
+ FF0010C6FF0018EFFF0021F7FF0018BDF70008739C0008392100001000006B5A
+ 52000000000000000000000000000000000000000000000000004A424A00CECE
+ D6009C73AD0042102900845231007B4A29008C736B0000000000000000000000
+ 00000000000000000000000000000000000000000000F7F7F700000000000000
+ 00000000000000000000847B73006B4229000000000000FFFF0000000000FF00
+ 0000FF000000FF000000FFFF0000FF000000FFFF0000FFFF0000FF000000FF00
+ 0000FF000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000009C9C9C00DEDEDE009C9C
+ 9C005252520052525200525252009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 42004242420042424200101010007373730000000000000000000000000094BD
+ 73009CDE8C00D6DE9C00C67B2900526B6B0008BDF70018FFFF0018BDEF00184A
+ 8C00186B940000EFF70000FFFF0000EFFF0000A5EF00185263005A1000009C29
+ 2100C69C9C00000000000000000000000000000000000000000042424200CECE
+ CE00F7C6FF008C52940029081000847363000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7F7F700000000000000
+ 00007B7B7B00847B8400635A6300211018000000000000FFFF0000000000FF00
+ 0000FFFF0000FFFF0000FFFF0000FFFF0000FF000000FF000000FFFF0000FF00
+ 0000FFFF0000FF00000000000000FFFFFF00000000000000000000000000FFFF
+ FF000000000000000000000000000000000000000000DEDEDE00525252005252
+ 5200FFFFFF00C6C6C600A5A5A5009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 420042424200101010007373730021212100000000000000000000000000CED6
+ BD008CC67300D6DE7B00A5C6940018D6DE0000F7FF0021A5CE00424A6B004218
+ 00004A421000319C7B0021C6B50029B5AD00427384007B423100B5420000A531
+ 00008C1000009C5242000000000000000000000000000000000042394200CEC6
+ CE00FFCEFF00E7A5E70084528C00634A6B00C6C6C60000000000CECECE004A4A
+ 4A007B737B000000000000000000847B8C000000000000000000F7F7F7000000
+ 00004242420052425200A584A500946B9C000000000000FFFF0000000000FF00
+ 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+ 0000FF000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000021212100A5A5A500C6C6
+ C600FFFFFF00C6C6C600A5A5A5009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C00737373005252520042424200424242000000000010101000424242004242
+ 420010101000A5A5A500A5A5A5009C9C9C000000000000000000000000000000
+ 0000DEE7C600B5D6940052EFDE0000DEFF0031BDF700A5A5C6006B5210005A5A
+ 08006B6B18007B6B21007B6B31008C6329009C5A1000B5521000BD5A1000CE52
+ 1000BD29000084000000C6948C0000000000000000000000000042424200CEC6
+ CE00EFC6EF00E7ADE700E7ADE7008C5A9400634A6300949494008C7B8C004A29
+ 4A00847B840000000000847B94007B52630084738C000000000000000000F7F7
+ F700CECECE0094949400BDADBD00EFC6EF000000000000FFFF00000000004263
+ 0000426300004263000042630000426300004263000042630000426300004263
+ 0000426300004263000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000042424200A5A5A500C6C6
+ C600FFFFFF00C6C6C600A5A5A500DEDEDE00DEDEDE00DEDEDE00DEDEDE00C6C6
+ C600C6C6C600C6C6C600C6C6C600000000004242420010101000424242001010
+ 1000A5A5A500A5A5A500A5A5A500A5A5A5000000000000000000000000000000
+ 0000D6E7F70052CEDE0008F7FF00008CB500314263009C9C7300637321007B8C
+ 39008CA5520094A55200A5945200A58C4200A5843100AD732900B5632100C65A
+ 1800C6420800941800008C31180000000000000000000000000042394200CECE
+ CE00EFBDEF00D6A5D600EFBDEF00DE9CDE008C5A8C006B526B00AD84AD00946B
+ 940063636B00948CA500845A6B00BD7B7300845A63008C7B9400000000000000
+ 000000000000949494007B6B7B00DEBDDE000000000000FFFF0000000000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFF
+ FF00FFFF0000FFFFFF0042630000426300004263000042630000426300004263
+ 000042630000426300004263000042630000000000009C9C9C00A5A5A500C6C6
+ C600F7FFFF00F7FFFF00F7FFFF00C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600DEDEDE000000000042424200424242001010100010101000A5A5
+ A500A5A5A500A5A5A500A5A5A500A5A5A5000000000000000000000000000000
+ 00007BC6E70000DEF70000C6EF0008527B0008291800315218007B84310094AD
+ 5A00ADC67300ADCE8C00ADCE8400ADB57300A59C5A00A5844200AD6B2900AD5A
+ 1800AD4A1800942908006B080000CEB5B500000000000000000029212900CECE
+ CE00F7C6F700D69CD600DEADDE00E7B5E700D69CD600CE9CCE00E7B5E7009C73
+ 9C0029181800734A4A00C6847B00C68C7300BD8473007B5263009C8C9C000000
+ 0000C6C6C600634263008C5A8C00D6ADD6000000000000FFFF0000000000FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF0000000000009C9C9C00F7FFFF00F7FF
+ FF00F7FFFF00DEDEDE00C6C6C600C6C6C600C6C6C600A5A5A500A5A5A500A5A5
+ A500C6C6C6000000000042424200424242004242420010101000000000000000
+ 000000000000000000000000000000000000000000000000000000000000E7EF
+ F70063DEF70000E7FF0010B5D600188CAD00188C8C00216339007B8C2900A5BD
+ 6B00B5DE9400BDE7AD00BDE7A500B5CE9400A5B57B009C9452009C7331009452
+ 18008C4218007B29080052000000CEB5B5000000000000000000A59CA500948C
+ 9400DEBDDE00EFBDEF00DEA5DE00D6A5D600E7B5E700F7BDF700EFB5F7008463
+ 8C0039180000AD6B3900CE8C7B00BD847300C6847B00CE8C8400844A4200847B
+ 6B00634A6B00945A9400DE9CD600E7B5E7000000000000FFFF0000000000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000DEDEDE00F7FFFF00FFFF
+ FF00FFFFFF00F7FFFF00DEDEDE00DEDEDE00C6C6C600C6C6C600C6C6C600A5A5
+ A500000000004242420042424200424242004242420042424200424242004242
+ 4200424242004242420000000000C6ADA500000000000000000000000000E7F7
+ F70063EFFF0000EFFF0010F7FF0018EFFF0008BDE70021736B007B8C21009CBD
+ 6300ADE79400BDF7B500BDEFBD00ADDEAD009CC68C008C9C6300846B42007B5A
+ 290073421800522100004A10080000000000000000000000000000000000ADAD
+ AD00ADADAD00DEBDDE00E7ADE700DEA5DE00DEADDE00E7B5E700E7B5EF008463
+ 940042180000B56B3900C68C7B00BD847B00C68C8400C6845200733908003108
+ 10008C529400E7ADE700EFBDEF00DEADDE000000000000FFFF0000000000FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF000000000000DEDEDE00DEDEDE00F7FF
+ FF00FFFFFF00FFFFFF00F7FFFF00F7FFFF00F7FFFF00DEDEDE00DEDEDE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000C6ADA5000000000000000000000000000000
+ 0000C6F7FF0052EFFF0008EFFF0000EFFF0008CEF7006BADCE00BDC6940073A5
+ 4A008CCE7B00ADEFBD00ADE7C6009CD6AD0084BD9400739C6B006B734A006363
+ 31005242180021080000A5948C00000000000000000000000000000000000000
+ 000084848400846B8400DEA5DE00E7A5E700D69CD600E7ADE700E7ADE7008C63
+ 8C00211018007B4A4200C6847300C68C8400BD7B52006B290000391018009452
+ 9400E7A5E700E7ADE700D6A5D600D69CD6000000000000FFFF0000000000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000DEDEDE00C6C6C600DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00F7FFFF00F7FFFF00F7FFFF00F7FFFF00DEDE
+ DE00DEDEDE00C6C6C600C6C6C600C6C6C600DEDEDE00F7FFFF00F7FFFF00DEDE
+ DE00C6C6C600A5A5A50000000000C6ADA5000000000000000000000000000000
+ 000000000000DEEFF700ADE7F700ADE7F700B5E7F700DEE7F700E7EFE7006BA5
+ 4A00639C4A0084CE94008CD6AD0084C6A5006BAD8C005A8C6B00526B4A00424A
+ 2900181800002921180000000000000000000000000000000000000000000000
+ 0000847B8400AD8CAD00F7C6F700F7C6F700EFBDEF00F7CEF700EFC6EF009C73
+ 940052525A008C849400C69C9C00B5735200844A080052393900A573B500F7C6
+ FF00FFCEFF00EFC6EF00EFBDEF00F7C6F7000000000000FFFF0000000000FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+ 0000FFFFFF00FFFF0000FFFFFF00FFFF000000000000DEDEDE00C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600DEDEDE00DEDEDE00F7FFFF00F7FFFF00F7FF
+ FF00F7FFFF00F7FFFF00DEDEDE00DEDEDE00DEDEDE00F7FFFF00F7FFFF00DEDE
+ DE00C6C6C6007373730000000000C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000084A573004A8C4200529C6B005AA57B00528C6B00426B4A00214229000810
+ 0000292929000000000000000000000000000000000000000000000000004A42
+ 4A00948C9400D6CED600CEC6CE00CEC6CE00CEC6CE00CECECE00BDBDBD00736B
+ 73007B737B0000000000EFEFEF006331000031181000A5A5AD00D6CED600CECE
+ CE00CEC6CE00CEC6CE00CEC6CE00C6C6C6000000000000FFFF0000000000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFF
+ FF00FFFF0000FFFFFF00FFFF0000FFFFFF00C6ADA50000000000DEDEDE00C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00F7FFFF00DEDEDE00DEDEDE00DEDEDE00DEDEDE00C6C6
+ C6007373730000000000C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000A5AD9C00527B520042634200314A31006B736B000000
+ 00000000000000000000000000000000000000000000000000005A525A002918
+ 2900423942004A424A004239420042424200424242004A424A00393939003939
+ 39008C8C8C0000000000000000004A424A0031293100524A52004A424A004239
+ 4200423942004A424A0042394200313131000000000000FFFF0000FFFF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500000000000000
+ 0000DEDEDE00C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600737373000000
+ 000000000000C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
+ FF0000FFFF0000FFFF0000FFFF0000FFFF00C6ADA500C6ADA500C6ADA500C6AD
+ A50000000000000000000000000073737300C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C60073737300000000000000000000000000C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500000000000000000000000000000000000000
+ 000000000000000000000000000000000000C6ADA500C6ADA500C6ADA500C6AD
+ A500C6ADA500C6ADA500C6ADA500C6ADA5000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000EFEF
+ E700ADADBD008484A5008C8CAD00ADADC600F7F7EF0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000AD9C8C0094949C00848CA500739C
+ BD004A6BBD0008087B0039526300B5DEAD00C6DE9400A5B56300B5DE9400C6FF
+ C600BDEFBD00ADCE9400B5AD8C00AD9C73000000000000000000F7F7F700CED6
+ C6004A52310031390800736B31008C7B31008C8C420094BD6B00A5D68C00A5DE
+ 9400ADD69400ADC68400A5BD73009CAD6B009C9C5A009C944A009C844200A573
+ 3900A56B3100A56B2900A5631800A54A18000000000084848400000000000000
+ 000000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 8400000084000000840000000000000000000000840000000000000084000000
+ 000000FFFF0000FFFF0000000000000000000000000000000000000000000000
+ 0000DEDEDE00DEDEDE00EFEFEF00000000000000000000000000EFEFEF00636B
+ 9C001010940000089C0000189C0008299C004A5A9C009C9CAD00EFE7E7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C6B5AD008C739400396B8C001852B500394AD600636B
+ CE00635AC60063399C006329420084846B00BDEFBD00BDE79C00ADDE9400BDFF
+ C600BDF7C600A5D6A5009CAD8400A5A57B000000000000000000EFEFE7008484
+ 5A00394200005A6B29008C8C42009C843900A58C42009CBD6B00ADDE9400B5E7
+ 9C00B5E7A500ADD69C00A5C68400A5B56B009CA563009C9452009C8C42009C7B
+ 39009C6B31009C6329009C5A18009C4A18000000000000000000000084000000
+ 840000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 8400000084000000840000000000000084000000000000008400000000000000
+ 000000FFFF0000FFFF0000000000000084000000000000000000000000004242
+ 1800393908003139000029420000214A0000214A0000315A10005A6352003131
+ 9C005252BD000029AD00004AB5000073C60000BDE70000CEEF000084CE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6ADA5009CA5D600085AFF004A8CF7008CA5D600A584AD00DE7B
+ 6B00FFAD5A00FFC67300E79C730084735200738473008CB58C00A5CE8C00BDF7
+ BD00ADF7CE0094D6AD008CAD8C007B8C5A000000000000000000E7E7E7006363
+ 3900526310008C9C4A009C9C5200AD944A00B5944A00A5BD6300A5E79400BDEF
+ AD00BDEFAD00B5DEA500ADCE8C00A5BD7B009CA56B009C9C5A009C8C4A009484
+ 39009C733100946329008C5A18008C4A18000000000000000000000084000000
+ 840000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 8400000084000000840000000000000000000000840000000000000084000000
+ 000000FFFF0000FFFF000000000000000000000000000000000000000000424A
+ 18005A5A31004252100029520000217B00001884000010840000084200001821
+ 73005A5AC6000029AD00004ABD000073C60000C6E70000F7FF0000CEEF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B5C6CE000863FF002152E700EFAD8400FFE76B00FFF78C00FFF7
+ AD00FFFFC600FFFFCE00FFFFEF00E7EFCE008C847B00523939006B735200ADE7
+ B500A5EFC6008CD6AD007BAD84006B845A000000000000000000ADB59C005A6B
+ 2900738431009CAD6300ADA55A00BD9C5200BD944A00A5AD6300A5EF9400BDF7
+ B500C6F7BD00B5EFAD00ADD69C00A5BD840094AD6B00949C6300948C4A00947B
+ 4200946B31008C5A290084522100734218000000000000000000000084000000
+ 840000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 8400000084000000840000000000000084000000000000008400000000000000
+ 000000FFFF0000FFFF0000000000000084000000000000000000000000005A5A
+ 31005A63390042521800215A000018840000189C000010AD0000007B00000829
+ 5A005A5AC6000829AD00004AB5000073CE0000CEEF0000F7FF0000BDE7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C6ADAD004AA5F7000039FF00C6947B00FFFF7B00FFFFBD00FFF7CE00FFF7
+ CE00FFF7CE00FFF7D600FFF7D600FFFFFF00FFFFFF00BD8C6B00522918007394
+ 7B0094D6AD007BBD9C006B9C73005A7B520000000000000000006B7B42006B84
+ 31008CA55200ADB56B00BDAD6300BD944A00AD8442009CA55A00ADE79C00BDF7
+ B500C6FFC600B5F7BD00A5D6A500A5C68C009CAD7B008C9C6300948C52008C73
+ 42007B6B31007B5A2900734A21005A3110000000000000000000000084000000
+ 840000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 8400000084000000840000000000000000000000840000000000000084000000
+ 000000FFFF0000FFFF0000000000000000000000000000000000000000005A5A
+ 31006B6B4200425A1800215A000018840000189C000010B5000000840000006B
+ 100029399C001831AD000042B500007BCE0000DEF70000EFF700008CCE000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C6BDBD00106BFF000031CE00D6B57300FFFFB500FFE7C600FFDEB500FFDE
+ B500FFE7BD00FFF7DE00FFFFEF00FFFFFF00E7AD9400E76B3900B57B5A006363
+ 5A006B7B630052524200524229004A4A31000000000000000000737B3100849C
+ 52009CB56B00B5B56B00C6A55A00AD7339008C5221007B8C4200ADE79C00BDF7
+ BD00C6FFCE00BDF7C600A5E7BD00A5CE9C009CAD7B00849C6B007B8C5A007B73
+ 42007363310073522900634A2100422108000000000000000000000084000000
+ 840000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 8400000084000000840000000000000084000000000000008400000000000000
+ 000000FFFF0000FFFF0000000000000084000000000000000000000000005252
+ 290073734A004A5A21002152000018840000109C000010B50000008C0000007B
+ 0000083952002121A5000029AD00005ABD0000CEEF0000C6EF00217BC6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007BBDEF00104AF70042185A00E7A57300FFFFCE00FFDEB500FFD6AD00FFEF
+ CE00FFF7CE00FFFFEF00FFFFFF00F7E7DE00D67B6300CE6B42009C7B63004A39
+ 3100311808004A1000006B1800006B10080000000000000000007384390094B5
+ 6300B5CE8400BDB56B00C68C4200944A18005A2908005A6B4200A5EF9400BDFF
+ C600CEFFD600C6FFD600ADEFC6009CCE9C0094B57B0084A56B00738C5A006B6B
+ 42006B5A310063522900523918004A2108000000000000000000000084000000
+ 840000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 8400000084000000840000000000000000000000840000000000000084000000
+ 000000FFFF0000FFFF0000000000000000000000000000000000000000005252
+ 29007B735A00525A290021520000188C000010A5000010BD000000BD00000084
+ 0000005A080008009C0000089C000029AD00007BCE00085ABD009CADCE000000
+ 000000000000000000000000000000000000000000000000000000000000C6AD
+ AD0039ADFF00738CA500F7AD0800FFE78C00FFFFEF00FFDEC600FFE7B500FFF7
+ CE00FFFFE700FFFFF700FFFFFF00F7DED600F79C6B00E7A56300737352002929
+ 0800525210007B5229008C4A18009C4210000000000000000000738C42009CC6
+ 7300B5D68C00BDAD6300BD7329008C2908006321100073844A0094CE73007BAD
+ 84004A736B0018424A0010292900183129004A735A007BAD7B0073845200636B
+ 3900635A31005242210031180000311000000000000000000000000084000000
+ 840000008400000084000000000000FFFF0000FFFF0000000000000084000000
+ 840000000000000000000000FF00000000000000000000008400000000000000
+ 000000FFFF0000FFFF0000000000000084000000000000000000000000006363
+ 52008484630073734A0031520800188C000010A5000010BD000000FF000000CE
+ 0000084A1000008CD60000E7F70000FFFF002173AD0094525A00944A4A009C6B
+ 6B00B59C9C00DED6D6000000000000000000000000000000000000000000A5BD
+ DE00008CFF00D6BD4A00FFE72100FFFFDE00FFF7F700FFEFD600FFFFE700FFFF
+ FF00FFFFFF00FFFFFF00FFF7FF00D6948400D66331009C523900393121005A6B
+ 21007B9442008C844A009C6B2900B55A180000000000000000007B9C52009CCE
+ 7B00BDDE9400C6AD6300B563180094210000AD5A4A00BDCEC600103929000029
+ 39000039520008526B000863840008525A00184221004A6B42006B8C6B004A63
+ 4200393910002118080031311800C6C6BD000000000000000000000084000000
+ 840000008400000084000000000000FFFF000084840000000000000000000000
+ 00000000FF000000FF000000FF000000FF000000FF0000000000000000000000
+ 00000084840000FFFF0000000000000000000000000000000000000000000000
+ 00007373520073735200394A1000217B00001094000010B5000000EF00000094
+ 000000293900008CD60000C6EF0000E7F70000B5E700736BA500C68C8C009C5A
+ 5A00945A52009C636300D6CECE00000000000000000000000000000000008CBD
+ E700425AD600EF9C1000FFDE6300FFFFF700FFF7D600FFF7D600FFFFF700FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00F7BDAD00F7B57B00948C6B00424A290094B5
+ 6300A5C67B00A5B57300AD8C4A00B56B29000000000000000000A5BD8C0094CE
+ 7300B5E79400C6B56B00CE5A1800B52900005A31210008526B00005A7300088C
+ A50010BDDE0031F7FF0021E7FF000894C600084242002139100042634200294A
+ 2900314231008C848400EFEFEF00F7F7F7000000000000000000000084000000
+ 84000000840000008400000000000084840000848400000000000000FF000000
+ FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+ 0000008484000084840000000000000084000000000000000000000000000000
+ 0000424A21005A6339003139000021630000187B0000189C000008C60000086B
+ 0000102152000873CE00009CD60000B5E700008CD6006B6BAD00DEADAD00C694
+ 9400B5848400A5737300844A4A00C6B5B5000000000000000000C6B5AD00529C
+ F70008398C00A56B4A00F7E7D600FFFFFF00FFFFF700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E7CEC600D6734A00F79C63009484730052633900ADDE
+ 8400BDEFA500BDD69C00ADAD6300A57B31000000000000000000EFEFEF0094C6
+ 7300A5E79400C6C68C00DE5A10008C31210010527300089CBD0018DEF70018D6
+ FF0010C6FF0018EFFF0021F7FF0018BDF70008739C0008392100001000006B5A
+ 5200000000000000000000000000000000000000000000000000000084000000
+ 84000000840000008400000000000000000000FFFF0000FFFF00000000000000
+ 00000000FF000000FF000000FF000000FF000000FF00000000000000000000FF
+ FF0000FFFF000000000000000000000000000000000000000000000000000000
+ 0000000000006B7352001852000018A50000188C00001863000084846300DEC6
+ BD00D6B5CE006373CE006B94D6004A84CE004A5ABD00D6B5C600DEB5B500EFC6
+ C600DEBDBD00D6ADAD009C6B6B00A57B7B000000000000000000C6B5AD00189C
+ FF0000D6EF0094D6DE00F7FFFF00FFFFFF00FFFFEF00FFF7E700FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00DEA59400DE7B4A00FFBD84009C847300424239009CBD
+ 7B00C6FFBD00ADEFBD008CBD84007B8C4A000000000000000000E7EFE70094BD
+ 73009CDE8C00D6DE9C00C67B2900526B6B0008BDF70018FFFF0018BDEF00184A
+ 8C00186B940000EFF70000FFFF0000EFFF0000A5EF00185263005A1000009C29
+ 2100C6949400E7DED600F7F7EF00000000000000000000000000000084000000
+ 840000000000000000000000FF000000FF00000000000000000000FFFF0000FF
+ FF0000000000000000000000FF00000000000000000000FFFF0000FFFF000000
+ 0000000000000000FF000000FF00000000000000000000000000000000000000
+ 0000A5AD9400296B080010A5000000FF000000FF000000CE0000C68C8C00D6A5
+ AD00DEB5B5006B63B5005252AD005252B500CE94A500DEADAD00BD8C8C00F7CE
+ CE00F7D6CE00EFC6C600BD948C00AD84840000000000C6ADA500BDBDCE0010DE
+ FF0000FFFF00CEFFE700FFFFFF00FFFFF700FFFFEF00FFFFEF00FFFFFF00FFFF
+ FF00FFFFFF00EFE7EF00D6846B00EF9C6300FFEFBD00EFDEB5008C7B7300525A
+ 4A008CBD94009CEFBD007BC69400638452000000000000000000EFEFEF00CED6
+ BD008CC67300D6DE7B00A5C6940018D6DE0000F7FF0021A5CE00424A6B004218
+ 00004A421000319C7B0021C6B50029B5AD00427384007B423100B5420000A531
+ 00008C1000009C524200EFEFEF00F7F7F7000000000000000000000000000000
+ 00000000FF000000FF000000FF000000FF000000FF000000FF00000000000000
+ 000000FFFF0000FFFF000000000000FFFF0000FFFF0000000000000000000000
+ FF000000FF000000FF000000FF000000FF000000000000000000000000000000
+ 0000315A10001884000010B5000000F7000000FF000000FF00005A5A2900AD63
+ 6300AD737300BD847B009C6B7300C69CA500DEB5AD00D6A5A500B57B8400E7B5
+ B500EFC6C600EFC6C600D6ADAD00B58C940000000000C6B5B5004A8CFF0000AD
+ FF009CCEAD00F7FFE700FFFFFF00FFF7D600FFFFEF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00F7D6C600DE8C5A00EFB57300FFEFBD00FFFFD600EFE7C6009484
+ 840042424A00394A420031423900293129000000000000000000F7F7F700F7F7
+ F700DEE7C600B5D6940052EFDE0000DEFF0031BDF700A5A5C6006B5210005A5A
+ 08006B6B18007B6B21007B6B31008C6329009C5A1000B5521000BD5A1000CE52
+ 1000BD29000084000000C6948C00F7EFEF0000000000000000000000FF000000
+ FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+ FF000000000000FFFF0000FFFF0000FFFF00000000000000FF000000FF000000
+ FF000000FF000000FF000000FF000000FF000000000000000000000000000000
+ 0000295A0800217B0000109C000008C6000008CE000008D6000031841000B5A5
+ 9C00AD949400E7EFEF00D6D6D600BDADAD00A5737300AD737300C6848400C69C
+ 9C00DEB5B500D6ADAD00D6A5A500AD84840000000000C6A5D600187BEF00006B
+ 5A00F7C68C00FFFFF700FFFFFF00FFEFD600FFFFE700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00F7AD7B00E7844A00FFCE9400FFEFC600FFFFDE00FFFFF700F7E7
+ DE00B5ADA500ADA5A500ADA5AD00B5ADB500000000000000000000000000F7F7
+ F700D6E7F70052CEDE0008F7FF00008CB500314263009C9C7300637321007B8C
+ 39008CA5520094A55200A5945200A58C4200A5843100AD732900B5632100C65A
+ 1800C6420800941800008C311800DECEC6000000000000000000000000000000
+ 00000000FF000000FF000000FF000000FF000000FF000000FF00000000000000
+ 000000FFFF0000FFFF000000000000FFFF0000FFFF0000000000000000000000
+ FF000000FF000000FF000000FF000000FF000000000000000000000000000000
+ 0000527331005A943900298C100010A5000010B5000010AD000039732100DED6
+ CE00D6B5BD00C6BDB500D6CECE00E7EFEF00E7E7E700BDB5B500A58C8C00945A
+ 5A00C6848400CE9C9C00DEB5AD00AD848400000000009CA5DE0008CE5A000894
+ 0000E7EFC600FFFFFF00FFFFDE00FFF7E700FFFFF700FFFFFF00FFFFFF00FFFF
+ FF00D6DEF700E79C6300FFAD4200FFE7A500FFF7D600FFFFEF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000F7F7EF00EFEF
+ EF007BC6E70000DEF70000C6EF0008527B0008291800315218007B84310094AD
+ 5A00ADC67300ADCE8C00ADCE8400ADB57300A59C5A00A5844200AD6B2900AD5A
+ 1800AD4A1800942908006B080000CEB5B5000000000000000000000000000000
+ 000000000000000000000000FF000000FF00000000000000000000FFFF0000FF
+ FF0000FFFF0000FFFF000000000000000000000000000000000000FFFF000000
+ 0000000000000000FF000000FF00000000000000000000000000000000000000
+ 00005A6B390084A56B006BA55200188C0000108C0000219408006B845200FFFF
+ FF00FFFFFF00E7D6D600CEBDBD00C6ADAD00CEC6C600E7E7E700E7EFEF00A584
+ 84008C5A5A00A55A5A00CE9C9400B5848400C6ADA5004ACEBD0000FF00008CBD
+ 2100F7FFEF00FFFFFF00FFFFE700FFFFF700FFFFFF00EFF7FF00C6D6FF009CC6
+ FF00397BFF007384BD00F7E79400FFFFB500FFFFDE00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000F7F7EF00E7EF
+ F70063DEF70000E7FF0010B5D600188CAD00188C8C00216339007B8C2900A5BD
+ 6B00B5DE9400BDE7AD00BDE7A500B5CE9400A5B57B009C9452009C7331009452
+ 18008C4218007B29080052000000CEB5B5000000000000000000000000000000
+ 00000000000000000000000000000000000000FFFF0000FFFF00000000000000
+ 000000FFFF00000000000000000000FFFF0000FFFF0000000000000000000000
+ 000000FFFF000000000000000000000000000000000000000000000000000000
+ 00009C6363005A4A310063734A0073845A005A734200636B4200FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7EFEF00DECE
+ CE00E7CED600F7FFFF0094525200C6949400CED6F70008CEAD0029C64200FFDE
+ 7B00FFFFF700FFFFFF00F7F7FF00CEDEFF00BDCEFF00B5B5D600ADB5DE008CAD
+ E700639CF7006B9CF70094BDF700C6DEE700FFFFF700FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000F7EFEF00E7F7
+ F70063EFFF0000EFFF0010F7FF0018EFFF0008BDE70021736B007B8C21009CBD
+ 6300ADE79400BDF7B500BDEFBD00ADDEAD009CC68C008C9C6300846B42007B5A
+ 290073421800522100004A100800CEBDBD000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000FF000000
+ 000000FFFF000000000000FFFF0000FFFF000000000000FFFF0000FFFF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007B424A00BDB5B500D6DECE00A5A58C00BDBDAD00EFEFEF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF009C7B7300BD9C9C0084B5FF00008CFF00528CDE00CEEF
+ CE00D6E7FF00BDD6FF00BDD6FF00A5B5DE0094ADE700B5B5CE00000000000000
+ 000000000000C6B5AD009CB5EF006B9CFF0094BDFF00E7F7FF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00E7F7FF000000000000000000F7EFEF00EFF7
+ F700C6F7FF0052EFFF0008EFFF0000EFFF0008CEF7006BADCE00BDC6940073A5
+ 4A008CCE7B00ADEFBD00ADE7C6009CD6AD0084BD9400739C6B006B734A006363
+ 31005242180021080000A5948C00EFE7E7000000000000000000000000000000
+ 000000000000000000000000000000FFFF0000FFFF00000000000000000000FF
+ FF00000000008484840000FFFF0000FFFF0000000000000000000000000000FF
+ FF00000000008484840000000000000000000000000000000000000000000000
+ 00006B636300D6DED600F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00BDADA500C6ADAD00428CFF00088CFF002984FF0063A5
+ FF009CADE7006394F700C6B5BD00C6ADA5000000000000000000000000000000
+ 0000000000000000000000000000BDC6D60052A5FF00ADC6DE00D6E7FF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00BDEFFF00000000000000000000000000F7EF
+ EF00FFF7F700DEEFF700ADE7F700ADE7F700B5E7F700DEE7F700E7EFE7006BA5
+ 4A00639C4A0084CE94008CD6AD0084C6A5006BAD8C005A8C6B00526B4A00424A
+ 29001818000029211800E7E7EF00F7F7F7000000000000000000000000000000
+ 0000000000000000000000FFFF0000FFFF0000000000000000000000000000FF
+ FF000000000084848400000000000000000000FFFF0000FFFF00000000000000
+ 000000FFFF000000000000000000000000000000000000000000000000000000
+ 000000000000E7E7E700D6D6D600C6BDC600C6C6CE00D6CED600E7E7E700EFEF
+ EF00F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00E7E7E700D6D6D6006394FF0063ADF700A5B5DE009CB5
+ E700000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000BDBDCE006BADF700ADDE
+ FF00EFF7FF00FFFFFF00F7FFFF006BD6FF000000000000000000000000000000
+ 0000EFEFEF00F7EFEF00FFF7EF00FFF7EF00FFF7EF00F7F7F700EFEFEF00D6DE
+ CE0084A573004A8C4200529C6B005AA57B00528C6B00426B4A00214229000810
+ 000029292900BDB5B500F7F7F700F7F7F7000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000000FF
+ FF00000000000000000000FFFF00000000000000000000FFFF0000FFFF000000
+ 000000FFFF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000F7F7F700DEDEDE00CECECE00C6C6C600C6C6
+ C600D6D6D600E7E7E70000000000F7F7F700FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00EFEFEF00CECECE00CEB5AD00C6B5AD00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000CEBDBD0063AD
+ F700A5B5D600DEEFFF00B5E7FF0018B5FF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000F7F7F700F7F7
+ F700E7EFE700E7E7E70094AD9400527B520042634200314A31006B736B00D6D6
+ D600DEDEDE00F7F7F700F7F7F700000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000000FF
+ FF0000FFFF0000FFFF000000000000000000000000000000000000FFFF0000FF
+ FF0000FFFF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000EFEFEF00DEDE
+ DE00D6D6D600C6C6C600CECECE00D6D6D600E7E7E700EFEFEF00F7F7F700FFFF
+ FF00FFFFFF00FFFFFF00F7F7F700CECECE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000C6B5B5000894FF0042BDFF005AADEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000000FF
+ FF0000FFFF0000FFFF0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000F7F7F700EFEFEF00E7E7E700D6D6
+ D600CECECE00CECECE00D6D6D600EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000C6ADAD008CB5E70052A5EF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000424D3E000000000000003E000000
+ 2800000060000000A00200000100010000000000801F00000000000000000000
+ 000000000000000000000000FFFFFF00FF001FFFFFFFC00000000000FE0007FF
+ FFFFC00000000000FC0003FFFFFFC00000000000F80000FFFFFFC00000000000
+ F00000FFFFFFC00000000000E00000FFFFFFC00000000000C00000FCFE7FC000
+ 00000000800000FCFE7FC00000000000000000FCFE7FC00000000000000000FC
+ FE7FC00000000000800001FC067FC00000000000E00001FC067FC00000000000
+ F00003FCFE7FC00000000000FC000FFCFE7FC00001000000FF801FFCFE7FC000
+ 01000000FFE00FFC067FC00001000000FFF00FFC067FC00001000000FFFC07FF
+ FFFFC00001000000FFFE07FFFFFFC00001000000FFFF83FFFFFFC00001000000
+ FFFF83FFFFFFC00003000000FFFFC1FFFFFFC0000F000000FFFFC3FFFFFFC000
+ 0F000000FFFFC7FFFFFFC0001F000000800000800000E00000FFFC7F80000000
+ 0000F00000FFFC3F800000000000F00000F00007800000000000F00000F00000
+ 800000000000F00000FC0000800000000000E00000FC0000800000000000E000
+ 00FC0000800000000000E00000FC0000800000000000E00008FC000080000000
+ 0000F00003FC0000800000000000F00001FC0000800000000000F80000F80000
+ 800000000000FC0000F00000800000000000FE0000F00000800000000000FF80
+ 00E00004800000000000FF8000E0000E800000000000FF0003C0000F80000000
+ 0000FF0003C0000F800003000000FF8003C0000F800003000000FFC003C0000F
+ 800003000000FFF003C0000FC0000F000000FFF007C0001FE0003F000000FFF0
+ 1FFFFFFFFFFFBF000000FFF87FFFFFFFC00000800000800000C0000080000000
+ 0000000000880000800000000000000000000000800000000000000000200010
+ 8000000000000000000000008000000000000000004000048000000000000000
+ 0000000080000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000020000000000000000000000000000060000000000000
+ 00004000C0E000000000000000012000FFE00000000000000003F800FFE00000
+ 00000000001FFC00FFF000000000000000FBE600FFF0000000000000008F3200
+ FFF800000000000000FFFB00FFF800000000000000F3DF00FFF8070000000000
+ 003EC700FFFC7F000000000000F37E02FFFC7F800000800000800000FFFC3F00
+ 0000800000000000F00007000000800000000000F00000000000800000000000
+ FC0000000000000000000000FC0000000000000000000000FC00000000000000
+ 00000000FC0000000000000000000000FC0000000000000000000000FC000000
+ 0000000000000000FC0000000000000000000000F80000000000000000000000
+ F00000000000000000000000F00000000000000000000000E000040000000000
+ 00000000E0000E000000C00000000000C0000F000000FE0000000000C0000F00
+ 0000FE0000000000C0000F000000FC0000000000C0000F000000FC0000000000
+ C0000F000000F80800000000C0001F000000FC0800000000FFFFFF000000FE08
+ 01000000FFFFFF000000FFFC1F000000E0C000E00000800000800000C1C000E0
+ 0000800000000000C18000E00000800000000000838000C00000800000000000
+ 830000C00000800000800000870000C00000800000000000870000C000008000
+ 00000000860000C0000080000000000087000080000080000000000083000080
+ 0000800000000000830000800000800000000000830000800000900000000000
+ 818000C00000900000000000C18001F80000800000000000C00003F000008000
+ 00000000E03007F00000A00000000000E03C1FFF8000800000000000F03FFCFF
+ 8006800000000000E03FF0FF0007800000000000E03FC0FF0F07800000000000
+ FC3F80FF1F0F800000000000FFFF00FFFF8F800000000000FFFF03FFFF8F8000
+ 01000000FFFFFFFFFFCFC00003000000F00000E00000FFFFE0800000F00000C0
+ 0000FFFFC0000000F00000C00000FFFFC0000000F00000C00000FFFF00000000
+ F80000C00000FFFF00000000F80000C00000FFFC00000000FC0000800000FFF8
+ 00000000FE0000800000FFF800000000FC0000800000FFE000000000FC000000
+ 0000FFC000000000F80000000000FF8000000000F80000000000FF0000000000
+ F80000000000FE0000000000FC0000000000FC0000000000FC0000000000F800
+ 00000000FC0000000000F00000000000F80000FF0000F00000000000F80000FF
+ FC00E00000000000FC0000FFFFFCE00000000000FF8000FFFFFCF00000000000
+ FFF000FFFFFCE00000000000FFFF00FFFFFC800000000000FFFFF0FFFFFE8000
+ 00000000FFFFFFFFFFFF000000000000F00000F87FC7F80000C00000F00000F8
+ 07C7F80000C00000F00000F80061F00000800000E00000F80001F00000800000
+ F00000F00000F00000000000F00000F00000E00000000000E00000F00000C000
+ 00000000000000F00000C00000000000000000F00000800000000000800000F0
+ 0000000000000000C00000E00000000000000000C00000E00000000000000000
+ 800000E00000000000000000000000E00000000000800000000000C000000000
+ 00800000800000C00000000000800000E00001C00000000001C00000F80003FE
+ 0000000001C00000FC0003FFF000000001E00000FF0003FFFF81CE0003F00000
+ FFF003FFFFF9FFE003F80000FFF007FFFFFFFFF803FC0001FFF01FFFFFFFFFFF
+ 87FF0007FFF87FFFFFFFFFFFFFFFC01FC00000FC0000800000800000C00000FC
+ 0000800000000000C00000F80000800000000000C00000F80000800000000000
+ 800000F00000800000000000800000F00000800000000000800000E000008000
+ 00000000000000E00000800000000000000000C0000080000000000000000080
+ 0000800000000000000000800000800000000000000000000000800000000000
+ 000000000000800000000000000000C00000800000000000000000C000008000
+ 00000000800000C00000800000000000C001C0C00000C00000000000E001FEC0
+ 0000C00000000000F003FFC00000C00000000000FC03FFE00000C00001000000
+ FE03FFFE0000C001DF000000FF03FFFFC000FFC3FF000000FF87FFFFE000FFE7
+ FF000000FFC7FFFFF800FFEFFF000000E00700800000800000FFFFFFC0070000
+ 0000000000F9FFC1C00300000000000000F0FF81C00300000000000000E07E01
+ C00300000000000000C03E01C00304000000000000801C01E001040000000000
+ 00C00001E00104000000000000E00003E00104000000000000E00007E0010400
+ 0000000000E0000FE00104000000000000C0001FF00104000000000000C0003F
+ F0010C00000000000080003FF8010C00000000000080001FF8010C0000000000
+ 0000000FF8000C000000000000000007F8010E000000000000800003FC000E00
+ 0000000000800001FC0006000000000000800001FE0606000000000000800001
+ FFFF06000000000000C00603FFFF06000000000000E01F07FFFF8E0000000000
+ 00F03F8FFFFFDF000A00000A00FFFFFF800003F00000FFFFFFF1000080000060
+ 000000000FE00000800000000000000007C00000800000000000000003800000
+ 800020000000000003000000C00040000000000003000000C000800000000000
+ 03000000C00100000000000003000000C00000000000000007000000E0000000
+ 0000000007000000E0000000000000000F000000F0000000000000000F000000
+ F0000000000000001F800000F8000000000000001FE00000FC00000000000000
+ 3FF00000FE000000000000003FF00000FF000000000000007FF00000FF800000
+ 000000007FF80000FFC0000000000000FFFE0000FFE0000000000000FFFF0000
+ FFF8000000000001FFFF0000FFFE000000000001FFFF0000FFFFE00000000003
+ FFFF0000FFFFFF0000000003FFFF0001FFC000F8003FF80000FE0000F80000F8
+ 001FF80000FE0000E00000F8000FF80000FE0000E00000F8000FF00000FC0000
+ E00000F80007F00000F80000800000F80007F00000F00000000000F80003F000
+ 00E0007C000000FC0003E00000C000BE000000FC0001E00000800000000000FC
+ 0000E00000800000000000FC0000C00000800000000000FE0000C00000800000
+ 000000FE0000C00200800000000000FE0000800240C00000000000FF00008006
+ 60800000000000FF0000800DB0000001000000FE0001801BD8000003E00000FE
+ 0007803BEC000003E00000FE000FC077FE800007E00020FF004FE0FFFFC1000F
+ E04030FF80E7F1FFFFE3801FF0C039FFE3F3FFFFFFF7C43FF9C03FFFFFF9FFFF
+ FFFFE0FFFFC03FFFFFFCFFFFFFFFF1FF800000FF8708F00000F00000C00000FF
+ 83E0E00000F00000E00000FFC1E0C00000F00000F00000F880C0800000E00000
+ FC0000E00040000000800000FE0000C00000800000000000FF0000800000C000
+ 00000000FF8000800000E00000800000FFC000030000F00000800000FFE00007
+ 0000F80000000000FFE000000000FC0000000000FFE000000000FE0000800000
+ FFE000801000FF0001C00000FFC000801000FF8001E00000FF8000C01000FFC0
+ 01F00000FF0000E03000FFE000F80000FF8000F87600FFF000FC0000FFC000FF
+ F680FFF000FE0003FF8000FFF300FFF800FF008FFFA000FFF2A0FFFC00FF99FF
+ FFE000FFF940FFFE00FFFFFFFFF001FFFCF0FFFE04FFFFFFFFF807FFFE38FFFE
+ 06FFFFFFFFFC1FFFFF80FFFF0FFFFFFF800200800200800000FE000080020080
+ 0200800000FC00008002C08002C0800000F80000800320800320800000F00000
+ 800410800410800000E00000803008803008800000C0000080C00480C0048000
+ 0080000040800240800280000000000020800120800180000000000010800110
+ 8001800000000000088001088001800000800000058001058001800000E00000
+ 028001028001800000F80000008001008001800000FE0000008001008001C000
+ 00FF8000008001008001E00000FFC000008001008001F00000FFC00000400100
+ 4001E00000FFC000002006002006F00000FFE000001018001018F80001FFE000
+ 000860000860FC0003FFF000000580000580FE0003FFF800000200000200FF01
+ 83FFFC00000000000000FFA7C7FFFF00E00000F80000F80000F00000E00000F8
+ 0000F80000E00000E00000F80000F80000C00000E00000F80000F80000800000
+ E00000F80000F80000800000E00000F80000F800000E0000C00000F80000F800
+ 001E0000C00000F80000F800001E0000C00000C80000C800009E0000C0000080
+ 00008000008E0000C00000C00000C00000C60007C00000E00000E00000E20007
+ C00000F00000F00000F00007C00000F80000F80000000003C00000F80000F800
+ 00000000C00000F80000F80000000000E00000F80000F80000000000E00001F8
+ 0001F80001000000F00000F80003F80003000000F00800F80007F80007800000
+ F00C00F8000FF8000F800000F00F00F8081FF8081FC00000F81F81F80C3FF80C
+ 3FC00000FC3FC3F80E7FF80E7FE00000F00000800000C00000800000F0000000
+ 0000C00000000000E00100000000C00000000000E00000000000C00000000000
+ E00000000000C00000000000C00000000000C00000000000800000000000C000
+ 00000000800000000000C00000800000C00000000000C00000800000C0000000
+ 0000C00000800000800000000000C00000C00000800000000000E00000C00018
+ 800000000000F0000080003F800000000000F8000080007F000000000000FC00
+ 0080007F000000000000FF000080007F000000000000FFE00080007F40000000
+ 0100FFFF00C000FFC00000000080FFFF80C000FFF00000000000FFFFC0E001FF
+ F9F000000000FFFFE0F003FFF7FF04000000FFFFF0FC0FFF7FFFFD000800FFFF
+ F8FFFFFFFFF3FF000000FFFFFFFFFFFFC00000800000C00000F3001CC00000C0
+ 0000C00000F00304C00000C00000C00000E00784C00000C00000C00000F00F80
+ C00000C00000C00000F01FC0C00000C00000C00000F01FE0C00000C00000C000
+ 00F03FE0C00000C00000C00000E07FE1800000C00000C00000E07FE0800000C0
+ 0000800000E03FC0800001C00000800001E07FC0800001C00000800001E01F80
+ 000001C00000000001E01F0C000003C00000000003E00F0C000003C000000000
+ 03E00C3C000003C00001000003E1003C000007C00000000007E18078000007C0
+ 0000000007F1C0F0800007C00001C00007F900C0FC0007C00003FE0007FC0001
+ FFE007C40007FFF007FF0001FFFF0F82000FFFFF0FFFC007FFFFFF83001FFFFF
+ FFFFFFFFFFFFFF83803FFFFFFFFFFFFFFF2001E00000A04204F00000FE0000E0
+ 0000C03C03F00000FC6001E00000A04204F80000F87003E00000908108FC0000
+ F03806F000008F00F0FE0200F87C0FF80000908108FF0700F8FE1FF80000A042
+ 04FE0380F1FF3FE00000C03C03FC01C0E007F0E00000A04204F80000C003E0E0
+ 0000908108F00000C003E0E000008F00F0E00000C003E0E00000908108E00000
+ C003E0E00000A04204E00000C003E0E00000C03C03E00000C003E0E00000A042
+ 04E000004003A0E000005081FFF000008001C0E000002F0200F00000C001A0E0
+ 0000108400F80000E00010E00000084800FE0600F00C08F8000007F000FFFF00
+ F81E04FC0000000000FFFF81FC3F02FFFFFF000000FFFFFFFE7FB7FFFFFF0000
+ 00FFFFFFFFFFFFFFFFFF000000FFFFFFF80000FC0000F80000FC0000F80000FE
+ 0000F80000C80000F80000FC0000F80000F80000C00000F00000C00000E00000
+ C00000E00000C00000E00000E80000E00000E80000800000BC0000C00000FC00
+ 00000000FE0000800000FE0000000000FE0000800000FE0000000000FE000080
+ 0000FE0000000000FE0000800000FE0000000000F80000800000FC0000000000
+ F00000800000F80000000000F00000800000FB8000000000FF8000800000FFC0
+ 00000000FF8000C00000FF8000000000FF0003C00000FF0003000000FF0003E0
+ 0000FF0003000000FF0003F00000FF8003E00000FFC003F80000FFF003F00000
+ FFF003FC0000FFF007F00000FFF007FF0000FFF00FFC0000FFF01FFFF000FFF0
+ 3FFF8000FFF83FFFFF87FFF8FFFFE003FE0000F00000FE001BF00000FC0000F8
+ 0000FC0000E00000F80000F80000F80000C00000F00000F80000F00000800000
+ E00000FC0000E00000800000C00000FC0000C00000000000800000FC00008000
+ 00000000800000FE0000800000000000000000FE0000000000000000000000FC
+ 0000000000000000000000FC0000000000000000000001F80000000001000000
+ 000003F80000000003000000800007F80000800007000000C0000FF80000C000
+ 0F800000E0001FF00000E0001F800000F0003FF00000F0003F800000F8007FF0
+ 0000F8007FC00000FC003FF00000FC003FC00000FE003FE00000FE003FE00000
+ FF003FE00000FF003FF00000FF801FFE0007FF801FF80000FFC03FFFF87FFFC0
+ 3FFE1111FFE07FFFFFFFFFE07FFFFFFF800000FF2001FC0000C00000800000FE
+ 0000FC0000800000000000FC6001FC0000800000000000F87003FC0000800000
+ 800000F03806FC0001800000D00000F87C0FFC0001800000F80000F8FE1FFC00
+ 01800000F80000F1FF3FFC0001800000FC0000E007F0FC0001800000FC0000C0
+ 03E0FC0000800000FE0000C003E0FC0000800000FE0000C003E0000000800000
+ FE0000C003E0000000800000FE0000C003E0000000800000FF0000C003E00000
+ 00800000FF00004003A0000000800000FF80008001C0000000800000FF8000C0
+ 01A0200000C00000FFC000E00010700000FFC003FFE001F00C08F80000FFE007
+ FFF007F81E04FC0080FFF007FFFC1FFC3F02FE01C0FFF80FFFFFFFFE7FB7FFFF
+ E0FFFC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFE00FE0000800000FF2001FF8000FE
+ 0000000000FE0000FF8000FC0000000000FC6001FF8000FC0000000000F87003
+ FF8000FC0000000000F03806FF8000FC0000000000F87C0FFF8000F800000000
+ 00F8FE1FFF0000F80000000000F1FF3FFE0000F80000000000E007F0FC0000F8
+ 0000000000C003E0FC0000F00000000000C003E0F80000F00000000000C003E0
+ F00000F00000000000C003E0F00000E00000000000C003E0E00000E000000000
+ 00C003E0C00000E000000000004003A0800000E000000000008001C0800000C0
+ 0000000000C001A0003C00C00000000000E0001001FFFCE00000000000F00C08
+ 1FFFFFFC0000000000F81E04FFFFFFFFE000000000FC3F02FFFFFFFFFF000000
+ 00FE7FB7FFFFFFFFFFF9000000FFFFFFE00000F80003800000FC0007C00000F8
+ 0003800000FC0007800000F00003800000FC0007000000E00007800000F8000F
+ 000000E00006800000F0000F000000E00000800100F00006000000C000008001
+ 00F00000000000C00000C001E0E00000000000800000F803C0E0000000000080
+ 0000E00F80C00000000000800000C00400E00000000000C00000000000E80000
+ 800000F00000000000FC0000E00000F80000000000FF0000F80000FE00000000
+ 00FFC000FC0000FF8000000000FFF000FF0000FFE000000000FFFC00FFE000FF
+ F800000100FFFF00FFE000FFFE00000180FFFFFEFFF001FFFFFF0003C0FFFFFF
+ FFFF01FFFFFF0007F0FFFFFFFFFF81FFFFFFC00FFFFFFFFFFFFFC3FFFFFFFFFF
+ FFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFF800000E00000FC0000C00001000000E0
+ 0000F80000C00000000000E00000F80000C00000000000E00000F80000C00000
+ 000000E00000000000C00000000000E00001000000C00000000000E0000C8000
+ 00C00000000000E00000C00000C00000000000E00000F00000C00000000000E0
+ 0000F80000C00000000000E00000FC0000C00000000000E00000FC0000C00000
+ 000000E00000FE0000C00001000000E00000FE0000C00001000000E00000FF00
+ 01EC0007000000E00000FF0001FC0007000000E00000FF8003FC000F000000E0
+ 0000FFC007FE000F000000FCF3C7FFE00FFE000F000000FCE3E7FFF81FFE000F
+ 000000FC47E2FFFFFFFE000F000000FE0FF0FFFFFFFFFFFF000000FF1FF8FFFF
+ FFFFFFFF000000FFFFFFFFFFFFFFFFFF800000EE0000C00000FC6000000000EC
+ 0000C00000000000000000EC0000C00000000000000000E80000C00000000000
+ 000000F00000C00000000000000000F00000800000000000000000F000008000
+ 00000000000000E00000800000000000000000E00000800000000000000000C0
+ 0000800000000000000000C00000000000000000000000800000000000000000
+ 000000C00000000000000000000000E00000000000000000000000F002008000
+ 00000000000000F80200C0000000001F000000FC0600E001F800001F000000FE
+ 0700F001FF00001F000000FF0F80F803FF00001F000000FF8F80FC03FF00001F
+ 000000FFDF80FE03FF00001F000000FFFF80FF03FF00001F000000FFFFC0FF87
+ FF80001F000000FFFFE1FFC7FFC0003FF80000F80000C00000FFFE00F00000DA
+ 0000E00000FF8000F00000D60000F00000FF8000F00000C60000F80000FF8000
+ E00000CE0000FC0000FF8000E00000DE0000FC0000FF8000E000009C0000FC00
+ 00FF8000E00000810000FC0000FF0000E00000000000FC0000FE0000E0000000
+ 0000FC0000FC0000E00000000000FC0000FC0000F00000000000F00000F80000
+ F00000000000E00000F00000F80000000000E00000F00000FC0000000000E000
+ 00E00000FF8001000000F00001C00000FFF81F000000FC0007800000FFF80F00
+ 0000FC001F800000FFFC07000000FC001F003C00FFFC07000000FC001F01FFFC
+ FFFE03000000FC003F1FFFFFFFFF03000000FE00FFFFFFFFFFFF83000000FF83
+ FFFFFFFFFFFFFF000000FFCFFFFFFFFF800000C00000C0000082018080000000
+ 0000000000845FC280000000000000000084704280000000000000000084C043
+ 8000008000000000008D8043800000E000000000008F0042800000FC00000000
+ 00860FC2800000FF0000800000471B86800000FF8000C0000043B1C4800000FF
+ 0000E0000061F0FCC00000FE0000F0000030703CE00000FC0000F80000180800
+ F00000FC0000FC00000C0402F80000FC0001FE0000070304FC0000FC0003FF00
+ 0005FE7CFC0000FE0007FF800004700CFF0000FF000FFF8000003818FF0000FF
+ 801FFF8000021C30FFC000FFC01FFF8000010780FFC000FFE00FFFC000018001
+ FFF001FFF007FFC00000C003FFF007FFFC07FFE00000300CFFFC1FFFFC0FFFF0
+ 00000E70FFFC7FFFFE1FFFFC0F000180F00001C00000FFFC78800080E00000C0
+ 1800FFFC08800080E00000C00A20FFFC00800080C00000C00F62800000800080
+ C00000C00DDF000000801F80C00000F03DFE000000800080C00000E013CC0000
+ 00800080C00000C00FF8000000800080C04001C01FF0000000800080C00003C0
+ 3FE0000000801F80E0000FC07FBC000000800080E00007C0FFB0000000800080
+ E00003C046D0000000800080F00001C00460000000800100F00001C000380000
+ 00800200F00000C0001000000080043FE00000C00000000000800802E00001E0
+ 0000000000801FFEF00001F00000000000800002F80003F00000000000800002
+ FFF007E00400000000400004FFFC1FC00600000000300018FFFFFFFFFFFF0000
+ 000E00E0FFFFFFFFFFFF00000001FF00FFE07FFF0000C00000800000F1C01FFC
+ 0000C00000800000E0001FF80000C00000800000E0001FF80000C00000800000
+ E0001FF00000C00000800000E0001FF00000C00000800000E0001FF00000C000
+ 00800000E0001FE00000C00000800000E00003E00000C00000800000F00001E0
+ 0000C00000800000F00000C00000C0000F800000F80000C00000C00001800000
+ F00000800000C00000800000F00000800000C00000800000F00000800000E000
+ 00C00000F00000800000C00000F00000F00000000000C00000FC0001F0000000
+ 0000C00000FE0007F00000003800C00000FC0003F0000000FE00E00000F84003
+ F800000FFF80F00000FCC003FE02003FFFC0FFC001FFC083FFC000FFFFF0FFFF
+ FFFFC1C7FFFF00FFFFF8FFFFFFFFE3FF00000000000000000000000000000000
+ 000000000000}
+ end
+ object ImageList24: TImageList
+ Left = 376
+ Top = 136
+ Bitmap = {
+ 494C010164006800040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 000000000000360000002800000040000000A0010000010020000000000000A0
+ 0100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000102918000008
+ 0800000000006B9C7B0000000000000000000000000000000000000000000000
+ 0000000000000084B50010294A0010294A0010294A0052525200393939000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A2900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000102918009CC6AD009CC6AD006B9C
+ 7B00396342000008080000000000000000000000000000000000000000000000
+ 0000000000000084B500007BE700008CEF000052D600292929005A5A5A006363
+ 6300393939000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A2900218C2100218C
+ 2100218C2100218C2100218C2100218C2100218C2100218C2100218C2100218C
+ 2100218C2100218C210000000000000000000000000000000000000000000000
+ 00000000000000000000102918009CC6AD00C6DED600C6DED6009CC6AD006B9C
+ 7B006B9C7B001029180000000000000000000000000000000000000000000000
+ 00000808080000B5F700007BE700008CEF000052D60029292900636363007373
+ 73007B7B7B004242420000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A29008CE78C008CE7
+ 8C008CE78C008CE78C008CE78C008CE78C008CE78C008CE78C008CE78C008CE7
+ 8C008CE78C008CE78C0000000000000000000000000000000000000000000008
+ 0800102918009CC6AD00ADCEBD006BC67B00C6DED600C6DED6009CC6AD006B9C
+ 7B006B9C7B00396342006B9C7B00000000000000000000000000000000000000
+ 00001010100008B5F700087BE700088CEF000052D600313131006B6B6B007B7B
+ 7B00636363000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A2900294A2900294A
+ 2900294A2900294A2900294A2900294A2900294A2900294A2900294A2900294A
+ 2900294A2900294A290000000000000000000000000000000000000000001029
+ 1800C6DED60084CE9400009C0800009C0000009C000084CE94009CC6AD006B9C
+ 7B006B9C7B006B9C7B0000000000000000000000000000000000000000000000
+ 00001010100021BDF700188CE700189CEF001863E70039393900393939008484
+ 8400848484004242420000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000004A7B
+ 630008AD1000ADCEBD0084CE940039C64200ADCEBD0039C642009CC6AD006B9C
+ 7B006B9C7B006B9C7B0000080800000000000000000000000000000000000000
+ 00001818180031C6FF0029A5F70029BDF700296BE7004A94F700294A6B002121
+ 2100424242002121210000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A2900000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006B9C7B009CC6
+ AD00009C000084CE9400C6DED600C6DED600C6DED60084CE94009CC6AD006B9C
+ 7B006B9C7B006B9C7B00102918006B9C7B000000000000000000639CAD002139
+ 52004ACEFF004ACEFF0042CEFF0039C6FF00397BEF0063A5F700315273000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A2900218C2100218C
+ 2100218C2100218C2100218C2100218C2100218C2100218C2100218C2100218C
+ 2100218C2100218C21000000000000000000000000000000000000080800ADCE
+ BD0008AD1000009C0000C6DED60084CE9400009C000039C642009CC6AD006B9C
+ 7B006B9C7B006B9C7B0039634200000000000000000000000000294A6B00639C
+ AD0063D6FF0063D6FF005AD6FF0052D6FF00528CF7007BB5FF00425A7B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A29008CE78C008CE7
+ 8C008CE78C008CE78C008CE78C008CE78C008CE78C008CE78C008CE78C008CE7
+ 8C008CE78C008CE78C000000000000000000000000000000000010291800C6DE
+ D60039C6420039C6420039C6420008AD100008AD100039C642009CC6AD006B9C
+ 7B006B9C7B006B9C7B006B9C7B000000000000000000000000003152730073A5
+ B5007BE7FF007BE7FF0073DEFF006BDEFF00639CF700217BFF00526B84000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000294A2900294A2900294A
+ 2900294A2900294A2900294A2900294A2900294A2900294A2900294A2900294A
+ 2900294A2900294A2900000000000000000000000000000000004A7B6300C6DE
+ D600C6DED600C6DED600ADCEBD0039C64200F7F7F700C6DED600F7F7F700DEEF
+ E700C6DED6006B9C7B006B9C7B00000808000000000000000000425A7B008CB5
+ BD0094EFFF0094EFFF00C6F7FF0084B5FF00217BFF006B84A5008494AD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006B9C7B009CC6AD00C6DE
+ D600C6DED600C6DED600F7F7F700C6DED6006B9C7B0084AD9400C6DED600C6DE
+ D600C6DED600F7F7F700DEEFE700316342000000000000000000526B8400ADBD
+ C6006BA5FF006BA5FF00214A8C0008398400216BDE00294A6B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021217B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000080800ADCEBD00C6DE
+ D600F7F7F700C6DED600102918006B9C7B006B9C7B00C6DED600C6DED600C6DE
+ D600C6DED600DEEFE700DEEFE700316342000000000000000000000000005A8C
+ A500212121005A6B840008429C001852A5000808080000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021217B000000CE000000
+ CE000000CE000000CE000000CE000000CE000000CE000000CE000000CE000000
+ CE000000CE000000CE0000000000000000000000000010291800FFFFFF00C6DE
+ D6006B9C7B006B9C7B00102918006B9C7B009CC6AD00C6DED600C6DED600DEEF
+ E700DEEFE700639C7B0000080800000000000000000000000000000000000000
+ 00000000000084ADD60029A5F700397BEF002929290000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021217B008484FF008484
+ FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF008484
+ FF008484FF008484FF0000000000000000000000000010291800FFFFFF006B9C
+ 7B006B9C7B006B9C7B00102918006B9C7B00C6DED600DEEFE700DEEFE700639C
+ 7B00000808000000000000000000000000000000000000000000000000000000
+ 0000000000006394DE00C6F7FF0084B5FF002929290000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000021217B0021217B002121
+ 7B0021217B0021217B0021217B0021217B0021217B0021217B0021217B002121
+ 7B0021217B0021217B000000000000000000000000000000000010291800FFFF
+ FF00FFFFFF00FFFFFF0010291800ADCEBD00DEEFE700639C7B00000808000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000052525200393939000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000102918006B9C7B00FFFFFF00FFFFFF001029180000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000008294A0008294A0008294A0008294A0008294A0008294A000829
+ 4A0008294A0008294A0008294A0008294A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000063636300636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 630063636300636363006363630063636300000000000000000000000000ADAD
+ AD00A59CA500A5A5A500A59CA500B5B5B5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000008294A00CEFFFF0094DEEF0073C6E70073C6E70052B5D60052B5
+ D6002194E7002194E7002194E70008294A00000000000000000031317B003131
+ 7B0031317B0031317B0031317B0031317B0031317B0031317B0031317B003131
+ 7B0031317B0031317B000000000000000000A58C6B0042291000422910004229
+ 1000422910004229100042291000422910004229100042291000422910004229
+ 10004229100042291000422910006363630000000000000000009C9C9C008484
+ 84008C8C8C0084848400B5B5B500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000008294A00CEFFFF0018528C0018528C0018528C0018528C001852
+ 8C0018528C0018528C002194E70008294A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00ADD6BD009CD6B50094CE
+ AD0094CEA5008CC6A5004229100063636300000000009C9C9C00525252008484
+ 840052525200ADADAD0000000000949494000808080008080800080808000808
+ 0800181818009494940000000000000000000000000000000000000000000829
+ 4A0008294A0008294A00CEFFFF0094DEEF0073C6E70073C6E70073C6E70052B5
+ D60052B5D60052B5D6002194E70008294A0000000000000000006373DE000000
+ 00007BADB5007BADB50084ADB5008CADB50094B5B50094B5BD009CB5BD00A5BD
+ BD00ADBDC600ADC6C6000000000000000000A58C6B00DEEFE7007B5A31007B5A
+ 3100CEEFDE007B5A31007B5A31007B5A31007B5A31007B5A3100000063000000
+ 630094CEA5008CC69C00422910006363630000000000424242007B7B7B004242
+ 42007B7B7B000000000042424200000000000808080008080800737373007373
+ 7300080808000000000042424200000000000000000000000000000000000829
+ 4A00CEFFFF0008294A00CEFFFF0094DEEF0094DEEF0018528C0018528C001852
+ 8C0018528C0018528C0052B5D60008294A000000000031317B006373DE006373
+ DE005A6BD6000000000084ADB5008CADB50094B5BD0094B5BD009CB5BD00A5BD
+ BD00ADBDC600EFFFFF000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00ADD6BD00000063000000
+ 8C00000063008CC69C0042291000636363008C8C8C00313131008C8C8C003131
+ 3100000000009494940000000000080808000808080042424200424242004242
+ 4200737373000808080000000000949494000000000000000000000000000829
+ 4A00CEFFFF0008294A00CEFFFF0094DEEF0094DEEF0094DEEF0073C6E70073C6
+ E70073C6E70052B5D60052B5D60008294A0000000000000000006373DE006373
+ DE005A6BD6005A63D600525ACE000000000094B5BD0094B5BD009CB5BD00A5BD
+ BD00EFFFFF00EFFFFF000000000000000000A58C6B00DEEFE7007B5A31007B5A
+ 3100CEEFDE007B5A31007B5A31007B5A31000000630000006300000063009494
+ FF0000008C0000006300845A2900636363005A5A5A00636363005A5A5A006363
+ 63000000000018181800080808004242420042424200A59CA5008C8C8C008C8C
+ 8C00424242007373730008080800080808000000000008294A0008294A000829
+ 4A00CEFFFF0008294A00CEFFFF000808B5000808B5000808B50094DEEF0094DE
+ EF0094DEEF0094DEEF0052B5D60008294A0000000000000000006373DE006373
+ DE005A6BD6005A63D600525ACE004A52C6000000000094B5BD009CB5BD00E7F7
+ FF00EFFFFF00EFFFFF000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600000063009494FF0000008C000000
+ FF000000FF0000008C00000063008C8C8C00313131008C8C8C00313131008C8C
+ 8C0000000000181818005252520042424200D6D6D600A59CA500080808008C8C
+ 8C008C8C8C004242420073737300080808000000000008294A00CEFFFF000829
+ 4A00CEFFFF0008294A00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFF
+ FF00CEFFFF00CEFFFF0094DEEF0008294A000000000031317B006373DE006373
+ DE005A6BD6005A63D600525ACE004A4AC600000000009CB5BD00DEF7FF00E7FF
+ FF00EFFFFF00EFFFFF000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600000063009494FF000000FF000000
+ FF000000FF000000FF000000DE0000006300313131008C8C8C00313131008C8C
+ 8C000000000018181800A59CA50042424200EFEFEF0008080800BDBDBD000808
+ 08008C8C8C004242420073737300080808000000000008294A00CEFFFF000829
+ 4A00CEFFFF0008294A0008294A0008294A0008294A0008294A0008294A000829
+ 4A0008294A0008294A0008294A0008294A0000000000000000006373DE006373
+ DE005A6BD6005A63D600525ACE004A52C60000000000DEF7FF00DEF7FF00E7F7
+ FF00EFFFFF00EFFFFF000000000000000000A58C6B00DEEFE7007B5A31007B5A
+ 31007B5A31007B5A31007B5A31007B5A3100000063009494FF009494FF009494
+ FF000000FF000000FF00000063008C8C8C00313131008C8C8C00313131008C8C
+ 8C000000000000000000A59CA50042424200EFEFEF00A59CA50008080800A59C
+ A500A59CA5004242420008080800080808000000000008294A00CEFFFF000829
+ 4A00CEFFFF000808B5000808B5000808B50094DEEF0094DEEF0094DEEF0094DE
+ EF0052B5D60008294A00000000000000000000000000000000006373DE006373
+ DE005A6BD6005A63D600525ACE004A52C60000000000DEF7FF00DEF7FF00E7F7
+ FF00EFFFFF00EFFFFF000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC6000000630000006300000063009494
+ FF000000FF0000006300845A2900636363005A5A5A00636363005A5A5A006363
+ 63000000000021212100A59CA5000808080042424200EFEFEF00EFEFEF00D6D6
+ D600424242000808080008080800181818000000000008294A00CEFFFF000829
+ 4A00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFF
+ FF0094DEEF0008294A0000000000000000000000000031317B006373DE006373
+ DE005A6BD6005A63D600525ACE004A52C60000000000DEF7FF00DEF7FF00E7F7
+ FF00EFFFFF00EFFFFF000000000000000000A58C6B00DEEFE7004A94C60073C6
+ E70073C6E70073C6E70073C6E700B5DEC600ADDEBD00ADD6BD00000063009494
+ FF00000063008CC69C0042291000636363008C8C8C00313131008C8C8C003131
+ 3100000000009494940021212100A59CA5000808080042424200424242004242
+ 4200080808000808080000000000949494000000000008294A00CEFFFF000829
+ 4A0008294A0008294A0008294A0008294A0008294A0008294A0008294A000829
+ 4A0008294A0008294A00000000000000000000000000000000006373DE006373
+ DE005A6BD6005A63D600525ACE004A52C600000000008CADB5008CADB5008CAD
+ B5008CADB5008CADB5000000000000000000A58C6B00DEEFE7004A94C6004A94
+ C6004A94C6004A94C60073C6E700B5DEC600ADDEBD00A5D6BD00000063000000
+ 630094CEA5008CC69C004229100063636300000000005A5A5A00848484005A5A
+ 5A0084848400000000004242420021212100A59CA500A59CA500A59CA5005252
+ 5200080808000000000042424200000000000000000008294A00CEFFFF000808
+ B5000808B5000808B50094DEEF0094DEEF0094DEEF0094DEEF0052B5D6000829
+ 4A000000000000000000000000000000000000000000000000006373DE006373
+ DE005A6BD6005A63D600525ACE004A52C6000000000000000000000000000000
+ 000000000000000000000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C00422910006363630000000000A5A5A5006B6B6B009494
+ 94006B6B6B00ADADAD0000000000949494002121210018181800080808000000
+ 0000080808009494940000000000000000000000000008294A00CEFFFF00CEFF
+ FF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF0094DEEF000829
+ 4A00000000000000000000000000000000000000000000000000000000000000
+ 00005A6BD6005A63D600525ACE004A52C6000000000000000000000000000000
+ 000000000000000000000000000000000000A58C6B00A58C6B00A58C6B00A58C
+ 6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C
+ 6B00A58C6B00A58C6B00A58C6B00000000000000000000000000A5A5A5009494
+ 94009C9C9C0094949400B5B5B500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000008294A0008294A000829
+ 4A0008294A0008294A0008294A0008294A0008294A0008294A0008294A000829
+ 4A00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000525ACE004A52C6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B5B5
+ B500ADADAD00ADADAD00ADADAD00B5B5B5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000007B7B7B007B7B
+ 7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B
+ 7B007B7B7B007B7B7B007B7B7B007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000636363000000000000000000000000000000
+ 00000000000000000000000000000000000000395A00004A7B00000000000000
+ 0000000000000000000000000000000000005252520052525200525252005252
+ 5200525252005252520052525200525252005252520052525200525252005252
+ 52005252520052525200525252007B7B7B000000000000000000636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 63000000000000007B0000004200000000000000000000000000000000000000
+ 0000E7E7E70000000000FFAD3100FF9C310084000000FF732100FF6B21008400
+ 0000FF311000FF21080000000000636363000000000000000000000000000000
+ 0000000000000000000000000000000000005AC6FF00004A7B00004A7B00004A
+ 7B000000000000000000000000000000000052525200F7EF9C00F7E79C00F7E7
+ 9C00BD7B7B00F7DE940010106B0010108400EFCE9C00EFC69400E7BD8C00BD7B
+ 7B00E7B58C00E7B58C00525252007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000007B0000007B0000000000000000000000000000000000000000000000
+ 0000E7EFE70000000000FFB53900FFA5310084000000FF7B2900FF7321008400
+ 0000FF391000FF29080000000000636363000000000000000000000000000000
+ 000000000000000000000000000000000000000000005AC6FF00E7528C00A500
+ 0000A500000000000000000000000000000052525200F7EF9C00F7E79C00F7E7
+ 9C00BD7B7B0010106B0010106B001010CE0010108C00EFC69400E7BD8C00BD7B
+ 7B00E7B58C00E7B58C00525252007B7B7B0000000000000000000808FF000000
+ 000042BDEF0039B5E7008400000021A5DE000000000000000000000000000000
+ 7B0000007B000000000000000000000000000000000000000000000000000000
+ 0000000000000000000084000000840000008400000084000000840000008400
+ 0000840000008400000000000000636363000000000000000000000000000000
+ 000000000000000000000000000000000000000000005AC6FF00E7528C00A500
+ 0000A5000000A5000000000000000000000052525200F7EF9C00F7E79C001010
+ 6B0010106B0010106B001010CE002910A5003131C60018189C00E7BD8C00BD7B
+ 7B00E7B58C00E7B58C00525252007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000313131009C9C39009C9C39009C9C39000000
+ 000000007B006363630000000000000000000000000000000000000000000000
+ 0000F7F7F70000000000FFD64200FFCE420084000000FFAD3900FFA531008400
+ 0000FF732100FF6B210000000000636363000000000000000000636363006363
+ 6300636363006363630063636300636363006363630000000000A5000000FFC6
+ DE00A5000000A5000000A50000000000000052525200F7EF9C00F7E79C00F7E7
+ 9C001010CE001010CE002910A500BD7B7B007373DE003939CE002929AD00BD7B
+ 7B00E7B58C00E7B58C00525252007B7B7B000000000000000000E7E7E7000000
+ 0000FFAD3100FF9C31005A5A5A00DEDE7B00BDBD0000BDBD0000BDBD00009C9C
+ 39000000000063636300000000000000000000000000A5A5A500A5A5A5000000
+ 0000FFFFFF0000000000FFD64200FFD6420084000000FFB53900FFAD31008400
+ 0000FF7B2900FF73210000000000636363000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000A500
+ 0000FFC6DE00A5000000A5000000A500000052525200F7EF9C00F7E79C00F7E7
+ 9C00BD7B7B002910A500EFD69400BD7B7B00EFCE9C008C8CDE004242D6003131
+ BD00E7B58C00E7B58C00525252007B7B7B000000000000000000E7EFE7000000
+ 0000FFB53900FFA531005A5A5A00DEDE3900BDBD0000BDBD0000BDBD0000BDBD
+ 0000000000006363630000000000000000006B6B6B006B6B6B006B6B6B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000636363000000000000000000E7E7E7000000
+ 0000FFA53100FF9C310084000000FF732100FF6B210084000000FF3110000000
+ 0000A5000000FFC6DE00A50000000000000052525200F7EF9C00F7E79C00F7E7
+ 9C00BD7B7B00F7DE9400EFD69400BD7B7B00EFCE9C00EFC69400ADADDE004A4A
+ DE003939CE00E7B58C00525252007B7B7B000000000000000000000000000000
+ 000084000000840000005A5A5A00BDBD3900FFFFBD00FFFFBD00DEDE7B009C9C
+ 3900000000006363630000000000000000006B6B6B00EFEFEF006B6B6B000000
+ 0000FFFFFF0000000000FFFFFF00F7F7F700EFEFEF00EFEFEF0000000000DEDE
+ DE00D6D6D600D6D6D60000000000636363000000000000000000E7EFE7000000
+ 0000FFB53900FFA5310084000000FF7B2900FF73210084000000FF391000FF29
+ 080000000000A5000000000000000000000052525200F7EF9C00F7E79C00F7E7
+ 9C00BD7B7B00F7DE9400EFD69400BD7B7B00EFCE9C00EFC69400E7BD8C00BD7B
+ 7B005252EF00E7B58C00525252007B7B7B000000000000000000F7F7F7000000
+ 0000FFD64200FFCE4200840000005A5A5A00BDBD0000BDBD00009C9C21003131
+ 3100000000006363630000000000000000006B6B6B00F7F7F7006B6B6B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000840000008400000084000000840000008400000084000000840000008400
+ 0000000000006363630000000000000000005252520052525200525252005252
+ 5200525252005252520052525200525252005252520052525200525252005252
+ 52005252520052525200525252007B7B7B000000000000000000F7F7F7000000
+ 0000FFD64200FFD6420084000000FFB539005A5A5A005A5A5A005A5A5A00FF73
+ 2100000000006363630000000000000000006B6B6B006B6B6B006B6B6B00B56B
+ 6B00B56B6B00B56B6B00B56B6B00B56B6B00B56B6B00B56B6B00B56B6B006B6B
+ 6B00A5A5A5000000000000000000000000000000000000000000F7F7F7000000
+ 0000FFD64200FFCE420084000000FFAD3900FFA5310084000000FF732100FF6B
+ 210000000000636363000000000000000000525252007BD6EF007BCEEF0073CE
+ EF002121210063C6EF005ABDEF002121210052B5F7004AB5EF0042ADEF002121
+ 210039A5EF0039A5EF00525252007B7B7B000000000000000000F7F7F7000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000006363630000000000000000006B6B6B00FFFFFF006B6B6B00FFE7
+ 9400FFE79400BD737300FFCE8C00FFCE8C00BD737300FFB58400FFAD84006B6B
+ 6B00A5A5A5000000000000000000000000000000000000000000FFFFFF000000
+ 0000FFD64200FFD6420084000000FFB53900FFAD310084000000FF7B2900FF73
+ 210000000000636363000000000000000000525252007BD6EF007BCEEF0073CE
+ EF002121210063C6EF005ABDEF002121210052B5F7004AB5EF0042ADEF002121
+ 210039A5EF0039A5EF00525252007B7B7B000000000000000000F7F7F7000000
+ 0000F7F7F700F7F7F700EFEFEF00EFEFEF0000000000DEDEDE00D6D6D600D6D6
+ D600000000006363630000000000000000006B6B6B00FFFFFF006B6B6B00FFE7
+ 9400FFE79400BD737300FFD69400FFCE8C00BD737300FFB58C00FFB584006B6B
+ 6B00A5A5A5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000636363000000000000000000525252007BD6EF007BCEEF0073CE
+ EF002121210063BDEF005ABDEF002121210052B5F7004AB5EF0042ADEF002121
+ 210039A5EF0039A5EF00525252007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006B6B6B006B6B6B006B6B6B006B6B
+ 6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B
+ 6B00A5A5A5000000000000000000000000000000000000000000FFFFFF000000
+ 0000FFFFFF00F7F7F700EFEFEF00EFEFEF0000000000DEDEDE00D6D6D600D6D6
+ D600000000006363630000000000000000005252520052525200525252005252
+ 5200525252005252520052525200525252005252520052525200525252005252
+ 5200525252005252520052525200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006B6B6B00FFFFFF006B6B6B00FFFF
+ FF00FFFFFF00F7F7F700F7F7F7006B6B6B00EFEFEF00E7E7E700E7E7E7006B6B
+ 6B00A5A5A5000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006B6B6B006B6B6B006B6B6B006B6B
+ 6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B
+ 6B00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006331310000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000063313100E7FFFF00217BA500217B
+ A500217BA500217BA500217BA500217BA500217BA500217BA500217BA500217B
+ A500217BA500217BA500217BA500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF7004A4AD6001818840084CEF700DE63
+ 63007331310084CEF700217BA500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000002929290000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000638C000063
+ 8C0000638C0000638C0000638C0000638C0000638C0000638C0000638C000063
+ 8C0000638C0000638C00000000000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF7004A4AD6001818840084CEF700DE63
+ 63007331310084CEF700217BA500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000029292900292929004A4A4A000000000000000000106B9400106B9400106B
+ 9400106B9400106B9400106B9400106B9400106B9400106B9400106B9400106B
+ 9400106B9400106B94000808080000000000000000000000000000638C00D6F7
+ FF004ABDEF0042BDEF0039B5E70031B5E70029ADE70021A5E70018A5E700189C
+ E7002994BD0000638C00000000000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF7004A4AD6001818840084CEF700DE63
+ 63007331310084CEF700217BA500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002929
+ 2900292929004A4A4A00000000000000000000000000D6F7FF0063CEF7005ACE
+ EF0052C6EF0052C6EF004ABDEF0042BDEF0039B5EF0031B5E70029ADE70029AD
+ E70021A5E7002994BD0008080800000000000000000000638C00D6F7FF0052C6
+ EF004AC6EF004ABDEF0042B5EF0039B5E70031ADE70029ADE70021A5E70018A5
+ E7002994BD000000000000638C000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF7004A4AD6001818840084CEF700DE63
+ 63007331310084CEF700217BA50000000000000000000000000000000000A5A5
+ A500636363001010100010101000636363000000000010ADFF00292929002929
+ 29004A4A4A0000000000000000000000000000000000D6F7FF006BD6F70063CE
+ EF005ACEEF0052C6EF004AC6EF004ABDEF0042B5EF0039B5E70031ADE70029AD
+ E70021A5E7002994BD0008080800000000000000000000638C00D6F7FF005ACE
+ EF0052C6EF004ABDEF0042BDEF0039B5EF0031B5E70029ADE70029A5E70021A5
+ E70000638C000000000000638C000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF7004A4AD6001818840084CEF700DE63
+ 63007331310084CEF700217BA500000000000000000000000000636363000000
+ 000031313100D6AD9C00D6AD9C0031313100000000000000000010ADFF004A4A
+ 4A000000000000000000000000000000000000000000D6F7FF006BD6F70063D6
+ F7005ACEEF005AC6EF0052C6EF004ABDEF0042BDEF0039B5EF0039B5E70031AD
+ E70029ADE7002994BD00080808000000000000638C00D6F7FF0063CEF7005ACE
+ EF0052C6EF0052C6EF004ABDEF0042BDEF0039B5E70031B5E70029ADE7002994
+ BD00000000002994BD002994BD000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF7004A4AD6001818840084CEF700DE63
+ 63007331310084CEF700217BA5000000000000000000A5A5A50000000000D6AD
+ 9C00FFE7C600FFE7C600FFD6B500FFCEAD00D6AD9C0000000000000000000000
+ 00000000000000000000000000000000000000000000D6F7FF0073DEF7006BD6
+ F70063CEF7005ACEEF0052C6EF0052C6EF004ABDEF0042BDEF0039B5EF0031B5
+ E70029ADE7002994BD00080808000000000000638C00D6F7FF006BD6F70063CE
+ F7005ACEEF0052C6EF004AC6EF0042BDEF0042B5EF0039B5E70031ADE7002994
+ BD00000000002994BD002994BD000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF70084CEF70084CEF70084CEF700DE63
+ 63007331310084CEF700217BA50000000000000000006363630031313100FFEF
+ CE00FFEFD600FFEFD600FFE7C600FFD6B500FFCEA50031313100636363000000
+ 00000000000000000000000000000000000000000000D6F7FF0073DEF7006BD6
+ F7006BD6F70063CEF7005ACEEF0052C6EF004AC6EF004ABDEF0042BDEF0039B5
+ EF0031ADE7002994BD00080808000000000000638C0000638C0000638C000063
+ 8C0000638C0000638C0000638C0000638C0000638C0000638C0000638C000063
+ 8C002994BD005ACEEF002994BD000000000063313100E7FFFF00DE6363007331
+ 310084CEF700DE6363007331310084CEF70084CEF70084CEF70084CEF700DE63
+ 63007331310084CEF700217BA500000000000000000010101000EFC6B500FFEF
+ DE00FFF7E700FFF7E700FFEFD600FFDEBD00FFD6AD00D6AD9C00101010000000
+ 00000000000000000000000000000000000000000000D6F7FF007BDEF70073DE
+ F7006BD6F70063D6F7005ACEEF005AC6EF0052C6EF004ABDEF0042BDEF0039B5
+ EF0031B5E7002994BD0008080800000000000000000000638C00D6F7FF0094EF
+ FF008CEFFF008CE7FF0084E7FF0084E7F7007BDEF70073DEF70073D6F7006BD6
+ F70063CEF7005ACEEF002994BD000000000063313100E7FFFF0084CEF70084CE
+ F70084CEF700DE6363007331310084CEF70084CEF70084CEF70084CEF700DE63
+ 63007331310084CEF700217BA500000000000000000010101000EFC6B500FFF7
+ E700FFFFEF00FFFFF700FFF7EF00FFEFD600FFD6B500D6AD9C00101010000000
+ 00000000000000000000000000000000000000000000D6F7FF0084E7F7007BDE
+ F70073DEF7006BD6F70063CEF7005ACEEF0052C6EF0052C6EF004ABDEF0042BD
+ EF0039B5E7002994BD0008080800000000000000000000638C00D6F7FF0094EF
+ FF0094EFFF008CEFFF008CE7FF0084E7F7007BE7F7007BDEF700D6F7FF00D6F7
+ FF00D6F7FF00D6F7FF002994BD000000000063313100E7FFFF0084CEF70084CE
+ F70084CEF700DE6363007331310084CEF70084CEF70084CEF70084CEF70084CE
+ F70084CEF70084CEF700217BA50000000000000000006363630031313100FFEF
+ DE00FFF7E700FFF7EF00FFEFD600FFDEBD00FFD6AD0031313100636363000000
+ 00000000000000000000000000000000000000000000D6F7FF00A5EFFF00A5EF
+ FF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EF
+ FF00A5EFFF002994BD0008080800000000000000000000638C00D6F7FF0094EF
+ FF0094EFFF008CEFFF008CEFFF0084E7F700D6F7FF0000638C0000638C000063
+ 8C0000638C0000638C0000638C000000000063313100E7FFFF0084CEF70084CE
+ F70084CEF700DE6363007331310084CEF70084CEF70084CEF70084CEF70084CE
+ F70084CEF70084CEF700217BA5000000000000000000A5A5A50000000000D6AD
+ 9C00FFEFD600FFEFD600FFDEC600FFD6B500D6AD9C0010101000A5A5A5000000
+ 0000000000000000000000000000000000000000000042ADD60042ADD60042AD
+ D60042ADD60042ADD60042ADD60000638C0000638C0000638C0000638C000063
+ 8C0000638C0000638C000000000000000000000000000000000000638C00D6F7
+ FF00D6F7FF00D6F7FF00D6F7FF00D6F7FF0000638C0000000000000000000000
+ 00000000000000000000000000000000000063313100E7FFFF0084CEF70084CE
+ F70084CEF70084CEF70084CEF70084CEF70084CEF70084CEF70084CEF70084CE
+ F70084CEF70084CEF700217BA500000000000000000000000000636363000000
+ 000031313100EFC6B500D6AD9C00313131001010100063636300000000000000
+ 00000000000000000000000000000000000000000000D6F7FF00D6F7FF00D6F7
+ FF00D6F7FF00D6F7FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000063
+ 8C0000638C0000638C0000638C0000638C000000000000000000000000000000
+ 00000000000000000000000000000000000063313100E7FFFF00E7FFFF00E7FF
+ FF00E7FFFF00E7FFFF00E7FFFF00E7FFFF00E7FFFF00E7FFFF00E7FFFF00E7FF
+ FF00E7FFFF00E7FFFF00E7FFFF0000000000000000000000000000000000A5A5
+ A50063636300101010001010100063636300A5A5A50000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006331310063313100633131006331
+ 3100633131006331310063313100633131006331310063313100633131006331
+ 3100633131006331310063313100633131000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000C69C7B00E7844A00E7844A00E784
+ 4A00E7844A00E7844A00E7844A00E7844A00E7844A00E7844A00E7844A00E784
+ 4A00E7844A00E7844A00E7844A00A58473000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000EF8C5A00E7AD8400E7B59C00E7B5
+ 9C00E7B59C00E7B59C00E7B59C00E7B59C00E7B59C00E7B59C00E7B59C00E7B5
+ 9C00E7B59C00E7B59C00EF8C520073524A000000000000009C0000009C000000
+ 9C0000009C0000009C0000009C0000009C0000009C0000009C0000009C000000
+ 9C0000009C0000009C0000009C0000009C000000000073737300737373007373
+ 7300737373007373730073737300737373007373730073737300737373007373
+ 7300737373007373730073737300737373000000000063636300636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 630063636300636363006363630063636300EF8C5A00EFBDA500F7FFFF00EFF7
+ F700EFF7F700EFF7F700EFEFEF00D6D6EF00E7E7EF00EFF7EF00E7EFEF00DEEF
+ EF00DEEFEF00E7DED600EF8C520073524A007B5252007B5252007B5252007B52
+ 52007B5252007B5252007B525200000000007B5252007B5252007B5252007B52
+ 52007B5252007B5252007B52520000009C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000073737300A58C6B0042291000422910004229
+ 1000422910004229100042291000422910004229100042291000422910004229
+ 100042291000422910004229100063636300EF8C5A00EFBDA500F7FFFF00F7FF
+ FF00FFFFFF00F7F7F700B5ADEF006B4AF700AD9CF700EFEFF700E7EFEF00E7EF
+ EF00DEEFEF00E7DED600EF8C520073524A007B525200EFFFFF00E7FFFF00D6F7
+ FF00CEEFF700BDEFEF00ADE7EF0000000000EFFFFF00E7FFFF00D6F7FF00CEEF
+ F700BDEFEF00ADE7EF007B52520000009C000000000094DEF70094D6F70094D6
+ F7008CD6F7008CCEF70084CEEF0084C6EF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D60000007B00B5DEC60000007B00ADD6BD009CD6B50094CE
+ AD0094CEA5008CC6A5004229100063636300EF8C5A00EFBDA500F7FFFF00FFFF
+ FF00DEDEF7008C7BEF004210F7003108F7005229F700BDB5EF00F7F7F700EFEF
+ EF00E7EFEF00E7DED600EF8C520073524A007B525200EFFFFF00E7FFFF00D6F7
+ FF00C6EFF700BDE7F700ADE7EF0000000000EFFFFF00E7FFFF00D6F7FF00C6EF
+ F700BDE7F700ADE7EF007B52520000009C000000000094DEF70094D6F70094D6
+ F7008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE0000007B0000007B0000007B0000007B0000007B009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300EF8C5A00E7BDA500FFFFFF00D6D6
+ F7006B4AEF004A21F7008473E7006B52E7003108FF00735AF700EFE7EF00F7F7
+ F700E7EFEF00E7DED600EF8C520073524A007B525200EFFFFF008C5221008C52
+ 21008C5221008C522100ADE7EF0000000000EFFFFF008C5221008C5221008C52
+ 21008C522100ADE7EF007B52520000009C000000000094DEF7005A7384005A73
+ 84005A7384008CCEF7005A7384005A7384005A7384005A7384005A7384005A73
+ 84005A73840073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE0000007B00C6E7D60000007B00B5DEC60000007B00ADD6BD0000007B0094CE
+ AD0094CEA5008CC6A5004229100063636300EF8C5A00E7BDA500FFFFFF00CECE
+ FF009C84FF00BDB5F700FFFFF700D6D6F7004A21FF002908FF009C8CEF00F7EF
+ F700EFF7F700E7DED600EF8C520073524A007B525200EFFFFF00E7FFFF00D6F7
+ FF00C6EFF700BDEFF700ADE7EF00FFFFFF00EFFFFF00E7FFFF00D6F7FF00C6EF
+ F700BDEFF700ADE7EF007B52520000009C000000000094DEF70094D6F70094D6
+ F7008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE0000007B00C6E7D60000007B00B5DEC60000007B00A5D6BD0000007B0094CE
+ AD0094CEA5008CC69C004229100063636300EF8C5A00E7BDA500FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009484F7003108FF005231F700C6BD
+ EF00EFF7F700E7DED600EF8C520073524A007B525200EFFFFF008C5221008C52
+ 21008C5221008C522100ADE7EF0000000000EFFFFF008C5221008C5221008C52
+ 21008C522100ADE7EF007B52520000009C000000000094DEF7005A7384005A73
+ 84005A7384008CCEF7005A7384005A7384005A7384005A7384005A7384005A73
+ 84005A73840073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D60000007B00B5DEC60000007B0000007B009CD6B5009CCE
+ AD0094CEA5008CC6A5004229100063636300EF8C5A00E7BDA500FFFFFF00FFFF
+ FF00F7FFFF00F7FFFF00F7FFFF00FFFFFF00EFE7F700846BF7002908FF00634A
+ EF00DEDEEF00E7DED600EF8C520073524A007B525200EFFFFF00E7FFFF00D6F7
+ FF00CEEFF700BDEFF700ADE7EF0000000000EFFFFF00E7FFFF00D6F7FF00CEEF
+ F700BDEFF700ADE7EF007B52520000009C000000000094DEF70094D6F70094D6
+ F7008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D60000007B0000007B0000007B00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300EF8C5A00E7BDA500FFFFFF00F7FF
+ FF00F7FFFF00F7FFFF00F7FFFF00F7FFFF00FFFFFF00CECEF7005A39FF005231
+ FF00B5B5EF00E7DED600EF8C520073524A007B525200EFFFFF008C5221008C52
+ 21008C5221008C522100ADE7EF0000000000EFFFFF008C5221008C5221008C52
+ 21008C522100ADE7EF007B52520000009C000000000094DEF700BD6B4A00BD6B
+ 4A00BD6B4A00BD6B4A00BD6B4A00BD6B4A00BD6B4A00BD6B4A00BD6B4A00BD6B
+ 4A00BD6B4A0073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE0000007B0000007B00B5DEC60000007B00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300EF8C5A00EFBDA500F7FFFF00F7FF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEDEFF00D6CE
+ FF00DEDEFF00E7DED600EF8C520073524A007B525200EFFFFF00E7FFFF00D6F7
+ FF00C6EFF700BDE7F700ADE7EF0000000000EFFFFF00E7FFFF00D6F7FF00C6EF
+ F700BDE7F700ADE7EF007B52520000009C000000000094DEF70094D6F70094D6
+ F7008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE0000007B00C6E7D60000007B00B5DEC60000007B00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300EF8C5A00EFBDA500F7FFFF00FFFF
+ FF00E7EFEF00D6DEDE00DEDEDE00DEDEDE00D6DEDE00DEDEDE00D6D6D600D6DE
+ D600F7FFFF00EFE7D600EF8C520073524A007B525200EFFFFF0000007B006B6B
+ DE006B6BDE006B6BDE00ADE7EF0000000000EFFFFF008C5221008C5221008C52
+ 21008C522100ADE7EF007B52520000009C000000000094DEF7000808B5000808
+ B5000808B5008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE0000007B00C6E7D60000007B00B5DEC60000007B00A5D6BD0000007B0094CE
+ AD0094CEA5008CC69C004229100063636300EF8C5A00E7BDA500F7F7EF00EFE7
+ DE00848484007B737B007B737B00736B7300736B73006B6B6B00524A52008C84
+ 8400F7EFE700EFDED600EF8C52006B5242007B525200EFFFFF0000007B000000
+ 7B0000007B006B6BDE00ADE7EF00FFFFFF00EFFFFF00E7FFFF00D6F7FF00C6EF
+ F700BDEFF700ADE7EF007B52520000009C000000000094DEF70094D6F70094D6
+ F7008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E7000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE0000007B0000007B0000007B0000007B0000007B009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300EF8C5200EFA57B00EFAD8C00E7AD
+ 8C00B5947B009CA5A500C6C6C600C6C6C600949494005A6B73008C6B5200C68C
+ 6B00EFAD8400EFA58400EF84520084635A007B525200EFFFFF00E7FFFF00D6F7
+ FF00C6EFF700BDEFF700ADE7EF0000000000EFFFFF00E7FFFF00D6F7FF00C6EF
+ F700BDEFF700ADE7EF007B52520000009C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D60000007B00B5DEC60000007B00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300DECEC600EFAD8C00EFAD8C00EFAD
+ 8C00E7AD8C00949C9C00D6DEDE00E7E7E7008C8C94004A636B00CE9C7B00F7AD
+ 8C00EFAD8C00EFAD8C00EFAD8400DEC6B5007B5252007B5252007B5252007B52
+ 52007B5252007B5252007B525200000000007B5252007B5252007B5252007B52
+ 52007B5252007B5252007B525200000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000A58C6B00A58C6B00A58C6B00A58C
+ 6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C
+ 6B00A58C6B00A58C6B00A58C6B0000000000EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00EFEFEF00BDBDC600BDBDBD00B5B5B500949494006B6B7300D6D6D600F7EF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000001010100010101000101010001010
+ 1000101010001010100010101000101010001010100010101000101010001010
+ 1000101010001010100010101000101010000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002184AD00E7EFF700E7EFF700DEEF
+ F700D6E7F700CEDEEF00BDCEDE00BDD6E700C6D6EF00BDD6E700B5CEE700ADCE
+ E700A5C6DE00A5C6DE009CBDDE001010100000000000848484003131C6008484
+ 8400848484008484840084848400848484008484840084848400848484008484
+ 8400848484003131A5000000000000000000000000000000000010108C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000010108C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002184AD00E7EFF700E7EFF700DEEF
+ F700CEDEEF00ADBDC60094A5AD00A5B5C600BDCEE700BDD6E700B5CEE700ADCE
+ E700A5C6DE00A5C6DE009CBDDE0010101000000000003131C6003131C6003131
+ A500D6F7F700CEEFEF00BDE7EF00B5DEE700A5D6DE0094CED6008CBDCE007BBD
+ CE0073B5C6008484840000000000000000000000000010108C00000000000000
+ 0000105A8C0084D6F70073C6F7005AB5EF004AADE700319CDE002194DE000000
+ 0000000000000000000010108C00000000000000000000000000101029001010
+ 2900101029001010290010102900101029001010290010102900101029001010
+ 2900101029001010290000000000000000002184AD0084ADCE0084ADCE007BA5
+ C6006B8CAD0018189400425A6B00526B84006B8CAD007BA5C60084ADCE0084AD
+ CE0084ADCE0084ADCE0084ADCE0010101000000000003131C6009C9CFF003131
+ A5003131A500CEEFEF00BDE7EF00B5DEE700A5D6DE0094CED6008CC6CE007BBD
+ CE003131A5008484840000000000000000000000000010108C00000000000000
+ 0000105A8C0084D6F70073C6F7005ABDEF004AADE700319CDE002194DE000000
+ 0000000000000000000010108C0000000000000000000000000031316B003131
+ EF00A5A5F7006B6BEF006B6BEF004242CE003131BD0031319C0031316B003131
+ 9C0018184A001010290000000000000000002184AD00DEE7EF00CED6DE00ADBD
+ C60018187B0018187B0018189C00636B73007B8494009CADBD00ADCEDE00ADCE
+ E700A5C6DE00A5C6DE009CBDDE0010101000000000005294A5005252FF003131
+ C6003131A5005294A5005294A5005294A5005294A5005294A5005294A5003131
+ A5005294A5005294A50000000000000000000000000010108C00000000000000
+ 0000105A8C00105A8C00105A8C00105A8C00105A8C00105A8C00105A8C00105A
+ 8C00000000000000000010108C0000000000000000000000000031316B003131
+ EF00A5A5F7006B6BEF006B6BEF004242CE003131BD0031319C0031316B003131
+ 9C0018184A001010290000000000000000002184AD00D6DEE700ADB5BD001818
+ 7B0018187B001818D6001818D6002129A50063737B007384940094ADBD00ADC6
+ DE00A5C6DE00A5C6DE009CBDDE00101010000000000000000000000000005252
+ FF003131C6003131A500000000000000000000000000000000003131A5003131
+ C600000000000000000000000000000000000000000010108C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000010108C0000000000000000000000000031316B003131
+ EF00A5A5F7006B6BEF006B6BEF004242CE003131BD0031319C0031316B003131
+ 9C0018184A001010290000000000000000002184AD0018187B0018187B001818
+ 7B001818D6003918B5004242CE001818D6003131B500425A6B00526B84006B8C
+ AD007BA5C60084ADCE0084ADCE00101010000000000084848400848484008484
+ 84005252FF003131C6003131A50084848400848484003131A5003131C6008484
+ 8400848484008484840000000000000000000000000010108C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000010108C0000000000000000000000000031316B003131
+ EF00A5A5F7006B6BEF006B6BEF004242CE003131BD0031319C0031316B003131
+ 9C0018184A001010290000000000000000002184AD00E7EFF7001818D6001818
+ D6003918B500ADBDC600C6D6E7004A4AD6001818D6002129A5005A6B73006B7B
+ 8C008CA5BD009CBDD6009CBDDE0010101000000000005294A500DEF7FF00DEF7
+ FF00D6F7F7005252FF003131C6003131A5003131A5003131C6008CC6CE007BBD
+ CE0073B5C60084848400000000000000000010108C0000000000000000000000
+ 0000105A8C0084D6F70073C6F7005ABDEF004AADE700319CDE002194DE000000
+ 000000000000000000000000000010108C000000000000000000000000003131
+ BD003131BD006B6BEF004242CE004242CE003131BD0031319C0031316B003131
+ 6B0031316B000000000000000000000000002184AD00E7EFF700E7EFF7003918
+ B500C6D6E700CEDEEF00CEDEEF00C6DEEF005252DE001818D6003131B5005A6B
+ 73006B7B8C0084A5B50094B5D60010101000000000005294A500DEF7FF00DEF7
+ FF00D6F7F700CEEFEF003131A5003131C6003131A50094CED6008CC6CE007BBD
+ CE0073B5C6008484840000000000000000000000000010108C00000000000000
+ 0000105A8C0084D6F70073C6F7005ABDEF004AADE700319CDE002194DE000000
+ 0000000000000000000010108C00000000000000000000000000000000000000
+ 0000000000003131BD003131BD003131BD0031316B0031316B0031316B000000
+ 0000000000000000000000000000000000002184AD0084ADCE0084ADCE0084AD
+ CE0084ADCE0084ADCE0084ADCE0084ADCE0084ADCE005A5AD6001818D6003939
+ C600425A6B00526B84006B8CAD0010101000000000005294A5005294A5005294
+ A5005294A5003131A5003131C6005252FF003131C6003131A5005294A5005294
+ A5005294A5005294A50000000000000000000000000010108C00000000000000
+ 0000105A8C00105A8C00105A8C00105A8C00105A8C00105A8C00105A8C00105A
+ 8C00000000000000000010108C00000000000000000000000000000000000000
+ 0000000000000000000031316B003131940031316B0010102900000000000000
+ 0000000000000000000000000000000000002184AD00E7EFF700E7EFF700DEEF
+ F700D6E7F700D6E7F700CEDEEF00C6DEEF00C6D6EF00BDD6E7006363F7001818
+ D6004A4AD6005263730063738400101010000000000000000000000000000000
+ 00003131A5003131C6003131C60000000000000000005252FF003131A5000000
+ 0000000000000000000000000000000000000000000010108C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000010108C00000000000000000000000000000000000000
+ 00000000000031316B00313194003131940031319C0031316B00101029000000
+ 0000000000000000000000000000000000002184AD00E7EFF700E7EFF700DEEF
+ F700D6E7F700D6E7F700CEDEEF00C6DEEF00C6D6EF00BDD6E700B5CEE7007B7B
+ E7001818D6005252E700526373001010100000000000848484003131A5003131
+ A5003131C6003131C600848484008484840084848400848484005252FF003131
+ A500848484008484840000000000000000000000000010108C00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000010108C00000000000000000000000000000000000000
+ 000031316B00A5A5F7003131BD003131BD003131BD0031319C0031319C001010
+ 2900000000000000000000000000000000002184AD0084ADCE0084ADCE0084AD
+ CE0084ADCE0084ADCE0084ADCE0084ADCE0084ADCE0084ADCE0084ADCE0084AD
+ CE009C9CD6001818D6006363EF0010101000000000005252FF009C9CFF003131
+ C6003131C600CEEFEF00BDE7EF00B5DEE700A5D6DE0094CED6008CC6CE005252
+ FF003131A5008484840000000000000000000000000010108C00000000000000
+ 0000105A8C0084D6F70073C6F7005AB5EF004AADE700319CDE002194DE000000
+ 0000000000000000000010108C00000000000000000000000000000000000000
+ 000031319400A5A5F700A5A5F700A5A5F700A5A5F700A5A5F7003131EF003131
+ 9400000000000000000000000000000000002184AD00E7EFF700E7EFF700DEEF
+ F700D6E7F700D6E7F700CEDEEF00C6DEEF00C6DEEF00BDD6E700B5CEE700ADCE
+ E700A5C6DE00B5B5D6001818D60010101000000000005252FF005252FF005252
+ FF00D6F7F700CEEFEF00BDE7EF00B5DEE700A5D6DE009CCED6008CC6CE007BBD
+ CE0073B5C6003131A50000000000000000000000000010108C00000000000000
+ 0000105A8C0084D6F70073C6F7005AB5EF004AADE700319CDE002194DE000000
+ 0000000000000000000010108C00000000000000000000000000000000000000
+ 0000000000003131940031319400313194003131940031319400313194000000
+ 0000000000000000000000000000000000002184AD00E7EFF700E7EFF700DEEF
+ F700D6E7F700D6E7F700CEDEEF00C6DEEF00C6D6EF00BDD6E700B5CEE700ADCE
+ E700A5C6DE00A5C6DE009CBDDE0010101000000000005294A5005294A5005294
+ A5005294A5005294A5005294A5005294A5005294A5005294A5005294A5005294
+ A5005294A5005294A5000000000000000000000000000000000010108C000000
+ 0000105A8C00105A8C00105A8C00105A8C00105A8C00105A8C00105A8C00105A
+ 8C000000000010108C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002184AD002184AD002184AD002184
+ AD002184AD002184AD002184AD002184AD002184AD002184AD002184AD002184
+ AD002184AD002184AD002184AD002184AD000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000949494009494
+ 9400949494009494940094949400949494009494940094949400949494009494
+ 9400949494009494940094949400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300000000000000000000000000000000000000
+ 0000A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5
+ A500000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000009494940000000000000000000000000000000000217B
+ A500217BA500217BA500217BA500217BA500217BA500217BA500217BA500217B
+ A500217BA500217BA50000000000000000000000000052292900522929005229
+ 29005229290052292900522929003131AD003131AD003131AD003131AD005229
+ 2900522929005229290063636300000000000000000000000000000000000000
+ 00005A5A5A00525252004A4A4A00424A4A00424242003939390031313100A5A5
+ A50000000000000000000000000000000000000000006B524A00FFE7DE00E7A5
+ 8C00E7A58400DE9C7B00DE9C7B00D6947300CE8C7300C68C7300C6846B00BD84
+ 6B00B57B6300000000009494940000000000000000000000000000000000217B
+ A500FFFFFF0052C6FF009CDEFF009CDEFF0052C6FF0052C6FF0052C6FF0052C6
+ FF0042B5E700217BA50000000000000000000000000052292900000000000000
+ 00005229290000000000000000003131AD0000000000000000003131AD000000
+ 0000000000005229290063636300000000000000000000000000000000000000
+ 00007B7B7B00737373006B6B6B005A5A6300525252004A4A4A0042424A00A5A5
+ A50000000000000000000000000000000000000000006B524A00FFE7DE00E7A5
+ 8C00E7A58400DE9C7B00DE9C7B00D6947300CE8C7300C68C7300C6846B00BD84
+ 6B00B57B63000000000094949400000000000000000000000000319CCE00FFFF
+ FF009CDEFF009CDEFF0052C6FF0052C6FF009CDEFF0052C6FF0052C6FF0052C6
+ FF0042B5E70000000000217BA500000000000000000052292900000000000000
+ 00000000000000000000000000003131AD000000000000000000000000000000
+ 0000000000005229290000000000000000000000000000000000000000000000
+ 0000000000005A422900EFBD8400CE945A00AD7B420000000000A5A5A5000000
+ 000000000000000000000000000000000000000000006B524A00FFE7DE005A5A
+ EF005A5AEF00E7A584004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
+ 4A00BD846B000000000094949400000000000000000000000000319CCE00FFFF
+ FF009CDEFF009CDEFF009CDEFF009CDEFF0052C6FF009CDEFF0052C6FF0052C6
+ FF00217BA50000000000217BA500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000005A422900EFBD8400CE945A00AD7B420000000000A5A5A5000000
+ 000000000000000000000000000000000000000000006B524A00FFE7DE00E7AD
+ 9400E7AD9400E7A58C00E7A58400DE9C8400DE9C7B00D6947B00D6947300CE8C
+ 7300C68C6B0000000000949494000000000000000000319CCE00FFFFFF009CDE
+ FF009CDEFF009CDEFF009CDEFF009CDEFF009CDEFF0052C6FF009CDEFF0042B5
+ E70000000000217BA50042B5E700000000000000000000000000000000006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 63006363630063636300636363000000000000000000A5A5A500A5A5A500A5A5
+ A50000000000000000005A422900CE945A0000000000A5A5A50000000000A5A5
+ A500A5A5A500A5A5A5000000000000000000000000006B524A00FFE7DE004A4A
+ EF004A4AEF00E7AD94004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00D694
+ 7300CE8C730000000000949494000000000000000000319CCE00FFFFFF009CDE
+ FF009CDEFF009CDEFF009CDEFF009CDEFF0052C6FF009CDEFF0052C6FF0042B5
+ E7000000000042B5E70042B5E700000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000006363630000000000000000001084BD00006B9C000039
+ 7B00A5A5A500000000005A422900CE945A0000000000A5A5A500000000001084
+ BD00006B9C0000397B00A5A5A50000000000000000006B524A00FFE7DE00E7BD
+ A500E7B5A500E7B59C00E7AD9400E7AD8C00E7A58C00E7A58400DE9C7B00DE94
+ 7B00D694730000000000949494000000000000000000319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE00319CCE00319CCE00319CCE00319CCE00319C
+ CE0042B5E700ADDEFF0042B5E700000000000000000000000000F7DE6B00F7DE
+ 6B0094393900EFC66300E7BD5A0094393900E7AD5A00DEAD520094393900DE9C
+ 5200D68C4A000000000063636300000000005A42290094DEEF0073C6E70052B5
+ D60000000000A5A5A500000000005A422900A5A5A500000000005A42290094DE
+ EF0073C6E70052B5D60000000000A5A5A500000000006B524A00FFE7DE004A4A
+ DE004A4ADE00E7B5A5004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
+ 4A00DE9C7B000000000094949400000000000000000000000000319CCE00FFFF
+ FF00ADDEFF00ADDEFF00ADDEFF00ADDEFF00ADDEFF00ADDEFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF0042B5E700000000000000000000000000F7E76B00F7DE
+ 6B0094393900EFD66300EFCE630094393900E7BD5A00E7B55A0094393900DEA5
+ 5200DE9C5200000000006363630000000000000000005A422900A5A5A5005A42
+ 2900A5A5A50000000000000000005A422900A5A5A50000000000000000005A42
+ 2900A5A5A5005A422900A5A5A50000000000000000006B524A00FFE7DE00E7C6
+ B500E7C6AD00E7BDAD00E7B5A500E7B59C00E7AD9400E7AD9400E7A58C00E7A5
+ 8400DE9C84000000000094949400000000000000000000000000319CCE00FFFF
+ FF00ADDEFF00ADDEFF00ADDEFF00ADDEFF00FFFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE00000000000000000000000000F7DE6B00F7DE
+ 6B0094393900EFD66300EFCE630094393900E7BD5A00E7B55A0094393900DEAD
+ 5200DEA5520000000000636363000000000000000000000000005A422900A5A5
+ A5000000000000000000000000005A422900A5A5A50000000000000000000000
+ 00005A422900A5A5A5000000000000000000000000006B524A00FFE7DE004A4A
+ C6004A4AC600E7C6B5004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
+ 4A00E7A58400000000009494940000000000000000000000000000000000319C
+ CE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00319CCE0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000F7E76B00F7DE
+ 6B0094393900EFD66300EFCE630094393900E7BD5A00E7B55A0094393900DEAD
+ 5200DEA5520000000000636363000000000000000000000000005A4229005A42
+ 2900A5A5A500A5A5A5007B7B7B005A4229007B7B7B00A5A5A500A5A5A5005A42
+ 29005A422900A5A5A500A5A5A50000000000000000006B524A00FFE7DE00EFD6
+ C600E7CEBD00E7C6B500E7C6B500E7BDAD00E7BDA500E7B59C00E7B59C00E7AD
+ 9400E7AD8C000000000094949400000000000000000000000000000000000000
+ 0000319CCE00319CCE00319CCE00319CCE000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000006363630000000000000000007B7B7B007B7B7B006B6B
+ 6B005A4229005A4229005A4229005A4229005A4229005A4229005A4229006B6B
+ 6B007B7B7B007B7B7B00A5A5A50000000000000000006B524A00FFE7DE004A4A
+ B5004A4AB500EFCEC6004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00E7B5
+ 9C00E7AD94000000000094949400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000ADE7F700A5E7
+ F7009CDEF700424242008CDEF70084D6F7007BD6F700424242006BCEF7006BCE
+ F70063CEF7000000000063636300000000000000000000000000000000000000
+ 00000000000000000000000000005A422900A5A5A50000000000000000000000
+ 000000000000000000000000000000000000000000006B524A00FFE7DE00EFDE
+ D600EFD6CE00EFD6C600EFCEC600E7CEBD00E7C6B500E7C6AD00E7BDA500E7B5
+ A500E7B59C000000000094949400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000ADE7F700A5E7
+ F7009CDEF700424242008CDEF70084D6F7007BD6F700424242006BCEF7006BCE
+ F70063C6F7000000000063636300000000000000000000000000000000000000
+ 00000000000000000000000000005A422900A5A5A50000000000000000000000
+ 000000000000000000000000000000000000000000006B524A00FFE7DE00FFE7
+ DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7
+ DE00FFE7DE000000000094949400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006B524A006B524A006B52
+ 4A006B524A006B524A006B524A006B524A006B524A006B524A006B524A006B52
+ 4A006B524A000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000737373007373
+ 7300737373007373730073737300737373007373730073737300737373007373
+ 7300737373007373730073737300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003131F7003131F7003131
+ F7003131F7003131F7003131F7003131F7003131F7003131F7003131F7003131
+ F7003131F7003131F7003131F7003131F7000000000000000000C6C6C600D6D6
+ D6000000000000000000000000000000000000000000B5B5B5009C9C9C009C9C
+ 9C00B5B5B5000000000000000000000000000000000008080800080808000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 0800080808000808080073737300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000003131F7003131F7003131
+ F7003131F7003131F7003131F7003131F7003131F7003131F7003131F7003131
+ F7003131F7003131F7003131F7003131F7000000000000000000A5A5A500A5A5
+ A500D6D6D6000000000000000000000000009C63630000000000000000000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E700DEDEDE00D6D6D600CECECE00C6C6C600BDBDBD00B5B5AD00A5ADA5009C9C
+ 9C0094949400080808007373730000000000000000001084BD00DEFFFF000000
+ 0000000000006B1010006B1010006B101000000000001084BD00DEFFFF000000
+ 0000000000006B1010006B1010006B10100000000000393939003131F7003131
+ F7003131F7003131F7003131F7003131F7003131F7003131F7003131F7003131
+ F7003131F7003131F7003131F7003131F700000000009C636300000000008484
+ 8400A5A5A500D6D6D60000000000000000009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 080094949400080808007373730000000000000000001084BD00DEFFFF000000
+ 000000000000000000000000000000000000000000001084BD00DEFFFF000000
+ 00000000000000000000000000000000000000000000393939003131F7003131
+ F7003131F7003131F7003131F7003131F7003131F7003131F7003131F7003131
+ F7003131F7003131F7003131F7003131F700000000009C6363009C6363000000
+ 000084848400A5A5A500D6D6D600000000009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E7000808080008080800CECECE00C6C6C600BDBDBD00B5ADB500ADADAD000808
+ 080094949400080808007373730000000000000000001084BD001084BD000000
+ 000000000000000000000000000000000000000000001084BD001084BD000000
+ 00000000000000000000000000000000000000000000F7B56300393939003131
+ F7003131F7003131F7003131F7003131F7003131F7003131F7003131F7003939
+ 39003131F7003131F7003131F7003131F700000000009C636300FFFFCE009C63
+ 63000000000084848400A5A5A500D6D6D6009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E700DEDEDE000808080008080800C6C6C600BDBDBD00B5B5AD00A5ADAD009C9C
+ 9C00949494000808080073737300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7B56300F7B563003939
+ 39003131F7003131F7003131F7003131F7003131F7003131F700393939003939
+ 39003131F7003131F7003131F7003131F700000000009C636300FFFFCE00FFCE
+ 9C009C6363000000000084848400A5A5A5009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E700DEDEDE00D6D6D6000808080008080800BDBDBD00B5B5B500ADA5AD009C9C
+ 9C00949494000808080073737300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000039393900F7B56300F7B5
+ 6300393939003131F7003131F7003131F7003939390039393900F7B56300F7B5
+ 630039393900393939003131F7003131F700000000009C636300FFFFCE00FFCE
+ 9C00FFCE9C009C636300000000008C8C8C009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E700DEDEDE00D6D6D600CECECE000808080008080800ADADAD00ADA5A5009C9C
+ 9C0094949400080808007373730000000000000000001084BD00DEFFFF000000
+ 0000000000006B1010006B1010006B101000000000001084BD00DEFFFF000000
+ 0000000000006B1010006B1010006B1010000000000039393900F7B56300F7B5
+ 6300F7B56300393939003939390039393900F7B56300F7B56300393939003939
+ 3900F7B56300F7B56300393939003131F700000000009C636300FFFFCE00FFCE
+ 9C00FFCE9C00FFFF9C009C636300000000009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E700DEDEDE00D6D6D6000808080008080800BDBDBD00B5ADB500A5A5AD009C9C
+ 9C0094949400080808007373730000000000000000001084BD00DEFFFF000000
+ 000000000000000000000000000000000000000000001084BD00DEFFFF000000
+ 000000000000000000000000000000000000000000000000000039393900F7B5
+ 6300F7B5630039393900F7B56300F7B56300F7B5630039393900000000000000
+ 000039393900F7B56300F7B5630039393900000000009C636300FFFFCE00FFCE
+ 9C00FFFF9C00FFCE9C0000000000D6D6D6009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E700DEDEDE000808080008080800C6C6C600BDBDBD00B5ADAD00ADADAD009C9C
+ 9C0094949400080808007373730000000000000000001084BD001084BD000000
+ 000000000000000000000000000000000000000000001084BD001084BD000000
+ 0000000000000000000000000000000000000000000000000000000000003939
+ 3900F7B56300F7B56300F7B56300F7B563003939390000000000000000000000
+ 00000000000039393900F7B56300F7B56300000000009C636300FFFFCE00FFFF
+ 9C00FFCE9C0000000000D6D6D600000000009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E7000808080008080800CECECE00C6C6C600BDBDBD00ADB5AD00ADA5AD000808
+ 0800949494000808080073737300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000039393900F7B56300F7B56300F7B563003939390000000000000000000000
+ 0000000000000000000039393900F7B56300000000009C636300FFFFCE00FFCE
+ 9C0000000000D6D6D60000000000000000009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF000808
+ 0800080808000808080008080800080808000808080008080800080808000808
+ 0800949494000808080073737300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000039393900F7B56300F7B56300393939000000000000000000000000000000
+ 000000000000000000000000000039393900000000009C636300FFCE9C000000
+ 0000D6D6D6000000000000000000000000009C636300FFFF9C00FFCE9C000000
+ 00009C9C9C00000000000000000000000000000000006B6B6B00EFEFEF00E7E7
+ E700DEDEDE00D6D6D600CECECE00C6C6C600BDBDBD00ADADB500ADADA5009C9C
+ 9C0094949400080808007373730000000000000000001084BD00DEFFFF000000
+ 0000000000006B1010006B1010006B101000000000001084BD00DEFFFF000000
+ 0000000000006B1010006B1010006B1010000000000000000000000000000000
+ 0000000000003939390039393900000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009C63630000000000D6D6
+ D600000000000000000000000000000000009C636300FFFF9C00FFCE9C000000
+ 0000B5B5B500000000000000000000000000000000006B6B6B006B6B6B006B6B
+ 6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B006B6B
+ 6B006B6B6B006B6B6B000000000000000000000000001084BD00DEFFFF000000
+ 000000000000000000000000000000000000000000001084BD00DEFFFF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000003939390000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009C636300000000000000
+ 0000000000000000000000000000000000009C6363009C6363009C6363009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000001084BD001084BD000000
+ 000000000000000000000000000000000000000000001084BD001084BD000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000002121
+ CE0021219C0021219C0008085A00000000000000000000000000000000006318
+ 0800000000006318080000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000B5D6F7008CBDDE000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000002121CE00218C
+ C600218CC600215273002152730008085A000000000063180800631808006318
+ 0800631808006318080063180800000000000000000000000000000000000000
+ 00000808FF000000000042BDEF0039B5E7008400000021A5DE00219CD6008400
+ 0000188CC600188CBD0000000000636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000B5D6F7008CBDDE008CBDDE006BA5CE00000000000000
+ 000000000000000000000000000000000000000000002121CE006BFFFF0021BD
+ FF0021BDFF0021BDFF00088CCE002152730008085A0000000000000000006318
+ 0800000000006318080000000000631808000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000063636300000000006B420000FFEFCE006B42
+ 00006B4200006B4200006B4200006B4200006B4200006B4200006B4200006B42
+ 00006B4200000000000000000000000000000000000000000000000000000000
+ 000000000000B5D6F700B5D6F7008CBDDE0000007B0000007B006BA5CE006BA5
+ CE00000000000000000000000000000000002121CE006BFFFF0021D6FF0021D6
+ FF0021D6FF0021BDFF0021BDFF00088CCE002152730008085A00000000006318
+ 0800000000006318080000000000631808000000000000000000000000000000
+ 0000E7E7E70000000000FFAD3100FF9C310084000000FF732100FF6B21008400
+ 0000FF311000FF2108000000000063636300000000006B420000FFEFCE00FF9C
+ 0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C
+ 00006B4200000000000000000000000000000000000000000000000000000000
+ 000000000000B5D6F700B5D6F70000007B0000007B0000007B006BA5CE006BA5
+ CE006BA5CE006BA5CE0000000000000000002121CE006BFFFF0021D6FF0021D6
+ FF0021D6FF0021BDFF0021BDFF0021BDFF002152730008085A00631808006318
+ 0800631808006318080063180800000000000000000000000000000000000000
+ 0000E7EFE70000000000FFB53900FFA5310084000000FF7B2900FF7321008400
+ 0000FF391000FF2908000000000063636300000000006B420000FFEFCE00FFEF
+ CE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEF
+ CE00FFEFCE000000000000000000000000000000000000000000000000000000
+ 0000B5D6F700B5D6F700B5D6F700B5D6F7008CBDDE0000007B006BA5CE006BA5
+ CE006BA5CE006BA5CE0000000000000000009494FF006BFFFF006BFFFF0021D6
+ FF0021D6FF0021D6FF0021D6FF0021BDFF00088CCE0063180800000000006318
+ 08000000000063180800000000000000000000000000000000000000000042E7
+ FF0042E7FF000000000084000000840000008400000084000000840000008400
+ 000084000000840000000000000063636300000000006B4200006B4200006B42
+ 00006B4200006B4200006B4200006B4200006B4200006B4200006B4200006B42
+ 00006B4200000000000000000000000000000000000000000000000000000000
+ 0000B5D6F700B5D6F70000007B0000007B008CBDDE0000007B006BA5CE006BA5
+ CE006BA5CE00000000000000000000000000000000009494FF006BFFFF006BFF
+ FF0021D6FF0021D6FF0021D6FF00088CCE0021219C0063180800000000006318
+ 08000000000063180800000000000000000042E7FF0000000000000000003939
+ 390042E7FF000000000042E7FF0042E7FF0084000000FFAD3900FFA531008400
+ 0000FF732100FF6B210000000000636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DEEF
+ F700B5D6F70000007B0000007B0000007B008CBDDE008CBDDE0000007B006BA5
+ CE006BA5CE0000000000000000000000000000000000000000009494FF006BFF
+ FF006BFFFF0021BDFF00088CCE0021219C000000000000000000631808006318
+ 0800631808006318080063180800631808003939390042E7FF00000000003939
+ 390042E7FF0042E7FF003939390042E7FF0084000000FFB53900FFAD31008400
+ 0000FF7B2900FF73210000000000636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000DEEF
+ F700B5D6F700B5D6F700B5D6F70000007B008CBDDE008CBDDE0000007B006BA5
+ CE00000000000000000000000000000000000000000000000000000000009494
+ FF002121CE0021219C0021219C00000000000000000000000000000000006318
+ 08000000000063180800000000000000000042E7FF0039393900DEFFFF003939
+ 390042E7FF003939390042E7FF00000000000000000000000000000000000000
+ 0000000000000000000000000000636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000DEEFF700DEEF
+ F700B5D6F700B5D6F700B5D6F70000007B008CBDDE008CBDDE0000007B006BA5
+ CE00000000000000000000000000000000000000000000000000000000005A5A
+ 5A00FFFFFF008C8C8C0021212100000000000000000000000000000000000000
+ 000000000000000000000000000000000000393939003939390039393900DEFF
+ FF003939390042E7FF00FFFFFF00F7F7F700EFEFEF00EFEFEF0000000000DEDE
+ DE00D6D6D600D6D6D6000000000063636300000000006B420000FFEFCE006B42
+ 00006B4200006B4200006B4200006B4200006B4200006B4200006B4200006B42
+ 00006B4200000000000000000000000000000000000000000000DEEFF700DEEF
+ F70000000000B5D6F700B5D6F700B5D6F70000007B008CBDDE008CBDDE000000
+ 0000000000000000000000000000000000000000000000000000000000002121
+ CE002121CE0021219C0021219C00000000000000000000000000000000000000
+ 00002121CE0008088C00080863000000000042E7FF00DEFFFF003939390042E7
+ FF00DEFFFF0039393900393939003939390042E7FF0000000000000000000000
+ 000000000000000000000000000000000000000000006B420000FFEFCE00FF9C
+ 0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C0000FF9C
+ 00006B4200000000000000000000000000000000000000000000000000000000
+ 000000FFFF000000000000000000B5D6F70000007B008CBDDE008CBDDE000000
+ 000000000000000000000000000000000000000000002121CE002121CE002121
+ EF002121EF002121EF002121EF0021219C0021219C0000000000000000000000
+ 00002121CE0008088C000808630000000000DEFFFF003939390042E7FF003939
+ 390042E7FF003939390042E7FF00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000006B420000FFEFCE00FFEF
+ CE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEF
+ CE00FFEFCE000000000000000000000000000000000000000000000000000000
+ 000000D6FF0000D6FF0000D6FF000000000000007B008CBDDE00000000000000
+ 0000000000000000000000000000000000009494FF002121EF008CCEFF008CCE
+ FF008CCEFF008CCEFF008CCEFF008CCEFF002121EF0021219C00000000000000
+ 00002121CE0008088C0008086300000000003939390042E7FF00000000003939
+ 390042E7FF0042E7FF003939390042E7FF000000000000000000000000000000
+ 000000000000000000000000000000000000000000006B4200006B4200006B42
+ 00006B4200006B4200006B4200006B4200006B4200006B4200006B4200006B42
+ 00006B4200000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000FFFF0000000000B5D6F7008CBDDE00000000000000
+ 0000000000000000000000000000000000009494FF002121EF002121EF002121
+ EF002121EF002121EF002121EF002121EF002121EF0021219C00000000002121
+ CE0008088C0008088C00080863000808630042E7FF0000000000000000003939
+ 390042E7FF000000000042E7FF00393939000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000009494FF002121EF008CCEFF008CCE
+ FF008CCEFF008CCEFF008CCEFF008CCEFF002121EF0021219C00000000000000
+ 00002121CE0008088C0008086300000000000000000000000000000000003939
+ 390042E7FF000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000009494FF007B7BFF007B7BFF007B7B
+ FF007B7BFF007B7BFF007B7BFF007B7BFF007B7BFF007B7BFF00000000000000
+ 0000000000002121CE0000000000000000000000000000000000000000000000
+ 0000000000000000000073737300000000007373730000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000073737300000000003994DE000000000073737300000000000000
+ 0000000000000000000000000000000000000000420000004200000042000000
+ 42000000420000004200000000000000000000000000000000008C847B008C84
+ 7B008C847B008C847B008C847B008C847B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000007B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00007373730000000000399CDE00399CDE00399CDE0000000000737373000000
+ 0000000000000000000000000000000000004284BD0094DEEF0073C6E70052B5
+ D60029A5D6000000420000000000000000000000840000000000BDA59400FFDE
+ A500F7CE9C00DEBD9C00CEAD94008C847B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005A390800FFDECE00945231009452
+ 3100945231000000000000007B0000007B0000007B0000007B0000007B000000
+ 7B00000000000000000000000000000000000000000000000000000000007373
+ 730000000000399CDE00399CE700000000004A9CE7004AA5E700000000007373
+ 7300000000000000000000000000000000004284BD0094DEEF0073C6E70052B5
+ D60029A5D6000000420000008400000084000000840000008400BDA59400FFDE
+ A500F7CE9C00DEBD9C00CEAD94008C847B004210080042100800421008004210
+ 0800421008000000000000000000000000000000000000000000000000004210
+ 0800421008004210080042100800421008005A390800FFDECE00FFA59400FFA5
+ 940094523100000000000000000000007B000000000000000000000000000000
+ 000000007B000000000000000000000000000000000000000000737373000000
+ 0000399CDE00399CE70000000000DEF7FF00000000004AADE7004AADE7000000
+ 0000737373000000000000000000000000004284BD004284BD004284BD004284
+ BD004284BD004284BD0000000000000000000000840000000000BDA59400BDA5
+ 9400BDA59400BDA59400BDA59400BDA59400B5736300EFEFCE00F79C7300F794
+ 6B0042100800000000000000000000000000000094000000000000000000B573
+ 6300EFEFCE00F79C7300F7946B00421008005A390800FFDECE00FFDECE00FFDE
+ CE00FFA594000000000000000000000000000000000000000000000000000000
+ 000000007B00000000000000000000000000000000007373730000000000399C
+ DE00399CE70000000000DEF7FF00DEF7FF00DEF7FF000000000073D6FF005AB5
+ E700000000007373730000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B5736300EFEFCE00F79C7300F794
+ 6B0042100800000000000000940000009400000094000000940000000000B573
+ 6300EFEFCE00F79C7300F7946B00421008005A3908005A3908005A3908005A39
+ 08005A3908005A39080000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000007373730000000000399CDE00399C
+ E70000000000DEF7FF00DEF7FF00DEF7FF00DEF7FF00DEF7FF000000000063BD
+ F70063BDF7000000000073737300000000000000420000004200000042000000
+ 4200000042000000420000000000000000000000000000000000080831000808
+ 310008083100080831000808310008083100B5736300EFEFCE00F7946B00F794
+ 6B0042100800000000000000000000000000000094000000000000000000B573
+ 6300EFEFCE00F7946B00F7946B0042100800000000000000000000007B000000
+ 0000000000000000000000007B0000007B0000007B000000000008395A00CEFF
+ FF005AB5FF005AB5FF005AB5FF000000000000000000399CDE00399CE7000000
+ 00004AA5E70000000000DEF7FF00DEF7FF00DEF7FF00DEF7FF00DEF7FF000000
+ 000063C6F70063BDF70000000000737373004284BD0094DEEF0073C6E70052B5
+ D60029A5D600000042000000000000000000000084000000000021216B009494
+ FF007373F7005252DE003131CE0008083100B5736300EFEFCE00F7946B00F794
+ 6B0042100800000000000000000000000000000000000000000000000000B573
+ 6300EFEFCE00F7946B00F7946B00421008000000000000007B0000007B000000
+ 7B00000000000000000000007B0000007B00000000000000000008395A00CEFF
+ FF00CEFFFF00CEFFFF0094FFFF00000000000000000000000000399CE7004AA5
+ E7000000000073D6FF0000000000DEF7FF00DEF7FF00DEF7FF00DEF7FF00DEF7
+ FF000000000063C6F7005ABDF700000000004284BD0094DEEF0073C6E70052B5
+ D60029A5D600000042000000840000008400000084000000840021216B009494
+ FF007373F7005252DE003131CE0008083100B5736300EFEFCE00F7946B00F794
+ 630042100800000000000000000000000000000000000000000000000000B573
+ 6300EFEFCE00F7946B00F794630042100800000000000000000000007B000000
+ 0000000000000000000000007B000000000000007B000000000008395A000839
+ 5A0008395A0008395A0008395A0008395A0000000000000000000000000063C6
+ F70063C6F7000000000073D6FF0000000000DEF7FF00DEF7FF00DEF7FF000000
+ 000073CEF70063C6F70000000000000000004284BD004284BD004284BD004284
+ BD004284BD004284BD000000000000000000000084000000000021216B002121
+ 6B0021216B0021216B0021216B0021216B00B5736300EFEFCE00F7946B00F794
+ 630042100800000000000000000000009400000000000000000000000000B573
+ 6300EFEFCE00F7946B00F794630042100800000000000000000000007B000000
+ 00000000000000000000000000000000000000007B0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000063C6F70063C6F7000000000073D6FF0000000000DEF7FF000000000073D6
+ FF0073CEF7000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000B5736300EFEFCE00F7946B00F794
+ 630042100800000000000000940000009400000094000000940000000000B573
+ 6300EFEFCE00F7946B00F794630042100800000000000000000000007B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000063C6F70063C6F7000000000073D6FF000000000073D6FF0073D6
+ FF00000000000000000000000000000000000000420000004200000042000000
+ 42000000420000004200000000000000000000000000000000008C847B008C84
+ 7B008C847B008C847B008C847B008C847B00B5736300EFEFCE00EFEFCE00EFEF
+ CE0042100800000000000000000000009400000000000000000000000000B573
+ 6300EFEFCE00EFEFCE00EFEFCE00421008000000000000000000000000000000
+ 000000000000000000000000000008395A00CEFFFF005AB5FF005AB5FF005AB5
+ FF00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000063C6F70073CEF7000000000073D6FF0073D6FF000000
+ 0000000000000000000000000000000000004284BD0094DEEF0073C6E70052B5
+ D60029A5D6000000420000000000000000000000840000000000BDA59400FFDE
+ A500F7CE9C00DEBD9C00CEAD94008C847B00B5736300B5736300B5736300B573
+ 6300B5736300000000000000000000000000000000000000000000000000B573
+ 6300B5736300B5736300B5736300B573630008395A00CEFFFF005AB5FF005AB5
+ FF005AB5FF00000000000000000008395A00CEFFFF00CEFFFF00CEFFFF0094FF
+ FF00000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000063C6F70063CEF70073CEF700000000000000
+ 0000000000000000000000000000000000004284BD0094DEEF0073C6E70052B5
+ D60029A5D6000000420000008400000084000000840000008400BDA59400FFDE
+ A500F7CE9C00DEBD9C00CEAD94008C847B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000008395A00CEFFFF00CEFFFF00CEFF
+ FF0094FFFF00000000000000000008395A0008395A0008395A0008395A000839
+ 5A0008395A000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000063C6F70000000000000000000000
+ 0000000000000000000000000000000000004284BD004284BD004284BD004284
+ BD004284BD004284BD0000000000000000000000840000000000BDA59400BDA5
+ 9400BDA59400BDA59400BDA59400BDA594000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000008395A0008395A0008395A000839
+ 5A0008395A0008395A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000008CD6EF0052BDDE00006BB500005AA5000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000007B00000042000000000000000000000000000000
+ 0000000000008CD6EF0052BDDE0031ADD60000000000000000001894CE00005A
+ A500005AA5000000000000000000000000000000000000000000000000001818
+ BD00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000018189400000000000000000000000000949494000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000007B0000007B00000000000000000000000000000000000000
+ 000052BDDE0031ADD60000000000000000000000000000000000000000000000
+ 00008CD6EF001894CE00000000000000000000000000000000001818BD001818
+ BD00181894007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B
+ 7B007B7B7B007B7B7B007B7B7B007B7B7B000000000000000000A5A5A500A5A5
+ A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5A500A5A5
+ A500A5A5A5000000000000000000000000000000000000000000000000000000
+ 0000004A6B004ABDFF00007BBD00000000000000000000000000000000000000
+ 000000007B0000007B0000000000000000000000000000000000000000000000
+ 000000000000000000001894CE00005AA5000000000000000000000000000000
+ 0000000000001894CE0000000000000000000000000031527B001818BD007B7B
+ FF00181894001818940031527B0031527B0031527B0031527B0031527B003152
+ 7B0031527B001818940031527B007B7B7B000000000000000000B5B5B500B5B5
+ B50084080000840800008408000084080000840800008408000084080000B5B5
+ B500B5B5B50000000000000000000000000000000000007BBD004ABDFF000000
+ 0000004A6B004ABDFF00000000000094DE00313131005A7B4A005A5A2100C6C6
+ 8C000000000000007B0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000001894CE00005AA500000000000000
+ 000031ADD600000000000000000000000000000000006394C600DEFFFF002929
+ FF001818BD00181894006BBDEF006BBDEF006BBDEF004AA5DE004AA5DE004AA5
+ DE00181894004AA5DE0031527B007B7B7B000000000000000000C6C6C600C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C60000000000000000000000000000000000007BBD00B5E7FF004ABD
+ FF004ABDFF0000ADFF0000ADFF005A5A5A0084A57300738C290073730000D6D6
+ 6300C6C68C000000000000000000000000000000000000000000000000000000
+ 000000000000000000008CD6EF000063AD008CD6EF001894CE00000000000000
+ 0000005AA500000000000000000000000000000000006394C600DEFFFF003152
+ 7B002929FF001818BD001818940031527B0031527B0031527B0031527B001818
+ 94001818BD004AA5DE0031527B007B7B7B000000000000000000D6D6D600D6D6
+ D60084080000840800008408000084080000840800008408000084080000D6D6
+ D600D6D6D60000000000000000000000000000000000007BBD000094DE004ABD
+ FF00007BBD000000000000ADFF005A5A5A00848421007373000073730000D6D6
+ 6300D6D663000000000000000000000000000000000000000000000000000000
+ 00008CD6EF000063AD00A59C7B00A5947300004A9C001894CE000073B500005A
+ A500005AA500000000000000000000000000000000006394C600DEFFFF00A5EF
+ FF008CDEF7002929FF001818BD00181894006BBDEF006BBDEF00181894001818
+ BD004AA5DE004AA5DE0031527B007B7B7B000000000000000000E7E7E700E7E7
+ E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7
+ E700E7E7E700000000000000000000000000007BBD004ABDFF004ABDFF00007B
+ BD004ABDFF00004A6B00000000005A5A5A0073AD7B009CB59C009CB59C008484
+ 4A00C6C68C0000000000000000000000000000000000000000008CD6EF000063
+ AD00B5AD8400B5AD8C00B5AD8C00B5AD8400ADA57B008CD6EF000073B50031AD
+ D600005AA500000000000000000000000000000000006394C600DEFFFF003152
+ 7B0031527B0031527B002929FF001818BD0018189400181894001818BD003152
+ 7B0031527B004AA5DE0031527B007B7B7B000000000000000000EFEFEF00EFEF
+ EF0084080000840800008408000084080000840800008408000084080000EFEF
+ EF00EFEFEF00000000000000000000000000007BBD00B5E7FF004ABDFF00007B
+ BD004ABDFF00004A6B000000000000ADFF005A5A5A00738C2900738C29005A5A
+ 1000313131000000000000000000000000000000000000000000004A9C00BDAD
+ 8C00C6B59400C6BD9C00C6BD9C00C6BD9400BDAD8C00004A9C001894CE000000
+ 000000000000000000000000000000000000000000006394C600DEFFFF00A5EF
+ FF00A5EFFF00A5EFFF008CDEF700181894001818BD00181894006BBDEF006BBD
+ EF006BBDEF006BBDEF0031527B007B7B7B000000000000000000F7F7F700F7F7
+ F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F70000000000000000000000000000000000007BBD000094DE004ABD
+ FF00007BBD000000000000ADFF0084848400000000005A5A5A005A5A5A005A5A
+ 5A000000000000000000000000000000000000000000000000008CD6EF00C6BD
+ 9C00CEC6A500D6CEAD00D6CEAD00CEC6A500C6BD9C00BDAD8C008CD6EF001894
+ CE0000000000000000000000000000000000000000006394C600DEFFFF00A5EF
+ FF00A5EFFF0031527B00181894001818BD002929FF001818BD00181894003152
+ 7B0031527B006BBDEF0031527B007B7B7B000000000000000000FFFFFF00FFFF
+ FF0084080000840800008408000084080000840800008408000084080000FFFF
+ FF00FFFFFF0000000000000000000000000000000000007BBD004ABDFF004ABD
+ FF004ABDFF0000ADFF0000ADFF0000ADFF00004A6B00004A6B00000000000000
+ 000000000000000000000000000000000000000000000000000000000000004A
+ 9C00DED6B500E7DEBD00E7DEBD00DED6B500D6C6A500C6B59400004A9C001894
+ CE00005AA500000000000000000000000000000000006394C600DEFFFF00A5EF
+ FF00A5EFFF00181894001818BD001818BD008CDEF7008CDEF7002929FF001818
+ 94008CDEF7006BBDEF0031527B007B7B7B000000000000000000FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF0000000000000000000000000000000000007BBD00B5E7FF000000
+ 0000004A6B004ABDFF00000000000094DE00004A6B00004A6B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000008CD6
+ EF00E7DEBD00EFE7C600EFE7C600E7DEBD00D6CEAD00C6BD9C00B5AD8C008CD6
+ EF001894CE00000000000000000000000000000000006394C600DEFFFF001818
+ 9400181894001818BD001818BD00A5EFFF00A5EFFF00A5EFFF00A5EFFF002929
+ FF00181894008CDEF70031527B007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000007BBD00007B
+ BD00007BBD00B5E7FF00007BBD00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000004A9C00EFE7C600EFE7C600E7DEBD00D6CEAD00C6BD9C00B5AD8C00004A
+ 9C001894CE00005AA5000000000000000000000000006394C6002929FF007B7B
+ FF001818BD001818BD00DEFFFF00DEFFFF00DEFFFF00DEFFFF00DEFFFF00DEFF
+ FF002929FF001818940031527B007B7B7B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000007BBD00007BBD0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00008CD6EF00E7DEBD00E7DEBD00DED6B500D6C6A500C6B59400B5AD8400A594
+ 73008CD6EF001894CE000000000000000000000000006394C6002929FF002929
+ FF002929FF006394C6006394C6006394C6006394C6006394C6006394C6006394
+ C6006394C6006394C60018189400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008CD6EF008CD6EF008CD6EF008CD6EF008CD6EF008CD6EF008CD6
+ EF008CD6EF001894CE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000001010100010101000101010001010
+ 10001010100010101000000000002929D60010107B0000000000000000000000
+ 0000000000000000000010107B00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000073737300737373007373
+ 7300737373007373730073737300737373007373730073737300737373007373
+ 7300737373007373730073737300737373000000000073737300737373007373
+ 7300737373007373730073737300737373007373730073737300737373007373
+ 73007373730073737300737373007373730010638C0039A5CE0039A5CE0039A5
+ CE0039A5CE0010101000000000004242FF002929D60010107B00000000000000
+ 00000000000010107B009494D600000000000000000073737300737373007373
+ 7300737373007373730073737300737373007373730073737300737373007373
+ 7300737373007373730073737300737373000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000737373000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000007373730010638C00CEFFFF009CE7F7006BBD
+ DE0039A5CE001010100000000000000000004242FF002929D60010107B000000
+ 000010107B007B7BE70000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000737373000000000094DEF70094D6F7002942
+ 08008CD6F7008CCEF70084CEEF0084C6EF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E70000000000737373000000000073CEF7006BCEF7002942
+ 080063C6EF0063BDEF005ABDEF005AB5E70052B5E70052ADE7004AA5E7004AA5
+ DE00429CDE00429CDE00000000007373730010638C0010638C0010638C001063
+ 8C0010638C0010638C000000000000000000000000004242FF002929D6002929
+ B5002929D60000000000000000000000000000000000F7F7EF00EFEFEF00EFE7
+ E700E7DED600DED6CE00D6CEC600CEC6BD00C6BDAD00BDB5A500B5AD9C00AD9C
+ 8C00A59484009C8C7B0000000000737373000000000094DEF70094D6F7002942
+ 08008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E70000000000737373000000000073CEF7006BCEF7002942
+ 080063C6EF0063BDEF005ABDEF0018314A0018314A0018314A0018314A001831
+ 4A0018314A00429CDE0000000000737373000000000000000000000000000000
+ 0000000000000000000000000000000000000000000010107B002929D6002929
+ D60010107B0000000000000000000000000000000000F7F7EF00635242006352
+ 4200635242006352420063524200635242006352420063524200635242006352
+ 4200635242009C8C7B0000000000737373000000000094DEF70094D6F7002942
+ 08008CD6F7008CCEF70084CEEF005A7384005A7384005A7384005A7384005A73
+ 84005A73840073B5E70000000000737373000000000073CEF7006BCEF7002942
+ 080063C6EF0063BDEF005ABDEF0018314A00DEF7FF00DEF7FF00DEF7FF00DEF7
+ FF0018314A00429CDE0000000000737373001010100010101000101010001010
+ 10001010100010101000000000000000000010107B002929D6003110B5000000
+ 00004242FF0010107B00000000000000000000000000F7F7EF0063524200EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00635242009C947B0000000000737373000000000094DEF70094D6F7002942
+ 08008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E70000000000737373000000000073CEF7006BCEF7002942
+ 080063C6EF0063BDEF005ABDEF0018314A00DEF7FF00DEF7FF00DEF7FF00DEF7
+ FF0018314A00429CDE00000000007373730010638C0039A5CE0039A5CE0039A5
+ CE0039A5CE00101010000000000010107B002929D6003110B500000000000000
+ 0000000000007B7BE70010107B000000000000000000F7F7EF0063524200EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00635242009C8C7B0000000000737373000000000029420800294208002942
+ 0800294208002942080084CEEF005A7384005A7384005A7384005A7384005A73
+ 84005A73840073B5E70000000000737373000000000029420800294208002942
+ 080029420800294208005ABDEF0018314A00DEF7FF00DEF7FF00DEF7FF00DEF7
+ FF0018314A00429CDE00000000007373730010638C00CEFFFF009CE7F7006BBD
+ DE0039A5CE001010100000000000000000003110B50000000000000000000000
+ 000000000000000000009494D6000000000000000000F7F7EF0063524200EFEF
+ EF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEFEF00EFEF
+ EF00635242009C8C7B0000000000737373000000000094DEF70094D6F7002942
+ 08008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E70000000000737373000000000073CEF7006BCEF7002942
+ 080063C6EF0063BDEF005ABDEF0018314A00DEF7FF00DEF7FF00DEF7FF00DEF7
+ FF0018314A00429CDE00000000007373730010638C0010638C0010638C001063
+ 8C0010638C0010638C0000000000000000000000000010107B00101094000000
+ 00000000000000000000000000000000000000000000F7F7EF00635242006352
+ 4200635242006352420063524200635242006352420063524200635242006352
+ 4200635242009C8C7B0000000000737373000000000029420800294208002942
+ 0800294208002942080084CEEF00BD6B4A00BD6B4A00BD6B4A00BD6B4A00BD6B
+ 4A00BD6B4A0073B5E70000000000737373000000000029420800294208002942
+ 080029420800294208005ABDEF0018314A0018314A0018314A0018314A001831
+ 4A0018314A00429CDE0000000000737373000000000000000000000000000000
+ 00000000000000000000000000000000000010107B0010107B001010D6001810
+ 94000000000000000000000000000000000000000000F7F7EF0063524200D6C6
+ AD00D6BD9C00CEB59400C6AD8400C6A57B00C69C7300BD946300BD8C5A00B58C
+ 5200635242009C947B0000000000737373000000000094DEF70094D6F7002942
+ 08008CD6F7008CCEF70084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E70000000000737373000000000073CEF7006BCEF7002942
+ 080063C6EF0063BDEF005ABDEF0018314A0052B5E70052ADE7004AADE7004AA5
+ DE0018314A00429CDE0000000000737373001010100010101000101010001010
+ 100010101000101010000000000010107B0010107B001010D6003110B5003939
+ CE002121A50000000000000000000000000000000000F7F7EF00635242006352
+ 4200635242006352420063524200635242006352420063524200635242006352
+ 4200635242009C8C7B0000000000737373000000000094DEF7002942080094D6
+ F700294208008CD6F7008CCEF70084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E70000000000737373000000000073CEF700294208006BC6
+ F7002942080063BDEF005ABDEF0018314A0018314A0018314A0018314A001831
+ 4A0018314A00429CDE00000000007373730010638C0039A5CE0039A5CE0039A5
+ CE0039A5CE0010101000000000001010D6001010D6003110B500000000007B7B
+ E7004242D6002929B500000000000000000000000000F7F7EF00EFEFEF00EFE7
+ E700E7DED600DED6CE00D6CEC600CEC6B500C6BDAD00BDB5A500B5AD9C00AD9C
+ 8C00A59484009C8C7B000000000073737300000000002942080094D6F70094D6
+ F7008CD6F7002942080084CEEF0084CEEF0084C6EF007BC6EF007BBDEF0073BD
+ E70073B5E70073B5E700000000007373730000000000294208006BCEF7006BC6
+ F70063C6EF00294208005ABDEF005AB5E70052B5E70052ADE7004AA5E7004AA5
+ DE00429CDE00429CDE00000000007373730010638C00CEFFFF009CE7F7006BBD
+ DE0039A5CE001010100000000000000000003110B50000000000000000000000
+ 00009494D6004A4ADE003939C600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000010638C0010638C0010638C001063
+ 8C0010638C0010638C0000000000000000000000000000000000000000000000
+ 000000000000000000005252E7004242D6000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000005A5AEF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000063000000630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 630000008C000000630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000CEEF
+ FF00C6E7F700BDE7F700B5DEF700ADD6EF00A5CEEF0094C6E7008CC6E70084BD
+ DE00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000636363006363
+ 6300636363006363630063636300636363006363630063636300000063000000
+ 8C000000FF0000006300000063000000630021216B009494FF007373F7005252
+ DE003131CE0000000000000000000000000000000000000000005A422900FFBD
+ 5A00E7A55200C68442009C633900000000000000000052A5DE0000000000CEEF
+ FF003973A5003973A500634242006342420063424200634242003973A5000000
+ 0000089CE7000000000000000000000000000000000000000000000000000000
+ 000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600C6C6C6000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000630000008C000000
+ FF000000FF0000008C0000008C000000630021216B009494FF007373F7005252
+ DE003131CE0000000000000000000000000000000000000000005A422900FFBD
+ 5A00E7A55200C68442009C633900000000000000000052A5DE0000000000CEEF
+ FF006342420063424200C6B59C00C6B59C00BDAD9C00B5A59400634242000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000D6D6D60084080000840800008408000084080000840800008408
+ 0000D6D6D60000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEA500FFD6A500BD7B7B00FFC69C00000063009494FF000000FF000000
+ FF000000FF000000FF0000008C000000630021216B0021216B0021216B002121
+ 6B0021216B0021216B00000000000000000000000000000000005A4229005A42
+ 29005A4229005A4229005A4229005A4229000000000052A5DE0000000000CEEF
+ FF006342420094947B0094948400949484009494840094947B00948C7B006342
+ 4200000000000000000000000000000000000000000000000000000000000000
+ 000000000000E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7E700E7E7
+ E700E7E7E70000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEAD00FFDEA500BD7B7B00FFCE9C00FFC69C00000063009494FF000000
+ FF009494FF009494FF009494FF00000063000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000052A5DE00000000006342
+ 4200CEBD9C00CEC6A500C6C6A500C6C6A500C6BDA500BDB59C00BDAD9400B5A5
+ 9400634242000000000000000000000000000000000000000000000000000000
+ 00000000000000007B0000007B00840800008408000084080000840800008408
+ 0000EFEFEF0000000000000000000000000000000000BD7B7B00BD7B7B00BD7B
+ 7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00000063009494
+ FF009494FF000000630000006300000063000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000052A5DE00000000006342
+ 4200949484009C9C84009CA58C009CA58C009CA58C009C9C840094948400B5AD
+ 9400634242000000000000000000000000000000000000000000000000000000
+ 000000007B000000CE0000007B00F7F7F700F7F7F700F7F7F700F7F7F700F7F7
+ F700F7F7F70000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEA500FFD6A500BD7B7B00FFC69C00FFC69C00BD7B7B00FFC69C000000
+ 63009494FF0000006300000000000000000021216B009494FF007373F7005252
+ DE003131CE0000000000000000000000000000000000000000005A422900FFBD
+ 5A00E7A55200C68442009C633900000000000000000052A5DE00000000006342
+ 4200CEC6A500CEC6A500CECEAD00CECEAD00C6CEAD00BDBD9C00BDB59C00B5AD
+ 940063424200000000000000000000000000000000000000000000007B000000
+ 000000007B000000CE0000007B00840800008408000084080000840800008408
+ 0000FFFFFF0000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEAD00FFDEA500BD7B7B00FFCE9C00FFC69C00BD7B7B00FFC69C00FFC6
+ 9C000000630000006300000000000000000021216B009494FF007373F7005252
+ DE003131CE0000000000000000000000000000000000000000005A422900FFBD
+ 5A00E7A55200C68442009C633900000000000000000052A5DE00000000006342
+ 4200949484009C9C84009CA58C009CA58C009CA58C009C9C840094948400B5AD
+ 940063424200000000000000000000000000000000000000000000007B000000
+ 7B000000CE0000007B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF0000000000000000000000000000000000BD7B7B00BD7B7B00BD7B
+ 7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B
+ 7B000000000063636300000000000000000021216B0021216B0021216B002121
+ 6B0021216B0021216B00000000000000000000000000000000005A4229005A42
+ 29005A4229005A4229005A4229005A4229000000000052A5DE0000000000CEEF
+ FF0063424200CEC6A500C6C6A500C6C6A500C6BDA500BDB59C00BDAD94006342
+ 420000000000000000000000000000000000000000000000000000007B000000
+ CE000000CE000000CE0000007B00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFEFAD00FFEFAD00BD7B7B00FFDEAD00FFD6A500BD7B7B00FFC69C00FFC6
+ 9C00000000006363630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000052A5DE0000000000CEEF
+ FF00634242006342420094948400949484009494840094947B00634242006342
+ 420000000000000000000000000000000000000000000000000000007B000000
+ CE000000CE0000007B0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00BD7B
+ 7B00FFEFAD00FFEFAD00BD7B7B00FFDEAD00FFDEA500BD7B7B00FFCEA500FFC6
+ 9C00000000006363630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000052A5DE0000000000CEEF
+ FF00C6E7F700BDE7F700634242006342420063424200634242008CC6E70084BD
+ DE0000000000000000000000000000000000000000000000000000007B000000
+ CE0000007B000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000063636300000000000000000021216B009494FF007373F7005252
+ DE003131CE0000000000000000000000000000000000000000005A422900FFBD
+ 5A00E7A55200C68442009C633900000000000000000052A5DE00000000000000
+ 0000C6E7F70000000000B5DEF70000000000A5CEEF00000000008CC6E7000000
+ 000000000000000000000000000000000000000000000000000000007B000000
+ 7B00000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000F7000000EF000000
+ EF000000E7000000DE000000D6000000CE000000C6000000BD000000B5000000
+ B5000000000063636300000000000000000021216B009494FF007373F7005252
+ DE003131CE0000000000000000000000000000000000000000005A422900FFBD
+ 5A00E7A55200C68442009C63390000000000000000000000000052A5DE000000
+ 00007B7B7B00000000007B7B7B00000000007B7B7B00000000007B7B7B000000
+ 000000000000000000000000000000000000000000000000000000007B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000F7000000EF000000
+ EF000000E7000000DE000000D6000000CE000000C6000000BD000000B5000000
+ B5000000000063636300000000000000000021216B0021216B0021216B002121
+ 6B0021216B0021216B00000000000000000000000000000000005A4229005A42
+ 29005A4229005A4229005A4229005A4229000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000D673
+ 5A00D6735A00D6735A000000000000000000D6735A00D6735A00000000000000
+ 0000D6735A00D6735A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000063000000
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000063636300636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 630063636300636363006363630063636300000000000000000000000000D673
+ 5A00D6735A0000000000D6735A00D6735A000000000000000000D6735A000000
+ 0000D6735A000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000063000000
+ 8C00000063000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006331310000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000636363000000000000000000000000000000
+ 000000000000D6735A00D6735A0000000000E7EFF700E7EFF700000000000000
+ 0000000000000000000000000000000000000000000000000000636363006363
+ 6300636363006363630063636300636363000000630000006300000063009494
+ FF0000008C000000630000000000000000000000000000000000000000001010
+ 2900000000000000000010102900101029001010290010102900101029001010
+ 29001010290010102900101029000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00EFC6A500E7BD
+ 9C00E7BD9400E7B5940000000000636363000000000000000000000000000000
+ 0000000000000000000000000000E7EFF700E7EFF700E7EFF700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000063009494FF000000FF000000
+ FF000000FF0000008C0000006300000000000000000000000000000000003131
+ 6B0000000000000000006B6BEF006B6BEF004242CE003131BD0031319C003131
+ 6B0031319C0018184A00101029000000000063313100F7F7DE0000009C000000
+ 9C00F7EFD6000000000000000000000000000000000000000000000000000000
+ 000000000000E7B5940000000000636363000000000000000000000000000000
+ 00000000000000000000E7EFF700E7EFF7000000000000000000000000000000
+ 00000000000000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEA500FFD6A500BD7B7B00FFC69C00000063009494FF000000FF000000
+ FF000000FF000000FF000000DE00000063000000000000000000000000003131
+ 6B0000000000000000006B6BEF006B6BEF004242CE003131BD0031319C003131
+ 6B0031319C0018184A00101029000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00EFDEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B5940000000000636363000000000000000000000000000000
+ 0000000000000000000000000000E7EFF700E7EFF700E7EFF700E7EFF700E7EF
+ F7000000000000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEAD00FFDEA500BD7B7B00FFCE9C00000063009494FF009494FF009494
+ FF000000FF000000FF0000006300000000000000000000000000000000003131
+ 6B003131EF0000000000000000006B6BEF004242CE003131BD0031319C003131
+ 6B0031319C0018184A00101029000000000063313100F7F7DE0000009C000000
+ 9C00F7EFD6000000000000000000000000000000000000000000000000000000
+ 000000000000E7B5940000000000636363000000000000000000000000000000
+ 0000B5EFF700B5EFF70000000000E7EFF700E7EFF700E7EFF700E7EFF7000000
+ 00000000000000000000000000000000000000000000BD7B7B00BD7B7B00BD7B
+ 7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B000000630000006300000063009494
+ FF000000FF000000630000000000000000000000000000000000000000003131
+ 6B003131EF00A5A5F70000000000000000004242CE003131BD0031319C003131
+ 6B0031319C0018184A00101029000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B5940000000000636363000000000000000000000000000000
+ 0000A5E7EF00A5E7EF0000000000E7EFF700E7EFF700E7EFF700E7EFF700E7EF
+ F7000000000000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEA500FFD6A500BD7B7B00FFC69C00FFC69C00BD7B7B00000063009494
+ FF00000063006363630000000000000000000000000000000000000000000000
+ 00003131BD003131BD0000000000000000004242CE003131BD0031319C003131
+ 6B0031316B0031316B00000000000000000063313100F7F7DE00735A3100735A
+ 3100735A3100735A3100735A3100735A3100735A3100735A3100735A3100735A
+ 3100735A3100E7B59400000000006363630000000000000000000000000094D6
+ E70094D6E700216B8C00E7EFF700E7EFF700E7EFF700E7EFF700E7EFF700E7EF
+ F700E7EFF70000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFDEAD00FFDEA500BD7B7B00FFCE9C00FFC69C00BD7B7B00000063000000
+ 6300000000006363630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003131BD0031316B0031316B003131
+ 6B000000000000000000000000000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B59400000000006363630000000000000000000000000084CE
+ E70084CEE70084CEE70084CEE70000000000E7EFF700E7EFF700DE292900E7EF
+ F7000000000000000000000000000000000000000000BD7B7B00BD7B7B00BD7B
+ 7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B7B00BD7B
+ 7B00000000006363630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003131940031316B00101029000000
+ 00000000000000000000000000000000000063313100F7F7DE0000527B0021A5
+ FF0021A5FF0021A5FF0021A5FF00EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B5940000000000636363000000000000000000000000006BBD
+ DE006BBDDE006BBDDE0000000000E7EFF700E7EFF700E7EFF700000000000000
+ 00000000000000000000000000000000000000000000F7F7F700F7F7F700BD7B
+ 7B00FFEFAD00FFEFAD00BD7B7B00FFDEAD00FFD6A500BD7B7B00FFC69C00FFC6
+ 9C00000000006363630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000313194003131940031319C0031316B001010
+ 29000000000000000000000000000000000063313100F7F7DE0000527B000052
+ 7B0000527B0000527B0021A5FF00EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B5940000000000636363000000000000000000000000005AB5
+ D6005AB5D6005AB5D60084848400E7EFF700E7EFF700E7EFF700E7EFF7000000
+ 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00BD7B
+ 7B00FFEFAD00FFEFAD00BD7B7B00FFDEAD00FFDEA500BD7B7B00FFCEA500FFC6
+ 9C00000000006363630000000000000000000000000000000000000000000000
+ 00000000000031316B00A5A5F7003131BD003131BD003131BD0031319C003131
+ 9C001010290000000000000000000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B5940000000000636363000000000000000000000000004AAD
+ D6004AA5D6004AADD600000000000000000084848400E7EFF700000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000006363630000000000000000000000000000000000000000000000
+ 00000000000031319400A5A5F700A5A5F700A5A5F700A5A5F700A5A5F7003131
+ EF00313194000000000000000000000000006331310063313100633131006331
+ 3100633131006331310063313100633131006331310063313100633131006331
+ 3100633131006331310063313100000000000000000000000000000000000000
+ 000039A5CE0039A5CE0039A5CE0039A5CE0039A5CE0039A5CE0039A5CE000000
+ 000000000000000000000000000000000000000000000000F7000000EF000000
+ EF000000E7000000DE000000D6000000CE000000C6000000BD000000B5000000
+ B500000000006363630000000000000000000000000000000000000000000000
+ 0000000000000000000031319400313194003131940031319400313194003131
+ 9400000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000F7000000EF000000
+ EF000000E7000000DE000000D6000000CE000000C6000000BD000000B5000000
+ B500000000006363630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300000000000000000000002100000021000000
+ 2100000021000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000007B0000007B0000007B0000007B0000007B000000
+ 7B00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000063636300000000000000000039397300313194003131
+ 9400000021000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000005A390800FFDECE00945231009452
+ 3100945231000000000000000000000000000000000000000000000000000000
+ 000000007B000000000000000000000000000000000000000000000000000000
+ 00006B4231006B42310000000000000000006B42310000000000000000000000
+ 0000000000000000000000000000000000000000000000000000E7E7E700E7E7
+ E700944A4A00F7C67B00F7BD7300944A4A00F79C6B00F79C6B00944A4A00F773
+ 5A00F76B5A00000000006363630000000000000000003939730039399C003939
+ 9C00000021000000000000000000421010000000000000000000000000000000
+ 0000000000000000000000000000000000005A390800FFDECE00FFA59400FFA5
+ 9400945231000000000000000000000000000000000000000000000000000000
+ 7B0000007B0000007B0000000000000000000000000000000000000000000000
+ 00000000000000000000E7EFF700E7EFF7000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000EFEFEF00EFEF
+ EF00944A4A00F7C67B00F7BD7B00944A4A00F7A56B00F79C6B00944A4A00F77B
+ 6300F7735A000000000063636300000000000000000039397300424AA500424A
+ A500000021000000000042101000421010004210100042101000000000002108
+ 0000210800002108000021080000210800005A390800FFDECE00FFDECE00FFDE
+ CE00FFA594000000000000000000000000000000000000000000000000000000
+ 000000007B000000000000000000000000000000000000000000000000000000
+ 000000000000E7EFF700E7EFF70000000000000000006B423100000000006B42
+ 3100000000000000000000000000000000000000000000000000944A4A00944A
+ 4A00944A4A00944A4A00944A4A00944A4A00944A4A00944A4A00944A4A00944A
+ 4A00944A4A0000000000636363000000000000000000393973004A52B5004A52
+ B50000002100000000000000000042101000000000000000000000000000734A
+ 3900945A3900945A3900945A3900210800005A3908005A3908005A3908005A39
+ 08005A3908005A39080000007B0000007B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000E7EFF700E7EFF700E7EFF70000000000FFFFFF000000
+ 0000000000000000000000000000000000000000000000000000E7E7E700E7E7
+ E700944A4A00F7C67B00F7BD7300944A4A00F79C6B00F79C6B00944A4A00F79C
+ 6B00F79C6B0000000000636363000000000000000000393973005263BD005263
+ BD0000002100000000000000000000000000000000000000000000000000734A
+ 3900A5735200A5735200A573520021080000000000000000000000007B000000
+ 00000000000000000000000000000000000000007B000000000008395A00CEFF
+ FF005AB5FF005AB5FF005AB5FF000000000000000000000000000000000084D6
+ E70084D6E700E7EFF700E7EFF700E7EFF700E7EFF70000000000CEDEEF000000
+ 0000000000000000000000000000000000000000000000000000EFEFEF00EFEF
+ EF00944A4A00F7C67B00F7BD7B00944A4A00F7A56B00F79C6B00944A4A00F7A5
+ 7300F79C6B0000000000636363000000000000000000393973005A6BCE005A6B
+ CE0000002100000000000000000000000000000000000000000000000000734A
+ 3900B57B6300B57B6300B57B630021080000000000000000000000007B000000
+ 00000000000000000000000000000000000000007B000000000008395A00CEFF
+ FF00CEFFFF00CEFFFF0094FFFF00000000000000000000000000000000006BBD
+ DE006BBDDE0000000000E7EFF700E7EFF700E7EFF700E7EFF70000000000CEDE
+ EF00000000000000000000000000000000000000000000000000944A4A00944A
+ 4A00944A4A00944A4A00944A4A00944A4A00944A4A00944A4A00944A4A00944A
+ 4A00944A4A0000000000636363000000000000000000393973006373D6006373
+ D60000002100000000000000000000000000000000000000000000000000734A
+ 3900CE9C8400CE9C8400CE9C840021080000000000000000000000007B000000
+ 000000000000000000000000000000007B0000007B0000007B0008395A000839
+ 5A0008395A0008395A0008395A0008395A000000000000000000000000004AAD
+ D6004AADD60000000000E7EFF700E7EFF7000000000000000000CEDEEF00CEDE
+ EF00000000000000000000000000000000000000000000000000F7F7F700F7F7
+ F700944A4A00F7DE8400F7D68400944A4A00F7C67B00F7BD7300944A4A00F79C
+ 6B00F79C6B0000000000636363000000000000000000393973006B84E7006B84
+ E70000002100000000000000000000000000421010000000000000000000734A
+ 3900E7B59C00E7B59C00E7B59C00210800000000000000007B0000007B000000
+ 7B000000000000000000000000000000000000007B0000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000039A5
+ CE0039A5CE0039A5CE0000000000E7EFF700E7EFF70000000000CEDEEF00CEDE
+ EF00CEDEEF000000000000000000000000000000000000000000F7F7F700F7F7
+ F700944A4A00F7DE8400F7DE8400944A4A00F7C67B00F7C67B00944A4A00F7A5
+ 7300F79C6B000000000063636300000000000000000039397300738CEF00738C
+ EF0000002100000000004210100042101000421010004210100000000000734A
+ 3900734A3900734A3900734A390021080000000000000000000000007B000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000039A5CE0039A5CE0039A5CE0039A5CE0039A5CE0000000000CEDEEF000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000636363000000000000000000393973007B94F7007B94
+ F700000021000000000000000000000000004210100000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000008395A00CEFFFF005AB5FF005AB5FF005AB5
+ FF00000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400CEDEEF00CEDE
+ EF000000000000000000000000000000000000000000000000000000F7000000
+ EF000000EF000000E7000000DE000000D6000000CE000000C6000000BD000000
+ B5000000B5000000000063636300000000000000000039397300849CFF00849C
+ FF00000021000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000008395A00CEFFFF005AB5FF005AB5
+ FF005AB5FF00000000000000000008395A00CEFFFF00CEFFFF00CEFFFF0094FF
+ FF00000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000006B6B6B006B6B6B006B6B6B006B6B6B006B6B
+ 6B000000000000000000000000000000000000000000000000000000F7000000
+ EF000000EF000000E7000000DE000000D6000000CE000000C6000000BD000000
+ B5000000B5000000000063636300000000000000000039397300393973003939
+ 7300000021000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000008395A00CEFFFF00CEFFFF00CEFF
+ FF0094FFFF00000000000000000008395A0008395A0008395A0008395A000839
+ 5A0008395A000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000008395A0008395A0008395A000839
+ 5A0008395A0008395A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000009C9C9C00636363006363630063636300636363009C9C9C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000002929D6002929B50000000000000000000000
+ 00000000000000000000000000002929B5000000000000000000000000000000
+ 0000636363008C8CFF008484F7007373F7006363EF005252EF004A4AE7004242
+ E7003939DE003131DE002929D600000000000000000000000000000000009C9C
+ 9C0063636300636363005AD6EF005AD6EF005AD6EF005AD6EF00636363006363
+ 63009C9C9C00000000000000000000000000000000000000DE002121E7000000
+ AD00D6730000E78C21007B4200000000DE002121E7000000AD00D6730000E78C
+ 21007B4200000000DE002121E7000000AD000000000000000000000000000000
+ 00000000000000000000000000004242FF002929D6002929B500000000000000
+ 000000000000000000002929B5002929D6000000000000000000000000000000
+ 0000636363009C9CFF008C8CF7007B7BF7006B6BEF005A5AEF005252EF004242
+ E7004242DE003939DE003131D6000000000000000000000000009C9C9C006363
+ 63005AD6EF005AD6EF005AD6EF005AD6EF005AD6EF005AD6EF00E7CE8400E7CE
+ 8400636363009C9C9C000000000000000000000000000000DE002121E7000000
+ AD00D6730000E78C21007B4200000000DE002121E7000000AD00D6730000E78C
+ 21007B4200000000DE002121E7000000AD000000000000000000000000000000
+ 0000000000000000000000000000000000004242FF002929D6002929B5000000
+ 0000000000002929B5002929D600000000000000000000000000000000000000
+ 0000636363009C9CFF009494FF008484F7007373F7006363EF005252EF004A4A
+ E7004242E7003939DE003131DE0000000000000000009C9C9C00636363005AD6
+ EF005AD6EF005AD6EF005AD6EF005AD6EF005AD6EF00E7CE8400E7CE8400E7CE
+ 8400E7CE8400636363009C9C9C0000000000000000000000DE002121E7000000
+ AD00D6730000E78C21007B4200000000DE002121E7000000AD00D6730000E78C
+ 21007B4200000000DE006363FF000000AD000000000000000000000000000000
+ 000000000000000000000000000000000000000000004242FF002929D6004242
+ FF002929B5002929D6000000000000000000000000000000000063636300B5E7
+ F70063636300A5A5FF009C9CFF008C8CF7007B7BF7006B6BF7005A5AEF005252
+ EF004A42E7004242DE003939DE000000000000000000636363005AD6EF005AD6
+ EF005AD6EF005AD6EF005AD6EF005AD6EF005AD6EF00E7CE8400E7CE8400E7CE
+ 8400E7CE8400E7CE84006363630000000000000000000000DE002121E7000000
+ AD00D6730000E78C21007B4200000000DE002121E7000000AD00D6730000E78C
+ 21007B4200000000DE000000DE000000DE0000000000000000006B4231006B42
+ 310000000000000000006B4231000000000000000000000000002929B5002929
+ D6002929B500000000000000000000000000000000000000000063636300C6EF
+ FF0063636300A5A5FF00A5A5FF009494FF008484F7007373F7006363EF005A5A
+ EF004A4AE7004242E7003939DE00000000009C9C9C00636363005AD6EF005AD6
+ EF005AD6EF005AD6EF005AD6EF005AD6EF005AD6EF00E7CE8400E7CE8400E7CE
+ 8400E7CE8400E7CE8400636363009C9C9C00000000000000DE006363FF000000
+ AD00D6730000E78C21007B4200000000DE002121E7000000AD00D6730000E78C
+ 21007B4200000000000000000000000000000000000000000000000000000000
+ 0000E7EFF700E7EFF7000000000000000000000000002929B5002929D6004242
+ FF002929D6002929B5000000000000000000000000000000000063636300D6F7
+ FF0063636300A5A5FF00A5A5FF009C9CFF008C8CF7007B7BF7006B6BF7006363
+ EF005252EF004A4AE7004242DE0000000000636363005AD6EF005AD6EF005AD6
+ EF005AD6EF005AD6EF005AD6EF005AD6EF00E7CE8400E7CE8400E7CE8400E7CE
+ 8400E7CE8400E7CE8400E7CE840063636300000000000000DE000000DE000000
+ DE00D6730000E78C21007B4200000000DE002121E7000000AD00D6730000E78C
+ 21007B420000000000000000000000000000000000000000000000000000E7EF
+ F700E7EFF7000000000000000000000084002929B5002929D6002929D6000000
+ 0000000000004242FF002929B5000000000063636300B5E7F70063636300DEFF
+ FF0063636300A5A5FF00A5A5FF00A5A5FF009494FF008484F7007B73F7006B6B
+ EF005A5AEF004A4AE7004242E70000000000636363005AD6EF005AD6EF005AD6
+ EF005AD6EF005AD6EF005AD6EF005AD6EF00E7CE8400E7CE8400E7CE8400E7CE
+ 8400E7CE8400E7CE8400E7CE8400636363000000000000000000000000000000
+ 0000D6730000F7B563007B4200000000DE002121E7000000AD00D6730000E78C
+ 21007B4200000000000000000000000000000000000000000000000000000000
+ 0000E7EFF700E7EFF700E7EFF700000000002929D6002929D600000000000000
+ 000000000000000000004242FF002929B50063636300C6EFFF0063636300E7FF
+ FF00636363006363630063636300636363006363630063636300636363006363
+ 630063636300636363006363630063636300636363005AD6EF005AD6EF005AD6
+ EF005AD6EF005AD6EF005AD6EF004A4ADE00E7CE8400E7CE8400E7CE8400E7CE
+ 8400E7CE8400E7CE8400E7CE8400636363000000000000000000000000000000
+ 0000D6730000D6730000D67300000000DE002121E7000000AD00D6730000E78C
+ 21007B4200000000000000000000000000000000000084D6E70084D6E700E7EF
+ F700E7EFF700E7EFF700E7EFF70000000000CEDEEF0000000000000000000000
+ 00000000000000000000000000004242FF0063636300D6F7FF0063636300E7FF
+ FF00E7FFFF00D6F7FF00BDEFFF00A5DEF7008CD6F70073CEEF005AC6EF004ABD
+ E7004AADDE00000000000000000000000000636363005AD6EF005AD6EF005AD6
+ EF005AD6EF004A4ADE004A4ADE004A4ADE004A4ADE00E7CE8400E7CE8400E7CE
+ 8400E7CE8400E7CE8400E7CE8400636363000000000000000000000000000000
+ 00000000000000000000000000000000DE002121E7000000AD00D6730000E78C
+ 21007B420000000000000000000000000000000000006BBDDE006BBDDE000000
+ 0000E7EFF700E7EFF700E7EFF700E7EFF70000000000CEDEEF00000000000000
+ 00000000000000000000000000000000000063636300DEFFFF0063636300E7FF
+ FF00E7FFFF00DEFFFF00CEF7FF00B5E7F7009CDEF70084D6F7006BCEEF005ABD
+ EF004AB5E7000000000000000000000000009C9C9C00636363005AD6EF004A4A
+ DE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE00E7CE8400E7CE
+ 8400E7CE8400E7CE8400636363009C9C9C000000000000000000000000000000
+ 00000000000000000000000000000000DE002121E7000000AD00D6730000F7B5
+ 63007B420000000000000000000000000000000000004AADD6004AADD6000000
+ 0000E7EFF700E7EFF7000000000000000000CEDEEF00CEDEEF00000000000000
+ 00000000000000000000000000000000000063636300E7FFFF00636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 63006363630063636300000000000000000000000000636363004A4ADE004A4A
+ DE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE00E7CE
+ 8400E7CE8400E7CE840063636300000000000000000000000000000000000000
+ 00000000000000000000000000000000DE002121E7000000AD00D6730000D673
+ 0000D67300000000000000000000000000000000000039A5CE0039A5CE0039A5
+ CE0000000000E7EFF700E7EFF70000000000CEDEEF00CEDEEF00CEDEEF000000
+ 00000000000000000000000000000000000063636300E7FFFF00E7FFFF00D6F7
+ FF00BDEFFF00A5DEF7008CD6F70073CEEF005AC6EF004ABDE7004AADDE000000
+ 000000000000000000000000000000000000000000009C9C9C00636363004A4A
+ DE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4A
+ DE00E7CE8400636363009C9C9C00000000000000000000000000000000000000
+ 00000000000000000000000000000000DE006363FF000000AD00000000000000
+ 000000000000000000000000000000000000000000000000000039A5CE0039A5
+ CE0039A5CE0039A5CE0039A5CE0000000000CEDEEF0000000000000000000000
+ 00000000000000000000000000000000000063636300E7FFFF00E7FFFF00DEFF
+ FF00CEF7FF00B5E7F7009CDEF70084D6F7006BCEEF005ABDEF004AB5E7000000
+ 00000000000000000000000000000000000000000000000000009C9C9C006363
+ 63004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4ADE004A4A
+ DE00636363009C9C9C0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000DE000000DE000000DE00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000084848400CEDEEF00CEDEEF00000000000000
+ 0000000000000000000000000000000000006363630063636300636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 6300000000000000000000000000000000000000000000000000000000009C9C
+ 9C0063636300636363004A4ADE004A4ADE004A4ADE004A4ADE00636363006363
+ 63009C9C9C000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000006B6B6B006B6B6B006B6B6B006B6B6B006B6B6B00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000009C9C9C00636363006363630063636300636363009C9C9C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000CECECE00A5A5A5006B6B6B006B6B6B008C8C8C00CECECE000000
+ 0000000000000000000000000000000000000000000000000000949494009494
+ 9400949494009494940094949400949494009494940094949400949494009494
+ 9400949494009494940094949400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007373730094949400C6C6C600D6D6D6008C8C8C00949494000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000094949400000000001010100010101000101010001010
+ 10001010100010101000000000006B1010006B1010006B1010006B1010006B10
+ 10006B1010006B1010006B101000000000000000000000000000000000000000
+ 0000000000000000000000000000008CBD008C63520000000000000000000000
+ 000000000000000000000000000000000000CECECE00C6C6C600A5A5A5007373
+ 73008C8C8C00D6D6D600E7E7E700DEDEDE00DEDEDE00DEA5DE00945A94008C8C
+ 8C0000000000000000000000000000000000000000006B524A00FFE7DE00E7A5
+ 8C00E7A58400DE9C7B00DE9C7B00D6947300CE8C7300C68C7300C6846B00BD84
+ 6B00B57B630000000000949494000000000010638C0039A5CE0039A5CE0039A5
+ CE0039A5CE001010100000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000008CBD000000000000000000009CDE009473630000000000000000007B42
+ 390000000000180000000000000000000000CECECE007B7B7B0094949400C6C6
+ C600DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00E7ADE700C68CC6006B6B
+ 6B0000000000000000000000000000000000000000006B524A00FFE7DE00E7A5
+ 8C00E7A58400DE9C7B00DE9C7B00D6947300CE8C7300C68C7300C6846B00BD84
+ 6B00B57B630000000000949494000000000010638C00CEFFFF009CE7F7006BBD
+ DE0039A5CE001010100000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000000AD
+ FF00009CDE00008CBD00008CBD00009CDE009473630094736300946B5A008C63
+ 52008C6352000000000000000000000000006B6B6B00B5B5B500DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00CECECE00B5B5
+ B50063636300000000000000000000000000000000006B524A00FFE7DE005A5A
+ EF005A5AEF00E7A584004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
+ 4A00BD846B0000000000949494000000000010638C0010638C0010638C001063
+ 8C0010638C0010638C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000ADFF00009CDE00009CDE005ABDFF00D6BDB50094736300947363007339
+ 29000000000000000000000000000000000063636300BDBDBD00D6D6D600DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00D6D6D600C6C6
+ C6006B6B6B00ADADAD000000000000000000000000006B524A00FFE7DE00E7AD
+ 9400E7AD9400E7A58C00E7A58400DE9C8400DE9C7B00D6947B00D6947300CE8C
+ 7300C68C6B000000000094949400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000052730000ADFF00008CBD000000000000000000D6BDB500947363005A29
+ 1800000000000000000000000000000000006B6B6B00BDBDBD00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00E7E7E700D6D6
+ D600A5A5A5006B6B6B000000000000000000000000006B524A00FFE7DE004A4A
+ EF004A4AEF00E7AD94004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00D694
+ 7300CE8C73000000000094949400000000001010100010101000101010001010
+ 10001010100010101000000000006B1010006B1010006B1010006B1010006B10
+ 10006B1010006B1010006B10100000000000000000000000000000ADFF0000AD
+ FF0000ADFF00009CDE0000000000000000000000000000000000D6BDB5008C5A
+ 4A007B5242006B31210000000000000000006B6B6B00BDBDBD00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00DEDEDE00E7E7E700E7E7E700EFEFEF00CECE
+ CE00C6C6C600636363000000000000000000000000006B524A00FFE7DE00E7BD
+ A500E7B5A500E7B59C00E7AD9400E7AD8C00E7A58C00E7A58400DE9C7B00DE94
+ 7B00D694730000000000949494000000000010638C0039A5CE0039A5CE0039A5
+ CE0039A5CE001010100000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000B5E7FF00B5E7
+ FF00B5E7FF00008CBD0000000000000000000000000000000000BD9C94009473
+ 6300947363009473630000000000000000006B6B6B00BDBDBD00DEDEDE00DEDE
+ DE00DEDEDE00DEDEDE00DEDEDE00E7E7E700DEDEDE00EFEFEF00EFEFEF009C9C
+ 9C00C6C6C600C6C6C6006B4A6B0000000000000000006B524A00FFE7DE004A4A
+ DE004A4ADE00E7B5A5004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
+ 4A00DE9C7B0000000000949494000000000010638C00CEFFFF009CE7F7006BBD
+ DE0039A5CE001010100000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000213900000000000000
+ 00000052730000ADFF00008CBD0000000000000000007B4A3900A57B73006329
+ 2100000000000000000000000000000000006B6B6B00BDBDBD00D6D6D600DEDE
+ DE00E7E7E700E7E7E700CECECE009C9C9C00A5A5A500847B6B009C8463009C9C
+ 9C00CECECE00BDBDBD00846B840000000000000000006B524A00FFE7DE00E7C6
+ B500E7C6AD00E7BDAD00E7B5A500E7B59C00E7AD9400E7AD9400E7A58C00E7A5
+ 8400DE9C840000000000949494000000000010638C0010638C0010638C001063
+ 8C0010638C0010638C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00005ABDFF005ABDFF005ABDFF00009CDE0094736300A57B7300A57B7300A57B
+ 73000000000000000000000000000000000063636300BDBDBD00DEDEDE00DEDE
+ DE00D6D6D600DEDEDE00F7F7F700ADADAD00F7F7F700B5B5B500AD8431009484
+ 520084848400848484000000000000000000000000006B524A00FFE7DE004A4A
+ C6004A4AC600E7C6B5004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A004A4A
+ 4A00E7A584000000000094949400000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000B5E7
+ FF0000ADFF005ABDFF005ABDFF005ABDFF00BD9C9400BD9C9400E7D6CE00BD9C
+ 9400A57B730000000000000000000000000063636300BDBDBD00D663D600ADAD
+ AD00F7F7F700E7E7E700B5B5B500C6C6C600FFFFFF00A5ADAD0063635A00A584
+ 31007B634200BDBDC6000000000000000000000000006B524A00FFE7DE00EFD6
+ C600E7CEBD00E7C6B500E7C6B500E7BDAD00E7BDA500E7B59C00E7B59C00E7AD
+ 9400E7AD8C000000000094949400000000001010100010101000101010001010
+ 10001010100010101000000000006B1010006B1010006B1010006B1010006B10
+ 10006B1010006B1010006B101000000000000000000000000000100008000000
+ 0000B5E7FF0000000000215A7300B5E7FF00BD9C94007339290000000000E7D6
+ CE0000000000000000000000000000000000BDBDBD008484840094949400ADAD
+ AD00A5A5A5008C8C8C00F7F7F700FFFFFF00DEDEDE005A5A5A00B5B5B5009494
+ 9400A58C4A00846B4A00BDBDBD0000000000000000006B524A00FFE7DE004A4A
+ B5004A4AB500EFCEC6004A4A4A004A4A4A004A4A4A004A4A4A004A4A4A00E7B5
+ 9C00E7AD940000000000949494000000000010638C0039A5CE0039A5CE0039A5
+ CE0039A5CE001010100000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001000
+ 0800000000000000000000000000B5E7FF00E7D6CE0000000000000000000000
+ 00000000000000000000000000000000000000000000BDBDBD00949494007B7B
+ 7B009494940073737300ADADAD00FFFFFF00B5B5B50084848400000000000000
+ 0000948C8C00A58C52008C735200BDBDBD00000000006B524A00FFE7DE00EFDE
+ D600EFD6CE00EFD6C600EFCEC600E7CEBD00E7C6B500E7C6AD00E7BDA500E7B5
+ A500E7B59C0000000000949494000000000010638C00CEFFFF009CE7F7006BBD
+ DE0039A5CE001010100000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000C6C6
+ C600949494009C639C0094949400ADADAD0073737300BDBDBD00000000000000
+ 00000000000094949400A58C52007B6B4A00000000006B524A00FFE7DE00FFE7
+ DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7DE00FFE7
+ DE00FFE7DE0000000000949494000000000010638C0010638C0010638C001063
+ 8C0010638C0010638C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CECECE00949494008484840000000000000000000000
+ 00000000000000000000949494008C8C7B00000000006B524A006B524A006B52
+ 4A006B524A006B524A006B524A006B524A006B524A006B524A006B524A006B52
+ 4A006B524A000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009C9C9C009C9C9C009C9C
+ 9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C
+ 9C009C9C9C009C9C9C009C9C9C00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000295A0000295A0000295A000029
+ 5A0000295A0000295A0000295A0000295A0000295A0000295A0000295A000029
+ 5A0000295A0000295A0000295A0000295A000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000009C9C9C00000000000000000000000000000000000000
+ 000000000000000000000000000000000000CEFFFF00319CCE00000000000000
+ 000000000000000000000000000000000000397BB500CEFFFF0073D6F70073D6
+ F70094949400525252002121210000000000000000000000000052525200218C
+ D600218CD600218CD600218CD60000295A000000000000000000000000004A73
+ 63001010100010101000314A3900000000000000000000000000000000000000
+ 0000000000000000000000000000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE00D6D6D600CEC6CE00BDBDBD00B5B5B500A5ADAD009C9C9C00949494008C8C
+ 8C00847B8400000000009C9C9C00000000000000000000000000000000000000
+ 000000000000000000000000000000000000CEFFFF00319CCE00319CCE00319C
+ CE0000000000000000000000000000000000397BB500CEFFFF0073D6F7007B7B
+ 7B0018181800292929006B6B6B009C9C9C006B6B6B004242420042424200218C
+ D600218CD600218CD600218CD60000295A0000000000000000001010100073B5
+ 7B0073B57B0073B57B00314A3900000000000000000000000000000000000000
+ 0000000000000000000000000000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE00D6D6D600C6CEC600BDBDBD00B5B5B500ADADAD009C9C9C00949494008C8C
+ 8C00847B7B00000000009C9C9C00000000000000000000000000000000000000
+ 000000000000633131000000000000000000CEFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE000000000000000000397BB5007B7B7B00292929001818
+ 180042424200A5A5A5004AADE7004AADE7004AADE7004AADE700218CD600218C
+ D6002929290052525200218CD60000295A00000000001010100073BD84007BBD
+ 84007BBD84007BBD8400314A3900000000000000000000000000101010001010
+ 1000000000000000000000000000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE0000009C00C6C6C600BDBDBD00B5B5B500A5ADA5009C9C9C00949494008C8C
+ 8C00847B8400000000009C9C9C00000000000000000000000000000000000000
+ 000000000000633131007373730000000000CEFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE0000000000397BB500A5A5A500292929002929
+ 2900A5A5A50073D6F70073D6F7004AADE7004AADE7004AADE7004AADE700218C
+ D60029292900212121002929290000295A004A7363007BC68C007BC68C007BC6
+ 8C007BC68C00314A3900314A390000000000000000001010100073B57B0073B5
+ 7300101010000000000000000000000000005A5A5A00EFEFEF00E7E7E7000000
+ A50000009C000000940000008C000000840000007B000000730000006B008C8C
+ 8C00847B7B00000000009C9C9C00000000000000000000000000000000000000
+ 000000000000633131007373730000000000CEFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE0000000000397BB500CEFFFF00212121002929
+ 29002929290073D6F70073D6F70073D6F7004AADE7004AADE7004AADE7009C9C
+ 9C002929290000000000218CD60000295A00101010007BC694007BCE940084CE
+ 9C00314A3900000000000000000000000000101010007BBD840073BD840073B5
+ 7B0073AD73001010100000000000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE0000009C00C6C6C600BDBDBD00B5B5B500A5ADAD009C9C9C00949494000000
+ 6B0084848400000000009C9C9C00000000000000000000000000000000000000
+ 000000000000633131007373730000000000CEFFFF00319CCE00000000000000
+ 0000319CCE00319CCE00319CCE0000000000397BB500CEFFFF0094EFFF0094EF
+ FF0073D6F70073D6F70073D6F70073D6F7004AADE7004AADE7004AADE7004AAD
+ E700218CD60000000000218CD60000295A001010100084CE9C0084D69C00314A
+ 3900000000000000000000000000101010007BCE94007BC68C007BBD840073BD
+ 7B0073B57B0073AD730010101000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE00D6D6D600C6C6C600BDBDBD00B5B5B500A5ADA5009C9C9C00949494000000
+ 6B007B847B00000000009C9C9C00000000000000000000000000FFCE9C000000
+ 000000000000000000000000000000000000CEFFFF00319CCE00C6C6C600C6C6
+ C600319CCE00319CCE00319CCE0000000000397BB500CEFFFF00000000009C9C
+ 9C0073D6F70073D6F70073D6F70073D6F70073D6F7004AADE7004AADE7004AAD
+ E7009C9C9C0000000000218CD60000295A001010100084D6A5008CDEA500314A
+ 39000000000000000000314A3900314A3900314A3900101010007BC68C007BBD
+ 8400314A3900314A3900314A3900314A39005A5A5A00EFEFEF00E7E7E700DEDE
+ DE00D6D6D600C6CEC600BDBDBD00B5B5B500ADADA5009C9C9C00949494008C8C
+ 8C007B7B8400000000009C9C9C000000000063313100FFCE9C00FFFFCE00FFFF
+ CE00FFFFCE00FFFFCE00FFFFCE0000000000CEFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE0000000000397BB500CEFFFF00212121006B6B
+ 6B0094EFFF0073D6F70073D6F70073D6F70073D6F7004AADE7004AADE7004AAD
+ E7006B6B6B0021212100218CD60000295A00101010008CDEAD008CE7AD00314A
+ 39000000000000000000000000000000000000000000101010007BCE94007BC6
+ 8C00314A39000000000000000000000000005A5A5A00EFEFEF000000AD00DEDE
+ DE00D6D6D600C6CEC600BDBDBD00B5B5B500ADADA5009C9C9C00949494008C8C
+ 8C007B7B8400000000009C9C9C000000000063313100FFFFCE00FFFFCE00FFFF
+ CE00FFFFCE00FFFFCE00FFFFCE0000000000CEFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE0000000000397BB500CEFFFF00525252002929
+ 2900A5A5A50094EFFF0073D6F70073D6F70073D6F70073D6F70073D6F700A5A5
+ A5002929290052525200218CD60000295A00101010008CE7AD008CEFB500314A
+ 390000000000000000000000000000000000000000001010100084CE94007BC6
+ 8C00314A39000000000000000000000000005A5A5A00EFEFEF000000AD00DEDE
+ DE00D6D6D600C6CECE00BDBDBD00B5B5B500ADADAD0000007300949494008C8C
+ 8C00847B7B00000000009C9C9C00000000000000000063313100FFFFCE000000
+ 000063313100633131006331310000000000CEFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE0000000000397BB500CEFFFF00949494001818
+ 180042424200A5A5A50094EFFF002929290073D6F70073D6F700A5A5A5004242
+ 420018181800949494004AADE70000295A00101010008CE7B50094EFBD007BCE
+ 9400101010000000000000000000000000001010100073B5730084CE9C007BC6
+ 8C00314A39000000000000000000000000005A5A5A00EFEFEF00E7E7E7000000
+ A50000009C000000940000008C000000840000007B000000730000006B008C8C
+ 8C0084848400000000009C9C9C00000000000000000000000000633131000000
+ 000000000000633131007373730000000000CEFFFF00319CCE00319CCE00319C
+ CE00319CCE00319CCE00319CCE0000000000397BB500CEFFFF00BDF7FF007B7B
+ 7B0018181800292929006B6B6B00292929002929290073D6F70073D6F7001818
+ 18007B7B7B0073D6F7004AADE70000295A004A7363007BCE940094EFBD0094F7
+ CE007BCE940010101000101010001010100073B5730084D6A50084CE9C0073B5
+ 73004A7363000000000000000000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE00D6D6D600C6CEC600BDBDBD00B5B5B500ADADA50000007300949494008C8C
+ 8C0084848400000000009C9C9C00000000000000000000000000000000006331
+ 3100000000006331310073737300000000009C636300CEFFFF0063CEFF00319C
+ CE00319CCE00319CCE00319CCE0000000000397BB500CEFFFF00BDF7FF00BDF7
+ FF0094949400525252002121210000000000000000000000000073D6F70073D6
+ F70073D6F70073D6F7004AADE70000295A00000000001010100094EFBD0094F7
+ C60094F7C60094F7C60094EFBD008CE7B5008CDEAD0084D6A50073B57300314A
+ 3900000000000000000000000000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE00D6D6D600C6C6C600BDBDBD00B5B5B500ADADAD009C9C9C00949494008C8C
+ 8C00847B8400000000009C9C9C00000000000000000000000000000000000000
+ 0000000000006331310073737300847B7B008C8C8C00000000009C636300CEFF
+ FF0063CEFF00319CCE00319CCE0000000000397BB500CEFFFF00BDF7FF00BDF7
+ FF00BDF7FF00BDF7FF00BDF7FF00292929002929290094EFFF0094EFFF0094EF
+ FF0073D6F70073D6F70073D6F70000295A000000000000000000101010007BCE
+ 940094EFBD0094EFBD008CEFB5008CE7AD0084DEA50073B57300314A39000000
+ 0000000000000000000000000000000000005A5A5A00EFEFEF00E7E7E700DEDE
+ DE00D6D6D600CEC6C600BDBDBD00B5B5B500ADA5AD009C9C9C00949494008C8C
+ 8C0084847B00000000009C9C9C00000000000000000000000000000000000000
+ 0000000000006331310073737300847B7B008C8C8C00949494009C9CA5000000
+ 00009C636300CEFFFF0063CEFF0000000000397BB500CEFFFF00CEFFFF00CEFF
+ FF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFFFF00CEFF
+ FF00CEFFFF00CEFFFF0073D6F70000295A000000000000000000000000004A73
+ 6300314A3900314A3900314A3900314A3900314A39004A736300000000000000
+ 0000000000000000000000000000000000005A5A5A005A5A5A005A5A5A005A5A
+ 5A005A5A5A005A5A5A005A5A5A005A5A5A005A5A5A005A5A5A005A5A5A005A5A
+ 5A005A5A5A000000000000000000000000000000000000000000000000000000
+ 0000000000006331310063313100633131006331310063313100633131006331
+ 310063313100633131006331310063313100397BB500397BB500397BB500397B
+ B500397BB500397BB500397BB500397BB500397BB500397BB500397BB500397B
+ B500397BB500397BB500397BB500397BB5000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000FF313100FF31310000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000009C63630000000000000000000000
+ 0000000000000000000000000000000000000000000000000000A5A5A5008C8C
+ 8C00A5A5A5000000000000000000000000000000000000000000000000000000
+ 000000000000BDBDBD00ADADAD00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000FF31
+ 3100FFFF0000FF9C000063000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFCE009C636300000000000000
+ 00000000000000000000000000000000000000000000B5B5B5002929D6005A5A
+ 5A0073737300A5A5A50000000000000000000000000000000000000000000000
+ 0000000000002929B500B5B5B500000000000000000000000000000000000000
+ 000063313100000000000000000000000000000000000000000018181800FFFF
+ 0000FF9C00006300000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000CE9C9C00FFFF9C00FFFFCE009C6363000000
+ 000000000000000000000000000000000000000000002929D6002929D6002929
+ B500525252007B7B7B0000000000000000000000000000000000000000000000
+ 0000ADADAD00A5A5A500BDBDBD00000000000000000000000000000000000000
+ 0000319CCE00CEFFFF00C6FFFF00B5EFF700A5E7F700FF313100FFFF0000FF9C
+ 000063000000319CCE0039A5D600000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFFF9C00FFFFCE009C63
+ 630000000000000000000000000000000000000000002929D6009C9CFF002929
+ B5002929B500636363009C9C9C0000000000000000000000000000000000A5A5
+ A5002929B500A5A5A50000000000000000000000000000000000000000000000
+ 0000319CCE00CEFFFF009C6363009C636300FF313100FFFF0000FF9C00006300
+ 0000319CCE004AADD60039A5CE00000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C00FFFF
+ CE009C63630000000000000000000000000000000000000000004242FF002929
+ D6002929B5005A5A5A0073737300A5A5A5000000000000000000A5A5A5002929
+ B50084848400B5B5B50000000000000000000000000000000000000000000000
+ 0000319CCE00CEFFFF00C6FFFF00FF313100FF9C0000FF9C000063000000319C
+ CE005AB5DE004AADD60039A5D600000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 0000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFFF
+ 9C00FFFFCE009C63630000000000000000000000000000000000000000004242
+ FF002929D6002929B5005A5A5A00737373009C9C9C009C9C9C002929B5002929
+ D600A5A5A5000000000000000000000000000000000000000000844A4A00844A
+ 4A0018181800212121009C9C9C00F7FFFF006363630063000000319CCE009C63
+ 63009C6363009C63630039A5CE00000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00004242FF002929D6002929B5005A5A5A00636363002929B5002929D600A5A5
+ A5000000000000000000000000000000000000000000844A4A00E7E7C600319C
+ CE00C6FFFF00B5EFF700212121009C9C9C0063000000319CCE007BCEE7006BC6
+ E7005AB5DE004AADD60039A5CE00000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 0000000000004242FF002929D6002929B5002929B5002929D6008C8C8C000000
+ 000000000000000000000000000000000000844A4A00E7E7C600E7E7C600319C
+ CE00C6FFFF00BD8C8C00BD8C8C00181818009C6363009C6363009C6363009C63
+ 63009C6363009C63630039A5CE00000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 000000000000A5A5A5002929B5002929D6002929B5006B6B6B007B7B7B00A5A5
+ A50000000000000000000000000000000000844A4A00E7E7C600E7E7C600319C
+ CE00C6FFFF00B5EFF700A5E7F70018181800A5E7F70094D6EF0084CEE7006BC6
+ E7005AB5DE004AADD60039A5D600000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 630000000000000000000000000000000000000000000000000000000000B5B5
+ B5009C9C9C002929B5002929D6004242FF002929D6002929B5007B7B7B007B7B
+ 7B00A5A5A500000000000000000000000000844A4A00E7E7C600E7E7C600319C
+ CE00C6FFFF00B5EFF700A5E7F700181818009C6363009C6363009C6363009C63
+ 63009C6363009C63630039A5CE00000000000000000000000000000000000000
+ 0000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFFF
+ 9C00FFFFCE009C63630000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 6300000000000000000000000000000000000000000000000000A5A5A5007B7B
+ 7B002929B5002929D6002929D600A5A5A500000000004242FF002929B5007B7B
+ 7B007B7B7B00A5A5A5000000000000000000844A4A00E7E7C600E7E7C600319C
+ CE00C6FFFF00BD8C8C00BD8C8C0018181800A5E7F70094D6EF007BCEE7006BC6
+ E7005AB5DE004AADD60039A5D600000000000000000000000000000000000000
+ 000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C00FFFF
+ CE009C6363000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 63000000000000000000000000000000000000000000B5B5B5002929B5002929
+ B5002929D6002929D600A5A5A5000000000000000000000000004242FF002929
+ B500848484008C8C8C00ADADAD000000000000000000844A4A00E7E7C600319C
+ CE00C6FFFF00B5EFF70018181800319CCE009C6363009C63630084CEE7006BC6
+ E700000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFFF9C00FFFFCE009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00FFCE9C00FFCE9C00FFCE9C00FFFF9C009C63
+ 630000000000000000000000000000000000000000004242FF009C9CFF002929
+ D6002929D600A5A5A50000000000000000000000000000000000000000004242
+ FF002929B500A5A5A500A5A5A500000000000000000000000000844A4A00844A
+ 4A001818180021212100319CCE00B5EFF700A5E7F70094D6EF0084CEE7006BC6
+ E700005A8C00319CCE0063CEFF00000000000000000000000000000000000000
+ 0000000000000000000000000000CE9C9C00FFFF9C00FFFFCE009C6363000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C009C63
+ 630000000000000000000000000000000000000000004242FF004242FF004242
+ FF00B5B5B5000000000000000000000000000000000000000000000000000000
+ 0000000000002929B500BDBDBD00000000000000000000000000000000000000
+ 0000319CCE00CEFFFF00C6FFFF00B5EFF700A5E7F70094D6EF007BCEE7006BC6
+ E700005A8C0063CEFF0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFCE009C636300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000319CCE00005A8C00005A8C00005A8C00005A8C00005A8C00005A8C00005A
+ 8C00005A8C00005A8C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000009C63630000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000737373000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000073737300319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BD
+ DE0052B5D60042A5D60000000000737373000000000063636300636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300636363000000000000000000636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000319C
+ CE00CEFFFF00C6FFFF00B5F7F700A5E7F70094DEEF0084CEE70073C6E70063BD
+ DE0052B5D60042A5D6000000000073737300A58C6B0042291000422910004229
+ 1000422910004229100042291000422910004229100042291000422910004229
+ 100042291000422910004229100063636300634A310039080800390808003908
+ 0800390808000821310008213100082131000821310008213100082131000821
+ 3100082131000821310008213100636363000000000000000000000000000000
+ 000000000000D6D6D600BDBDBD00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084D6E70073C6E70063BD
+ DE0052ADD60042A5D6000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00ADD6BD009CD6B50094CE
+ AD0094CEA5008CC6A5004229100063636300634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B940008213100636363000000000000000000000000000000
+ 0000D6D6D60018189400848484009C9C9C000000000000000000000000000000
+ 00000000000000000000000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084D6E70073C6E70063BD
+ DE0052B5D60042A5D6000000000073737300A58C6B00DEEFE7007B5A31007B5A
+ 3100CEEFDE007B5A31007B5A31007B5A31007B5A31007B5A31007B5A31007B5A
+ 31007B5A31008CC6A5004229100063636300634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B94000821310063636300000000000000000000000000CECE
+ CE0018187B0018187B0018189C007B7B7B009C9C9C0000000000000000000000
+ 00000000000000000000000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BD
+ DE0052B5D60042A5D6000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00ADD6BD009CD6B50094CE
+ AD0094CEA5008CC6A5004229100063636300634A310039080800390808003908
+ 08003908080021425A0021425A0021425A0021425A0021425A0021425A002142
+ 5A0021425A0021425A0008213100636363000000000000000000C6C6C6001818
+ 7B0018187B001818D6001818D6002129A500848484009C9C9C00000000000000
+ 00000000000000000000000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BD
+ DE0052ADD60042A5D6000000000073737300A58C6B00DEEFE7007B5A31007B5A
+ 3100CEEFDE007B5A31007B5A31007B5A31007B5A31007B5A31007B5A31007B5A
+ 31007B5A31008CC69C004229100063636300634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B940008213100636363000000000018187B0018187B001818
+ 7B001818D6003918B5004242CE001818D6003131B500848484009C9C9C000000
+ 00000000000000000000000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BD
+ DE0052B5D60042A5D6000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00ADD6BD009CD6B5009CCE
+ AD0094CEA5008CC6A5004229100063636300634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B9400082131006363630000000000000000001818D6001818
+ D6003918B500D6D6D600000000004A4AD6001818D6002129A500848484009C9C
+ 9C000000000000000000000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5F7F700A5E7F70094DEEF0084D6E70073C6E70063BD
+ DE0052B5D60042A5D6000000000073737300A58C6B00DEEFE7007B5A31007B5A
+ 31007B5A31007B5A31007B5A31007B5A31007B5A31007B5A31007B5A31007B5A
+ 31007B5A31008CC6A5004229100063636300634A310039080800390808003908
+ 08003908080021425A0021425A0021425A0021425A0021425A0021425A002142
+ 5A0021425A0021425A0008213100636363000000000000000000000000003918
+ B500000000000000000000000000000000005252DE001818D6003131B5008484
+ 84009C9C9C0000000000000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084D6E70073C6E70063BD
+ DE0052ADD60042A5D6000000000073737300A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B940008213100636363000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5AD6001818D6003939
+ C600848484009C9C9C00000000000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084D6E70073C6E7000000
+ 000000000000000000000000000073737300A58C6B00DEEFE7004A94C60073C6
+ E70073C6E70073C6E70073C6E700B5DEC600ADDEBD00ADD6BD009CD6B50094CE
+ AD0094CEA5008CC6A5004229100063636300634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B940008213100636363000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000006363F7001818
+ D6004A4AD600848484009C9C9C000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084CEE70073C6E700005A
+ 8C0052ADD600000000007373730000000000A58C6B00DEEFE7004A94C6004A94
+ C6004A94C6004A94C60073C6E700B5DEC600ADDEBD00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300634A310039080800390808003908
+ 08003908080021425A0021425A0021425A0021425A0021425A0021425A002142
+ 5A0021425A0021425A0008213100636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007B7B
+ E7001818D6005252E700848484000000000000000000319CCE00CEFFFF00319C
+ CE00CEFFFF00C6FFFF00B5EFF700A5E7F70094DEEF0084CEE70073C6E700005A
+ 8C0000000000737373000000000000000000A58C6B00DEEFE700D6EFDE00D6EF
+ DE00CEEFDE00C6E7D600BDE7CE00B5DEC600ADDEBD00A5D6BD009CD6B50094CE
+ AD0094CEA5008CC69C004229100063636300634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B940008213100636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009C9CD6001818D6006363EF000000000000000000319CCE00CEFFFF00319C
+ CE00005A8C00005A8C00005A8C00005A8C00005A8C00005A8C00005A8C00005A
+ 8C0073737300000000000000000000000000A58C6B00A58C6B00A58C6B00A58C
+ 6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C6B00A58C
+ 6B00A58C6B00A58C6B00A58C6B0000000000634A3100E7AD7300C68C5200AD6B
+ 390039080800BDCED600B5C6CE00A5BDC6008CADBD007BA5B5006394AD004A8C
+ A500317B9C00106B940008213100636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000B5B5D6001818D6000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084CEE70073C6E700005A8C00000000007373
+ 7300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000634A3100634A3100634A3100634A
+ 3100634A31002952730029527300295273002952730029527300295273002952
+ 7300295273002952730029527300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000319CCE00005A8C00005A
+ 8C00005A8C00005A8C00005A8C00005A8C00005A8C00005A8C00737373000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000425A5200101010001010
+ 10005A8C73000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000063636300636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300636363000000000000000000636363006363
+ 6300636363006363630063636300636363006363630063636300636363006363
+ 6300636363006363630063636300636363000000000000000000000000000000
+ 00000000000000000000000000000000000000000000425A520073B5730073AD
+ 730073AD73001010100000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006331310000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000636363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000636363000000000000000000000000000000
+ 00001010100010101000000000000000000000000000425A520073BD7B0073B5
+ 7B0073B5730073AD730010101000000000009C6318009C6318006B4200006B42
+ 00006B4200006B4200006B4200006B4200006B4200006B4200006B4200006B42
+ 00006B4200006B4200006B4200000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00EFC6A500E7BD
+ 9C00E7BD9400E7B594000000000063636300295273008CE7FF0084DEFF0084CE
+ EF00315A8400ADADFF009CA5FF00949CFF00848CFF007B84FF006B73FF00636B
+ FF005A63F700525AF70000000000636363000000000000000000000000001010
+ 10007BC694007BCE9400101010000000000000000000425A5200425A520073BD
+ 840073B57B0073B5730073AD73005A8C73009C631800FFEFCE00C6945200C694
+ 5200C6945200C6945200C6945200C6945200C6945200C6945200C6945200C694
+ 5200C6945200C69452006B4200000000000063313100F7F7DE0000009C000000
+ 9C00F7EFD6000000000000000000000000000000000000000000000000000000
+ 000000000000E7B594000000000063636300295273008CE7FF0084DEFF0084CE
+ EF00315A8400ADADFF009CA5FF00949CFF00848CFF007B84FF006B73FF00636B
+ F7005A63F700525AF700000000006363630000000000000000001010100084CE
+ 940084CE9C0084D69C0084D69C0010101000000000000000000000000000425A
+ 52007BBD840073B57B0073B57300101010009C631800FFEFCE00C69452000000
+ 0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFF
+ FF00C6C6C600000000006B4200000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00EFDEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B59400000000006363630029527300315A8400315A8400315A
+ 8400315A84008431310084313100843131008431310084313100843131008431
+ 310084313100843131000000000063636300000000001010100084CE9C0084D6
+ 9C0084D6A50084DEA5008CDEA50084DEA5001010100000000000000000000000
+ 0000425A52007BBD840073B57B00101010009C631800FFEFCE00C6945200C694
+ 5200C6945200C6945200C6945200C6945200C6945200C6945200C6945200C694
+ 5200C6945200C69452006B4200000000000063313100F7F7DE0000009C000000
+ 9C00F7EFD6000000000000000000000000000000000000000000000000000000
+ 000000000000E7B594000000000063636300295273008CE7FF0084DEFF0084CE
+ EF00315A8400E7AD7300DEA56B00D69C6300CE945A00C68C5200BD844A00B573
+ 4200AD6B3900A56B31000000000063636300425A5200425A5200425A5200425A
+ 52008CDEAD008CE7AD0010101000425A5200425A5200425A5200000000000000
+ 0000425A52007BBD8C0073BD7B00101010009C631800FFEFCE00C69452000000
+ 0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFFFF000000
+ 0000FFFFFF00000000006B4200000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B594000000000063636300295273008CE7FF0084DEFF0084CE
+ EF00315A8400E7AD7300DEA56B00D69C6300CE945A00C68C5200BD844A00AD73
+ 4200AD6B3900A56B31000000000063636300000000000000000000000000425A
+ 52008CE7B5008CEFBD0010101000000000000000000000000000000000000000
+ 0000425A52007BC68C007BBD8400101010009C631800FFEFCE00C6945200C694
+ 5200C6945200C6945200C6945200C6945200C6945200C6945200C6945200C694
+ 5200C6945200C69452006B4200000000000063313100F7F7DE00735A3100735A
+ 3100735A3100735A3100735A3100735A3100735A3100735A3100735A3100735A
+ 3100735A3100E7B59400000000006363630029527300315A8400315A8400315A
+ 8400315A84008431310084313100843131008431310084313100843131008431
+ 310084313100843131000000000063636300000000000000000000000000425A
+ 520094EFBD0094F7C60010101000000000000000000000000000000000000000
+ 0000425A52007BC694007BBD8400101010009C631800FFEFCE0000000000C6C6
+ C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6945200C694
+ 5200C6945200C69452006B4200000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B594000000000063636300295273008CE7FF0084DEFF0084CE
+ EF00315A8400ADADFF009CA5FF00949CFF00848CFF007B84FF006B73FF00636B
+ FF005A63F700525AF7000000000063636300000000000000000000000000425A
+ 520094F7C60094FFCE007BCE9400101010000000000000000000000000001010
+ 100073B57B007BCE94007BC68400101010009C631800FFEFCE0000000000FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6C6C600C6945200C694
+ 5200C6945200C69452006B4200000000000063313100F7F7DE0000527B0021A5
+ FF0021A5FF0021A5FF0021A5FF00EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B594000000000063636300295273008CE7FF0084DEFF0084CE
+ EF00315A8400ADADFF009CA5FF00949CFF00848CFF007B84FF006B73FF00636B
+ F7005A63F700525AF70000000000636363000000000000000000000000005A8C
+ 73007BCE94009CFFCE009CFFD6007BCE940010101000101010001010100073B5
+ 7B0084D69C007BCE940073B57B005A8C73009C631800FFEFCE00000000000000
+ 0000000000000000000000000000000000000000000000000000C6945200C694
+ 5200C6945200C69452006B4200000000000063313100F7F7DE0000527B000052
+ 7B0000527B0000527B0021A5FF00EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B59400000000006363630029527300315A8400315A8400315A
+ 8400315A84008431310084313100843131008431310084313100843131008431
+ 3100843131008431310000000000636363000000000000000000000000000000
+ 0000425A520094F7CE009CFFCE0094F7CE0094F7C60094EFBD008CE7B50084DE
+ A50084D69C007BCE940010101000000000009C631800FFEFCE00FFEFCE00FFEF
+ CE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEFCE00FFEF
+ CE00FFEFCE00FFEFCE009C6318000000000063313100F7F7DE00F7EFDE00F7EF
+ DE00F7EFD600F7E7CE00F7DEC600EFD6BD00EFD6B500EFCEAD00E7C6A500E7BD
+ 9C00E7BD9400E7B594000000000063636300295273008CE7FF0084DEFF0084CE
+ EF00315A8400E7AD7300DEA56B00D69C6300CE945A00C68C5200BD844A00B573
+ 4200AD6B3900A56B310000000000636363000000000000000000000000000000
+ 000000000000425A52007BCE940094F7C60094EFBD008CE7B5008CDEAD0084D6
+ A50073B57B00101010000000000000000000000000009C6318009C6318009C63
+ 18009C6318009C6318009C6318009C6318009C6318009C6318009C6318009C63
+ 18009C6318009C6318009C631800000000006331310063313100633131006331
+ 3100633131006331310063313100633131006331310063313100633131006331
+ 310063313100633131006331310000000000295273008CE7FF0084DEFF0084CE
+ EF00315A8400E7AD7300DEA56B00D69C6300CE945A00C68C5200BD844A00AD73
+ 4200AD6B3900A56B310000000000636363000000000000000000000000000000
+ 000000000000000000005A8C7300425A5200425A5200425A5200425A5200425A
+ 52005A8C73000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000002952730029527300295273002952
+ 7300295273002952730029527300295273002952730029527300295273002952
+ 7300295273002952730029527300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000737373000000000073737300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000D6D6D600C6C6C6000000000000000000B5B5
+ B5009C9C9C009C9C9C00B5B5B500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000073737300000000003994DE0000000000737373000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000D6D6D60000000000A5A5A500000000009C6363000000
+ 000000000000000000009C9C9C00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007373730000000000399CDE00399CDE00399CDE00000000007373
+ 7300000000000000000000000000000000000000000000000000000000000000
+ 000000000000D6D6D60000000000000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000073737300000000004AA5E7004A9CE70000000000399CE700399CDE000000
+ 0000737373000000000000000000000000000000000000000000000000000000
+ 0000D6D6D60000000000CE9C9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C00000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009C6363000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000CE9C9C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000007373
+ 7300000000004AADE7004AADE70000000000DEF7FF0000000000399CE700399C
+ DE0000000000737373000000000000000000000000000000000000000000D6D6
+ D60000000000CE9C9C00FFCE9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C00000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000FFCE9C009C63
+ 6300000000000000000000000000000000000000000000000000000000000000
+ 0000CE9C9C00FFCE9C0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000737373000000
+ 00005AB5E7007373730073737300DEF7FF00DEF7FF00DEF7FF0000000000399C
+ E700399CDE000000000073737300000000000000000000000000D6D6D6000000
+ 0000CE9C9C00FFCE9C00FFCE9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C0000000000000000009C636300CE9C9C00CE9C
+ 9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00FFCE9C00FFCE
+ 9C009C636300000000000000000000000000000000000000000000000000CE9C
+ 9C00FFCE9C00FFCE9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C
+ 9C00CE9C9C00CE9C9C00000000000000000000000000737373000000000063BD
+ F70063BDF70073737300000000000000000031739C004AA5E7004AA5E7000000
+ 0000399CE700399CDE00000000007373730000000000EFEFEF0000000000CE9C
+ 9C00FFCE9C00FFCE9C00FFCE9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C0000000000000000009C636300FFFFCE00FFCE
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE
+ 9C00FFCE9C009C63630000000000000000000000000000000000CE9C9C00FFCE
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE
+ 9C00FFCE9C00CE9C9C000000000000000000737373000000000063BDF70063C6
+ F70000000000DEF7FF003194CE007BCEFF0031739C0000000000000000004AA5
+ E70000000000399CE700399CDE0000000000000000009C636300FFFFCE00FFFF
+ 9C00FFCE9C00FFCE9C00FFCE9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C0000000000000000009C636300FFFFCE00FFCE
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE
+ 9C00FFCE9C00FFFF9C009C636300000000009C636300FFFFCE00FFFF9C00FFCE
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE
+ 9C00FFCE9C00CE9C9C000000000000000000000000005ABDF70063C6F7000000
+ 0000DEF7FF00DEF7FF003194CE007BCEFF007BCEFF003194CE0031739C000000
+ 00004AA5E700399CE700000000000000000000000000000000009C636300FFFF
+ CE00FFFF9C00FFCE9C00FFCE9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C0000000000000000009C636300FFFFCE00FFCE
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE
+ 9C00FFFF9C00FFCE9C000000000000000000000000009C636300FFFFCE00FFFF
+ 9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE9C00FFCE
+ 9C00FFCE9C00CE9C9C000000000000000000000000000000000063C6F70073CE
+ F70000000000DEF7FF007BDEFF0031739C007BCEFF007BCEFF00E773A500B531
+ 3100000000000000000000000000000000000000000000000000000000009C63
+ 6300FFFFCE00FFFF9C00FFCE9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C0000000000000000009C636300FFFFCE00FFFF
+ CE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFFFCE00FFCE9C00FFFF
+ 9C00FFCE9C0000000000000000000000000000000000000000009C636300FFFF
+ CE00FFFF9C00FFCE9C00FFFF9C00FFFF9C00FFFF9C00FFFF9C00FFFF9C00FFFF
+ 9C00FFFF9C00CE9C9C00000000000000000000000000000000000000000073CE
+ F70073D6FF00000000007BDEFF00000000007BCEFF00E773A500E773A500E773
+ A500B53131000000000000000000000000000000000000000000000000000000
+ 00009C636300FFFFCE00FFFF9C00000000009C9C9C00000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C0000000000000000009C6363009C6363009C63
+ 63009C6363009C6363009C6363009C6363009C6363009C636300FFFF9C00FFCE
+ 9C00000000000000000000000000000000000000000000000000000000009C63
+ 6300FFFFCE00FFFF9C00000000009C6363009C6363009C6363009C6363009C63
+ 63009C6363009C63630000000000000000000000000000000000000000000000
+ 000073D6FF0073D6FF000000000073D6FF0000000000FF5A5A00FFCEE700E773
+ A500E773A500B531310000000000000000000000000000000000000000000000
+ 0000000000009C636300FFFFCE0000000000A5A5A500000000009C636300FFFF
+ 9C00FFCE9C00000000009C9C9C00000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009C636300FFCE9C000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00009C636300FFFFCE0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000073D6FF0073D6FF000000000073CEF70000000000FF5A5A00FFCE
+ E700E773A500E773A500B5313100000000000000000000000000000000000000
+ 000000000000000000009C63630000000000C6C6C600000000009C636300FFFF
+ 9C00FFCE9C0000000000B5B5B500000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009C636300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000009C63630000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000073CEF70063CEF70063C6F7000000000000000000FF5A
+ 5A00FFCEE700E773A500E773A500B53131000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009C6363009C63
+ 63009C6363009C63630000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000009C636300000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000063C6F7000000000000000000000000000000
+ 0000FF5A5A00FFCEE700E773A500000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000FF5A5A0000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00CEC6E7009C9CCE009C94
+ C6009494C600949CC600949CC6009494C6009C94CE009494CE009494CE009494
+ CE009494CE009494CE00CEC6DE00FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000319C
+ CE0063CEFF0063CEFF00319CCE00000000000000000000000000000000000000
+ 000000000000000000000000000000000000BDC6E7002139AD002139CE002942
+ CE00294AD6002142CE00214ACE002142CE002939DE001839CE001839DE001039
+ DE001039D6001839D6002129A500C6C6DE000000000000000000B5B5B5009C9C
+ 9C009C9C9C00B5B5B5000000000000000000C6C6C600D6D6D600000000000000
+ 000000000000000000000000000000000000000000000000000084847B008484
+ 7B0084847B0084847B0084847B0084847B0084847B0084847B0084847B008484
+ 7B0000000000000000000000000000000000000000000000000000000000319C
+ CE0063CEFF0063CEFF00319CCE00000000009C6363009C6363009C6363009C63
+ 63009C6363009C63630000000000000000009CA5D600294AD600294AEF003952
+ EF004252F7004252E7004A63DE004263D6004A5ADE00395ADE00314AEF001842
+ F7000842EF001039E7002942CE00949CC600000000009C636300000000000000
+ 0000000000009C9C9C000000000000000000A5A5A500A5A5A500D6D6D6000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000009C636300319C
+ CE0063CEFF0063CEFF00319CCE0000000000CE9C9C00CE9C9C00CE9C9C00CE9C
+ 9C00CE9C9C00CE9C9C009C636300000000009CA5DE003152E7003152F7004A63
+ EF005A6BE7008C94EF00C6D6FF00D6EFFF00DEF7FF00BDDEFF007B94EF00395A
+ DE00214AF7001039EF002942CE00949CC600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C6363000000000084848400A5A5A500D6D6
+ D600000000000000000000000000000000000000000000000000FF949400FF94
+ 9400FF949400FF949400FF949400FF949400FF949400FF949400FF949400FF94
+ 94000000000000000000000000000000000000000000000000009C636300319C
+ CE0063CEFF0063CEFF00319CCE0000000000CE9C9C00CE9C9C00CE9C9C00CE9C
+ 9C0000FF0000CE9C9C009C636300000000009C9CDE00315AEF00395AFF005A6B
+ E700ADC6EF00CEE7FF00949CEF006B7BE7006373DE00849CE700C6E7FF0094B5
+ EF002952DE001039EF001842CE008C9CC600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C6363009C6363000000000084848400A5A5
+ A500D6D6D6000000000000000000000000000000000000000000F7F7F700FF94
+ 9400EFEFEF00FF949400EFEFEF00FF949400EFEFEF00FF949400EFEFEF00FF94
+ 94000000000000000000000000000000000000000000000000009C636300319C
+ CE00FFFFFF0063CEFF00319CCE00000000009C6363009C6363009C6363009C63
+ 63009C6363009C6363009C63630000000000A5A5DE00395AE7004A6BF70094A5
+ F700CEE7FF006B84DE005A6BDE008494F7007384F7004A63E7005A73DE00BDDE
+ FF007394EF00214AEF00214ACE00949CC600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFFFCE009C636300000000008484
+ 8400A5A5A500D6D6D60000000000000000000000000000000000FF949400FF94
+ 9400FF949400FF949400FF949400FF949400FF949400FF949400FF949400FF94
+ 94000000000000000000000000000000000000000000000000009C636300319C
+ CE00FFFFFF00FFFFFF00C6C6C60000000000CE9C9C00CE9C9C00CE9C9C00CE9C
+ 9C00CE9C9C00CE9C9C009C63630000000000A5ADDE004A63E7005A73E700CEDE
+ FF009CADF700526BEF005A6BEF009CB5EF009CADE700395AE7003152E7007B94
+ E700B5D6FF003152D600294ACE00949CC600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFFFCE00FFCE9C009C6363000000
+ 000084848400A5A5A500D6D6D600000000000000000000000000FFFFFF00FF94
+ 9400EFEFEF00FF949400EFEFEF00FF949400EFEFEF0000420000004200000042
+ 00000042000000420000000000000000000000000000000000009C636300FFFF
+ FF00319CCE00319CCE0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF009C63630000000000ADADE7005263EF006373E700EFF7
+ FF007B7BDE00636BFF00526BEF00A5B5EF009CB5E700395AE7003952F7005263
+ DE00E7F7FF003952DE002942D6009494C600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFFFCE00FFCE9C00FFCE9C009C63
+ 6300000000008C8C8C00BDBDBD00000000000000000000000000FF949400FF94
+ 8C00FF949400FF949400FF949400FF949400FF949400004200006B21FF000000
+ FF006B21FF000042000000000000000000000000000000000000000000009C63
+ 630000000000FFFFFF0000000000CE9C9C00CE9C9C00CE9C9C00CE9C9C00CE9C
+ 9C00CE9C9C00CE9C9C00FFFFFF0000000000B5B5E7005A6BEF00637BE700EFFF
+ FF007B7BDE005A6BF700526BEF00A5B5E700A5B5E7003952EF003152F700425A
+ D600E7F7FF003152DE002142CE00949CC600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFFFCE00FFCE9C00FFCE9C00FFFF
+ 9C009C63630000000000D6D6D600000000000000000000000000EFEFEF00FF94
+ 8C00EFEFEF00FF949400EFEFEF00FF94940000420000004200006B21FF000000
+ FF006B21FF000042000000420000004200000000000000000000000000000000
+ 000000000000C6C6C600000000009C6363009C6363009C6363009C6363009C63
+ 63009C6363009C6363009C63630000000000ADB5E7006B7BF700738CEF00D6E7
+ FF009CADEF005A6BEF00526BEF00A5B5E7009CADE7003952F700294AEF007394
+ E700CEDEFF00395AE7002942C6009C9CC600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFFFCE00FFCE9C00FFFF9C00FFCE
+ 9C0000000000D6D6D60000000000000000000000000000000000FF949400FF94
+ 9400FF949400FF949400FF949400004200006B21FF000000FF000000FF000000
+ FF000000FF000000FF006B21FF00004200000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000ADB5DE006B84EF00738CF700A5BD
+ F700D6E7FF007B94DE005A6BDE007B94E7007384EF00425AE700526BDE00CEE7
+ FF00848CEF003952EF00294ACE009494C600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFFFCE00FFFF9C00FFCE9C000000
+ 0000D6D6D6000000000000000000000000000000000000000000EFEFEF00FF94
+ 9400EFEFEF00FF949400EFEFEF00FF949400004200006B21FF000000FF000000
+ FF000000FF006B21FF0000420000000000000000000000000000000000000000
+ 0000848484008484840084848400000000000000000000000000000000000000
+ 000000000000000000000000000000000000ADB5DE007394F7007B94FF008494
+ E700C6D6F700DEEFFF009CADEF00637BD600636BDE00849CE700D6E7FF00ADBD
+ EF004252EF003152F700294ACE00949CC600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFFFCE00FFCE9C0000000000D6D6
+ D600000000000000000000000000000000000000000000000000FF949400FF94
+ 9400FF949400FF949400FF949400FF949400FF949400004200006B21FF000000
+ FF006B21FF0000420000000000000000000084848400C6C6C600000000000000
+ 0000C6C6C600C6C6C600C6C6C600848484000000000000000000FFFFFF000000
+ 000000000000000000000000000000000000ADB5DE00849CEF008CA5FF008C9C
+ F7008494E700A5B5EF00CEE7FF00E7EFFF00E7EFFF00D6E7FF008CA5E7005A73
+ D600395AF7003163F700294ACE009494C600000000009C636300FFFF9C00FFCE
+ 9C00000000009C9C9C00000000009C636300FFCE9C0000000000D6D6D6000000
+ 0000000000000000000000000000000000000000000000000000FFFFFF00FF94
+ 9400FFFFFF00FF949400FFFFFF00FF949400FFFFFF0029181800004200006B21
+ FF000042000000000000000000000000000084848400FFFFFF0084848400C6C6
+ C600FFFFFF00C6C6C600C6C6C600C6C6C60084848400FFFFFF00000000000000
+ 000000000000000000000000000000000000BDB5E70094ADF7009CBDFF008C9C
+ FF008494FF007394F7007B9CEF00848CE7007B8CE7007B8CE7006373EF005A6B
+ F7004A63F700395AEF00294ACE009494C600000000009C636300FFFF9C00FFCE
+ 9C0000000000B5B5B500000000009C63630000000000D6D6D600000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00002121210000000000000000000000000084848400FFFFFF00848484008484
+ 8400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+ 000000000000000000000000000000000000DED6EF008494E7007BA5FF007394
+ FF007384FF00637BFF005A7BF7006373FF006373F700636BEF004A6BF7005263
+ FF00395AF7003952EF00314ABD00CEC6E700000000009C6363009C6363009C63
+ 63009C63630000000000000000009C6363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000008484840084848400000000000000
+ 0000848484008484840084848400848484000000000000000000000000000000
+ 000000000000000000000000000000000000FFFFFF00DED6F700B5BDE700B5B5
+ E700B5B5E700B5B5E700ADB5E700B5B5E700ADADE700B5B5E700A5ADDE00ADAD
+ E700A5ADE700A5ADDE00CEC6E700FFFFFF000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000C6C6C600848484008484840000000000000000000000
+ 0000000000000000000000000000000000009C636300FFFFFF00FFCE9C006331
+ 3100000000000000000000000000000000000000000000000000949494009494
+ 940000000000AD6B6B00A56B6300000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000181894000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000B5B5B500C6C6C60073737300000000000000000084848400737373000000
+ 0000000000000000000000000000000000009C636300FFFFFF00FFCE9C006331
+ 3100000000000000000000000000000000000000000000000000949494009494
+ 940000000000A56B6B00A56B630000000000000000000000000000638C000063
+ 8C0000638C0000638C0000638C0000638C0000638C0000638C0000638C000063
+ 8C0000638C0000638C00000000000000000000000000000000001818BD001818
+ 9400000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000018189400000000000000000000000000C6C6C600C6C6
+ C6007373730073737300CECECE00A5A5A500A5A5A50000000000000000008484
+ 8400737373000000000000000000000000009C636300FFFFFF00FFCE9C006331
+ 3100000000000000000000000000000000000000000000000000949494009494
+ 940000000000AD6B6B00A56B630000000000000000000000000000638C00D6F7
+ FF004ABDEF0042BDEF0039B5E70031B5E70029ADE70021A5E70018A5E700189C
+ E7002994BD0000638C00000000000000000000000000000000001818BD007B7B
+ FF00181894000000000000000000000000000000000000000000000000000000
+ 0000000000001818940031527B00000000000000000084848400737373007373
+ 7300CECECE00CECECE00C6C6C600A5A5A5009C9C9C0094949400848484000000
+ 0000000000007373730000000000000000009C636300FFFFFF00FFCE9C006331
+ 3100633131006331310063313100633131006331310063313100633131006331
+ 310063313100AD736B00A56B6300000000000000000000638C00D6F7FF0052C6
+ EF004AC6EF004ABDEF0042B5EF0039B5E70031ADE70029ADE70021A5E70018A5
+ E7002994BD000000000000638C00000000000000000000000000000000002929
+ FF001818BD001818940000000000000000000000000000000000000000000000
+ 0000181894001818BD0000000000000000008484840073737300D6D6D600CECE
+ CE00CECECE00C6C6C600C6C6C600A5A5A5009C9C9C0094949400949494008484
+ 8400848484000000000000000000000000009C636300FFFFFF00FFCE9C00FFC6
+ 9400F7C69400EFB58C00E7AD8C00DEA58400D69C8400CE947B00C68C7300BD84
+ 7300B5736B00A5736B00A56B6300000000000000000000638C00D6F7FF005ACE
+ EF0052C6EF004ABDEF0042BDEF0039B5EF0031B5E70029ADE70029A5E70021A5
+ E70000638C000000000000638C00000000000000000000000000000000000000
+ 00002929FF001818BD0018189400000000000000000000000000000000001818
+ 94001818BD0000000000000000000000000084848400FFFFFF00CECECE00CECE
+ CE00C6C6C600C6C6C600FFFFFF009C9C9C00A5A5A50094949400848484008484
+ 8400737373008484840073737300000000009C636300FFFFFF00FFCE9C00FFC6
+ 9400F7C69400EFB58C00E7AD8C00DEA58400D69C8400CE947B00C68C7300BD84
+ 7300B5736B00AD6B6B00A56B63000000000000638C00D6F7FF0063CEF7005ACE
+ EF0052C6EF0052C6EF004ABDEF0042BDEF0039B5E70031B5E70029ADE7002994
+ BD00000000002994BD002994BD00000000000000000000000000000000000000
+ 0000000000002929FF001818BD00181894000000000000000000181894001818
+ BD000000000000000000000000000000000084848400FFFFFF00C6C6C600C6C6
+ C600FFFFFF00FFFFFF00CECECE00CECECE00CECECE0094949400949494008484
+ 8400848484007373730073737300000000009C636300FFFFFF00FFCE9C00FFC6
+ 9400004A7300004A7300004A7300004A7300004A7300004A7300004A7300004A
+ 7300004A7300AD736B00A56B63000000000000638C00D6F7FF006BD6F70063CE
+ F7005ACEEF0052C6EF004AC6EF0042BDEF0042B5EF0039B5E70031ADE7002994
+ BD00000000002994BD002994BD00000000000000000000000000000000000000
+ 000000000000000000002929FF001818BD0018189400181894001818BD000000
+ 00000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
+ FF00D6D6D600D6D6D6000000FF003100CE00CECECE00CECECE00C6C6C6008484
+ 8400848484008484840073737300000000009C636300FFFFFF00FFCE9C00319C
+ CE00CEFFFF00C6F7FF00ADEFF7009CDEEF008CD6EF0073C6E70063BDDE0052AD
+ D60039A5D600004A7300A56B63000000000000638C0000638C0000638C000063
+ 8C0000638C0000638C0000638C0000638C0000638C0000638C0000638C000063
+ 8C002994BD005ACEEF002994BD00000000000000000000000000000000000000
+ 0000000000000000000000000000181894001818BD0018189400000000000000
+ 00000000000000000000000000000000000084848400FFFFFF00DEDEDE00DEDE
+ DE0000FF0000009C6300CECECE00CECECE00D6D6D60073737300848484000000
+ 0000C6C6C6007373730073737300000000009C636300FFFFFF00FFCE9C00319C
+ CE00CEFFFF00C6F7FF00ADEFF7009CDEEF008CD6EF0073C6E70063BDDE0052AD
+ D60039A5D600004A7300A56B6300000000000000000000638C00D6F7FF0094EF
+ FF008CEFFF008CE7FF0084E7FF0084E7F7007BDEF70073DEF70073D6F7006BD6
+ F70063CEF7005ACEEF002994BD00000000000000000000000000000000000000
+ 00000000000000000000181894001818BD002929FF001818BD00181894000000
+ 000000000000000000000000000000000000000000008484840084848400FFFF
+ FF00DEDEDE00D6D6D600D6D6D6008484840073737300C6C6C600C6C6C6000000
+ 0000C6C6C6007373730073737300000000009C636300FFFFFF00FFCE9C00319C
+ CE00CEFFFF00C6F7FF00ADEFF7009CDEEF008CD6EF0073C6E70063BDDE004AAD
+ D60039A5D600004A7300A56B6300000000000000000000638C00D6F7FF0094EF
+ FF0094EFFF008CEFFF008CE7FF0084E7F7007BE7F7007BDEF700D6F7FF00D6F7
+ FF00D6F7FF00D6F7FF002994BD00000000000000000000000000000000000000
+ 000000000000181894001818BD001818BD0000000000000000002929FF001818
+ 9400000000000000000000000000000000000000000000000000000000008484
+ 840084848400FFFFFF0073737300C6C6C600C6C6C600DEDEDE00E7E7E700DEDE
+ DE00000000000000000000000000000000009C636300FFFFFF00FFCE9C00319C
+ CE00CEFFFF00C6F7FF00ADEFF7009CDEEF008CD6EF0073C6E70063BDDE0052AD
+ D60039A5D600004A7300A56B6300000000000000000000638C00D6F7FF0094EF
+ FF0094EFFF008CEFFF008CEFFF0084E7F700D6F7FF0000638C0000638C000063
+ 8C0000638C0000638C0000638C00000000000000000000000000000000000000
+ 0000181894001818BD001818BD00000000000000000000000000000000002929
+ FF00181894000000000000000000000000000000000000000000000000000000
+ 0000000000008484840084848400D6D6D600DEDEDE00EFEFEF00EFEFEF00F7F7
+ F700DEDEDE000000000000000000000000009C636300FFFFFF00FFCE9C00319C
+ CE00CEFFFF00C6F7FF00ADEFF7009CDEEF008CD6EF0073C6E70063BDDE0052AD
+ D60039A5D600004A7300A56B630000000000000000000000000000638C00D6F7
+ FF00D6F7FF00D6F7FF00D6F7FF00D6F7FF0000638C0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000001818
+ 94001818BD001818BD0000000000000000000000000000000000000000000000
+ 00002929FF001818940000000000000000000000000000000000000000000000
+ 000000000000000000000000000084848400E7E7E700EFEFEF00F7F7F700FFFF
+ FF00FFFFFF00DEDEDE0000000000000000009C636300FFFFFF00FFCE9C00319C
+ CE00CEFFFF00C6F7FF00B5EFF7009CDEEF008CD6EF0073C6E70063BDDE004AAD
+ D60039A5D600004A730000000000000000000000000000000000000000000063
+ 8C0000638C0000638C0000638C0000638C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000181894001818
+ 94001818BD000000000000000000000000000000000000000000000000000000
+ 0000000000002929FF0018189400000000000000000000000000000000000000
+ 00000000000000000000000000000000000084848400F7F7F700F7F7F700FFFF
+ FF00848484008484840000000000000000009C636300FFFFFF00FFFFFF008C8C
+ 8C00CEFFFF00C6F7FF00B5EFF7009CDEEF008CD6EF0073C6E70063BDDE004AAD
+ D60039A5D60063636300C6C6C600000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000084848400848484008484
+ 8400000000000000000000000000000000009C6363009C6363009C6363009C63
+ 63009C6363009C6363009C6363009C6363009C6363009C6363009C6363009C63
+ 63009C6363009C6363009C6363009C6363000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003929180000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000006B396B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000039291800A5948400A5948400A594
+ 8400AD9C8C00AD9C8C00AD9C8C00AD9C8C00AD9C8C00AD9C8C00AD9C8C00AD9C
+ 8C00AD9C8C00AD9C8C00AD9C8C00000000000000000000000000000000000000
+ 0000000000006B396B006B396B009400D600844A840000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000737373007373
+ 7300737373007373730073737300737373007373730073737300737373007373
+ 7300737373007373730000000000000000003929180094847300948473009484
+ 7300BDB5A500BDB5A500BDB5A50029211000BDB5A500BDB5A500BDB5A500BDB5
+ A500BDB5A500BDB5A500BDB5A500000000000000000000000000000000006B39
+ 6B006B396B009400D600CE63CE00D6E7E700C6C6C600844A8400000000000000
+ 0000000000000000000000000000000000001018100010181000101810001018
+ 1000101810000000000000000000000000000000000000000000293929001018
+ 1000101810001018100010181000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000007373730000000000000000003929180094846B0094846B009484
+ 6B009484730000000000000000000000000000000000BDB5A500BDB5A500BDB5
+ A5000031080000841000BDB5A50000000000000000006B396B006B396B009400
+ D600CE63CE00D6E7E700D6E7E700D6E7E700C6C6C600C6C6C600844A84000000
+ 00000000000000000000000000000000000018211800C6E7C600426B4A00294A
+ 310010181000000000000000000000000000000000000000000029392900C6E7
+ C600426B4A00294A3100101810000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BDDE0052B5D60042A5
+ D60000000000737373000000000000000000392918008C7B63008C7B63008C7B
+ 6300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF00FFFFFF00000000007B427B009400D600CE63CE00D6E7
+ E700D6E7E700C6C6C600C6C6C6007B427B009C9C9C0094ADAD00C6C6C600844A
+ 84000000000000000000000000000000000018211800C6E7C600426B4A00294A
+ 310010181000000000000000000000000000000000000000000029392900C6E7
+ C600426B4A00294A3100101810000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5F7F700A5E7F70094DEEF0084CEE70073C6E70063BDDE0052B5D60042A5
+ D600000000007373730000000000000000003929180039291800000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000007B427B009C9C9C00D6E7E700C6C6
+ C60094ADAD007B427B007B427B00945A940000000000848484009C9C9C00C6C6
+ C600844A84000000000000000000000000001821180010181000101810001018
+ 1000101810001018100010181000000000001018100010181000101810001018
+ 10001018100010181000101810000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084D6E70073C6E70063BDDE0052ADD60042A5
+ D60000000000737373000000000000000000000000000000000039291800A59C
+ 8C00A59C8C00D6C6BD00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+ FF00FFFFFF00FFFFFF0000000000000000007B427B009C9C9C00C6C6C6007B42
+ 7B007B427B00B56BB500B56BB500945A9400945A940000000000636363009C9C
+ 9C0094ADAD00844A840000000000000000001821180031523100C6E7C600426B
+ 4A001018100010181000101810001018100010181000C6E7C600426B4A00294A
+ 3100294A310010181000101810000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084D6E70073C6E70063BDDE0052B5D60042A5
+ D60000000000737373000000000000000000000000000000000039291800A594
+ 8400A5948400D6C6BD005A4A31007B6B52007B6B52007B6B52007B6B52007B6B
+ 52007B6B5200FFFFFF0000000000000000007B427B007B427B007B427B00B56B
+ B500B56BB500B56BB500B56BB500B56BB500945A9400945A9400000000006363
+ 63009C9C9C0084848400844A8400000000001821180031523100C6E7C600426B
+ 4A001018100010181000ADCEAD001018100010181000C6E7C600426B4A00294A
+ 3100294A310010181000101810000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BDDE0052B5D60042A5
+ D60000000000737373000000000000000000000000000000000039291800A594
+ 7B00A5947B00D6C6BD005A4A3100EFB54200E7AD3900DEAD3900DE9C2900D694
+ 29007B6B5200FFFFFF0000000000000000007B427B00FFBDFF00B56BB500B56B
+ B500B56BB500B56BB500B56BB500B56BB500945A9400945A9400945A94000000
+ 0000636363009C9C9C00844A8400000000001821180031523100C6E7C600426B
+ 4A001018100010181000ADCEAD001018100010181000C6E7C600426B4A00294A
+ 3100294A310010181000101810000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BDDE0052ADD60042A5
+ D600000000007373730000000000000000000000000000000000392918009C8C
+ 7B009C8C7B00D6C6BD005A4A3100F7BD4A00EFB54200E7AD3900DEA53100DE9C
+ 29007B6B5200FFFFFF000000000000000000000000007B427B00FFBDFF00B56B
+ B500B56BB500B56BB500B56BB500B56BB500945A9400945A9400945A94007B42
+ 7B000000000063636300844A8400000000000000000018211800182118001018
+ 1000101810001018100010181000101810001018100010181000101810001018
+ 10001018100010181000000000000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084CEE70073C6E70063BDDE0052B5D60042A5
+ D60000000000737373000000000000000000000000000000000039291800948C
+ 7300948C7300D6C6BD005A4A3100F7C65200F7BD4A00EFB54200E7AD3900DEA5
+ 31007B6B5200FFFFFF00000000000000000000000000000000007B427B00FFBD
+ FF00B56BB500B56BB500B56BB500B56BB500B56BB500945A9400945A94007B42
+ 7B007B427B0000000000844A840000000000000000000000000018211800C6E7
+ C600426B4A0010181000101810000000000018211800C6E7C600426B4A00294A
+ 31001018100000000000000000000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5F7F700A5E7F70094DEEF0084D6E70073C6E70063BDDE0052B5D60042A5
+ D600000000007373730000000000000000000000000000000000392918009484
+ 730094847300D6C6BD005A4A3100FFC65200F7C65200EFBD4A00EFB54200E7AD
+ 39007B6B5200FFFFFF0000000000000000000000000000000000000000007B42
+ 7B00FFBDFF00B56BB500B56BB500B56BB500B56BB500945A9400945A94007B42
+ 7B007B427B007B427B0000000000000000000000000000000000182118001821
+ 1800426B4A001018100010181000000000001821180018211800426B4A00294A
+ 31001018100000000000000000000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084D6E70073C6E70063BDDE0052ADD60042A5
+ D600000000007373730000000000000000000000000000000000392918009484
+ 730094847300D6C6BD005A4A31005A4A31005A4A31005A4A31005A4A31005A4A
+ 31005A4A3100FFFFFF0000000000000000000000000000000000000000000000
+ 00007B427B00FFBDFF00B56BB500B56BB500B56BB500945A9400945A94007B42
+ 7B007B427B006339630000000000000000000000000000000000000000001821
+ 1800182118001821180000000000000000000000000018211800182118001821
+ 18000000000000000000000000000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084D6E70073C6E70000000000000000000000
+ 0000000000007373730000000000000000000000000000000000000000003929
+ 180094847300D6C6BD00D6C6BD00D6C6BD00D6C6BD00D6C6BD00D6C6BD00D6C6
+ BD00D6C6BD00D6C6BD0000000000000000000000000000000000000000000000
+ 0000000000007B427B00FFBDFF00B56BB500B56BB500B56BB500945A94006339
+ 6300000000000000000000000000000000000000000000000000000000001829
+ 1800C6E7C6000000000000000000000000000000000018291800C6E7C6000000
+ 00000000000000000000000000000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084CEE70073C6E700005A8C0052ADD6000000
+ 0000737373000000000000000000000000000000000000000000000000000000
+ 0000392918003929180039291800392918003929180039291800392918003929
+ 1800392918003929180000000000000000000000000000000000000000000000
+ 000000000000000000007B427B00FFBDFF00B56BB50063396300000000000000
+ 0000000000000000000000000000000000000000000000000000000000001829
+ 1800182918001821180000000000000000000000000018291800182918001829
+ 18000000000000000000000000000000000000000000319CCE00CEFFFF00C6FF
+ FF00B5EFF700A5E7F70094DEEF0084CEE70073C6E700005A8C00000000007373
+ 7300000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000007B427B000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000319CCE00005A8C00005A
+ 8C00005A8C00005A8C00005A8C00005A8C00005A8C00005A8C00737373000000
+ 000000000000000000000000000000000000424D3E000000000000003E000000
+ 2800000040000000A00100000100010000000000000D00000000000000000000
+ 000000000000000000000000FFFFFF0000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000FFFFFF83F81FFFFF8001FE03F007FFFF
+ 8001F803F003FFFF8001E001F007FFFF8001E001F003FFFFFFFFE001F003FFFF
+ 8001C000C01FFFFF8001C000C01FE6678001C000C01FE6678001C000C01FFFFF
+ FFFF8000C03FFFFF80018000E07FFFFF80018001F87FFFFF80018007F87FFFFF
+ 8001C01FFCFFFFFFFFFFF07FFFFFFFFFFFFFFFFFF800FFFF8000E0FFF8008001
+ 0000C1FFF800800000008203E000000000008401E000000000000800E0000000
+ 0000080080000000000008008000000000000800800000000000080080030000
+ 0000080080030000000008008003000100008401800F807F00008203800FE07F
+ 0001C1FF800FF87FFFFFE0FFFFFFFE7FFFFFFFFFF000FE3FC000FFF9E000FE0F
+ 0000C001E000FE0700008001E000FF0300008003E000FF0100008003E000C000
+ 0000800380008000000080030000800100008003000080030000800300018003
+ 0000800300078003000080030007800300008003000780030000800700078003
+ 0001FFFF00078007FFFFFFFF000FFFFF0000FFFFFFFFFFFF0000FFF7FFFFE000
+ 0000FFE3FFFFC0000000FFC18001C0000000FF83800180000000E00780018000
+ 0000C00F800100000000801F800100000000801F800100000000801F80018000
+ 0000801F800180000000801F800180010000801F8003C07F0000C03F81FFE0FF
+ 0000E07FFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000800080008000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000010000
+ 00000101FFFF00010000FFFFFFFFFFFF0000FFFFFFFFFFFF00008003D00BFFFF
+ 00008003B00DC00300008003B00DC00300008003B00DC0030000E3CFBFFDC003
+ 00008003B00DC00300008003700EE00700008003B00DF81F00008003B00DFC3F
+ 0000F19FBFFDF81F00008003B00DF00F00008003B00DF00F00008003B00DF81F
+ 00008003D00BFFFF0000FFFFFFFFFFFFFFFFFFFFC001F000C001F00F8001E000
+ 8001F00F8001E000B6D9F00F8001C000BEFBF81F8001C000FFFFF81F80018000
+ E0018C23800180008001842180018000800102408001C000800186618001C001
+ 8001CE738001E07F8001C0018001F0F7800180018001FF778001FE7F8001FE0F
+ 8001FE7F8001FF7F8003FFFF8003FFFFFFFFFFFF0000FFFFC001FFFF0000CF87
+ 80018F8F00008707800188880000830780018F8F0000810780019F9F00008007
+ 8001FFFF0000800780018F8F00008007800188880000800780018F8F40308007
+ 80019F9F607881078001FFFF707C830780018F8F70FE87078001888879FF8F07
+ 80038F8F7BFFBF0FFFFF9F9F7FFFFFFFF000FFFFFC7FE1EBE000FFFFF81FC081
+ E0008003F807806AE0008003F001002AE0008003F0000001E0008003E000002B
+ E0008003E001802B6000FFFFC001C0C02000FFFFC003E1EB000080038003E1FF
+ 000080038007E1F100018003C007807101FF8003E00F003120FF8003F00F0020
+ 64FFFFFFFC1F0031E7FFFFFFFFFF003BFC7FFFFFFFFFFFFFF83F03C0FFFF02FF
+ F01F0340FFFF000FE00F000007E002F7C0070340076003F78003FFFF042003C0
+ 000103C00760DC400000034007E08CC08000000007E0DD40C001034006E0DF7F
+ E003FFFF0420DE07F00703C006E00207F80F034007E00207FC1F0000FFFF0207
+ FE3F0340FFFF03FFFF7FFFFFFFFFFFFFFFFFFFFFFF3FFFFFBFFFFFFCFC0FFFFF
+ 9FFFFFF8F003EFFD8007F0F8F1E1C0008003C001F873800080038003FE338000
+ 80038003F807800080038003E007800080030003C00780008003000780078000
+ 8003800FC00780008003801FC00780008003801FE0038000C007C03FE0038000
+ FFFFF0FFF0018001FFFFFFFFF003FFFFFFFFFFFFFFFF027DFFFF800080000239
+ 80000000000003130000000000000387000000000000FF870000000000000313
+ 0000000000000239000000000000037D000000000000039F000000000000FF0F
+ 00000000000002070000000000000223000000000000037100010001000103FC
+ FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFDFFFFFFF3FFFFE008FFFFFFE303C0
+ 8001F807C00003400003F003000000000007F003000003400007F0030000FFFF
+ 0007F003000003C00007F003000303400007D003000300000007C00300030340
+ 0007C0070003FFFF0007C3FF000303C00007C7FF000303400007CFFF00030000
+ 800FDFFF00030340D55FFFFF0007FFFFF3FFFFFFE003FFCFF3FF8000C003FFC7
+ FFFF0000E007C003E0010000F01F0001E0010000F80F0000E0010000F0070001
+ E0010000F0070003E0010000E007000390030000C00300039C0F0000C0070003
+ 801F0000C00F0003C00F0000C00F0003F8070000C01F0003F8070001E00F0003
+ FC0FFFFFF01F0003FFFFFFFFFFFF0007FFFFFFFFFFFFFFFFE00187FF000FFFFF
+ 800187FF03F7E03F800186FF03E3F07F8001842003F7F007800186E000C0E00F
+ 800187E0DF40C00F800187E0DF40C007800187E0DE00C007800187608F7FC003
+ 80018420DE07E0078001877F0207F007800187FF0207FC07800187FF0207FE0F
+ 8003FFFF03FFFFFFFFFFFFFFFFFFFFFFF000F81F0000FE7EF000E0070000FE3C
+ F000C0030000FF19C00080010000FF83C0008001000080C7C00000000007C183
+ 000000000007C019000000007007803C000000007007003E000300007E07001F
+ 000300007E07001F000380017E07000F000F80017E3F801F000FC0037E3FC01F
+ 000FE0077FFFF01FFFFFF81F7FFFF83FFFFFF81F0000FFFFFC3FF81F00000201
+ E427000F000003FFC003000F000003FFC0030007000003FFE00700030000FFFF
+ 800100030000020181810003000003FF81810001000003FF80010001000003FF
+ E00700030000FFFFC003000300000201C0030001000003FFE4278030000003FF
+ FC3FE038000003FFFFFFFC7C0000FFFF8001FE3F0000FFFF0001FE0F0000E1FF
+ 0001FE030000C1FF0001F800000081CF0001F800000001870001E80000000703
+ 0001C80000000E010001800000000C000001000000000F870001000000000F87
+ 00018000000007070001C800000000070001E8000000800F0001F8000000C01F
+ 0001F8000000E03F0003F8000000FFFFFFFFFFF3FFFFFF7FC7F9FFE1F80FFE3F
+ 83F9F000F80FFC1F83F1F000F80FF80F81E3F000F80FF007C0C3F000F80FE003
+ E007C000F80FC001F00F8000F80FF80FF81F0000F80FF80FF80F0000C001F80F
+ E0070000E003F80FC0830000F007F80F81C18000F80FF80F83E1C000FC1FF80F
+ 87F9F001FE3FF80FFFFFF003FF7FFFFFE000FFFFFFFFFFFFC0008000C000FFFF
+ 800000000000F9FF800000000000F0FF800000000000E07F800000000000C03F
+ 800000000000801F800000000000C20F800000000000EF07800000000000FF83
+ 800000000000FFC1800100000000FFE1800300000000FFF1800700010000FFF9
+ 800FFFFF0001FFFF801FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFF8000C000
+ FF83800100000000F381000000000000E180000000000000C0E0000000000000
+ 80700000000000000030000000000000E1F0000000000000E1F0000000000000
+ E0E0000000000000E000000000000000F001000000000000F803800100010000
+ FC07FFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFE61FFFFFFFFFC1F
+ FC41FFBFFDFFF80FF841FF9FF9FFF007F041FF8FF1FFE003E0418007E001C001
+ C0418003C001800080418001800100008041800000010001C041800180018003
+ E0418003C001C003F0418007E001E001F841FF8FF1FFF000FC41FF9FF9FFF800
+ FEC3FFBFFDFFFC61FFFFFFFFFFFFFEF3FFFFF1FF0000FFFFFFFFE0030000C33F
+ C00FE0010000821F8007C0000000820F8007C000000082078007C00000008203
+ 8007C000000082018003C000000082018003E000000082018000F00100008203
+ 8000F1FF00008207800110CF0000820F8003000F0000821F8007001F0000823F
+ 8007003F000086FFFFFF307F0000FFFFFC7F8000FFFFFFFFF01F0000E000DFFF
+ C0070000C000CFFD80010000C000C7F9800100008000E3F3000100008000F1E7
+ 000000000000F8CF000000000000FC1F000000000000FE3F000000008000FC1F
+ 800100008000F8CFE00700008001F1E7F8030000C07FE3F3FE000000E0FFC7F9
+ FF030000FFFFFFFFFF8F0000FFFFFFFF0000FE7FFFFFFFFF0000F83FFFFFC003
+ 0000E01F07C180030000800F07C180030000000707C180030001000301018003
+ C001000100018003C001000000018003C001000000018003C001800180038003
+ C001C001C1078003C001E000C1078003C001F001E38F8003E001F807E38F8007
+ F003FC1FE38F800FFFFFFE7FFFFF801F00000000000000000000000000000000
+ 000000000000}
+ end
+ object ADQ_Temp: TADOQuery
+ Connection = ADOConnection1
+ Parameters = <>
+ SQL.Strings = (
+ 'SELECT '
+ ' (case DyeIdx0 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx1 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx2 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx3 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx4 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx5 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx6 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx7 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx8 when 0 then '#39'0'#39' else '#39'1'#39' end) +'#39','#39
+ ' +(case DyeIdx9 when 0 then '#39'0'#39' else '#39'1'#39' end)'
+ 'as DyePc'
+ ' FROM SD_SampleCraft')
+ Left = 328
+ Top = 32
+ end
+ object Image_Tree: TImageList
+ DrawingStyle = dsFocus
+ Left = 456
+ Top = 137
+ Bitmap = {
+ 494C010106000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 0000000000003600000028000000400000002000000001002000000000000020
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000808080008080800080808000808
+ 0800080808000808080008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFCE
+ 8C00FFCE8400FFCE8C00FFCE8C00FFCE8400FFC68400FFC68400FFC67B00FFC6
+ 7B00FFBD7B00FF9C5A0000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000080808005252FF005252FF005252
+ FF005252FF005252FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFFF
+ C600FFEFA500FFEFAD00FFEFAD00FFEFA500FFE7A500FFE7A500FFE79C00FFDE
+ 9C00FFDE9400F79C5A0000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000008080800B5B5FF00212121002121
+ 2100212121005252FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFEF
+ A500000000000000000000000000000000000000000000000000000000000000
+ 0000FFD69400EF9C5A0000000000000000000000000000000000000000000000
+ 00002121210021212100212121002121210008080800B5B5FF00A5A5FF008C8C
+ FF008C8CFF005252FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFE7
+ A500FFE7A500FFE7A500FFE7A500FFE7A500FFE79C00FFDE9C00FFDE9400FFD6
+ 9400FFD69400DE9C520000000000000000000000000000000000000000000000
+ 00002121210031CE000031CE000031CE000008080800B5B5FF00212121002121
+ 2100212121005252FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFE7
+ A500000000000000000000000000000000000000000000000000000000000000
+ 0000FFCE8C00D694520000000000000000000000000000000000000000000000
+ 000021212100D6FFCE00212121002121210008080800B5B5FF00A5A5FF008C8C
+ FF008C8CFF005252FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFE7
+ 9C00FFDE9C00FFE79C00FFE79C00FFDE9C00FFDE9400FFD69400FFD69400FFCE
+ 8C00FFCE8C00CE94520000000000000000003939390039393900393939003939
+ 390021212100D6FFCE00CEFFB500ADFF8C0008080800B5B5FF00212121002121
+ 2100212121005252FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFDE
+ 9C00000000000000000000000000000000000000000000000000000000000000
+ 0000FFCE8400C6944A00000000000000000039393900FFCE7B00EF8C0000EF8C
+ 000021212100D6FFCE00212121002121210008080800FFFFFF00CECEFF00CECE
+ FF00CECEFF005252FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFDE
+ 9400FFD69400FFDE9400FFDE9400FFD69400FFD69400FFCE8C00FFCE8C00FFCE
+ 8400FFC68400BD8C4A00000000000000000039393900FFCE7B00212121002121
+ 210021212100D6FFCE00CEFFB500ADFF8C000808080008080800080808000808
+ 0800080808000808080008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFD6
+ 94000000000000000000000000000000000000000000FFCE8400FFCE8400FFC6
+ 8400FFC68400B58C4A00000000000000000039393900FFCE7B00FFC66B00FFBD
+ 4A0021212100D6FFCE0021212100212121002121210031CE0000212121000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFD6
+ 9400FFCE8C00FFD69400FFD69400FFCE8C00FFCE8C00FFCE84004A4A4A004A4A
+ 4A004A4A4A004A4A4A00000000000000000039393900FFCE7B00212121002121
+ 210021212100FFFFFF00D6FFCE00D6FFCE00D6FFCE0031CE0000212121000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFCE
+ 8C000000000000000000000000000000000000000000FFC684004A4A4A00FFFF
+ C600FFF7AD00FFCE8C00000000000000000039393900FFCE7B00FFC66B00FFBD
+ 4A00212121002121210021212100212121002121210021212100212121000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFFF
+ C600FFCE8400FFCE8C00FFCE8C00FFCE8400FFC68400FFC684004A4A4A00FFF7
+ AD00FFCE8C004A4A4A00000000000000000039393900FFCE7B00212121002121
+ 210021212100EF8C000039393900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A00FFFFC600FFFF
+ C600FFFFBD00FFFFC600FFFFC600FFFFBD00FFFFBD00FFFFB5004A4A4A00FFCE
+ 8C004A4A4A0000000000000000000000000039393900FFFFF700FFCE7B00FFCE
+ 7B00FFCE7B00EF8C000039393900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000005A5A5A005A5A5A005A5A
+ 5A005A5A5A005A5A5A005A5A5A005A5A5A005A5A5A005A5A5A004A4A4A004A4A
+ 4A00000000000000000000000000000000003939390039393900393939003939
+ 3900393939003939390039393900000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000084848400FFFF0000FFFF0000FFFF00008484
+ 8400000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000008484840084000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 00000000000000000000000000000000000000000000000000000000000073CE
+ FF00009CEF000084CE0031313100636363004A4A4A0021212100009CEF00009C
+ EF000084CE000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000638C000063
+ 8C0000638C0000638C0000638C0000638C0000638C0000638C0000638C000063
+ 8C0000638C0000638C0000000000000000000000000000000000000000000000
+ 0000848484008400000084848400FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 000084840000000000000000000000000000000000000000000000000000ADE7
+ FF0073CEFF0042BDFF004A4A4A00636363004A4A4A003131310018B5FF00009C
+ EF000084CE0000000000000000000000000000000000106B9400106B9400106B
+ 9400106B9400106B9400106B9400106B9400106B9400106B9400106B9400106B
+ 9400106B9400106B94000808080000000000000000000000000000638C00D6F7
+ FF004ABDEF0042BDEF0039B5E70031B5E70029ADE70021A5E70018A5E700189C
+ E7002994BD0000638C0000000000000000000000000000000000000000008400
+ 0000840000008400000084848400FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+ 000084840000848400000000000000000000000000000000000000000000ADE7
+ FF0073CEFF0042BDFF004A4A4A00636363004A4A4A003939390018B5FF00009C
+ EF000084CE0000000000000000000000000000000000D6F7FF0063CEF7005ACE
+ EF0052C6EF0052C6EF004ABDEF0042BDEF0039B5EF0031B5E70029ADE70029AD
+ E70021A5E7002994BD0008080800000000000000000000638C00D6F7FF0052C6
+ EF004AC6EF004ABDEF0042B5EF0039B5E70031ADE70029ADE70021A5E70018A5
+ E7002994BD000000000000638C00000000008484840084000000000000000000
+ 000084000000840000008484840000000000FFFF0000FFFF0000FFFF00008484
+ 840084848400848400008484000000000000000000000000000000000000ADE7
+ FF0073CEFF0042BDFF004A4A4A00636363004A4A4A004A4A4A0018B5FF00009C
+ EF000084CE0000000000000000000000000000000000D6F7FF006BD6F70063CE
+ EF005ACEEF0052C6EF004AC6EF004ABDEF0042B5EF0039B5E70031ADE70029AD
+ E70021A5E7002994BD0008080800000000000000000000638C00D6F7FF005ACE
+ EF0052C6EF004ABDEF0042BDEF0039B5EF0031B5E70029ADE70029A5E70021A5
+ E70000638C000000000000638C00000000008400000084000000848484008400
+ 0000FF00000084000000848484000000000084840000C6C6C600FFFFFF00C6C6
+ C60084848400848484008484000000000000000000000000000000000000ADE7
+ FF0073CEFF0042BDFF004A4A4A00525252004A4A4A004A4A4A0018B5FF00009C
+ EF000084CE0000000000000000000000000000000000D6F7FF006BD6F70063D6
+ F7005ACEEF005AC6EF0052C6EF004ABDEF0042BDEF0039B5EF0039B5E70031AD
+ E70029ADE7002994BD00080808000000000000638C00D6F7FF0063CEF7005ACE
+ EF0052C6EF0052C6EF004ABDEF0042BDEF0039B5E70031B5E70029ADE7002994
+ BD00000000002994BD002994BD00000000000000000084000000840000008484
+ 840084000000FF0000008484840000000000C6C6C60084840000C6C6C600FFFF
+ FF00C6C6C600848484008484840000000000000000000000000000000000ADE7
+ FF0073CEFF0042BDFF0018B5FF004A4A4A004A4A4A0018B5FF0018B5FF00009C
+ EF000084CE0000000000000000000000000000000000D6F7FF0073DEF7006BD6
+ F70063CEF7005ACEEF0052C6EF0052C6EF004ABDEF0042BDEF0039B5EF0031B5
+ E70029ADE7002994BD00080808000000000000638C00D6F7FF006BD6F70063CE
+ F7005ACEEF0052C6EF004AC6EF0042BDEF0042B5EF0039B5E70031ADE7002994
+ BD00000000002994BD002994BD00000000000000000000000000FF0000008484
+ 8400FF000000840000008484840000000000008484000000000084840000C6C6
+ C600FFFFFF00C6C6C6008484840000000000000000000000000018B5FF000000
+ 0000ADE7FF0073CEFF0042BDFF0018B5FF0018B5FF0018B5FF00009CEF000084
+ CE0000000000008CD600000000000000000000000000D6F7FF0073DEF7006BD6
+ F7006BD6F70063CEF7005ACEEF0052C6EF004AC6EF004ABDEF0042BDEF0039B5
+ EF0031ADE7002994BD00080808000000000000638C0000638C0000638C000063
+ 8C0000638C0000638C0000638C0000638C0000638C0000638C0000638C000063
+ 8C002994BD005ACEEF002994BD0000000000000000000000000000000000FF00
+ 0000FF000000FF000000848484000000000000FFFF0000FFFF00008484008484
+ 00008484000084848400000000000000000000000000000000000000000018B5
+ FF0000000000ADE7FF0073CEFF0042BDFF0018B5FF00009CEF000084CE000000
+ 0000008CD60000000000000000000000000000000000D6F7FF007BDEF70073DE
+ F7006BD6F70063D6F7005ACEEF005AC6EF0052C6EF004ABDEF0042BDEF0039B5
+ EF0031B5E7002994BD0008080800000000000000000000638C00D6F7FF0094EF
+ FF008CEFFF008CE7FF0084E7FF0084E7F7007BDEF70073DEF70073D6F7006BD6
+ F70063CEF7005ACEEF002994BD00000000000000000000000000000000000000
+ 0000FF000000FF000000848484000000000000FFFF0000FFFF00008484000084
+ 8400008484008484840000000000000000000000000000000000000000000000
+ 000018B5FF0000000000ADE7FF0042BDFF0018B5FF000073AD0000000000008C
+ D6000000000000000000000000000000000000000000D6F7FF0084E7F7007BDE
+ F70073DEF7006BD6F70063CEF7005ACEEF0052C6EF0052C6EF004ABDEF0042BD
+ EF0039B5E7002994BD0008080800000000000000000000638C00D6F7FF0094EF
+ FF0094EFFF008CEFFF008CE7FF0084E7F7007BE7F7007BDEF700D6F7FF00D6F7
+ FF00D6F7FF00D6F7FF002994BD00000000000000000000000000000000000000
+ 000000848400FF000000848484000000000000FFFF0000FFFF00008484000084
+ 8400008484000000000000000000000000000000000000000000000000000000
+ 00000000000018B5FF0000000000ADE7FF0031BDFF000000000000A5F7000000
+ 000073CEFF0000000000000000000000000000000000D6F7FF00A5EFFF00A5EF
+ FF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EFFF00A5EF
+ FF00A5EFFF002994BD0008080800000000000000000000638C00D6F7FF0094EF
+ FF0094EFFF008CEFFF008CEFFF0084E7F700D6F7FF0000638C0000638C000063
+ 8C0000638C0000638C0000638C00000000000000000000000000000000000000
+ 00000084840000FFFF00C6C6C6000000000000FFFF0000FFFF00008484000084
+ 8400008484000000000000000000000000000000000000000000000000000000
+ 0000000000000000000018B5FF00000000000000000000A5F700000000000000
+ 000073CEFF000000000000000000000000000000000042ADD60042ADD60042AD
+ D60042ADD60042ADD60042ADD60000638C0000638C0000638C0000638C000063
+ 8C0000638C0000638C000000000000000000000000000000000000638C00D6F7
+ FF00D6F7FF00D6F7FF00D6F7FF00D6F7FF0000638C0000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000084840000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00008484000084
+ 8400008484000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000042BDFF0000A5F70000000000000000000000
+ 000073CEFF0000000000000000000000000000000000D6F7FF00D6F7FF00D6F7
+ FF00D6F7FF00D6F7FF0008080800000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000063
+ 8C0000638C0000638C0000638C0000638C000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000084
+ 8400008484000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000848400C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+ C600008484000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000848400000000000000000000000000000000000000
+ 000000000000000000000000000000000000424D3E000000000000003E000000
+ 2800000040000000200000000100010000000000000100000000000000000000
+ 000000000000000000000000FFFFFF00FFFFFFFF000000008001FF0100000000
+ 8001FF01000000008001FF01000000008001F001000000008001F00100000000
+ 8001F00100000000800100010000000080010001000000008001000100000000
+ 8001001F000000008001001F000000008001001F00000000800301FF00000000
+ 800701FF00000000800F01FF00000000FFFFFFFFFFFFFE0FE007FFFFE000F807
+ C003FFFFC000F003C0038001C000E001C003800180003000C003800180000000
+ C003800100008000C00380010000C000800180010000E001C00380018000F003
+ E00380018000F003F00380018001F003F8038003C07FF003FC2381FFE0FFF003
+ FE73FFFFFFFFF803FFFFFFFFFFFFFC0300000000000000000000000000000000
+ 000000000000}
+ end
+ object ADOQueryTmp: TADOQuery
+ Connection = ADOConnection1
+ LockType = ltReadOnly
+ Parameters = <>
+ Left = 400
+ Top = 32
+ end
+ object Timer2: TTimer
+ OnTimer = Timer2Timer
+ Left = 464
+ Top = 72
+ end
+ object Timer_link: TTimer
+ Interval = 15000
+ OnTimer = Timer_linkTimer
+ Left = 232
+ Top = 132
+ end
+end
diff --git a/T03贸易布匹检验/spmain.pas b/T03贸易布匹检验/spmain.pas
new file mode 100644
index 0000000..8fe71eb
--- /dev/null
+++ b/T03贸易布匹检验/spmain.pas
@@ -0,0 +1,424 @@
+unit spmain;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, Menus, ComCtrls, ToolWin, ActnMan, ActnCtrls, ActnMenus, ActnList, DB,
+ ADODB, Grids, IniFiles, jpeg, ExtCtrls, Buttons, ImgList, StdCtrls, cxControls,
+ cxSplitter, MovePanel, SyncObjs, System.ImageList;
+
+type
+ TMyThread = class(TThread)
+ protected
+ procedure Execute; override;
+ end;
+
+const
+ keys = 'ljb^0122!@#*&^%$';
+
+type
+ TFormMain = class(TForm)
+ StatusBar1: TStatusBar;
+ ADOConnection1: TADOConnection;
+ ImageList25: TImageList;
+ ImageList3: TImageList;
+ ImageList24: TImageList;
+ ADQ_Temp: TADOQuery;
+ Image_Tree: TImageList;
+ ADOQueryTmp: TADOQuery;
+ Timer2: TTimer;
+ MovePanel1: TMovePanel;
+ Panel1: TPanel;
+ Panel2: TPanel;
+ Panel3: TPanel;
+ Timer_link: TTimer;
+ procedure FormCreate(Sender: TObject);
+ procedure MNCloseClick(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure Timer1Timer(Sender: TObject);
+ procedure FormResize(Sender: TObject);
+ procedure N2Click(Sender: TObject);
+ procedure Timer2Timer(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure ToolButton12Click(Sender: TObject);
+ procedure Panel1Click(Sender: TObject);
+ procedure Panel2Click(Sender: TObject);
+ procedure Panel3Click(Sender: TObject);
+ procedure Timer_linkTimer(Sender: TObject);
+ procedure FormDestroy(Sender: TObject);
+ private
+ { Private declarations }
+ function intiData(): Boolean;
+ procedure GetServerDate();
+ public
+ ConDateBaseString: string;
+ V_User, V_UserID, User_Id, User_Name: string;
+ { Public declarations }
+ // server, dtbase, user, pswd: String;
+ end;
+
+var
+ FormMain: TFormMain;
+ gServerDate: TdateTime;
+ server, dtbase, user, pswd: string; {ݿӲ}
+ gConString: string; {ȫַ}
+ gCurHandle: hwnd; //ǰ
+
+ newh: hwnd;
+ CriticalSection: TCriticalSection; {ٽ}
+
+implementation
+
+uses
+ logon, U_Link, U_iniParam;
+{$R *.dfm}
+
+procedure TMyThread.Execute;
+begin
+ FreeOnTerminate := True;
+ CriticalSection.Enter;
+ try
+ with FormMain.ADOQueryTmp do
+ begin
+ close;
+ sql.Clear;
+ sql.Add('select getdate()');
+ open;
+ end;
+ except
+ try
+ with FormMain.ADOConnection1 do
+ begin
+ Connected := false;
+ ConnectionString := FormMain.ConDateBaseString;
+ LoginPrompt := false;
+ Connected := true;
+ end;
+ except
+
+ end;
+ end;
+ CriticalSection.Leave;
+end;
+
+function TFormMain.intiData(): Boolean;
+var
+ mProdId: string; //ǰƷ
+begin
+ SetLength(server, 255);
+ SetLength(dtbase, 255);
+ SetLength(user, 255);
+ SetLength(pswd, 255);
+
+ server := '';
+ dtbase := '';
+ user := 'sa';
+ pswd := 'rightsoft@123';
+ ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=' + pswd + ';Persist Security Info=True;User ID=' + user + ';Initial Catalog=' + dtbase + ';Data Source=' + server;
+ ConDateBaseString := ADOConnection1.ConnectionString;
+ try
+ frmLink := TfrmLink.create(self);
+ if frmLink.ShowModal = 1 then
+ begin
+ ADOConnection1.ConnectionString := frmLink.fADOConnString;
+ frmLink.hide;
+ end
+ else
+ begin
+ application.MessageBox('ͨѶӴ', 'ʾϢ', MB_ICONERROR);
+ PostMessage(Handle, WM_CLOSE, 0, 0);
+ frmLink.Release;
+ end;
+ except
+ application.MessageBox('ͨѶӴ', 'ʾϢ', MB_ICONERROR);
+ PostMessage(Handle, WM_CLOSE, 0, 0);
+ end;
+ ConDateBaseString := ADOConnection1.ConnectionString;
+ Left := 0;
+ Top := 0;
+ Width := Screen.Width;
+ Height := Screen.Height;
+
+ try
+ ADOConnection1.Close;
+ ADOConnection1.Open;
+ Result := true;
+ except
+ result := false;
+ application.MessageBox('ݿʧܣ', '', mb_Ok + MB_ICONERROR);
+ PostMessage(self.handle, WM_CLOSE, 0, 0);
+ end;
+end;
+
+procedure TFormMain.FormCreate(Sender: TObject);
+var
+ tmpstr: string;
+begin
+ CriticalSection := TCriticalSection.Create;
+ if IsINIFile() then
+ ReadINIFile()
+ else
+ WriteINIFile;
+ if intiData() then
+ begin
+ GetServerDate();
+ // P_Tmp.Visible := True;
+ //P_Tmp.Align := AlClient;
+ FormLogon := TFormLogon.Create(self);
+ FormLogon.ShowModal;
+ end;
+
+end;
+
+procedure TFormMain.FormResize(Sender: TObject);
+begin
+ //P_Tmp.Align := AlClient;
+ sendmessage(newh, 1034, 1, 0);
+end;
+
+procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+ CanQuit: Boolean;
+begin
+ sendmessage(newh, 1034, 4, 0);
+ if FormMain.MDICHildCount > 0 then
+ CanQuit := application.MessageBox('ȷҪ˳ǰϵͳ?', 'ʾ', mb_yesno + mb_IconQuestion) = idyes;
+ if CanQuit then
+ begin
+ Timer2.Enabled := false;
+ ADOConnection1.Close;
+ Action := CaFree;
+ end
+ else
+ Action := caNone;
+end;
+
+procedure TFormMain.MNCloseClick(Sender: TObject);
+begin
+ close;
+end;
+
+procedure TFormMain.Timer1Timer(Sender: TObject);
+begin
+ try
+ statusbar1.Panels[0].Text := 'ǰʱ䣺' + datetimetostr(now);
+ except
+ end;
+end;
+
+procedure TFormMain.N2Click(Sender: TObject);
+begin
+end;
+///////////////////////////////////////////////
+ //ȡϵͳ
+////////////////////////////////////////////////
+
+procedure TFormMain.GetServerDate();
+begin
+ with ADOQueryTmp do
+ begin
+ close;
+ sql.clear;
+ sql.Add('select getDate()as dt');
+ Open;
+ gServerDate := fieldByName('dt').AsDateTime;
+ close;
+ end;
+end;
+
+procedure TFormMain.Timer2Timer(Sender: TObject);
+begin
+ FormMain.StatusBar1.Panels[0].Text := 'ǰʱ䣺' + datetimetostr(now);
+end;
+
+procedure TFormMain.FormShow(Sender: TObject);
+var
+ XSStr: string;
+begin
+ try
+ IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TradeInspFile.INI');
+ Panel1.Caption := IniFile.ReadString('', 'ģ1', 'ֹ');
+ Panel3.Caption := IniFile.ReadString('', 'ģ2', 'ɨ');
+ XSStr := IniFile.ReadString('', 'ģʾ1', '1');
+ if XSStr = '1' then
+ begin
+ Panel1.Visible := True;
+ end
+ else
+ begin
+ Panel1.Visible := False;
+ end;
+ XSStr := IniFile.ReadString('', 'ģʾ2', '1');
+ if XSStr = '1' then
+ begin
+ Panel3.Visible := True;
+ end
+ else
+ begin
+ Panel3.Visible := False;
+ end;
+ finally
+ IniFile.Free;
+ end;
+ Timer2.Enabled := True;
+
+end;
+
+procedure TFormMain.ToolButton12Click(Sender: TObject);
+var
+ CanQuit: Boolean;
+begin
+ sendmessage(newh, 1034, 4, 0);
+ if application.MessageBox('ȷҪ˳ǰϵͳ?', 'ʾ', mb_yesno + mb_IconQuestion) <> IDYES then
+ Exit;
+ ADOConnection1.Close;
+ Close;
+end;
+
+procedure TFormMain.Panel1Click(Sender: TObject);
+type
+ TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; stdcall;
+var
+ Tf: TMyFunc;
+ Tp: TFarProc;
+ Th: Thandle;
+ DllName, DllInt: string;
+ IniFile: TIniFile;
+ xx: string;
+begin
+ //̬
+ //newh:=getForm(Application,1,ADOConnection1,PChar('sa'),PChar('dsa'));
+ //̬
+ // showMessage(intTostr(application.Handle));
+ ADOConnection1.Connected := False;
+ ADOConnection1.Connected := True;
+ { with ADOQueryTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select * from SY_User where UserId='''+Trim(User_Id)+'''');
+ Open;
+ end;
+ if Trim(ADOQueryTmp.FieldByName('BanZu').AsString)='' then
+ begin
+ Application.MessageBox('ǰ¼˰Ϊգ','ʾ',0);
+ Exit;
+ end; }
+ try
+ IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TradeInspFile.INI');
+ DllName := IniFile.ReadString('', 'DLLļ1', 'TradeManagePB.dll');
+ DllInt := IniFile.ReadString('', 'DLLú1', '3');
+ finally
+ IniFile.Free;
+ end;
+
+ Th := LoadLibrary(PChar(DllName));
+ if Th > 0 then
+ begin
+ try
+ // Tp := GetProcAddress(Th, 'GetDllForm');
+ Tp := GetProcAddress(Th, PAnsichar(AnsiString('GetDllForm')));
+ if Tp <> nil then
+ begin
+ Tf := TMyFunc(Tp);
+ Tf(Application, 0, strtoint(DllInt), 0, 0, PChar(User_Id), PChar(User_Name), PChar(xx), PChar('55'), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), PChar(xx), pchar(xx), PChar(xx), PChar(ConDateBaseString));
+ end
+ else
+ begin
+ ShowMessage('ӡִд');
+ end;
+ finally
+ // FreeLibrary();
+ end;
+ end
+ else
+ begin
+ ShowMessage('Ҳ' + Trim('dllname'));
+ end;
+
+end;
+
+procedure TFormMain.Panel2Click(Sender: TObject);
+var
+ CanQuit: Boolean;
+begin
+ sendmessage(newh, 1034, 4, 0);
+ if application.MessageBox('ȷҪ˳ǰϵͳ?', 'ʾ', mb_yesno + mb_IconQuestion) <> IDYES then
+ Exit;
+ ADOConnection1.Close;
+ Close;
+end;
+
+procedure TFormMain.Panel3Click(Sender: TObject);
+type
+ TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; stdcall;
+var
+ Tf: TMyFunc;
+ Tp: TFarProc;
+ Th: Thandle;
+ DllName, DllInt: string;
+ IniFile: TIniFile;
+begin
+ //̬
+ //newh:=getForm(Application,1,ADOConnection1,PChar('sa'),PChar('dsa'));
+ //̬
+ // showMessage(intTostr(application.Handle));
+ ADOConnection1.Connected := False;
+ ADOConnection1.Connected := True;
+ { with ADOQueryTmp do
+ begin
+ Close;
+ sql.Clear;
+ sql.Add('select * from SY_User where UserId='''+Trim(User_Id)+'''');
+ Open;
+ end;
+ if Trim(ADOQueryTmp.FieldByName('BanZu').AsString)='' then
+ begin
+ Application.MessageBox('ǰ¼˰Ϊգ','ʾ',0);
+ Exit;
+ end; }
+ try
+ IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TradeInspFile.INI');
+ DllName := IniFile.ReadString('', 'DLLļ2', 'TradeManagePB.dll');
+ DllInt := IniFile.ReadString('', 'DLLú2', '301');
+ finally
+ IniFile.Free;
+ end;
+ Th := LoadLibrary(PChar(DllName));
+ if Th > 0 then
+ begin
+ try
+ Tp := GetProcAddress(Th, 'GetDllForm');
+ if Tp <> nil then
+ begin
+ Tf := TMyFunc(Tp);
+ newh := Tf(Application, 0, strToint(DllInt), 0, 0, PChar(User_Id), PChar(User_Name), PChar(''), PChar(TToolButton(Sender).Caption), PChar(''), PChar(''), '', '', '', '', '', '', '', '', PChar(ConDateBaseString));
+ end
+ else
+ begin
+ ShowMessage('ӡִд');
+ end;
+ finally
+ // FreeLibrary();
+ end;
+ end
+ else
+ begin
+ ShowMessage('Ҳ' + Trim('dllname'));
+ end;
+
+end;
+
+procedure TFormMain.Timer_linkTimer(Sender: TObject);
+begin
+ TMyThread.Create(False);
+end;
+
+procedure TFormMain.FormDestroy(Sender: TObject);
+begin
+ CriticalSection.Free;
+end;
+
+end.
+
diff --git a/T03贸易布匹检验/test/JCYData10.INI b/T03贸易布匹检验/test/JCYData10.INI
new file mode 100644
index 0000000..cb82e7d
--- /dev/null
+++ b/T03贸易布匹检验/test/JCYData10.INI
@@ -0,0 +1,7 @@
+[ϵͳ]
+ں=com2
+=19200
+Уλ=0
+λ=8
+ֹͣλ=0
+Ƶ=100
diff --git a/T03贸易布匹检验/testDll.cfg b/T03贸易布匹检验/testDll.cfg
new file mode 100644
index 0000000..e9c1cc1
--- /dev/null
+++ b/T03贸易布匹检验/testDll.cfg
@@ -0,0 +1,38 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
diff --git a/T03贸易布匹检验/testDll.dof b/T03贸易布匹检验/testDll.dof
new file mode 100644
index 0000000..d454d72
--- /dev/null
+++ b/T03贸易布匹检验/testDll.dof
@@ -0,0 +1,136 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=0
+UnsafeCode=0
+UnsafeCast=0
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=D:\selfware_83398\selfware\ֿ\Ŀ\self\뵥DDMD.dll)\testDll.exe
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+[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=2052
+CodePage=936
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
diff --git a/T03贸易布匹检验/testDll.dpr b/T03贸易布匹检验/testDll.dpr
new file mode 100644
index 0000000..4be4b8a
--- /dev/null
+++ b/T03贸易布匹检验/testDll.dpr
@@ -0,0 +1,14 @@
+program testDll;
+
+uses
+ Forms,
+ U_testdll in 'U_testdll.pas' {Form1};
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
+
diff --git a/T03贸易布匹检验/testDll.dproj b/T03贸易布匹检验/testDll.dproj
new file mode 100644
index 0000000..21f459b
--- /dev/null
+++ b/T03贸易布匹检验/testDll.dproj
@@ -0,0 +1,964 @@
+
+
+ {6ED24B72-E038-4A45-BA13-AC1AB432C410}
+ testDll.dpr
+ True
+ Debug
+ 38017
+ Application
+ VCL
+ 19.2
+ Win32
+
+
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ false
+ false
+ false
+ true
+ false
+ 00400000
+ 1
+ 1
+ testDll
+ Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;Data.Win;$(DCC_Namespace)
+ 2052
+ CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=
+
+
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+
+
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png
+
+
+ System.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)
+ 1033
+ $(BDS)\bin\default_app.manifest
+ testDll_Icon.ico
+ true
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
+
+
+ testDll_Icon.ico
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
+
+
+ RELEASE;$(DCC_Define)
+ 0
+ false
+ 0
+
+
+ true
+ PerMonitorV2
+
+
+ DEBUG;$(DCC_Define)
+ false
+ true
+
+
+ Debug
+
+
+ Debug
+
+
+ Debug
+
+
+ true
+ PerMonitorV2
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)
+
+
+
+ MainSource
+
+
+
+ dfm
+
+
+ Cfg_2
+ Base
+
+
+ Base
+
+
+ Cfg_1
+ Base
+
+
+
+ Delphi.Personality.12
+
+
+
+
+ testDll.dpr
+
+
+
+ True
+ True
+ True
+ True
+ True
+ False
+
+
+
+
+ testDll.exe
+ true
+
+
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ classes
+ 1
+
+
+ classes
+ 1
+
+
+
+
+ res\xml
+ 1
+
+
+ res\xml
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\armeabi
+ 1
+
+
+ library\lib\armeabi
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\mips
+ 1
+
+
+ library\lib\mips
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\values-v21
+ 1
+
+
+ res\values-v21
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-ldpi
+ 1
+
+
+ res\drawable-ldpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-small
+ 1
+
+
+ res\drawable-small
+ 1
+
+
+
+
+ res\drawable-normal
+ 1
+
+
+ res\drawable-normal
+ 1
+
+
+
+
+ res\drawable-large
+ 1
+
+
+ res\drawable-large
+ 1
+
+
+
+
+ res\drawable-xlarge
+ 1
+
+
+ res\drawable-xlarge
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ 0
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .dll;.bpl
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .bpl
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ 0
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ Contents
+ 1
+
+
+ Contents
+ 1
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12
+
+
+
+
+
diff --git a/T03贸易布匹检验/testDll.res b/T03贸易布匹检验/testDll.res
new file mode 100644
index 0000000..2465ca0
Binary files /dev/null and b/T03贸易布匹检验/testDll.res differ
diff --git a/T03贸易布匹检验/testDllDJ.cfg b/T03贸易布匹检验/testDllDJ.cfg
new file mode 100644
index 0000000..e9c1cc1
--- /dev/null
+++ b/T03贸易布匹检验/testDllDJ.cfg
@@ -0,0 +1,38 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
diff --git a/T03贸易布匹检验/testDllDJ.dof b/T03贸易布匹检验/testDllDJ.dof
new file mode 100644
index 0000000..9b5b586
--- /dev/null
+++ b/T03贸易布匹检验/testDllDJ.dof
@@ -0,0 +1,136 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=0
+UnsafeCode=0
+UnsafeCast=0
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=D:\selfware_83398\selfware\ֿ\Ŀ\self\֯(CYZZ.dll)\testDll.exe
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+[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=2052
+CodePage=936
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
diff --git a/T03贸易布匹检验/testDllDJ.res b/T03贸易布匹检验/testDllDJ.res
new file mode 100644
index 0000000..2d6f24c
Binary files /dev/null and b/T03贸易布匹检验/testDllDJ.res differ
diff --git a/T03贸易布匹检验/testDll_Icon.ico b/T03贸易布匹检验/testDll_Icon.ico
new file mode 100644
index 0000000..1998c2d
Binary files /dev/null and b/T03贸易布匹检验/testDll_Icon.ico differ
diff --git a/T03贸易布匹检验/testDll_project.tvsconfig b/T03贸易布匹检验/testDll_project.tvsconfig
new file mode 100644
index 0000000..d430780
--- /dev/null
+++ b/T03贸易布匹检验/testDll_project.tvsconfig
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/T03贸易布匹检验/testJCYData10.INI b/T03贸易布匹检验/testJCYData10.INI
new file mode 100644
index 0000000..cb82e7d
--- /dev/null
+++ b/T03贸易布匹检验/testJCYData10.INI
@@ -0,0 +1,7 @@
+[ϵͳ]
+ں=com2
+=19200
+Уλ=0
+λ=8
+ֹͣλ=0
+Ƶ=100
diff --git a/T03贸易布匹检验/untAES.pas b/T03贸易布匹检验/untAES.pas
new file mode 100644
index 0000000..35088f1
--- /dev/null
+++ b/T03贸易布匹检验/untAES.pas
@@ -0,0 +1,114 @@
+unit untAES;
+
+interface
+
+uses
+ SysUtils, Classes, Math, ElAES;
+
+type
+ TPaddingType = (PKCS5Padding,PKCS7Padding);
+ TKeyBit = (kb128, kb192, kb256);
+
+function EncryptString(Value: AnsiString; Key: AnsiString;
+ KeyBit: TKeyBit = kb128): AnsiString;
+
+
+implementation
+
+function StrPadding(SourceStr:string;paddingType:TPaddingType = PKCS5Padding):string;
+var
+ DestStr:string;
+ strRemainder,i:Integer;
+begin
+ DestStr := SourceStr;
+ if paddingType = PKCS5Padding then
+ begin
+ strRemainder :=Length(DestStr) mod 16;
+ strRemainder := 16 - strRemainder;
+ for i:= 1 to strRemainder do
+ begin
+ DestStr := DestStr + Chr(strRemainder);
+ end;
+ end;
+ Result := DestStr;
+end;
+
+function StrDelPadding(SourceStr:string;paddingType:TPaddingType = PKCS5Padding):string;
+var
+ DestStr:string;
+ PaddingLen:Integer;
+begin
+ DestStr := SourceStr;
+ if paddingType = PKCS5Padding then
+ begin
+ PaddingLen := Ord(DestStr[Length(DestStr)]);
+ DestStr := Copy(DestStr,1,Length(DestStr)-PaddingLen);
+ end;
+ Result := DestStr;
+end;
+
+function TransChar(AChar: Char): Integer;
+begin
+ if AChar in ['0'..'9'] then
+ Result := Ord(AChar) - Ord('0')
+ else
+ Result := 10 + Ord(AChar) - Ord('A');
+ end;
+
+function StrToHex(Value: AnsiString): string;
+var
+ I: Integer;
+begin
+ Result := '';
+ for I := 1 to Length(Value) do
+ Result := Result + IntToHex(Ord(Value[I]), 2);
+end;
+
+function HexToStr(Value: AnsiString): AnsiString;
+var
+ I: Integer;
+begin
+ Result := '';
+ for I := 1 to Length(Value) do
+ begin
+ if ((I mod 2) = 1) then
+ Result := Result + Chr(StrToInt('0x'+ Copy(Value, I, 2)));
+ end;
+end;
+
+
+function EncryptString(Value: AnsiString; Key: AnsiString;
+ KeyBit: TKeyBit = kb128): AnsiString;
+var
+ SS,DS: TMemoryStream;
+ Size: Int64;
+ AESKey128: TAESKey128;
+ AESKey192: TAESKey192;
+ AESKey256: TAESKey256;
+ st: AnsiString;
+begin
+ Result := '';
+ Value := StrPadding(Value,PKCS5Padding);
+ ss := TMemoryStream.Create;
+ SS.WriteBuffer(PAnsiChar(Value)^,Length(Value));
+ DS := TMemoryStream.Create;
+
+ try
+ Size := SS.Size;
+ if KeyBit = kb128 then
+ begin
+ FillChar(AESKey128, SizeOf(AESKey128), 0 );
+ Move(PAnsiChar(Key)^, AESKey128, Min(SizeOf(AESKey128), Length(Key)));
+ EncryptAESStreamECB(SS, 0, AESKey128, DS);
+ end;
+ SetLength(st,Ds.Size);
+ DS.Position := 0;
+ DS.ReadBuffer(PAnsiChar(st)^,DS.Size);
+ Result := StrToHex(st);
+ finally
+ SS.Free;
+ DS.Free;
+ end;
+end;
+
+end.