├── .gitattributes ├── screenshot.png ├── AutoBlogAI.dpr ├── LICENSE ├── README.md ├── uMainForm.vlb ├── uMainForm.pas └── AutoBlogAI.dproj /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FMXExpress/AutoBlogAI/HEAD/screenshot.png -------------------------------------------------------------------------------- /AutoBlogAI.dpr: -------------------------------------------------------------------------------- 1 | program AutoBlogAI; 2 | 3 | uses 4 | System.StartUpCopy, 5 | FMX.Forms, 6 | uMainForm in 'uMainForm.pas' {MainForm}; 7 | 8 | {$R *.res} 9 | 10 | begin 11 | Application.Initialize; 12 | Application.CreateForm(TMainForm, MainForm); 13 | Application.Run; 14 | end. 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 FMXExpress 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AutoBlogAI 2 | Automatically build outlines and blog posts using GPT-3.5-turbo, GPT-4, and Vicuna-13b LLMs using a cross-platform desktop client. 3 | 4 | Language Models supported: 5 | * vicuna-13b 6 | * gpt-4 - OpenAI 7 | * gpt-4-0314 - OpenAI 8 | * gpt-4-32k - OpenAI 9 | * gpt-4-32k-0314 - OpenAI 10 | * gpt-3.5-turbo - OpenAI 11 | * gpt-3.5-turbo-0301 - OpenAI 12 | 13 | Built with [Delphi](https://www.embarcadero.com/products/delphi/) using the FireMonkey framework this client works on Windows, macOS, and Linux (and maybe Android+iOS) with a single codebase and single UI. At the moment it is specifically set up for Windows. 14 | 15 | It features a REST integration with Replicate.com and OpenAI for providing generative text functionality within the client. You need to sign up for an API keys to access that functionality. Replicate models can be run in the cloud or locally via docker. 16 | 17 | ``` 18 | docker run -d -p 5000:5000 --gpus=all r8.im/replicate/vicuna-13b@sha256:6282abe6a492de4145d7bb601023762212f9ddbbe78278bd6771c8b3b2f2a13b 19 | curl http://localhost:5000/predictions -X POST -H "Content-Type: application/json" \ 20 | -d '{"input": { 21 | "prompt": "...", 22 | "max_length": "...", 23 | "temperature": "...", 24 | "top_p": "...", 25 | "repetition_penalty": "...", 26 | "seed": "...", 27 | "debug": "..." 28 | }}' 29 | ``` 30 | 31 | # AutoBlogAI Desktop client Screenshot on Windows 32 | ![AutoBlogAI Desktop client on Windows](/screenshot.png) 33 | 34 | Other Delphi AI clients: 35 | 36 | [AI Code Translator](https://github.com/FMXExpress/AI-Code-Translator) 37 | 38 | [AI Playground](https://github.com/FMXExpress/AI-Playground-DesktopClient) 39 | 40 | [Song Writer AI](https://github.com/FMXExpress/Song-Writer-AI) 41 | 42 | [Stable Diffusion Text To Image Prompts](https://github.com/FMXExpress/Stable-Diffusion-Text-To-Image-Prompts) 43 | 44 | [Generative AI Prompts](https://github.com/FMXExpress/Generative-AI-Prompts) 45 | 46 | [Dreambooth Desktop Client](https://github.com/FMXExpress/DreamBooth-Desktop-Client) 47 | 48 | [Text To Vector Desktop Client](https://github.com/FMXExpress/Text-To-Vector-Desktop-Client) 49 | -------------------------------------------------------------------------------- /uMainForm.vlb: -------------------------------------------------------------------------------- 1 | [InputMemo] 2 | Coordinates=221,10,69,51 3 | 4 | [MaterialOxfordBlueSB] 5 | Coordinates=28,166,123,33 6 | 7 | [Layout1] 8 | Coordinates=219,166,53,33 9 | 10 | [PromptMemo] 11 | Coordinates=310,10,80,51 12 | 13 | [Layout2] 14 | Coordinates=77,166,53,33 15 | 16 | [] 17 | Coordinates=291,762,72,87 18 | Visible=True 19 | 20 | [BindSourceDB1] 21 | Coordinates=121,10,92,51 22 | 23 | [BindingsList1] 24 | Coordinates=338,87,82,33 25 | 26 | [OutputMemo] 27 | Coordinates=10,166,77,51 28 | 29 | [APIKeyButton] 30 | Coordinates=428,538,83,51 31 | 32 | [ShadowEffect4] 33 | Coordinates=761,403,88,33 34 | 35 | [ToolBar1] 36 | Coordinates=549,653,58,33 37 | 38 | [RESTResponseDataSetAdapter1] 39 | Coordinates=761,507,174,33 40 | 41 | [OAAPIKeyEdit] 42 | Coordinates=72,577,85,51 43 | 44 | [FDMemTable1] 45 | Coordinates=761,141,84,51 46 | 47 | [RESTClient1] 48 | Coordinates=428,249,76,69 49 | 50 | [RESTResponse1] 51 | Coordinates=102,236,96,303 52 | 53 | [RESTRequest1] 54 | Coordinates=458,1,265,123 55 | 56 | [StatusBar1] 57 | Coordinates=761,559,68,33 58 | 59 | [Label1] 60 | Coordinates=378,279,46,51 61 | 62 | [BindSourceDB2] 63 | Coordinates=542,513,92,51 64 | 65 | [BindSourceDB3] 66 | Coordinates=542,249,92,51 67 | 68 | [BindSourceDB4] 69 | Coordinates=390,210,92,51 70 | 71 | [StatusLabel] 72 | Coordinates=378,80,72,51 73 | 74 | [BindSourceDB5] 75 | Coordinates=428,407,92,51 76 | 77 | [HistoryMT] 78 | Coordinates=380,620,64,33 79 | Visible=False 80 | 81 | [TabItem4] 82 | Coordinates=106,666,59,33 83 | 84 | [TabControl2] 85 | Coordinates=27,666,74,33 86 | 87 | [TabItem5] 88 | Coordinates=973,1,59,33 89 | 90 | [BindSourceDB6] 91 | Coordinates=380,620,92,123 92 | 93 | [BindNavigator1] 94 | Coordinates=761,715,90,51 95 | 96 | [HistoryGrid] 97 | Coordinates=175,666,70,51 98 | Visible=True 99 | 100 | [Layout8] 101 | Coordinates=467,166,53,33 102 | 103 | [ModelsMT] 104 | Coordinates=814,792,64,33 105 | Visible=False 106 | 107 | [BindSourceDB7] 108 | Coordinates=580,690,92,123 109 | 110 | [Splitter1] 111 | Coordinates=369,577,55,33 112 | 113 | [ProgressBar] 114 | Coordinates=732,781,76,51 115 | 116 | [Splitter2] 117 | Coordinates=973,53,55,33 118 | 119 | [Timer] 120 | Coordinates=378,407,42,33 121 | 122 | [RequestVariationButton] 123 | Coordinates=378,337,132,51 124 | 125 | [ComposeButton] 126 | Coordinates=761,1,94,51 127 | 128 | [RESTClient2] 129 | Coordinates=23,70,76,69 130 | 131 | [FDMemTable2] 132 | Coordinates=340,887,100,285 133 | 134 | [RESTRequest3] 135 | Coordinates=260,577,104,105 136 | 137 | [RESTResponse2] 138 | Coordinates=548,796,96,303 139 | 140 | [RESTClient3] 141 | Coordinates=251,80,76,69 142 | 143 | [FDMemTable3] 144 | Coordinates=231,887,100,285 145 | 146 | [RESTResponse3] 147 | Coordinates=449,887,96,303 148 | 149 | [PredictionMemo] 150 | Coordinates=0,0,94,51 151 | 152 | [RESTRequest2] 153 | Coordinates=761,211,261,123 154 | 155 | [RESTResponseDataSetAdapter3] 156 | Coordinates=761,71,174,33 157 | 158 | [APIKeyEdit] 159 | Coordinates=299,255,69,51 160 | 161 | [RESTResponseDataSetAdapter2] 162 | Coordinates=1060,1,174,33 163 | 164 | [LoadRecordButton] 165 | Coordinates=102,70,107,51 166 | 167 | [VersionEdit] 168 | Coordinates=470,670,84,123 169 | 170 | -------------------------------------------------------------------------------- /uMainForm.pas: -------------------------------------------------------------------------------- 1 | unit uMainForm; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 | FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, 8 | FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, 9 | FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, 10 | FireDAC.Stan.StorageBin, FMX.Memo.Types, FMX.Controls.Presentation, 11 | FMX.ScrollBox, FMX.Memo, FMX.ListBox, FMX.StdCtrls, FMX.Layouts, Data.DB, 12 | FireDAC.Comp.DataSet, FireDAC.Comp.Client, System.Rtti, 13 | System.Bindings.Outputs, Fmx.Bind.Editors, Data.Bind.EngExt, 14 | Fmx.Bind.DBEngExt, Data.Bind.Components, Data.Bind.DBScope, REST.Types, 15 | FMX.Edit, FMX.Effects, REST.Response.Adapter, REST.Client, 16 | Data.Bind.ObjectScope, FMX.ListView.Types, FMX.ListView.Appearances, 17 | FMX.ListView.Adapters.Base, FMX.EditBox, FMX.ComboTrackBar, FMX.ComboEdit, 18 | FMX.ListView, FMX.TabControl, System.Threading 19 | {$IFDEF MSWINDOWS} 20 | , WinApi.Windows, FMX.MultiView, FMX.Grid.Style, Fmx.Bind.Grid, 21 | Data.Bind.Controls, Fmx.Bind.Navigator, Data.Bind.Grid, FMX.Grid 22 | {$ENDIF} 23 | ; 24 | 25 | type 26 | TMainForm = class(TForm) 27 | Layout1: TLayout; 28 | Layout2: TLayout; 29 | InputMemo: TMemo; 30 | PromptMemo: TMemo; 31 | MaterialOxfordBlueSB: TStyleBook; 32 | OutputMemo: TMemo; 33 | BindSourceDB1: TBindSourceDB; 34 | BindingsList1: TBindingsList; 35 | ToolBar1: TToolBar; 36 | ShadowEffect4: TShadowEffect; 37 | Label1: TLabel; 38 | APIKeyButton: TButton; 39 | OAAPIKeyEdit: TEdit; 40 | StatusBar1: TStatusBar; 41 | ComposeButton: TButton; 42 | RESTClient1: TRESTClient; 43 | RESTRequest1: TRESTRequest; 44 | RESTResponse1: TRESTResponse; 45 | RESTResponseDataSetAdapter1: TRESTResponseDataSetAdapter; 46 | FDMemTable1: TFDMemTable; 47 | RequestVariationButton: TButton; 48 | BindSourceDB2: TBindSourceDB; 49 | LinkFillControlToField: TLinkFillControlToField; 50 | BindSourceDB3: TBindSourceDB; 51 | LinkFillControlToField1: TLinkFillControlToField; 52 | BindSourceDB4: TBindSourceDB; 53 | StatusLabel: TLabel; 54 | BindSourceDB5: TBindSourceDB; 55 | TabControl2: TTabControl; 56 | TabItem4: TTabItem; 57 | TabItem5: TTabItem; 58 | HistoryGrid: TStringGrid; 59 | HistoryMT: TFDMemTable; 60 | BindSourceDB6: TBindSourceDB; 61 | LinkGridToDataSourceBindSourceDB6: TLinkGridToDataSource; 62 | BindNavigator1: TBindNavigator; 63 | Layout8: TLayout; 64 | ModelsMT: TFDMemTable; 65 | BindSourceDB7: TBindSourceDB; 66 | ProgressBar: TProgressBar; 67 | Timer: TTimer; 68 | Splitter1: TSplitter; 69 | Splitter2: TSplitter; 70 | LoadRecordButton: TButton; 71 | APIKeyEdit: TEdit; 72 | RESTClient2: TRESTClient; 73 | RESTResponse2: TRESTResponse; 74 | RESTRequest2: TRESTRequest; 75 | RESTResponseDataSetAdapter2: TRESTResponseDataSetAdapter; 76 | FDMemTable2: TFDMemTable; 77 | RESTClient3: TRESTClient; 78 | RESTResponse3: TRESTResponse; 79 | RESTRequest3: TRESTRequest; 80 | RESTResponseDataSetAdapter3: TRESTResponseDataSetAdapter; 81 | FDMemTable3: TFDMemTable; 82 | PredictionMemo: TMemo; 83 | VersionEdit: TComboBox; 84 | LinkListControlToField1: TLinkListControlToField; 85 | BlogOutputMemo: TMemo; 86 | KeywordEdit: TEdit; 87 | Label2: TLabel; 88 | Label3: TLabel; 89 | KeywordsEdit: TEdit; 90 | Label4: TLabel; 91 | procedure APIKeyButtonClick(Sender: TObject); 92 | procedure ComposeButtonClick(Sender: TObject); 93 | procedure TimerTimer(Sender: TObject); 94 | procedure RequestVariationButtonClick(Sender: TObject); 95 | procedure OutputMemoChange(Sender: TObject); 96 | procedure LoadRecordButtonClick(Sender: TObject); 97 | procedure FormCreate(Sender: TObject); 98 | private 99 | { Private declarations } 100 | function CreateOpenAIChatJSON(const AModel, APrompt: string; AMaxTokens: Integer): string; 101 | function CreateReplicateJSON(const AVersion, APrompt: string): string; 102 | public 103 | { Public declarations } 104 | FVariation: Boolean; 105 | end; 106 | 107 | var 108 | MainForm: TMainForm; 109 | 110 | implementation 111 | 112 | {$R *.fmx} 113 | 114 | uses 115 | System.JSON, System.IOUtils, StrUtils; 116 | 117 | 118 | 119 | function TMainForm.CreateOpenAIChatJSON(const AModel, APrompt: string; AMaxTokens: Integer): string; 120 | var 121 | RootObj, SystemMessageObj, UserMessageObj: TJSONObject; 122 | MessagesArray: TJSONArray; 123 | begin 124 | RootObj := TJSONObject.Create; 125 | try 126 | RootObj.AddPair('model', AModel); 127 | 128 | MessagesArray := TJSONArray.Create; 129 | try 130 | SystemMessageObj := TJSONObject.Create; 131 | SystemMessageObj.AddPair('role', 'system'); 132 | SystemMessageObj.AddPair('content', 'You are the writer, blogger, and marketer in the world.'); 133 | MessagesArray.AddElement(SystemMessageObj); 134 | 135 | //if OutPutMemo.Lines.Text='' then 136 | begin 137 | UserMessageObj := TJSONObject.Create; 138 | UserMessageObj.AddPair('role', 'user'); 139 | UserMessageObj.AddPair('content', APrompt); 140 | MessagesArray.AddElement(UserMessageObj); 141 | end; 142 | 143 | if FVariation=True then 144 | begin 145 | if OutPutMemo.Lines.Text<>'' then 146 | begin 147 | UserMessageObj := TJSONObject.Create; 148 | UserMessageObj.AddPair('role', 'assistant'); 149 | UserMessageObj.AddPair('content', OutPutMemo.Lines.Text); 150 | MessagesArray.AddElement(UserMessageObj); 151 | end; 152 | 153 | if OutPutMemo.Lines.Text<>'' then 154 | begin 155 | UserMessageObj := TJSONObject.Create; 156 | UserMessageObj.AddPair('role', 'user'); 157 | UserMessageObj.AddPair('content', 'Use the outline you created and do the following:'+PromptMemo.Lines.Text.Replace('%prompt%',InputMemo.Lines.Text).Replace('%keyword%',KeywordEdit.Text).Replace('%keywords%',KeywordsEdit.Text)); 158 | MessagesArray.AddElement(UserMessageObj); 159 | end; 160 | end; 161 | 162 | RootObj.AddPair('messages', MessagesArray); 163 | except 164 | MessagesArray.Free; 165 | raise; 166 | end; 167 | 168 | // RootObj.AddPair('max_tokens', TJSONNumber.Create(AMaxTokens)); 169 | 170 | Result := RootObj.Format(2); // The number 2 is to specify the formatting indent size 171 | finally 172 | RootObj.Free; 173 | end; 174 | end; 175 | 176 | procedure TMainForm.FormCreate(Sender: TObject); 177 | begin 178 | var LFilePath := TPath.Combine(TPath.GetDocumentsPath,'autoblogai.fds'); 179 | if TFile.Exists(LFilePath) then 180 | begin 181 | HistoryMT.LoadFromFile(LFilepath); 182 | end; 183 | end; 184 | 185 | procedure TMainForm.LoadRecordButtonClick(Sender: TObject); 186 | begin 187 | PromptMemo.Lines.Text := HistoryMT.FieldByName('PromptText').AsWideString; 188 | InputMemo.Lines.Text := HistoryMT.FieldByName('InputText').AsWideString; 189 | OutputMemo.Lines.Text := HistoryMT.FieldByName('OutputText').AsWideString; 190 | end; 191 | 192 | procedure TMainForm.OutputMemoChange(Sender: TObject); 193 | begin 194 | if OutputMemo.Lines.Text<>'' then 195 | RequestVariationButton.Enabled := True 196 | else 197 | RequestVariationButton.Enabled := False; 198 | end; 199 | 200 | procedure TMainForm.RequestVariationButtonClick(Sender: TObject); 201 | begin 202 | FVariation := True; 203 | RequestVariationButton.Enabled := False; 204 | ComposeButtonClick(Sender); 205 | end; 206 | 207 | procedure TMainForm.APIKeyButtonClick(Sender: TObject); 208 | begin 209 | OAAPIKeyEdit.Visible := not OAAPIKeyEdit.Visible; 210 | APIKeyEdit.Visible := not APIKeyEdit.Visible; 211 | end; 212 | 213 | function GetMessageContent(const JSONArray: string): string; 214 | var 215 | JSONData: TJSONArray; 216 | MessageObj: TJSONObject; 217 | begin 218 | Result := ''; 219 | JSONData := TJSONObject.ParseJSONValue(JSONArray) as TJSONArray; 220 | try 221 | MessageObj := (JSONData.Items[0] as TJSONObject).GetValue('message'); 222 | Result := MessageObj.GetValue('content'); 223 | finally 224 | JSONData.Free; 225 | end; 226 | end; 227 | 228 | procedure TMainForm.TimerTimer(Sender: TObject); 229 | begin 230 | if ProgressBar.Visible = False then 231 | begin 232 | Timer.Enabled := False; 233 | end 234 | else 235 | begin 236 | if ProgressBar.Value=ProgressBar.Max then 237 | ProgressBar.Value := ProgressBar.Min 238 | else 239 | ProgressBar.Value := ProgressBar.Value+5; 240 | end; 241 | end; 242 | 243 | 244 | function ConcatJSONStrings(const JSONArray: string): string; 245 | var 246 | JSONData: TJSONArray; 247 | I: Integer; 248 | begin 249 | if JSONArray[1]='[' then 250 | begin 251 | 252 | Result := ''; 253 | JSONData := TJSONObject.ParseJSONValue(JSONArray) as TJSONArray; 254 | try 255 | for I := 0 to JSONData.Count - 1 do 256 | Result := Result + JSONData.Items[I].Value; 257 | finally 258 | JSONData.Free; 259 | end; 260 | end 261 | else 262 | Result := JSONArray; 263 | end; 264 | 265 | 266 | function TMainForm.CreateReplicateJSON(const AVersion, APrompt: string): string; 267 | var 268 | RootObj, InputObj: TJSONObject; 269 | begin 270 | RootObj := TJSONObject.Create; 271 | try 272 | RootObj.AddPair('version', AVersion); 273 | 274 | InputObj := TJSONObject.Create; 275 | try 276 | var LPrompt := 'You are the writer, blogger, and marketer in the world.'; 277 | 278 | if FVariation=True then 279 | begin 280 | LPrompt := LPrompt + ' Here is an outline: ' + OutPutMemo.Lines.Text + ' Use the outline you created and do the following:'+PromptMemo.Lines.Text.Replace('%prompt%',APrompt).Replace('%keyword%',KeywordEdit.Text).Replace('%keywords%',KeywordsEdit.Text) 281 | end 282 | else 283 | begin 284 | LPrompt := LPrompt + 'Create an outline (all subtitles as questions; NEVER use roman numerals, numbers, or letters for outline sections) for an article about: ' + APrompt; 285 | end; 286 | 287 | 288 | InputObj.AddPair('prompt', LPrompt); 289 | // InputObj.AddPair('max_tokens', TJSONNumber.Create(AMaxTokens)); 290 | 291 | RootObj.AddPair('input', InputObj); 292 | except 293 | InputObj.Free; 294 | raise; 295 | end; 296 | 297 | Result := RootObj.ToString; 298 | finally 299 | RootObj.Free; 300 | end; 301 | end; 302 | 303 | procedure TMainForm.ComposeButtonClick(Sender: TObject); 304 | begin 305 | if OAAPIKeyEdit.Text='' then 306 | begin 307 | ShowMessage('Enter an OpenAI API key.'); 308 | Exit; 309 | end; 310 | 311 | ComposeButton.Enabled := False; 312 | ProgressBar.Visible := True; 313 | Timer.Enabled := True; 314 | 315 | TTask.Run(procedure begin 316 | if ModelsMT.FieldByName('provider').AsWideString='openai' then 317 | begin 318 | RESTRequest1.Params[0].Value := 'Bearer ' + OAAPIKeyEdit.Text; 319 | RESTRequest1.Params[1].Value := CreateOpenAIChatJSON(VersionEdit.Selected.Text, 'Create an outline (all titles and subtitles as questions; NEVER use roman numerals, numbers, or letters for outline sections) for an article about: ' + InputMemo.Lines.Text, 2000); 320 | RESTRequest1.Execute; 321 | 322 | if FDMemTable1.FindField('choices')<>nil then 323 | begin 324 | TThread.Synchronize(nil,procedure begin 325 | if FVariation=True then 326 | BlogOutputMemo.Lines.Text := GetMessageContent(FDMemTable1.FieldByName('choices').AsWideString) 327 | else 328 | OutputMemo.Lines.Text := GetMessageContent(FDMemTable1.FieldByName('choices').AsWideString); 329 | 330 | StatusLabel.Text := FDMemTable1.FieldByName('usage').AsWideString; 331 | 332 | RequestVariationButton.Enabled := True; 333 | 334 | HistoryMT.AppendRecord([PromptMemo.Lines.Text, InputMemo.Lines.Text, OutputMemo.Lines.Text]); 335 | 336 | HistoryMT.SaveToFile(TPath.Combine(TPath.GetDocumentsPath,'autoblogai.fds')); 337 | end); 338 | end; 339 | end 340 | else if ModelsMT.FieldByName('provider').AsWideString='replicate' then 341 | begin 342 | RESTRequest2.Params[0].Value := 'Token ' + APIKeyEdit.Text; 343 | RESTRequest2.Params[1].Value := CreateReplicateJSON(ModelsMT.FieldByName('model').AsWideString, InputMemo.Lines.Text); 344 | RESTRequest2.Execute; 345 | 346 | if FDMemTable2.FindField('id')<>nil then 347 | begin 348 | var LStatus := 'started'; 349 | while ((LStatus<>'succeeded') AND (LStatus<>'failed')) do 350 | begin 351 | RESTRequest3.Resource := FDMemTable2.FieldByName('id').AsWideString; 352 | RESTRequest3.Params[0].Value := 'Token ' + APIKeyEdit.Text; 353 | RESTRequest3.Execute; 354 | LStatus := FDMemTable3.FieldByName('status').AsWideString; 355 | 356 | if LStatus='succeeded' then 357 | begin 358 | var LOutput := ConcatJSONStrings(FDMemTable3.FieldByName('output').AsWideString); 359 | if LOutput<>'' then 360 | begin 361 | TThread.Synchronize(nil,procedure begin 362 | if FVariation=True then 363 | BlogOutputMemo.Lines.Text := LOutput 364 | else 365 | OutputMemo.Lines.Text := LOutput; 366 | 367 | RequestVariationButton.Enabled := True; 368 | 369 | HistoryMT.AppendRecord([PromptMemo.Lines.Text, InputMemo.Lines.Text, OutputMemo.Lines.Text]); 370 | 371 | HistoryMT.SaveToFile(TPath.Combine(TPath.GetDocumentsPath,'autoblogai.fds')); 372 | end); 373 | 374 | end; 375 | end 376 | else 377 | begin 378 | TThread.Synchronize(nil,procedure begin 379 | StatusLabel.Text := LStatus; 380 | end); 381 | end; 382 | 383 | Sleep(3000); 384 | 385 | end; 386 | end; 387 | 388 | end; 389 | 390 | TThread.Synchronize(nil,procedure begin 391 | ComposeButton.Enabled := True; 392 | ProgressBar.Visible := False; 393 | end); 394 | FVariation := False; 395 | end); 396 | end; 397 | 398 | 399 | 400 | 401 | 402 | end. 403 | -------------------------------------------------------------------------------- /AutoBlogAI.dproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {6BF4C129-D192-488D-99F8-FAC0DEC8A006} 4 | 19.5 5 | FMX 6 | True 7 | Release 8 | Win32 9 | 693267 10 | Application 11 | AutoBlogAI.dpr 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Base 54 | true 55 | 56 | 57 | true 58 | Base 59 | true 60 | 61 | 62 | true 63 | Cfg_1 64 | true 65 | true 66 | 67 | 68 | true 69 | Cfg_1 70 | true 71 | true 72 | 73 | 74 | true 75 | Base 76 | true 77 | 78 | 79 | true 80 | Cfg_2 81 | true 82 | true 83 | 84 | 85 | true 86 | Cfg_2 87 | true 88 | true 89 | 90 | 91 | .\$(Platform)\$(Config) 92 | .\$(Platform)\$(Config) 93 | false 94 | false 95 | false 96 | false 97 | false 98 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 99 | true 100 | true 101 | true 102 | true 103 | true 104 | true 105 | true 106 | true 107 | $(BDS)\bin\delphi_PROJECTICON.ico 108 | $(BDS)\bin\delphi_PROJECTICNS.icns 109 | AutoBlogAI 110 | 111 | 112 | SampleListViewMultiDetailAppearancePackage;TMSLogging;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;FrameStandPackage_11;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;Skia.Package.FMX;CustomIPTransport;JVEsoft;DBXInterBaseDriver;IndySystem;RadiantShapesFmx;SampleListViewRatingsAppearancePackage;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;FMXTee;DataSnapNativeClient;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 113 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 114 | Debug 115 | true 116 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png 117 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png 118 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png 119 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png 120 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png 121 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png 122 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png 123 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png 124 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png 125 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png 126 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png 127 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png 128 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png 129 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png 130 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png 131 | annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar 132 | 133 | 134 | SampleListViewMultiDetailAppearancePackage;TMSLogging;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;FrameStandPackage_11;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;Skia.Package.FMX;CustomIPTransport;JVEsoft;DBXInterBaseDriver;IndySystem;RadiantShapesFmx;SampleListViewRatingsAppearancePackage;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;FMXTee;DataSnapNativeClient;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 135 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 136 | Debug 137 | true 138 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png 139 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png 140 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png 141 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png 142 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png 143 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png 144 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png 145 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png 146 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png 147 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png 148 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png 149 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png 150 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png 151 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png 152 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png 153 | annotation-1.2.0.dex.jar;asynclayoutinflater-1.0.0.dex.jar;billing-4.0.0.dex.jar;browser-1.0.0.dex.jar;cloud-messaging.dex.jar;collection-1.0.0.dex.jar;coordinatorlayout-1.0.0.dex.jar;core-1.5.0-rc02.dex.jar;core-common-2.0.1.dex.jar;core-runtime-2.0.1.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;firebase-annotations-16.0.0.dex.jar;firebase-common-20.0.0.dex.jar;firebase-components-17.0.0.dex.jar;firebase-datatransport-18.0.0.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.0.0.dex.jar;firebase-installations-interop-17.0.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-22.0.0.dex.jar;fmx.dex.jar;fragment-1.0.0.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;legacy-support-core-ui-1.0.0.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.0.0.dex.jar;lifecycle-livedata-2.0.0.dex.jar;lifecycle-livedata-core-2.0.0.dex.jar;lifecycle-runtime-2.0.0.dex.jar;lifecycle-service-2.0.0.dex.jar;lifecycle-viewmodel-2.0.0.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;play-services-ads-20.1.0.dex.jar;play-services-ads-base-20.1.0.dex.jar;play-services-ads-identifier-17.0.0.dex.jar;play-services-ads-lite-20.1.0.dex.jar;play-services-base-17.5.0.dex.jar;play-services-basement-17.6.0.dex.jar;play-services-cloud-messaging-16.0.0.dex.jar;play-services-drive-17.0.0.dex.jar;play-services-games-21.0.0.dex.jar;play-services-location-18.0.0.dex.jar;play-services-maps-17.0.1.dex.jar;play-services-measurement-base-18.0.0.dex.jar;play-services-measurement-sdk-api-18.0.0.dex.jar;play-services-places-placereport-17.0.0.dex.jar;play-services-stats-17.0.0.dex.jar;play-services-tasks-17.2.0.dex.jar;print-1.0.0.dex.jar;room-common-2.1.0.dex.jar;room-runtime-2.1.0.dex.jar;slidingpanelayout-1.0.0.dex.jar;sqlite-2.0.1.dex.jar;sqlite-framework-2.0.1.dex.jar;swiperefreshlayout-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.0.0.dex.jar;transport-runtime-3.0.0.dex.jar;user-messaging-platform-1.0.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.1.0.dex.jar 154 | 155 | 156 | fgx;TMSLogging;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;TMSFMXPackPkgDXE14;dbrtl;FireDACDBXDriver;Skia.Package.FMX;CustomIPTransport;JVEsoft;DBXInterBaseDriver;IndySystem;RadiantShapesFmx;SampleListViewRatingsAppearancePackage;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;FMXTee;DataSnapNativeClient;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 157 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 158 | iPhoneAndiPad 159 | true 160 | Debug 161 | $(MSBuildProjectName) 162 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png 163 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 164 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 165 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png 166 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png 167 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png 168 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png 169 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 170 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png 171 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 172 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 173 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 174 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 175 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 176 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png 177 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png 178 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png 179 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 180 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 181 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 182 | 183 | 184 | fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;FMXTee;DataSnapNativeClient;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 185 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 186 | iPhoneAndiPad 187 | true 188 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png 189 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 190 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 191 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png 192 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png 193 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png 194 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png 195 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 196 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png 197 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 198 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 199 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 200 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 201 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 202 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png 203 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png 204 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png 205 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 206 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 207 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 208 | 209 | 210 | DataSnapServer;TMSLogging;fmx;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;FrameStandPackage_11;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;JVEsoft;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;RadiantShapesFmx;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;FMXTee;DataSnapNativeClient;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 211 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 212 | Debug 213 | true 214 | 215 | 216 | DataSnapServer;fmx;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;FMXTee;DataSnapNativeClient;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 217 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 218 | Debug 219 | true 220 | 221 | 222 | SampleListViewMultiDetailAppearancePackage;vclwinx;DataSnapServer;fgx;TMSLogging;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;FrameStandPackage_11;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;TMSFMXPackPkgDXE14;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;ChromiumFMX;SVGIconPackage;DataSnapIndy10ServerTransport;DataSnapConnectors;JVEsoft;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;SampleListViewRatingsAppearancePackage;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;TMSiCLPkgDXE14;fmxobj;bindcompvclsmp;FMXTee;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage) 223 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 224 | Debug 225 | true 226 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 227 | 1033 228 | $(BDS)\bin\default_app.manifest 229 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 230 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 231 | 232 | 233 | vclwinx;DataSnapServer;TMSLogging;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;RadiantShapesFmx_Design;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;FrameStandPackage_11;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;SVGIconPackage;DataSnapIndy10ServerTransport;DataSnapConnectors;JVEsoft;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;RadiantShapesFmx;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;FMXTee;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage) 234 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 235 | Debug 236 | true 237 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 238 | 1033 239 | $(BDS)\bin\default_app.manifest 240 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 241 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 242 | 243 | 244 | DEBUG;$(DCC_Define) 245 | true 246 | false 247 | true 248 | true 249 | true 250 | true 251 | true 252 | 253 | 254 | false 255 | PerMonitorV2 256 | .\ 257 | true 258 | 1033 259 | 260 | 261 | PerMonitorV2 262 | 263 | 264 | false 265 | RELEASE;$(DCC_Define) 266 | 0 267 | 0 268 | 269 | 270 | PerMonitorV2 271 | 272 | 273 | PerMonitorV2 274 | 275 | 276 | 277 | MainSource 278 | 279 | 280 |
MainForm
281 | fmx 282 |
283 | 284 | Base 285 | 286 | 287 | Cfg_1 288 | Base 289 | 290 | 291 | Cfg_2 292 | Base 293 | 294 |
295 | 296 | Delphi.Personality.12 297 | Application 298 | 299 | 300 | 301 | AutoBlogAI.dpr 302 | 303 | 304 | Embarcadero C++Builder Office 2000 Servers Package 305 | Embarcadero C++Builder Office XP Servers Package 306 | Microsoft Office 2000 Sample Automation Server Wrapper Components 307 | Microsoft Office XP Sample Automation Server Wrapper Components 308 | 309 | 310 | 311 | 312 | 313 | true 314 | 315 | 316 | 317 | 318 | true 319 | 320 | 321 | 322 | 323 | true 324 | 325 | 326 | 327 | 328 | AutoBlogAI.exe 329 | true 330 | 331 | 332 | 333 | 334 | AutoBlogAI.exe 335 | true 336 | 337 | 338 | 339 | 340 | 1 341 | 342 | 343 | Contents\MacOS 344 | 1 345 | 346 | 347 | 0 348 | 349 | 350 | 351 | 352 | classes 353 | 64 354 | 355 | 356 | classes 357 | 64 358 | 359 | 360 | 361 | 362 | res\xml 363 | 1 364 | 365 | 366 | res\xml 367 | 1 368 | 369 | 370 | 371 | 372 | library\lib\armeabi-v7a 373 | 1 374 | 375 | 376 | 377 | 378 | library\lib\armeabi 379 | 1 380 | 381 | 382 | library\lib\armeabi 383 | 1 384 | 385 | 386 | 387 | 388 | library\lib\armeabi-v7a 389 | 1 390 | 391 | 392 | 393 | 394 | library\lib\mips 395 | 1 396 | 397 | 398 | library\lib\mips 399 | 1 400 | 401 | 402 | 403 | 404 | library\lib\armeabi-v7a 405 | 1 406 | 407 | 408 | library\lib\arm64-v8a 409 | 1 410 | 411 | 412 | 413 | 414 | library\lib\armeabi-v7a 415 | 1 416 | 417 | 418 | 419 | 420 | res\drawable 421 | 1 422 | 423 | 424 | res\drawable 425 | 1 426 | 427 | 428 | 429 | 430 | res\values 431 | 1 432 | 433 | 434 | res\values 435 | 1 436 | 437 | 438 | 439 | 440 | res\values-v21 441 | 1 442 | 443 | 444 | res\values-v21 445 | 1 446 | 447 | 448 | 449 | 450 | res\values 451 | 1 452 | 453 | 454 | res\values 455 | 1 456 | 457 | 458 | 459 | 460 | res\drawable 461 | 1 462 | 463 | 464 | res\drawable 465 | 1 466 | 467 | 468 | 469 | 470 | res\drawable-xxhdpi 471 | 1 472 | 473 | 474 | res\drawable-xxhdpi 475 | 1 476 | 477 | 478 | 479 | 480 | res\drawable-xxxhdpi 481 | 1 482 | 483 | 484 | res\drawable-xxxhdpi 485 | 1 486 | 487 | 488 | 489 | 490 | res\drawable-ldpi 491 | 1 492 | 493 | 494 | res\drawable-ldpi 495 | 1 496 | 497 | 498 | 499 | 500 | res\drawable-mdpi 501 | 1 502 | 503 | 504 | res\drawable-mdpi 505 | 1 506 | 507 | 508 | 509 | 510 | res\drawable-hdpi 511 | 1 512 | 513 | 514 | res\drawable-hdpi 515 | 1 516 | 517 | 518 | 519 | 520 | res\drawable-xhdpi 521 | 1 522 | 523 | 524 | res\drawable-xhdpi 525 | 1 526 | 527 | 528 | 529 | 530 | res\drawable-mdpi 531 | 1 532 | 533 | 534 | res\drawable-mdpi 535 | 1 536 | 537 | 538 | 539 | 540 | res\drawable-hdpi 541 | 1 542 | 543 | 544 | res\drawable-hdpi 545 | 1 546 | 547 | 548 | 549 | 550 | res\drawable-xhdpi 551 | 1 552 | 553 | 554 | res\drawable-xhdpi 555 | 1 556 | 557 | 558 | 559 | 560 | res\drawable-xxhdpi 561 | 1 562 | 563 | 564 | res\drawable-xxhdpi 565 | 1 566 | 567 | 568 | 569 | 570 | res\drawable-xxxhdpi 571 | 1 572 | 573 | 574 | res\drawable-xxxhdpi 575 | 1 576 | 577 | 578 | 579 | 580 | res\drawable-small 581 | 1 582 | 583 | 584 | res\drawable-small 585 | 1 586 | 587 | 588 | 589 | 590 | res\drawable-normal 591 | 1 592 | 593 | 594 | res\drawable-normal 595 | 1 596 | 597 | 598 | 599 | 600 | res\drawable-large 601 | 1 602 | 603 | 604 | res\drawable-large 605 | 1 606 | 607 | 608 | 609 | 610 | res\drawable-xlarge 611 | 1 612 | 613 | 614 | res\drawable-xlarge 615 | 1 616 | 617 | 618 | 619 | 620 | res\values 621 | 1 622 | 623 | 624 | res\values 625 | 1 626 | 627 | 628 | 629 | 630 | 1 631 | 632 | 633 | Contents\MacOS 634 | 1 635 | 636 | 637 | 0 638 | 639 | 640 | 641 | 642 | Contents\MacOS 643 | 1 644 | .framework 645 | 646 | 647 | Contents\MacOS 648 | 1 649 | .framework 650 | 651 | 652 | Contents\MacOS 653 | 1 654 | .framework 655 | 656 | 657 | 0 658 | 659 | 660 | 661 | 662 | 1 663 | .dylib 664 | 665 | 666 | 1 667 | .dylib 668 | 669 | 670 | 1 671 | .dylib 672 | 673 | 674 | Contents\MacOS 675 | 1 676 | .dylib 677 | 678 | 679 | Contents\MacOS 680 | 1 681 | .dylib 682 | 683 | 684 | Contents\MacOS 685 | 1 686 | .dylib 687 | 688 | 689 | 0 690 | .dll;.bpl 691 | 692 | 693 | 694 | 695 | 1 696 | .dylib 697 | 698 | 699 | 1 700 | .dylib 701 | 702 | 703 | 1 704 | .dylib 705 | 706 | 707 | Contents\MacOS 708 | 1 709 | .dylib 710 | 711 | 712 | Contents\MacOS 713 | 1 714 | .dylib 715 | 716 | 717 | Contents\MacOS 718 | 1 719 | .dylib 720 | 721 | 722 | 0 723 | .bpl 724 | 725 | 726 | 727 | 728 | 0 729 | 730 | 731 | 0 732 | 733 | 734 | 0 735 | 736 | 737 | 0 738 | 739 | 740 | 0 741 | 742 | 743 | Contents\Resources\StartUp\ 744 | 0 745 | 746 | 747 | Contents\Resources\StartUp\ 748 | 0 749 | 750 | 751 | Contents\Resources\StartUp\ 752 | 0 753 | 754 | 755 | 0 756 | 757 | 758 | 759 | 760 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 761 | 1 762 | 763 | 764 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 765 | 1 766 | 767 | 768 | 769 | 770 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 771 | 1 772 | 773 | 774 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 775 | 1 776 | 777 | 778 | 779 | 780 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 781 | 1 782 | 783 | 784 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 785 | 1 786 | 787 | 788 | 789 | 790 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 791 | 1 792 | 793 | 794 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 795 | 1 796 | 797 | 798 | 799 | 800 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 801 | 1 802 | 803 | 804 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 805 | 1 806 | 807 | 808 | 809 | 810 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 811 | 1 812 | 813 | 814 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 815 | 1 816 | 817 | 818 | 819 | 820 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 821 | 1 822 | 823 | 824 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 825 | 1 826 | 827 | 828 | 829 | 830 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 831 | 1 832 | 833 | 834 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 835 | 1 836 | 837 | 838 | 839 | 840 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 841 | 1 842 | 843 | 844 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 845 | 1 846 | 847 | 848 | 849 | 850 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 851 | 1 852 | 853 | 854 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 855 | 1 856 | 857 | 858 | 859 | 860 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 861 | 1 862 | 863 | 864 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 865 | 1 866 | 867 | 868 | 869 | 870 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 871 | 1 872 | 873 | 874 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 875 | 1 876 | 877 | 878 | 879 | 880 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 881 | 1 882 | 883 | 884 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 885 | 1 886 | 887 | 888 | 889 | 890 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 891 | 1 892 | 893 | 894 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 895 | 1 896 | 897 | 898 | 899 | 900 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 901 | 1 902 | 903 | 904 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 905 | 1 906 | 907 | 908 | 909 | 910 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 911 | 1 912 | 913 | 914 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 915 | 1 916 | 917 | 918 | 919 | 920 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 921 | 1 922 | 923 | 924 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 925 | 1 926 | 927 | 928 | 929 | 930 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 931 | 1 932 | 933 | 934 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 935 | 1 936 | 937 | 938 | 939 | 940 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 941 | 1 942 | 943 | 944 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 945 | 1 946 | 947 | 948 | 949 | 950 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 951 | 1 952 | 953 | 954 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 955 | 1 956 | 957 | 958 | 959 | 960 | 1 961 | 962 | 963 | 1 964 | 965 | 966 | 967 | 968 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 969 | 1 970 | 971 | 972 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 973 | 1 974 | 975 | 976 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 977 | 1 978 | 979 | 980 | 981 | 982 | ..\ 983 | 1 984 | 985 | 986 | ..\ 987 | 1 988 | 989 | 990 | ..\ 991 | 1 992 | 993 | 994 | 995 | 996 | 1 997 | 998 | 999 | 1 1000 | 1001 | 1002 | 1 1003 | 1004 | 1005 | 1006 | 1007 | ..\$(PROJECTNAME).launchscreen 1008 | 64 1009 | 1010 | 1011 | ..\$(PROJECTNAME).launchscreen 1012 | 64 1013 | 1014 | 1015 | 1016 | 1017 | 1 1018 | 1019 | 1020 | 1 1021 | 1022 | 1023 | 1 1024 | 1025 | 1026 | 1027 | 1028 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1029 | 1 1030 | 1031 | 1032 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1033 | 1 1034 | 1035 | 1036 | 1037 | 1038 | ..\ 1039 | 1 1040 | 1041 | 1042 | ..\ 1043 | 1 1044 | 1045 | 1046 | ..\ 1047 | 1 1048 | 1049 | 1050 | 1051 | 1052 | Contents 1053 | 1 1054 | 1055 | 1056 | Contents 1057 | 1 1058 | 1059 | 1060 | Contents 1061 | 1 1062 | 1063 | 1064 | 1065 | 1066 | Contents\Resources 1067 | 1 1068 | 1069 | 1070 | Contents\Resources 1071 | 1 1072 | 1073 | 1074 | Contents\Resources 1075 | 1 1076 | 1077 | 1078 | 1079 | 1080 | library\lib\armeabi-v7a 1081 | 1 1082 | 1083 | 1084 | library\lib\arm64-v8a 1085 | 1 1086 | 1087 | 1088 | 1 1089 | 1090 | 1091 | 1 1092 | 1093 | 1094 | 1 1095 | 1096 | 1097 | 1 1098 | 1099 | 1100 | Contents\MacOS 1101 | 1 1102 | 1103 | 1104 | Contents\MacOS 1105 | 1 1106 | 1107 | 1108 | Contents\MacOS 1109 | 1 1110 | 1111 | 1112 | 0 1113 | 1114 | 1115 | 1116 | 1117 | library\lib\armeabi-v7a 1118 | 1 1119 | 1120 | 1121 | 1122 | 1123 | 1 1124 | 1125 | 1126 | 1 1127 | 1128 | 1129 | 1130 | 1131 | Assets 1132 | 1 1133 | 1134 | 1135 | Assets 1136 | 1 1137 | 1138 | 1139 | 1140 | 1141 | Assets 1142 | 1 1143 | 1144 | 1145 | Assets 1146 | 1 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | True 1163 | True 1164 | True 1165 | True 1166 | True 1167 | True 1168 | True 1169 | True 1170 | 1171 | 1172 | 12 1173 | 1174 | 1175 | 1176 | 1177 |
1178 | --------------------------------------------------------------------------------