TAChart: Use new icons in charteditor demo.

This commit is contained in:
wp_xyz 2023-07-12 11:12:24 +02:00
parent b4a8dafca7
commit 749a9db1ad
3 changed files with 192 additions and 117 deletions

View File

@ -10,7 +10,7 @@ object ChartEditorForm: TChartEditorForm
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnDestroy = FormDestroy
LCLVersion = '2.3.0.0'
LCLVersion = '3.99.0.0'
object ButtonPanel: TButtonPanel
Left = 6
Height = 34
@ -60,8 +60,8 @@ object ChartEditorForm: TChartEditorForm
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonPanel
Left = 167
Height = 367
Top = 41
Height = 371
Top = 37
Width = 618
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 3
@ -77,7 +77,7 @@ object ChartEditorForm: TChartEditorForm
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 167
Height = 29
Height = 25
Top = 6
Width = 618
Alignment = taLeftJustify
@ -86,41 +86,43 @@ object ChartEditorForm: TChartEditorForm
BorderSpacing.Left = 3
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BevelInner = bvRaised
BevelOuter = bvLowered
ClientHeight = 29
BevelOuter = bvNone
ClientHeight = 25
ClientWidth = 618
Color = clWindowText
Color = clWindowFrame
Font.Color = clWindow
ParentBackground = False
ParentColor = False
ParentFont = False
TabOrder = 4
object Label1: TLabel
AnchorSideLeft.Control = Image1
object TitleLabel: TLabel
AnchorSideLeft.Control = HeaderImage
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = TitlePanel
Left = 30
Left = 28
Height = 21
Top = 4
Width = 50
Top = 2
Width = 75
BorderSpacing.Left = 8
BorderSpacing.Top = 2
BorderSpacing.Bottom = 2
Caption = 'Label1'
Caption = 'TitleLabel'
Font.Color = clWindow
Font.Height = -16
Font.Style = [fsBold]
ParentFont = False
end
object Image1: TImage
object HeaderImage: TImage
AnchorSideLeft.Control = TitlePanel
AnchorSideTop.Control = TitlePanel
AnchorSideTop.Side = asrCenter
Left = 6
Left = 4
Height = 16
Top = 6
Top = 4
Width = 16
AutoSize = True
BorderSpacing.Left = 4
Images = ChartImagesDM.ChartImages
end
end
end

View File

@ -17,8 +17,8 @@ type
TChartEditorForm = class(TForm)
CloseButton: TPanelBitBtn;
ButtonPanel: TButtonPanel;
Image1: TImage;
Label1: TLabel;
HeaderImage: TImage;
TitleLabel: TLabel;
Notebook: TNotebook;
TitlePanel: TPanel;
Splitter1: TSplitter;
@ -42,10 +42,8 @@ type
FAxesNode: TTreeNode;
FSeriesNode: TTreeNode;
FOKClicked: Boolean;
FApplyButton: TBitBtn;
function AddFrame(AParentNode: TTreeNode; ACaption: String; AFrame: TFrame;
AImageIndex: Integer): TTreeNode;
procedure ApplyButtonClick(Sender: TObject);
procedure FindComponentClass({%H-}AReader: TReader; const AClassName: String;
var AClass: TComponentClass);
function GetPageIndexOfNode(ANode: TTreeNode): Integer;
@ -213,34 +211,6 @@ begin
Result.SelectedIndex := AImageIndex;
end;
procedure TChartEditorForm.ApplyButtonClick(Sender: TObject);
var
msg: String;
C: TWinControl;
begin
if not Validate(Tree.Selected, msg, C) then
begin
C.SetFocus;
MessageDlg(msg, mtError, [mbOK], 0);
ModalResult := mrNone;
end else
SaveChartToStream;
end;
(*
procedure TChartEditorForm.CloseButtonClick(Sender: TObject);
var
msg: String;
C: TWinControl;
begin
if not Validate(Tree.Selected, msg, C) then
begin
C.SetFocus;
MessageDlg(msg, mtError, [mbOK], 0);
ModalResult := mrNone;
end else
RestoreChartFromStream;
end;
*)
procedure TChartEditorForm.FormActivate(Sender: TObject);
var
w: Integer = 0;
@ -319,7 +289,6 @@ end;
procedure TChartEditorForm.FormCreate(Sender: TObject);
begin
ceImages.ChartImagesDM.ChartImages.GetBitmap(7, ButtonPanel.CloseButton.Glyph);
Tree.Items.BeginUpdate;
try
Tree.Items.Clear;
@ -332,16 +301,6 @@ begin
finally
Tree.Items.EndUpdate;
end;
FApplyButton := TBitBtn.Create(ButtonPanel);
FApplyButton.Caption := 'Apply';
FApplyButton.Images := ChartImagesDM.ChartImages;
FApplyButton.ImageIndex := 7;
FApplyButton.AutoSize := true;
FApplyButton.OnClick := @ApplyButtonClick;
FApplyButton.AnchorSideTop.Control := ButtonPanel.OKButton;
FApplyButton.Parent := ButtonPanel;
AutoSize := true;
end;
@ -538,6 +497,7 @@ end;
procedure TChartEditorForm.SeriesChangedHandler(Sender: TObject);
begin
UpdateImages;
HeaderImage.Refresh;
end;
procedure TChartEditorForm.SetChart(AValue: TChart);
@ -603,12 +563,12 @@ begin
Notebook.PageIndex := pageIdx;
s := Tree.Selected.Text;
if Tree.Selected.Parent = FAxesNode then
Label1.Caption := 'Axis: ' + s
TitleLabel.Caption := 'Axis: ' + s
else if Tree.Selected.Parent = FSeriesNode then
Label1.Caption := 'Series: "' + s + '"'
TitleLabel.Caption := 'Series: "' + s + '"'
else
Label1.Caption := s;
ChartImagesDM.ChartImages.GetBitmap(Tree.Selected.ImageIndex, Image1.Picture.Bitmap);
TitleLabel.Caption := s;
HeaderImage.ImageIndex := Tree.Selected.ImageIndex;
end;
end;
@ -616,7 +576,6 @@ procedure TChartEditorForm.UpdateImages;
begin
ChartImagesDM.ChartImages.Chart := nil;
ChartImagesDM.ChartImages.Chart := FChart;
ChartImagesDM.ChartImages.GetBitmap(Tree.Selected.ImageIndex, Image1.Picture.Bitmap);
end;
function TChartEditorForm.Validate(ANode: TTreeNode; out AMsg: String;

View File

@ -5,61 +5,175 @@ object ChartImagesDM: TChartImagesDM
VerticalOffset = 130
Width = 322
object ChartImages: TChartImageList
Scaled = True
Left = 128
Top = 32
Bitmap = {
4C7A0800000010000000100000004E0600000000000078DAED995F4C53571CC7
DBD25BE8302242CD1217A226DB83BEF8802FCBD4643E9968B2E803899A0589BE
C883BC88CE2C4B09D331A238272875D9D00E5412614C81898020C8900121EAF8
530145630B6D11DA7BFBE7B6BDF7DC9D5F69B12DEDED3D7533DBC249BEB9BDF4
7C6ECFF99DF33DBF5F2E325968D39AA52956D39A47469CBC98A4F01F7DF4B910
4D52F9B7F9FDB79B7F62EDF6EDDB9F3435354DDDB973C72045D01798507E6060
60D4E3F198A2C9ED7687DD435F12BEACACCC79E0C0015EABD5BAC7C7C72D623C
CBB2A6EAEA6A7A76767606EE7B7B7B5FE7E6E672C0B5B4B4CCCFE026C6B7B5B5
CDEDDBB78F87DFABAFAFB7010BCF90327E98E7E1C3877D0F1F3E7C3D3C3C6C3D
7AF4A8F7ECD9B3CEC8F9C4E2EBEAEA6C274F9E6483FD602E0CC34C4BE5A7A6A6
CC13131396587114E39B9B9B27DBDBDB47A408FA86F21D1D1DCAD6D6D6341201
B3BC7F97F7EFFF6BFF2EE72FD2F90B8220278D3DA8AAAA2A0578BD5E9F8AD7D2
88D7F439815E62E6CB208FCF831762FB2DD2FF0683C1D4D8D8F89554FEDCB973
2EEC47545C5CCCF6F7F7CF8AF146A3D13C3434341BBC87FED8C308FB02DDBD7B
D73D323222CAE3B3C6B567CF1E01FBD6F5EAD52BF3A14387B89E9E1EB7D7EB9D
8937FEC9C949CBFEFDFB11E684CACA4A849F834A4A4A5C91F389C59F3A75CA7D
FDFA75B46B570D979959CAA7A77FC3AF5E5DC267647C1B26F87B4A4AB103F642
90A7697ABAB0B0D06BB7DB2D3B7756E3E78CA3BE3E9770EF9E4B802BDE7B8B1A
1EF65F51281F3ABE20BF630727AC5B8704B8F6F49884C242BD5FC78EE9E17E91
8FDC3FD9D9DF396B6A0C019EF7F30F1E18FD5C50413EDAFE552A8B1A6B6A9EB2
836DD3FCEFD7C678B8927949FB0BF08E8F77209FE67D01AE9D9D2F78FCBB0804
9FDF056FE833F1E3ADA33C5C49C74F76160872AC8D89E6FFAC2CE76EB5DAF714
EFC9AD5285CFEF55417EE54ACF805ACDF1B5B57D135D5D5D63F1145E3F08CAA4
24340F27594101C7C4CB5D20784608BF572E473CF0D9D9C813AD3FE45111FE37
854270039F91817883C1678EE41B1A1A6C7979795C7979B903EA88085EB3762D
7313F8274F7C66A7D363B2D96CD3A1671FD41078CEF357AF5EA51F3D7A640DE7
65B20D1BEC55C0BBDD0BCC912347BCB5B5B576F88CFBD94E9C38C1C61E7F383F
3838388BCF2C5F7E7EBE17CE1E1837FC4D2A0FCC8D1B37EC50779C3E7DDA75FC
F871563CFE6F78B3D93A939393C35BADD6C5B3D262B1CC48E5BBBABA5F979696
BAC8D67F69FC12E53B3BBB47EFDFBF1F5770C685F26969BE2F929379637D7DF3
F644FCF3CF376137D635ACEC28DFAD4A4DF595AE5F6FBF124BD8DFFD101FB95C
F02A95FC5C66A6AB6DF366FB9600BF0EBE23517A3ACB059EE9AF41EAEA9AB6E1
D88FC1FA455351116F5FB306F1DBB621F6CC19CED6D2D2F334B27E85358DB5DE
26133B333DFD267F47AE7F3C5EDCFF4B7952FF47F2A4FE0FE513F17F289F88FF
833CF83E11FF07F9EEEEC4FC1F6FFDA4F0E06929DE8FE67FF03249EE7CF7FE5F
E2F98D0B354362E3C7B97E3C2B8BDD1DF9FE404AEEBF79B36F026A8505FF93AF
5F4101CFC01912A8199452F8D0FC0F3542E02C839A612F89FF8B8AF4CEF474CE
5F6B046A866612FF5755FD4CDFBA353A077CA066D090FA1FCE43E0177216B9FF
E3F1F1FC2FC64BF1BF182FC5FFF1C61F4FB178A9FE871A219227F10FD408502B
40CD20FB97B4B73DBF48FCBFB4FEFF7BCE6FA9FE5FCEFFFFCDFCFFF8B1D7128B
6F6868DC2A563F82341AC46FDA84BC070F72CEEAEA3FC2DE5FAE58E11922A95F
9393399492C23DC79FB7038FEBD97CB1FA19A45020C85B08E72D2635D53BAAD1
B80FE27B8A2067E35C23E4066BE677D154154C8EAA8246AA725A0853056D8CC7
A65C603EA5748C536EE5057849E97F5169E4044A473BE03B3196AAB06F51E17E
D09F944D3E6FFF10F79B574CF98859F5F7AE0FA84AC6AC18F5F2A4AC4C4767AA
74CCCBA4210F176441D415876F49FC02A2CAE9BC05D6F49EEA32F338A997F584
B2D124772081AA713A707CF4321DDE3F5A41455D66BA94ED6E575C16AF05F5A3
C3A9BA64FF7A31D6780CB1C6A7F8D3BBC82A9EF910C4417591FE2CEEC62913D4
AA4A9A91DB17D61E624255D273D4055BB6947D4755D0B9CA06172D4398ED60DD
78AECFD4E7E7B224EFDB1F9831C5B84F50FEEA72E2D83C90E9E6D2A4B2FEBD77
89F1517A1C271DFD138E2FD1FFD9F03AD6FAE317126322FE223D2129C681F617
A04339F5
4C7A080000001000000010000000AE0300000000000078DAED984B4C134118C7
570A288502E551818A2898C0A509287A20EAC54430C61321180F70C04822071F
A91C08868603E2C10311A36D892478F19110DE82C110E2239A40EA03131FD1C4
1038807477675B0C6DECE7CED21AACB43B3B8B20A6937CD9663BBFFD869DF9FF
BFAF000003FE282CBC2E984C6D102EF01C58C1AC0CFCBDDCF0CF09CB979676FE
9117DF23E569F3ABFDFBD584CD6613AC562B90049E1BCCE3FBE1C6ECEC2CB4B7
B74B9FFD736579B7DB0D8D8D8D3039390966B3597A861CEFF178A0B9B959BAB6
B5B5C1C0C000343434FC62E5783C1FE76A6D6D95F8D546281EE7C42C5EB7C562
91AE4A789C1B87DC08C5E3F78BD740C3ABDDFF8D8EC8F98D9CDF8D3EBF91FA15
A95F11FD2FEBBFA4E41628390BC1FA577A1683F73FC033CC7234358931D304CC
042305A916D4F26AB5CC0CCF48D1F40901F4898B38C32CC73AF1EBE5050CB3B8
8356FBE2FE6C8D8AF2BC15AF7134BC46E3391DA5F14075F518957F88B95F63DE
64F282CF078AEA5774B4B70CB3811819F151D53FCCAAF1AFD57825FE15E069FD
2BC0D3FA17E6D5F817E6D5F42F9857D3BFC8ED9F1C9F96CEFED8CCFD3B49885A
291535BE8596973416EDF928EAF59CF81C6DF0FB5BA943D990FC66319BB47FC0
0373F9055EA8AC7C02C1F94978EC0DD85F48FB8F48FFB2797EBF90ECFFFFFCFB
5D59BD5FFB5E81F4FD55558D493A167B861A9AFD2B2CF406FC636AA59791F0C3
C3BEDF3C08FB218DFEFDB5865AFFE17812FD87E349F41F8A27D57F289E54FFA1
7852FD93BE7F25BC12FDE35AB799F5BF19FF7FF0B7FD3F52FFFFFDFAAFA67F93
EB1FD5F6AF6AFBE7B5ECDFB5835CB16E54B0273C4476DD20B227DDE58E2AC9A3
1B72F5314B6E607C6E88F9EAFAAEEF442788FB032BC4248CA0F79A7917687837
E8FA85374CC57D0D299F64E3CAB52F84A5D82F2E88FDEC82143BB207BE33B6A0
D4EDF5DF8E84E3533B506FDC4B01E25EB940D7C32FA45FE5EFE96FB003FADBBC
43D78D660C2D9C23E4DA2DEF62536CFC87F85104F1E302C48F09A07D2A3ECBE1
826D530224F622D658EF0A99DF7045284FEEE49712BB1124F60BA01B4690302A
3E671C81F6990086CBDCE3706B3758F89E940E047A2B0F69D7F8B9740BEBC8BC
C03A92BB785FEA4DE4CCAC650F87E333CCDC44C625B6D7789EBD9859C3E6E07B
99756C97FE0E82AC3A6E94C6D78D67B9E7198D9C33AB62EEA05236B7C29964AC
65A7B34F39476872671F779EDC7992E573CBF8FD34FCEE63EC835DA5EC23DA9A
9677C8399D533C5744C3161C40A9797B17866873E717CD67EDD9C7E5C9CDFB09
34BD85AF
}
BitmapAdv = {
4C69020000004C7A080000001800000018000000780600000000000078DAED9A
7F6C934518C75FDAC15857F69376ED606C0C0491802E413021921927C1287F28
31011D9B30A7C9644204312460E6D42586B840B639DBB1E8549461B00342C4CD
1136401494A00EA6D341C0315DB7BEBF37D635F4F1AEA1A65DDAED7DDB3BF9E1
7BC937DDDBF77D3F77F7F6BDE7BEF7DC00808151CAC9A91A58B06037A811BE07
42B042095F7FF870275CB8D0A748F85A7C8F1A7E47471F282DF8DA48F84D4D17
C77D2EF89A48F934DB4FF3F9D37E7F68A9AEAE6EC066B34134C28C707C7CBEAB
AB0BFAFBFB2312BE1733C6E23B9D4EC5EF8DD7EB85CACA4A686E6EF61DE37BA3
E1631E660D0F0FFB8E1B1B1B61F3E6CDE076BB89F0DBDADA60F5EAD550525202
0E8703D6AF5F0F2CCBFE7B5E2D1FB7B7B5B5D5F789DB58545484C65287EFBBC2
C242E8EEEE0EAA5F2DBFBDBD1D56AE5C092D2D2D70E0C001A8A8A818F3F750C3
F7783C505C5C8CE24B13141414407E7E3EF4F4F410E31F3A7408CACBCB7D7FDB
ED76A8AFAF1FF77D52CA1F1A1AF2B5F9CA952BA0A628E537343440555515A82D
4AF9F8FD1B1818A0C2A7191F68C7374DDAFCA5CD5FDAFCA5CD5FDAFCA5CD5FB7
6E7DA4ADAFB5F5F5EDB8BED6FC8FE67F34FF73F7F99FDCDC3A501B8F42C5A470
FE476D3C0D1753C3F91FB5F341B839215C7C08E4334CB07CDFFDC004291C3F5C
7C23C557325FD2E6D3989383DA7FF45A907CE5452658FF63FEF00D6F90483D7F
12E397A41F0A157F1866288396374163C5A08B19F9157DC6D3E0EB7423A53AFD
08A0CF0D14DAAE47EC3F30DF9CC6426D6D1D517FA5D7BB9FF5B5FDA6EC769EA8
BF42CFE4C7407E4E8E07790620B2FE8D89F12C0F64FBD5D2E225BABE66623CB9
98EB686221D2429AAFC67F2AE147E33F95F0A3F19FA1F824FD67283E49FF399A
4FDA7F8EE693F69F817C1AF9B7403E8DFC5B209F46FEEDBF8A0F9F7C7A95CAFA
976186E71AA7C8DEF2F27DDAFED41D2634073E46937FD3D79CD7EB470A901789
09EF53DCF3505BF2D46AD4DC7D19D5B531944F9B92207943CDF5112966A49361
AECF08E49795ED43B1E74F14EB39550AE49ACC2C846BBFDAFC92BFF83D534D0D
EFF37EA4F257FEE2F74AD1E69748E537B4FC9B967FD3F61FEFCCFD47DAF141DB
DFD43476AEE4EECD2145F37ED6D6DA21CDE2F2FB944BA17C5C34E3CB66E3837C
905EEF5E43323E2C5AE409F66FC88FA23E4C20C16F6EF686F488A37D75B4F10D
AF0D3117AFE568F89F68F9E3F99F68F9E3F91FB57CB5FE472D5FADFF51C38FC4
FFA8E147E27F94F223F53F4AF991FA1FA5FC48FD0FE9F11B093F1AFF83734763
F1A3F53F38778473483897A479114DDAFF17DDDEF9933B9DAFE57FB4FC8F96FF
A19FFFA19D1F569ADFA69D9FA7BDBF407B7F84F6FECEADD89F4AFA9CCB4A6C94
F312F7F279A97BE5BCD406392FA99E7B24DD0606126D4B7088ED86EF44DEF0BD
CC19BE1539C329914BFE58902C76697ED4F9A21AA731C121F5EAAE0F02E39681
B9310813460621E923F137126D4F6E90F3E34E49837A970C3A1E499221EEBC3C
925CCDBF4E862F9E9AD429C1C41E19627A919C32247F28F65A2A24138967935C
2FF6C622FEA42EA44B32C45E9061EA6EE144F098079D75EBC03CCB76715DDA36
6189527E6A95909FE89006E3CE4930F927C4EE902071BF209ACA840DD637F855
E6B7851AD35BFC3953057F35A54EFCDB5CC60D9937894B95F2A7EE124E189B45
309C443A2D41DC190952EC029F5A2DFC95B85F1C8A3F2EC2E48B324CEC46E77E
96C1B28D3FAB946D2A731AA7560ABDC6A322185B24883F26427C9B84EA927C75
19CE2226EED77924D4AFD49DC240DA0BAE8794F251DFD7A6BC2FC8095F8A30E5
20D211098C5FA13A507F8CC710FFB8E8AB2BEE343AFE4682F48DFC6935BF6DDA
9BC2C9E43D0224ED1521711FD21722F8EA4242EF14A4568BC3FE7E9977F0FDD6
B5FD8B143F9B12A7316DBBD09BF28100C936015277F3607E078DD7D7F8BEF44D
FCC5F452AE3ABD94EFC3FD4AFA4C8469C5DC49356DB76E61F32D5BB941CB16EE
9AF555EE17EB2BC27BD697B865B34B7F8FC5E7339E671F4EDBCEBB9250BFAC9B
7867E62A2E470DDF52EABACFFA32E6416CA8F3D30BD99DA67771BF04989ECF1D
271D8B339E633B4CBB049856C4F5CF7C8ABB9F243B2BF7F2E48C35DC35F30E0E
329FE65A49B77DC693FCA319EB387EC6335C5F761EBB80347FE6136C4D460107
592B5C5FD358BF662D673B3357B0FD7372C57B49B3E7E78271D632D69DBD8C3D
42A3EDB396B28FCF5AC2DEC85E2CCEA1C1CF5EECDA33FB41F620ADDCC13D0FB8
CECC5DC8CFA4C59FBDD0353D92FBFE01783F18E74C7A08000000200000002000
0000BB0900000000000078DAED9C0B5054D719C7D75D58E421288FDDE5E12AEA
984C5BA233354D1F93D44CD3696CA3B593A069D39050F001544C53151393D4A8
D558AD11DB6AB112831433627482C52AC89838D1C6070EB1A64D6AC65A95DA28
ECDEE72EEC2ECBD773AE2EDD5D96C7DEC7B90D9E3BF39FBB287B7FDF77CEB9F7
9EFF778E0280012268DAB46D57F2F22A410DE16BC1009C8184BF5750500FAFBF
7E5291F035F0B5E4F0B76F3F0D4A0F7C0D35F86D6D37E0830FAE0D4B172F7EA6
2AFFD2A5CEA8FB1C7F67A4E4AF57FF2F587010AAAB5B15095F430E5FEFFBFF6E
D5CE9D3BAF5455558116C2D71E8A8F7FAFA1A101CE9C39A3AAF035F1B587C36F
6D6D557CDF1D3972048E1F3FDEF733BE26293ECE77CE9C3970E0C001E2FCF6F6
76983F7F3EAC5DBB167A7B7B35E7373535C1A14387A4CF2E970B4A4A4A24E1CF
C18716FCCB972FC3DCB97361F6ECD9B077EF5E58B76E9D943B6E83F04329BFA5
A54552E0F0F97C505E5E2EA9AEAE4E8A01F739EEFB4887123EC771909F9F2F09
7FC60766E2DC711BE0A3B1B1511AF3031D4AF83535357D7CFC39D0EE3886E11E
72F981DC31371047595999D4EEB80FB4E60798388E402CC1EDAE253F38F7C071
ECD831686E6E8EFAB920871FC89D6559C5CFE368F93CCFC3BC79F3427227C9AF
ADAD0DB9DF48F3F1BB0BF7B55A47347CFC2C696B6B5355F89AC3E1EB3DFFA1A2
F36F3AFFA6F36F3AFFA6F36F3AFFA6F36F3AFFA6F36F3AFFA6F36FD2A2EB6F74
FD8DAEBFD1F537BAFE46FD3FF5FFD4FF53FF4FFD3FF5FFFAFBFF9933778096EF
E5A1FCBFD6F3F2A1FCBFD6F3B2A1FC3F29FE40FE3F9C6F30F457DFDFB51AFA69
38FCC1FCBFD6FCA1E63F5AF3A3F5057AF3F5F6A57AF30D47FFDD4F7DC742437F
51FE88E2DF8DE39FD605B493D1E8FBB95E6C83D9F325A3C9DB8BCEF7E992BBC9
5B8D0448BB88E76E000BE27661BE39AE0B366DAA255AFF30C67856DFC95DD282
855789D53F50EE7188F95930DF6AF382DBADDAF2CFA0FEC364F21607B303AAAE
F613E11B8DDE0B91F879793E082A6168C28F89F13D1A891D505393BC0070FD23
B806321CFF1718838B165F57942BE696969642656525713EAE396DD8B041F26E
D7AE5DD39C8F731545B1EF675C078A5487D1821FA801151717C3CD9B37FBEA7E
380639FE7F307EF8780AAE011516164251519154FBC235B0DE08378D52FEF2E5
CB2585D7DE700C3877DC0678CC85C7A806FFFCF9F3527D0D0B7F0EAEBD056A40
91DA472DFEB265CB42145E7B53ABFE13891FC81D9F039FF1188BA6F6A6841FC8
39781C445B7B93CB0FCE7DB0FB402B7E45454548EE5AEFBF08E647CA9D247FEB
D6AD21F73B69BEDC7ED6E2FE27CD7FEAC71FEBB2FFC664EAF96E7C82DB5F5EFE
67BAFF86EA732D34AFFF0EF255A374AB2360FF10E3BD84BCCD521447822EFCFF
E9167AB6BC6630B8B387FA1E7A06CC321A7D158A15D94F7990F618CC9EBC81F8
09892EFF607E4C25F9518CCF47E297971F8627F23F81679EBDAE4891B8E6B86E
182A7FB5F63F84D7129E2D6C878D1B6B89EDBFC0DC7BEEF5210FEA07FC1A27B9
FFE2F6BE84DE90DA0169BE1CFFAF165FAEFF5783AFC4FFCBE1ABE9FFA3E5ABED
FF07E393F0FF83F149F8FF81F8A4FCFF407C52FE3F129FA4FF8FC427E9FFC3F9
A4FD7F389FB4FF0FE6EBE1FF83F97AF8FF60BE1EFE5FCDF7BF123EFDF7375454
234F746FC1D07B0BB478FE6CDEBC07E2467705FC70B7C1003620F8EF1FF05E82
905A408C6735A9F74F7737406656BF5AC42DD406F124F8BB76F923D6424C266F
1109FEF4E9BEC83520A3F7A348F54135FD7F4343D7A075285CA324E5FFF19AC6
50634F4BFFAF157FB8FE5F0B7E34FE5F295FA9FF57CA57EAFF95F0D5F0FF4AF8
6AF87FB97CB5FCBF5CBE5AFE5F0E5F4DFF2F87AFA6FF8F96AFB6FF8F96AFB6FF
8F96AFB6FF27F5FE5383AF85FFC77B0A86C3D7CAFFE33D05786F01DE6340BD20
1515D5FF63FD71A4FCFF079FE7FAF748E0D3F57FBAFE4FD7FFE9FA3F5DFFA7EB
FF77E3FABFD2FD774AFDBFDEFB0FE5EEBFC4FB4F0B0BFF064B975E5724B9FB4F
F5DE7F2BED3F8EF1BCA65832F71FABB8DE296BFFB5AA7C1DF79FEBBDFF5E0B25
EFE74F8DADE3616C2D07E36AD079373A5723FD8183D49DACDB500F26ADD8496F
0819297B852EA3C70586DE50992F89905ACD9DD232F7716FB22549CDBC60440F
D3515D228CF22276CF6D7EF2DB3C975EC93DA9253FA5863B37FAA208262712EB
02A380E270A1CF9D2E48DBC689395B22AF67ABD2F6DB840CD4C7DDB1D74488F9
0FD22D17983A702C2E483A21F8D3B672BBB5CC3D6D075B92B29F17CCFF1421F6
8A00388ED87614C70D11D27ECBF1D68DDC5735E56FE7CE261EE721EE6311E2FE
2182F95301CC974548681521FD57ECF548DF495FD131C6B6929969AB6057585F
E07F2F976DDD2158D0D8EA4A3827C0E836A4BF227D84E2F8BB0863FFC8BBAD6B
D9558685109BBEAA63866D15576AFD05BBCFFA0A7BD5F602E749DFC83A323670
3DD695DC49B9FCF44DEC22746F89097F1120FE340FF1388E56A4F30258D6B01E
CBAB6CBBF565D69BB19EE552AB7977522327FD4EECBF50FF5C15C1B69215B397
C8EF9FF4CDDC59D4F780DB3FF18400892705483885CEA70548A9477F769487D1
38A60B02C45D14A476317F82CE9F8A907C80F7673ECF9C90CBB6AD1732327EC9
75251F1660CC5101929A915A10F35D14C309747E1F9D51BB24A058E2CF22A136
896F13A558E22F8890F91C23E62CE6BE22976F59C395A66FE1C4E4833C8C7907
E910D2611E928EF0522C892DB7DB25E13DFE4EBBA0FEB9130B7A36FBB3CA9816
25E33E6335DB9A56C543CA5B9CD4D6296FF38063496E4071FCE9762C638E86C6
22F5D17B02642F665CE37FC2CE903DEE570B16DB8B6CF7B85DE8FDF226522D7A
DFD4E158782996B17B3848FF0D079657581EE5E946E3C41FE8A3D46D5C4FCE02
679392DC2D2BD8C5D657593175077AB75521D6EF7840F713585F62C4CC72C69D
B584EDC82A63F765173305D98B980F53512CC9B88F0E729053C8B8729E722A9A
63D996B3E7ACAB18B0BEC80A993F63DD88D99155CED467977205590B9DF6BE7D
6DF9F526CCC3EFE3947D3C64ACE77AEC054CA3D2671E1ABBEF673D87F25B12CA
0BD7F8A7D91939450C2FCD0576F360FF91D36DFFBEE30BA4E624393F74AE40ED
D38DFBC8BA92F58DCF67DE213927B23FE93C6541FD94B68503FBE34ED7C4D99D
F712DBD338F3DD98098F3BBB2CEB38C8FC29E3B3CF61F693CC7DC2638EAFD99F
707296971898F898D39DFB68C73D24F9B9DF635EB63FCD7A729E617C936639DF
223D1F9E388B398BEE3D98F86DA7CBFE083B8924FB8BF960CEFD96B3DBFE03A7
2FF761670DF1DC1FECF866EEC30EF7A4879CEE090FB1B9A4F9931F74AC99F475
0720BDA187179AF20DE787931F70F44C79C091439A9DF5E51B0953EE77FA26CF
7054E991FBD4FBD947A64C7778A64EEBCCD6A5EDEFEB2C9D9AE7F8F548F0D4FF
054D6083C6
}
end
end