From f450598c1364fc08b91869f180af4f78acd8d14c Mon Sep 17 00:00:00 2001 From: Daniele Teti Date: Fri, 19 May 2017 00:47:03 +0200 Subject: [PATCH] ADDED IDE Splash Icon --- dodo.py | 7 +- ideexpert/DMVC.Expert.NewUnitWizard.pas | 166 -------------- ideexpert/DMVC.Expert.NewUnitWizardEx.pas | 6 +- ideexpert/DMVC.Expert.ProjectWizard.pas | 185 ---------------- ideexpert/DMVC.Expert.Registration.pas | 78 +++---- ideexpert/DMVC.Splash.Registration.pas | 44 ++++ ideexpert/DMVC_IDE_Expert_D101Berlin.dpk | 8 +- ideexpert/DMVC_IDE_Expert_D101Berlin.dproj | 34 +-- ideexpert/DMVC_IDE_Expert_D101Berlin.dres | Bin 91296 -> 93120 bytes .../DMVC_IDE_Expert_D101BerlinResource.rc | 1 + ideexpert/DMVC_IDE_Expert_D102Tokyo.dpk | 23 +- ideexpert/DMVC_IDE_Expert_D102Tokyo.dproj | 209 +++++++++--------- ideexpert/DUnitX_IDE_Expert_D10Seattle.res | Bin 448 -> 0 bytes ideexpert/SplashScreen.bmp | Bin 0 -> 1782 bytes ideexpert/dmvcframework_header.bmp | Bin 0 -> 106710 bytes 15 files changed, 225 insertions(+), 536 deletions(-) delete mode 100644 ideexpert/DMVC.Expert.NewUnitWizard.pas delete mode 100644 ideexpert/DMVC.Expert.ProjectWizard.pas create mode 100644 ideexpert/DMVC.Splash.Registration.pas delete mode 100644 ideexpert/DUnitX_IDE_Expert_D10Seattle.res create mode 100644 ideexpert/SplashScreen.bmp create mode 100644 ideexpert/dmvcframework_header.bmp diff --git a/dodo.py b/dodo.py index 913a642f..be30b7a3 100644 --- a/dodo.py +++ b/dodo.py @@ -82,8 +82,11 @@ def copy_sources(): header("Copying DMVCFramework IDEExpert...") print("Copying ideexpert") src = glob.glob("ideexpert\\*.pas") + \ - glob.glob("ideexpert\\*.dfm") + glob.glob("ideexpert\\*.ico") - src += glob.glob("ideexpert\\*.dpk") + glob.glob("ideexpert\\*.dproj") + glob.glob("ideexpert\\*.dfm") + \ + glob.glob("ideexpert\\*.ico") + \ + glob.glob("ideexpert\\*.bmp") + \ + glob.glob("ideexpert\\*.dpk") + \ + glob.glob("ideexpert\\*.dproj") for file in src: print("Copying " + file + " to " + output_folder + "\\ideexpert") copy2(file, output_folder + "\\ideexpert\\") diff --git a/ideexpert/DMVC.Expert.NewUnitWizard.pas b/ideexpert/DMVC.Expert.NewUnitWizard.pas deleted file mode 100644 index 93f63e34..00000000 --- a/ideexpert/DMVC.Expert.NewUnitWizard.pas +++ /dev/null @@ -1,166 +0,0 @@ -{***************************************************************************} -{ } -{ DUnitX } -{ } -{ Copyright (C) 2015 Vincent Parrett & Contributors } -{ } -{ vincent@finalbuilder.com } -{ http://www.finalbuilder.com } -{ } -{ } -{***************************************************************************} -{ } -{ Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 } -{ } -{ Unless required by applicable law or agreed to in writing, software } -{ distributed under the License is distributed on an "AS IS" BASIS, } -{ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } -{ See the License for the specific language governing permissions and } -{ limitations under the License. } -{ } -{***************************************************************************} - -unit DUnitX.Expert.NewUnitWizard; - -interface - -{$I DUnitX.inc} - -uses - ToolsApi, - {$IFDEF USE_NS} - VCL.Graphics; - {$ELSE} - Graphics; - {$ENDIF} - -type - TDUnitXNewUnitWizard = class(TNotifierObject, IOTAWizard, - IOTARepositoryWizard, IOTARepositoryWizard80, IOTAProjectWizard) - protected - FIcon: TIcon; - public - // IOTARepositoryWizard80 - function GetGalleryCategory: IOTAGalleryCategory; - function GetPersonality: string; - // IOTARepositoryWizard60 - function GetDesigner: string; - // IOTARepositoryWizard - function GetAuthor: string; - function GetComment: string; - function GetPage: string; - function GetGlyph: Cardinal; - - // IOTAWizard - function GetIDString: string; - function GetName: string; - function GetState: TWizardState; - { Launch the AddIn } - procedure Execute; - constructor Create; - destructor Destroy; override; - end; - -implementation - -uses - DUnitX.Expert.Forms.NewUnitWizard, - DUnitX.Expert.CodeGen.NewTestUnit, - Controls, - Forms, - Windows; - -{ TNewBatchJobWizard } - -constructor TDUnitXNewUnitWizard.Create; -begin - FIcon := TIcon.Create; - FIcon.LoadFromResourceName(HInstance, 'DUnitXNewUnitIcon'); -end; - -destructor TDUnitXNewUnitWizard.Destroy; -begin - FIcon.Free; - inherited; -end; - -procedure TDUnitXNewUnitWizard.Execute; -var - WizardForm : TfrmDunitXNewUnit; - ModuleServices : IOTAModuleServices; - Project : IOTAProject; - TestUnit : IOTAModule; -begin - WizardForm := TfrmDunitXNewUnit.Create(Application); - try - if WizardForm.ShowModal = mrOk then - begin - ModuleServices := (BorlandIDEServices as IOTAModuleServices); - Project := GetActiveProject; - TestUnit := ModuleServices.CreateModule( - TNewTestUnit.Create(WizardForm.CreateSetupTearDownMethods, - WizardForm.CreateSampleMethods, - WizardForm.TestFixtureClasaName )); - Project.AddFile(TestUnit.FileName,true); - end; - finally - WizardForm.Free; - end; -end; - -function TDUnitXNewUnitWizard.GetAuthor: string; -begin - result := 'DUnitX Team - https://github.com/VSoftTechnologies/DUnitX'; -end; - -function TDUnitXNewUnitWizard.GetComment: string; -begin - result := 'Create New DUnitX Test Unit'; -end; - -function TDUnitXNewUnitWizard.GetDesigner: string; -begin - result := dAny; -end; - -function TDUnitXNewUnitWizard.GetGalleryCategory: IOTAGalleryCategory; -begin - result := (BorlandIDEServices as IOTAGalleryCategoryManager) - .FindCategory(sCategoryDelphiNewFiles); -end; - -function TDUnitXNewUnitWizard.GetGlyph: Cardinal; -begin - result := CopyIcon(FIcon.Handle); -end; - -function TDUnitXNewUnitWizard.GetIDString: string; -begin - result := 'DunitX.Wizard.NewUnitWizard'; -end; - -function TDUnitXNewUnitWizard.GetName: string; -begin - result := 'DUnitX Unit'; -end; - -function TDUnitXNewUnitWizard.GetPage: string; -begin - result := 'Delphi Files'; -end; - -function TDUnitXNewUnitWizard.GetPersonality: string; -begin - result := sDelphiPersonality; -end; - -function TDUnitXNewUnitWizard.GetState: TWizardState; -begin - result := [wsEnabled]; -end; - -end. diff --git a/ideexpert/DMVC.Expert.NewUnitWizardEx.pas b/ideexpert/DMVC.Expert.NewUnitWizardEx.pas index 5b412e12..d40b4f4f 100644 --- a/ideexpert/DMVC.Expert.NewUnitWizardEx.pas +++ b/ideexpert/DMVC.Expert.NewUnitWizardEx.pas @@ -48,9 +48,9 @@ implementation uses DMVC.Expert.Forms.NewUnitWizard, DMVC.Expert.CodeGen.NewControllerUnit, - Controls, - Forms, - Windows, + Vcl.Controls, + Vcl.Forms, + WinApi.Windows, ExpertsRepository; resourcestring diff --git a/ideexpert/DMVC.Expert.ProjectWizard.pas b/ideexpert/DMVC.Expert.ProjectWizard.pas deleted file mode 100644 index cc50877b..00000000 --- a/ideexpert/DMVC.Expert.ProjectWizard.pas +++ /dev/null @@ -1,185 +0,0 @@ -{***************************************************************************} -{ } -{ DUnitX } -{ } -{ Copyright (C) 2015 Vincent Parrett & Contributors } -{ } -{ vincent@finalbuilder.com } -{ http://www.finalbuilder.com } -{ } -{ } -{***************************************************************************} -{ } -{ Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 } -{ } -{ Unless required by applicable law or agreed to in writing, software } -{ distributed under the License is distributed on an "AS IS" BASIS, } -{ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } -{ See the License for the specific language governing permissions and } -{ limitations under the License. } -{ } -{***************************************************************************} - -unit DUnitX.Expert.ProjectWizard; - -interface - -{$I DUnitX.inc} - -uses - ToolsApi, - {$IFDEF USE_NS} - VCL.Graphics; - {$ELSE} - Graphics; - {$ENDIF} - - -type - TDUnitXNewProjectWizard = class(TNotifierObject,IOTAWizard,IOTARepositoryWizard, IOTARepositoryWizard80, IOTAProjectWizard) - protected - FIcon : TIcon; - public - // IOTARepositoryWizard80 - function GetGalleryCategory: IOTAGalleryCategory; - function GetPersonality: string; - // IOTARepositoryWizard60 - function GetDesigner: string; - // IOTARepositoryWizard - function GetAuthor: string; - function GetComment: string; - function GetPage: string; - function GetGlyph: Cardinal; - - - // IOTAWizard - function GetIDString: string; - function GetName: string; - function GetState: TWizardState; - { Launch the AddIn } - procedure Execute; - constructor Create; - destructor Destroy; override; - end; - - -implementation - -uses - DUnitX.Expert.Forms.NewProjectWizard, - DUnitX.Expert.CodeGen.NewTestProject, - DUnitX.Expert.CodeGen.NewTestUnit, - DccStrs, - Controls, - Forms, - Windows; - -{ TNewBatchJobWizard } - -constructor TDUnitXNewProjectWizard.Create; -begin - FIcon := TIcon.create; - FIcon.LoadFromResourceName(HInstance,'DUnitXNewProjectIcon'); -end; - -destructor TDUnitXNewProjectWizard.Destroy; -begin - FIcon.Free; - inherited; -end; - -procedure TDUnitXNewProjectWizard.Execute; -var - WizardForm : TfrmDunitXNewProject; - ModuleServices : IOTAModuleServices; - Project : IOTAProject; - Config : IOTABuildConfiguration; - TestUnit : IOTAModule; -begin - WizardForm := TfrmDunitXNewProject.Create(Application); - try - if WizardForm.ShowModal = mrOk then - begin - if not WizardForm.AddToProjectGroup then - begin - (BorlandIDEServices as IOTAModuleServices).CloseAll; - end; - ModuleServices := (BorlandIDEServices as IOTAModuleServices); - // Create Project Source - ModuleServices.CreateModule(TTestProjectFile.Create); - Project := GetActiveProject; - Config := (Project.ProjectOptions as IOTAProjectOptionsConfigurations).BaseConfiguration; - Config.SetValue(sUnitSearchPath,'$(DUnitX)'); - // Create Test Unit - if WizardForm.CreateTestUnit then - begin - TestUnit := ModuleServices.CreateModule( - TNewTestUnit.Create(WizardForm.CreateSetupTearDownMethods, - WizardForm.CreateSampleMethods, - WizardForm.TestFixtureClasaName )); - Project.AddFile(TestUnit.FileName,true); - end; - - - end; - finally - WizardForm.Free; - end; -end; - -function TDUnitXNewProjectWizard.GetAuthor: string; -begin - result := 'DUnitX Team - https://github.com/VSoftTechnologies/DUnitX'; -end; - -function TDUnitXNewProjectWizard.GetComment: string; -begin - result := 'Create New DUnitX Test Project'; -end; - -function TDUnitXNewProjectWizard.GetDesigner: string; -begin - result := dAny; -end; - -function TDUnitXNewProjectWizard.GetGalleryCategory: IOTAGalleryCategory; -begin - result := (BorlandIDEServices as IOTAGalleryCategoryManager).FindCategory(sCategoryDelphiNew); -end; - -function TDUnitXNewProjectWizard.GetGlyph: Cardinal; -begin - result := CopyIcon(FIcon.Handle); -end; - -function TDUnitXNewProjectWizard.GetIDString: string; -begin - result := 'DunitX.Wizard.NewProjectWizard'; -end; - -function TDUnitXNewProjectWizard.GetName: string; -begin - result := 'DUnitX Project'; -end; - -function TDUnitXNewProjectWizard.GetPage: string; -begin - // Results not used if IOTARepositoryWizard80.GetGalleryCategory implemented - result := 'Delphi Project'; -end; - -function TDUnitXNewProjectWizard.GetPersonality: string; -begin - result := sDelphiPersonality; -end; - -function TDUnitXNewProjectWizard.GetState: TWizardState; -begin - result := [wsEnabled]; -end; - -end. diff --git a/ideexpert/DMVC.Expert.Registration.pas b/ideexpert/DMVC.Expert.Registration.pas index 14f28574..0b02f6ef 100644 --- a/ideexpert/DMVC.Expert.Registration.pas +++ b/ideexpert/DMVC.Expert.Registration.pas @@ -30,7 +30,7 @@ unit DMVC.Expert.Registration; -{.$R DelphiMVCFrameworkSplash.res} +{ .$R 'SplashScreenIcon.RES' } interface @@ -41,66 +41,50 @@ implementation uses ToolsApi, + DesignIntf, System.SysUtils, - Vcl.Dialogs, DMVC.Expert.ProjectWizardEx, DMVC.Expert.NewUnitWizardEx, - Vcl.Graphics, Winapi.Windows; -var - AboutBoxServices: IOTAAboutBoxServices = nil; - AboutBoxIndex: Integer = 0; - -resourcestring - resPackageName = 'DelphiMVCFramework'; - resLicense = 'OpenSource (Apache 2)'; - resAboutCopyright = 'Copyright Daniele Teti and the DMVCFramework Team'; - resAboutTitle = 'DelphiMVCFramework'; - resAboutDescription = 'https://github.com/danieleteti/delphimvcframework'; - procedure Register; begin + ForceDemandLoadState(dlDisable); TDMVCNewProjectWizard.RegisterDMVCProjectWizard(sDelphiPersonality); TDMVCNewUnitWizard.RegisterDMVCNewUnitWizard(sDelphiPersonality); end; -procedure RegisterSplashScreen; -var - LBmp: Vcl.Graphics.TBitmap; -begin - LBmp := Vcl.Graphics.TBitmap.Create; - LBmp.LoadFromResourceName(HInstance, 'SPLASH'); - SplashScreenServices.AddPluginBitmap(resPackageName, LBmp.Handle, False, resLicense, ''); - LBmp.Free; -end; - -procedure RegisterAboutBox; -var - LProductImage: HBITMAP; -begin - Supports(BorlandIDEServices, IOTAAboutBoxServices, AboutBoxServices); - LProductImage := LoadBitmap(FindResourceHInstance(HInstance), 'SPLASH'); - AboutBoxIndex := AboutBoxServices.AddPluginInfo(resPackageName, resAboutDescription, LProductImage, False, resLicense); -end; - -procedure UnregisterAboutBox; -begin - if (AboutBoxIndex = 0) and Assigned(AboutBoxServices) then - begin - AboutBoxServices.RemovePluginInfo(AboutBoxIndex); - AboutBoxIndex := 0; - AboutBoxServices := nil; - end; -end; +// procedure RegisterSplashScreen; +// var +// LBmp: Vcl.Graphics.TBitmap; +// begin +// LBmp := Vcl.Graphics.TBitmap.Create; +// LBmp.LoadFromResourceName(HInstance, 'SPLASH'); +// SplashScreenServices.AddPluginBitmap(resPackageName, LBmp.Handle, False, resLicense, ''); +// LBmp.Free; +// end; +// +// procedure RegisterAboutBox; +// var +// LProductImage: HBITMAP; +// begin +// Supports(BorlandIDEServices, IOTAAboutBoxServices, AboutBoxServices); +// LProductImage := LoadBitmap(FindResourceHInstance(HInstance), 'SPLASH'); +// AboutBoxIndex := AboutBoxServices.AddPluginInfo(resPackageName, resAboutDescription, LProductImage, False, resLicense); +// end; +// +// procedure UnregisterAboutBox; +// begin +// if (AboutBoxIndex = 0) and Assigned(AboutBoxServices) then +// begin +// AboutBoxServices.RemovePluginInfo(AboutBoxIndex); +// AboutBoxIndex := 0; +// AboutBoxServices := nil; +// end; +// end; initialization -// RegisterSplashScreen; -// RegisterAboutBox; - finalization -// UnregisterAboutBox; - end. diff --git a/ideexpert/DMVC.Splash.Registration.pas b/ideexpert/DMVC.Splash.Registration.pas new file mode 100644 index 00000000..3682cd44 --- /dev/null +++ b/ideexpert/DMVC.Splash.Registration.pas @@ -0,0 +1,44 @@ +unit DMVC.Splash.Registration; + +interface + +uses + Winapi.Windows; + +var + bmSplashScreen: HBITMAP; + // iAboutPluginIndex: Integer = 0; + +implementation + +uses + ToolsAPI, SysUtils, Vcl.Dialogs, + MVCFramework.Commons; + +resourcestring + resPackageName = 'DelphiMVCFramework ' + DMVCFRAMEWORK_VERSION; + resLicense = 'Apache License, Version 2.0'; + resAboutCopyright = 'Copyright Daniele Teti and the DMVCFramework Team'; + resAboutTitle = 'DelphiMVCFramework'; + resAboutDescription = 'https://github.com/danieleteti/delphimvcframework'; + +initialization + +{ Add Splash Screen, but this doesn't work in Tokyo + if there is a Register procedure in the same package. } + +bmSplashScreen := LoadBitmap(hInstance, 'SplashScreen'); +(SplashScreenServices as IOTASplashScreenServices).AddPluginBitmap( + resPackageName, + bmSplashScreen, + False, + resLicense); + +finalization + + +// Remove Aboutbox Plugin Interface +// if iAboutPluginIndex > 0 then +// (BorlandIDEServices as IOTAAboutBoxServices).RemovePluginInfo(iAboutPluginIndex); + +end. diff --git a/ideexpert/DMVC_IDE_Expert_D101Berlin.dpk b/ideexpert/DMVC_IDE_Expert_D101Berlin.dpk index 74133a4f..6723a157 100644 --- a/ideexpert/DMVC_IDE_Expert_D101Berlin.dpk +++ b/ideexpert/DMVC_IDE_Expert_D101Berlin.dpk @@ -33,7 +33,10 @@ package DMVC_IDE_Expert_D101Berlin; requires rtl, designide, - ExpertsCreators; + ExpertsCreators, + IndySystem, + IndyProtocols, + IndyCore; contains DMVC.Expert.CodeGen.SourceFile in 'DMVC.Expert.CodeGen.SourceFile.pas', @@ -47,6 +50,7 @@ contains DMVC.Expert.CodeGen.NewControllerUnit in 'DMVC.Expert.CodeGen.NewControllerUnit.pas', DMVC.Expert.NewUnitWizardEx in 'DMVC.Expert.NewUnitWizardEx.pas', DMVC.Expert.ProjectWizardEx in 'DMVC.Expert.ProjectWizardEx.pas', - DMVC.Expert.CodeGen.NewWebModuleUnit in 'DMVC.Expert.CodeGen.NewWebModuleUnit.pas'; + DMVC.Expert.CodeGen.NewWebModuleUnit in 'DMVC.Expert.CodeGen.NewWebModuleUnit.pas', + DMVC.Splash.Registration in 'DMVC.Splash.Registration.pas'; end. diff --git a/ideexpert/DMVC_IDE_Expert_D101Berlin.dproj b/ideexpert/DMVC_IDE_Expert_D101Berlin.dproj index 1ddd3da8..2ad14c66 100644 --- a/ideexpert/DMVC_IDE_Expert_D101Berlin.dproj +++ b/ideexpert/DMVC_IDE_Expert_D101Berlin.dproj @@ -59,14 +59,14 @@ false - rtl;$(DCC_UsePackage) + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) 1033 Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) true - rtl;$(DCC_UsePackage) + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) DEBUG;$(DCC_Define) @@ -95,6 +95,9 @@ + + + @@ -113,6 +116,7 @@ + ICON DMVCNewProjectIcon @@ -121,6 +125,10 @@ ICON DMVCNewUnitIcon + + BITMAP + SplashScreen + Cfg_2 Base @@ -205,7 +213,16 @@ true - + + + 0 + .dll;.bpl + + + 1 + .dylib + + Contents\Resources @@ -545,16 +562,7 @@ 1 - - - 0 - .dll;.bpl - - - 1 - .dylib - - + diff --git a/ideexpert/DMVC_IDE_Expert_D101Berlin.dres b/ideexpert/DMVC_IDE_Expert_D101Berlin.dres index 959a857a08051af97526ef79885d5c77dbcb3c3e..367cd6bba2261418ded69251772015cd5e8538e4 100644 GIT binary patch delta 1083 zcmZXTSxgf_7{|9pBpMRqg(fB>#u!n`>20Dyl%TaGKmiGnh-bX@!8ae&H=lf{lyW41 z*OM`7ic*EP92RJ#ihvYQkWkbHfzWGrXJ=;DZ?{OR&VD=l?fm}Ve`fY*aK^N{V{SL9 z8qO4ZmoUt3hG8UW5u<1F7%h_p*TZlgWD1yUIC6o8TN<-;@t-^ql6CW^O3A|H#!7~{ zvGRW1qIlCYy=txLgq z>h0|Xe~-sAJv|)?g|h$m0%uVaDWzb_^E@mr7z`Fap2?_VO)Wz(4ctN{AP|5I#HI&& z)kb+gv2k~7ytrSU*ewS3?9;FRu;swCj{|B0n^qlcaQuki z)socnot}E?ORHfM4QzpV#xui5@Cr$~+018D2NMl^l99jOogO;s~)A+qLdohNL?wU*9qHd(2i=9UWGEM_?$<)XD)2L z{<>8twxE44@cx(hfEi~t;;dJ=v<)|XA&Q;+I+v~Q{7K7f!r@k;X{SfuQEewZ^p+lM zq9x7YNflMXr)jaYMJROATqn(YPxD=(uA63CX}*oTj!K$H z$;m--dXSuPle2D8)J+PS@uWZ6^qK?f>@qy(#^;Cdg&}-#2$z4vg?4 - {516CEAEF-DA74-4CBA-9344-CD4C630B73A8} + {84344511-1DC2-41BA-8689-9F36C1D475BE} DMVC_IDE_Expert_D102Tokyo.dpk 18.2 - VCL + None True Debug Win32 @@ -13,6 +13,36 @@ true + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + true Base @@ -39,23 +69,7 @@ Base true - - true - Cfg_2 - true - true - - ..\;$(DCC_UnitSearchPath) - DMVC_IDE_Expert_D102Tokyo - DelphiMVCFramework - IDE Expert - 1033 - true - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - true - true - System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) - All .\$(Platform)\$(Config) .\$(Platform)\$(Config) false @@ -63,12 +77,42 @@ false false false + true + true + System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + All + DMVC_IDE_Expert_D102Tokyo + + + None + android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) + + + None + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) + + + None + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) + + + None + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) + + + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) + + + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) - rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) + Debug true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) rtl;IndySystem;IndyProtocols;IndyCore;$(DCC_UsePackage) @@ -82,10 +126,7 @@ true - C:\Program Files (x86)\Embarcadero\Studio\17.0\bin\bds.exe - true false - CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) false @@ -93,10 +134,6 @@ 0 0 - - true - CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) - MainSource @@ -107,34 +144,23 @@ + + + + + - - -
frmDMVCNewUnit
- dfm -
+
frmDMVCNewProject
- dfm
- - - - - + +
frmDMVCNewUnit
+
- - - - - ICON - DMVCNewProjectIcon - - - ICON - DMVCNewUnitIcon - + + Cfg_2 Base @@ -155,57 +181,8 @@ DMVC_IDE_Expert_D102Tokyo.dpk - - True - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - - - - - - - - - - - - - - - - - + (untitled) Embarcadero C++Builder Office 2000 Servers Package Embarcadero C++Builder Office XP Servers Package Microsoft Office 2000 Sample Automation Server Wrapper Components @@ -213,6 +190,26 @@ + + + true + + + + + true + + + + + true + + + + + true + + DMVC_IDE_Expert_D102Tokyo.bpl @@ -252,7 +249,6 @@ 1
- library\lib\armeabi-v7a @@ -569,22 +565,25 @@ 1 - + - + + False + False + False + False + False + False True False - - C:\dev\DUnitX\Expert\Test\DUnitX_IDE_Expert_XE5Tests.dproj - 12 diff --git a/ideexpert/DUnitX_IDE_Expert_D10Seattle.res b/ideexpert/DUnitX_IDE_Expert_D10Seattle.res deleted file mode 100644 index a64cea33b7bbf9c30d10d7750693ab849f870abc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448 zcmZ9IO-chn5QV>ySr}Iy!G&uXVK#zb0{#&2k7USJhD0SG8Ax>JVZ4a9aqkTrzwWV# zNkPq2cfI%ObpafhZQG^gM)b4P-xuS-DCp%0)Xz%G31c4oUNEv6a>uRbq2EjE5TE(? z4+MUvk^X0~3qde-{;v3lcVk{zGH1cFYI9zARC&P@js5qCDJXSyVwQRcjtX|wOZbVL zB`evD%n-*MiAjl^fWH^jFyoD>Q@2^$oO5+DQMIfzY3&RSuc|4xAwY8O%m2vy5GrE?SmseL; zH#RoBUhmG%PB0k67*k63SpbnhAOH&M>+3F;%i(ZXtyYuC^iVTU^xUM^>kS5j#bUA9 zY%?=6pzn6OeLi0}9R6Dhl))8a3^Wl!;4KsiRrYM>ba1W4CAbAjAi@X$00ZzoGZN)f zGg7p0`Q6@)?_mj8(oydm&1~gT)m(kw=cHf>0O%C;1Qlv7OB?F4ew9E6mOrMOR9Bn8?jpQ2CG~|^)N{_%&L01rTQq?H8lkcDROXCwwK}Xpe z&S*nv%@IqbuL6FaB?8Cy<;^JV1s@AVGoP-B>oOp^F$$v1Z5d{%N1=)8*L_rY{+4p@3 zNyy5+g|H+6l0YH^!Wz~rED2$U5Vimz^n8<}MdiLFPxA6e9w(p6qwc*`b*p}L>Q|>u zZ7(%HwBRR?mH$1%zu)t(J-40t|0j?AlHbQ3TfqC@{OPfZe-#h-`J4VJ0*Zhlpa>`e zihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhl zpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa=vJ0xMUpeDS51KJM7@?AfzHlr7DQ zBA^KP0fEJf7eDpqKeu`J-7{y-_#rxtLJ?2|f(QZShaf6U&59!6X9ScV{0yi@rw9ZQ z0?H3TRG69-MZnJpC_nfaP>oIz2qFZOAA+bbH7kmMpAk@g@H3zqogxrK2q-@UQDJIU z6ahaYp#0!xKs7o=Aczo9eh8w%)T}51envp~!Owtdbc#R_A)x#aM1`qYQ3U*qfbxT% z0oCXffgnOa`5}l3Q?sH7_!$A^2R{R<(J2B!gn;rx5EZ6oMG^2b0?H4522`U{1pJCX zVPWCMjTYR{X2H-;H~|&3l}cLuU)%x)hb`Ey?gf( zj~(3AZTNu?ojiGR_3G7g=glJ}TuYZOB@M1Y-Xx_tR^RCF}C+nJf^)`NLiR#rx7 z0z1WR9#-inDJj{wX_GIdkDsKZBs;>bX=zeq*KgdgpWE)-ygUSetDvC3er~%dapIw5 zZ9g||-0)p8y~tH=ZtmK3>*j}s5s4Vb7%LSJ+TWHl8glr5y>ejMMXuf z-sH)t!a^V6!dp&mu8HT?ty`21f7h>HHxC2pICbjO@Nd3p^zzGptyk~qXP#jnCw_4^ zYSd`(;K8pqZ(hGag9Qr~*h$LF%*6k*fBB0q*Vu965JCxl@#4jHAAImqqeipm%&{XB zet4}(lU}`hH+=qiqW$yJPm>a^XP$lbx#yni+O_Nc{rg>cCLtj~yg_JogtmLzwr#|T zx2;>Z+Rx+S;&@164jedOKTlZk-n_Aohfeqh`=P`A-KH<_6Fu`kFPz=$cx7(0GH2l@ zYQ}FbUpQnQ+K&9Z#F$zCwLH8*S=k-?xx;<$UfIdq^{b;^37hof{PBN3Z`>1H^T+>; z+m(?o7987DcGnr4y7NYh7UT}`cEskmMe=*~>h=5!FMQO#z2lXaTgs8mzI-Wt{IqJ_ z+Ky_%#EDX5@RI%9cGFZLb@l4kr){#I+wPQ<6yhP}85tSo`RUWAUw-8k9}_ly{CE>k z90*u;c6PUJ-H7%tfBh>$$VFXvvt`Sa)YQ9o?;3A3Ozk^#Ad$!?$&f080EdN#U%7I{ z5iPgm$j4OSjRxApuxr;Y62pbKnuk?75|fe;Y%ZHT9ii65$G`IGtM9%4zL$a^_=g{T z1PBeNgWbA?goG?vvSik*S*_oBM=~x&Ilr=)?c2AHLT}QvsV~=z88Zw&oIiiQ#hY&u z=j6$g?bHfC$hSyL>(;F&OqhV?5D^j4w_iW0-IS55wA5*S*uQgT$hg0Yp7FbD#iwjE zD!K37J9cDM)QsQF8~a4m^k1j0>zTE4W>)6x&1*WrPCSg9{_E@mi{KDDl<)j-_3G7* z9Xon=asyLVTV zkOfozKOikgyN?MgzIxS87z%u!K79}~TGh?T$)-^w!VVvQ%=2#DyCeAo znKEUHcuU=~#l(QOPX`P@fKhwauU~JTi=*V$Egw^bH@oNc5cxq=7jlYHWY94Ak~V_3 zTn>IPetxW@N`7ej-g}oWU2;TA+MsBd8RQcZ6YaNkmmf+?OExTPL+uWo@bl~g3++tV z?p^6)$~!63|KoIirOuJ~fidP!_&HicM#|TAsG8;n`&&QOU8DT)V-sWhrw8#|!-nVp z%a$#3^kgwrq2Z%rCnqPv18=u#1rK1IaMT)F)wkY$oBGnBLkFxAcH|H2eu(@K8X8Jo z=%l#aH5!PF+V7noN=r*G7Zp*j`J?IQ))N|4@`I=TGHp=PrcFsLikz+I)LnkKeXDqJ z$WzpPYWJRP6K%!7pogEei(BAl{nEEfOK+Oz#zD7Y{nFNWSQ7HI-NgtnKTu8Rr-%UX zi}e!W;qPX}pFUeOJVbsN@Y!eNrAN=66r&?ma(ndXQ9N*Y z;s^4To}T{Ah!H4Ybkn#xcj+>6)F@1XZX@*04^Vf8XM0rt{{2Y_{XRRjb(bGXZeGN| zSiujEr>yJ2@PsR3S1#u+p7($FsUQ&7_vKF*L%~D%q+i{rWr zhyd{W`RAWAdUE*4kwJq74Hz)syYDLXo&v@XyLRs$GiD3|DGB3rmEpsOGs@tJC8QJ4 zvsW*-K(AZ34$I-YZQI7g#v+GUC)|2N@-bTC!C?$Ho?%Ob_NyU7I(F(L2_uEj4#RwI zS>hq`12#r7GUD5B9Sm>s0?Xln%Pl|90l|1EW=t@_u!D)Fe*OCR2g!j02jam*B@XZW zfaMwMu_K7Nom|oBYu2opJaH@F~7=A!(rca-aPELu}t5*-pbKACU(Zjh#{pLBpxG`;+gy9GP zKcLKDJrl`f^Z}i}RjXE#PLc!zFw9{mN!-m|f1T7$n?Bw36;F;IKi;B63xd=95i=(` zx%Ebq+O%0S;z9Rz^?+fsPv5?@gLruU`R7R$RR(2)TYg868AHk)p&lYXFd{(07`=5Q z$=t%Uf~qS&po0zh`fK1q(SrRB9Xf+;%g%ZTO+^M2aaChvWFsHRvIX#-2K!Y+eO`A8738rz6!= zz^}ggiXklq%ITXka{zM|!{QW{Tmj|>gckcDazfe$fB7ZtGGd8vQgg?Q9ZS~$$wU`* zozg%M5)9)R7;OiJafWR0K&wiZJagAB`>k<%L7uws$tR!ib%q0AA#57Z6lvSJbLXJJ zgJtXk@^siV9y&kFsXP_I3)tIHx4A>mhUQeG^)c7 zF)=YBZ^6M2yV6D(e!y}4nwu7_HuD2)KzmAw&^p)}9b$llW7rop8xH~I2jqFSZ(Hq6)RRyzRU`6TT_q_`u=#}3NSyQrSnmAQ4D|vN#mf;%P2V>7|Ns}GtY5U z$q!5zkQ`x!aI}dg9#8xLAQ<`x{=tVI;x_(`gMiY(nK*Hx%^r1;A5bITY14+xPMtOl zGquU1aiHT39Xb>bbg%3#hVp|zbgSfYT+D0G0+t7v-f(EQn~9FKnIBMzDPMZijyBrJ zKx%5LXqW-!2j)kSFvQQUWhPaK>x_yahL&%=#Y}$l97mP>fT5L`xiGug0d2P@egGxu zs)vV%+y0Fkr3)~L9Qv}EtuFEd6OtP@ZcJV_Y}jBj=x{_wN2A3-<9T^`=9Th;KymfT ziKX+Og&($W{*w9CIMS0oGbkB{PyCP_A3ph?!X`d>>O`^$=t)YA2jh6K`IEGOGJz0d zouj{OVrJ$ZrU`^3koHx3xh}Tyg&(dK9Y4Hx!J$3j*RS615qpwSQxL}SVEjO* zk|6;EVAkx}CMt&mTRpvL`~;F8=Zv|+I%Rb1(n2VSe>hZ84H%Fu%s8-*w2 z8TaIiq>V|5c4BO|EC_;BZN;We^8>3?>x_FZ|#LBDbET)YWr!_yJRVY;3G+obn|2_<=!?#;?6bHJ|O76+I!Jn3z~4 zKQP4tKU|EZ8dQUoADAD)3=qbeZ4OcWLCQUA=WIBEm08S^+P7mm?$}v>D7tvWNQF3* zAE+G;Ow6s@^_#xv53=-;Z>JO;>Vs%%35Zvfyx*gv%{R_M9+faLQD?bP_ zTQ>BC6IMmO#0=__xe2(L<3y*!ft&I}P4I&QWOJ+hV4x6(%#V72`47qu)!hFfe&OqI z!lt;7@7}#tTy(5_SBJ5W=Nww-o0b3BmVFBJhs_0TSn@XWG z9NZm3iQK+*B`&&gg*wsEQ9!kpADG`F0)eN(*=H55z)|Iqs^;Y%MYZDIRLOL`~KO}-Fa^Q7|{#-{3u`SlO}}@ z$0Mabptw$*I+YS+#}!WuulmD7(I1ZNi)8mm=06l)E}uC@NoAxAg&*j2+^jsrS)2J` z+4AL#Z?al5tMcxhQt41I*mo2UAY9w#KR9T?+&)tLz!p`EEmAr|hYd3bI2_6kf#(O< zU`Oh3*noxGX3vKs`=jV?uu0T~GnHoa)nc*YLtIQ_QxNPw$p#K#6MuQ^ zNTpo`YBN8ux`C~XnNP^Y)+?JfZ)V{klE9<__E3@)l#s(i;RmK5Mn*<@5leaH*e5C| z^#^uEU^7hf$G)|5=gwvQh%5$SEt>-bBa=9)&ksx|d)@0F8-}nog!!oQ1J;J+;q~E% z)`=xH^dp$k%+@`~g4{wH&EI%KW+Ml_ ze?fZKCeEv1mcKOnQ48il$qz!&uD_Uu*q+5+2xbeOxU0_(uHSV$(e)RO^Dj#8+>~wQ zcBhZCOC)**o7J;QYaj**^SqYx1L;JIV3pIvNt4>OYlk?=)w5?$HVk2XmTUnLcz$pQ zp{Ls)yZ)js&Yy$^O}XHpJ_;J}IcH4RYpada83+FHT%Gw*>~uj##_iwOv11`*6(O`N9w93Nw;ceVDkS-NkeFR~z}4AJ`&Z_FQu824>Rf z$)WsUkg3t}3$t;J+0nu~KaeWSlAL9U{ByRZNu)^|Vf{&GRqzo?QQ-g@gT>ON;xV4!x0tK2dH1`l5N!PrAw zgZrHyW>oCn$p$|5hRNo9oDB&Hu4#}bEEM8Y6msD>@=Uh-^K75|d0CmqBUXLc|3OZ^ zi<$ig7HmpNPUojFvIz;Ca(CWM;>vcsii>Gda`Te-H~f&Fo9HQbOu1y@CFkQ5S_k<0 z*FK51@Il3K_QpQRHn6fy^rT6XJSB|X*r?#Z?rD6JM0yIlXwf2+6M}EwzTJ}_MkAmW$I&<_DSNek{`Nu>qeZM!pYe{COx);eeC7C4*h|ne`KSr)p2pQf7{Il!W6-) zjT_sWZF-+SNwMy=HnX*3!_8SpB&N-~@7}OZ3pM-@5fS0=Z*JMIm;rIZW>wxz*E>JV zpYXG*S1Rp)ZX$#?I5CsD95MCZ3QxK@R$F|^#*%DLZFY{$&Wa@zG1Hqcu^9(vaPyV} zH_dm8E*+JfA`a~dHQpSKgS+Rmk0o=iu3Wl5*8Cv+(7Ls!b$rZp5><2jgbDI>8WfH` z0aDITL&!_;IF;dG2t)A^3T%NfV^e zykfW(jTgaVl7q~_Ft3b*$;Jevs@gjz^R`C$fh{HZD4*a2aFY^;Ll#tW_zv~XyfXa2 zTqE<);edgOoXgBr_6t8ShlDuUPrK;K6~`ClHZdtlzU$xzwgzJom6wrNl~1B5)~Sf?p(kM57*Eyv|tI)6Z( zl-#(;0U10@j_=~IXNm`^fUM?-nfZIO+KX2Yzz?jLIC$`&MCW@th7ZRB=dd7D_IKZV z|9zgb!~j3`b8!=!q@4Y2I0DS}P^0`njgSRvkbwPB<3_4EsF##;(y=Y5h97$O?(Md& z5d$-&35eoh=1cp9AJWp(MFU*5dbKOrlE{7)hh*_-2S4ChN{5qA?Y(wQW^?oM1Px9+ zG!Jo9$q%gbvAYivme0ZYB$f7P)v8r?goYn5!`cUJ7(c8IlcRh-YTw>G6o+?ypjK{< z>r`6m=4A8J`CC~|g$J(qMQ^yRxn~N}S&xZ_om)oy?T0DT3Cr7-2U++!d%`#p!|mCE z?Gk7Hu_Sp*#N4RRXC{ zoS=scaM{`&1~)1c7i;wFPm3Et?bNw5L6~>#C{V)>ojZ4SUHD0G%;~avh~TJ;uBSZX zhpNp1H+Vp+bPx!e$C4K+i(AP=NMuXZ&nq`H#95>K0I+<~i7Q%>Kb?Vzt`gHR^d%UV}dqn`}>ty@m*byx*!xAQASQHw_fhcxPL_Kr3(kcCzmhX+PLb&TR+$(1X4Dp z+q|YT{+W%*o-^`Lejk7zC}k{yEXg$087aM4QUWu}k=!)6SFe4q2=Nt)^8I%02!#qk z0hLuusFtr21L{2r8--%49P-xi1JdPs5+$wDxbfqOmYTvv4ES*rD;g>L+VP4{q@<=w zwB{Ebo0Ve3zzOmw>ULd2P`|D?RJuH%%ev+o^Xg~RXzZ_&o#H-iRM1LX}x9Vob1m}#o8U-*HqQ-6i4;VzEv;cy@9C$tEBl&T8I za=G#YRd~|m$x?_&2pR|(fizf8$_axKYFBk<;Wqq0K#*slOe*D5ihVMUBU5Wj2>B;vsXuzcRjeaZ653} zr5b*~#58B_T(=k5N7BsvYC#?`ia1=y}@q%bWlP2SQ)<=k6t z5dZ?Bc8bBLcb`74t-s+1zDTsJ06l)<1ag8zVIabwK^k~P%k^P}AfXAMg;MJgeu@=8 zY-u7b*VjXbni<6wVr4AumW0vQh>VItkTNndmakZWb}ChABx zPmo8B8m~L{*Ru1@4{#J# zFHuWiCt|}5oc&RxoGu77&sX@zo5VYJGb8XA!6#kV<@2E zrkc}0v&;$}kfoRG4##o{COfe~+_La`)X@3kf69JP<$k9BCVcXfJmD5=!<{?V&3Dff zY$Jw{@jpG9<=)VQnPS88HiV6fZDK1eRGr=Fu65;Rgzu3AX}1Fp4}#KrCihz#LT1hY%jL3xov!T!f{_C@exz3LMbs zQ1&Ek!Vj=LB8{|g@oCD7(&r)Z@Px2PJGtoa@y8-jyu#LvH}S)VC{|a_mro#>=#8=j ziQsrP2_q5?z_mO05`Y=1Zu(( zL_$eCu#LlZPV-@$#qIeQCh=s4_L}8j0|pF`fHeIJ z7cM+>_^?rRjAtC4_#rzd2TDZPPMdfqSz&<#f(HSj)_SD6T$a>LZ985(2vtF9kz>;x$BpNJjL*YW0NS87h>CyI*fQw zQEr!1>Y}0^u)Jdbj_EA5Shx61E*$$Zrk*X_VKa$|%J2gqNV&NF0xb0iiT$L1e{g^< z=sqBgOnIWc7XMh8D9zm5Tvu{1-$F=WTAFeZp1ytiqKML7+rv!8GY$%u&!J?pxQ|1? zIg}Rup}Z(H=K7+zq9vO83&Y@t?ke^r@k1XI8DntM^n>ikjT`YJerg=Oe#r}b5*8jV z>ZS2!J80BMSZJ7ggEKynUfL=Aco{5Xw2symKc0pgs4}QP^Fu>Tl|j@28Ec7Kkg@I( z8&}+#HH_XSB_*M8efiZ_WD4yLu0z{*7$P?q{ENM+?pvC5LX?!5wbuDWPsv zURB}n6R=yu4-6D~|ERzP4i79O-s5+D3tjU$yMRaoUw7?^IKom=Rr+xR`BAr|ia$@S z2~kmhNj82AeYwU@m8sH?YbY;I=m%A#>x{8Idhu*t`N9uGNX(?xEiajFP=0tQu-BfCDnCeBxb`nSLlqf$uMDT0F zrzQB*zzi5X&S8xDG=H85)mZc9b8g z&kw1osVqzE-o3jS`v@9A@`WE5G9d3D;AIU|&;atNWkmU*`uyN&epC?1k}v$gR1?;= zGr@-GD?yND&4P`9@`IpJ9s2|4Juxqo*{uu#+t>zy+ZTRdUXz@L;5w%_2oQM0v!MJS z0#F@(2x1XJH;^g)%&+s5O(y0wY}k-_)a>Nr$&Ws-qX;NJNWm#TxD{X~PRr&$%*^*R z*>CN-b&vzAR2*w;-A1Sn>lOma4^m#r51!dWu<}*M0=*C_m6t z$xf#%9`p;y$`77kL_@&zDyx7|5?G+k7C>y>%yRz8Q>HYk7`f=wsnglBXFbKB&+9G% z0pkbu2%;Hc*B8HFMJvXppzPJ4{NNWny+^{jRCan{X|U`PKwkr$ft?vp8`yk+h1DnX z^KHGtdu;l)4j~X2en5EGcLMtr>p=Yo4r}C@d*GJ{*$tT8Hn`Y>$S)BFStMu?j8m{> zAItpNU;&`mV`S*ip=`C`cJId^%l;#qourK$rCt=c+ZpMRg+(*22q*%IfFhs>C<2Or zBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs> gC<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IK+PfW|G-#Ywg3PC literal 0 HcmV?d00001