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 @@ + +
frmEmployeeSel
+ 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 + + + +
DataLink_TradeInsp
+ TDataModule +
+ + +
frmBaseHelp
+ dfm +
+ +
frmBaseInput
+ dfm +
+ +
frmBaseList
+ dfm +
+ + + + + + +
frmZDYHelp
+ dfm +
+ +
frmFjList_RZ
+ dfm +
+ +
frmCompanySel
+ dfm +
+ +
frmEmployeeSel
+ dfm +
+ +
frmTradeMachInsp
+ dfm +
+ + + +
frmLabelMapSet
+ dfm +
+ +
BaseDataLink
+ dfm + TDataModule +
+ +
frmMachRollMain
+ dfm +
+ +
frameBads
+ dfm + TFrame +
+ +
FrameParam
+ dfm + TFrame +
+ +
frmParamSet
+ dfm +
+ +
frmSysLogList
+ dfm +
+ +
FrameKeyBoard
+ dfm + TFrame +
+ +
frmProductListHelp
+ dfm +
+ +
frmProductJYHZList
+ dfm +
+ +
frmTradePack
+ dfm +
+ +
frmTradeClothWaitPack
+ dfm +
+ +
frmTradeClothInspList
+ dfm +
+ +
frmDjdDjClList
+ dfm +
+ + +
frmLabelPrint
+ dfm +
+ +
frmDeviceJkTest
+ dfm +
+ + +
frmBatchMdyData
+ dfm +
+ + +
frmFrameDateSel
+ dfm + TFrame +
+ +
frmBillPrintList
+ dfm +
+ + +
frmTradeClothTotalOutSel
+ 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 + + +
Form1
+ 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.