Changeset 90


Ignore:
Timestamp:
Feb 2, 2022, 2:55:58 PM (2 years ago)
Author:
chronos
Message:
  • Modified: Build under Lazarus 2.2.0.
  • Modified: Updated Common package.
  • Added: Read Me file with app description and development information.
  • Added: Test form available in debug mode from Tools menu with list of test cases to better support app testability.
Location:
trunk
Files:
16 added
12 deleted
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormMain.lfm

    r81 r90  
    11object FormMain: TFormMain
    22  Left = 601
    3   Height = 796
     3  Height = 829
    44  Top = 447
    5   Width = 1178
     5  Width = 1227
    66  Caption = 'vCard Studio'
    7   ClientHeight = 762
    8   ClientWidth = 1178
    9   DesignTimePPI = 144
     7  ClientHeight = 794
     8  ClientWidth = 1227
     9  DesignTimePPI = 150
    1010  Menu = MainMenu1
    1111  OnClose = FormClose
     
    1515  OnResize = FormResize
    1616  OnShow = FormShow
    17   LCLVersion = '2.0.12.0'
     17  LCLVersion = '2.2.0.4'
    1818  object CoolBar1: TCoolBar
    1919    Left = 0
    20     Height = 43
     20    Height = 44
    2121    Top = 0
    22     Width = 1178
     22    Width = 1227
    2323    AutoSize = True
    2424    Bands = <   
     
    3939      AnchorSideTop.Control = CoolBar1
    4040      Left = 24
    41       Height = 33
     41      Height = 34
    4242      Top = 5
    43       Width = 159
     43      Width = 164
    4444      Align = alNone
    4545      AutoSize = True
     
    6060      end
    6161      object ToolButton2: TToolButton
    62         Left = 36
     62        Left = 37
    6363        Top = 0
    6464        Action = Core.AFileOpen
     
    6767      end
    6868      object ToolButton3: TToolButton
    69         Left = 89
     69        Left = 92
    7070        Top = 0
    7171        Action = Core.AFileSave
    7272      end
    7373      object ToolButton4: TToolButton
    74         Left = 124
     74        Left = 128
    7575        Top = 0
    7676        Action = Core.AFileClose
     
    8181      AnchorSideTop.Control = CoolBar1
    8282      Left = 188
    83       Height = 33
     83      Height = 34
    8484      Top = 5
    85       Width = 106
     85      Width = 109
    8686      Align = alNone
    8787      AutoSize = True
     
    9797      Transparent = True
    9898      object ToolButton5: TToolButton
    99         Left = 71
     99        Left = 73
    100100        Top = 0
    101101        Action = Core.ASettings
    102102      end
    103103      object ToolButton6: TToolButton
    104         Left = 36
     104        Left = 37
    105105        Top = 0
    106106        Action = Core.AFindDuplicate
     
    115115  object MainMenu1: TMainMenu
    116116    Images = Core.ImageList1
    117     Left = 192
    118     Top = 120
     117    Left = 200
     118    Top = 125
    119119    object MenuItemFile: TMenuItem
    120120      Caption = 'File'
     
    181181        Action = Core.AGenerate
    182182      end
     183      object MenuItem4: TMenuItem
     184        Action = Core.ATest
     185      end
    183186    end
    184187    object MenuItemHelp: TMenuItem
     
    193196  end
    194197  object PopupMenuOpenRecent: TPopupMenu
    195     Left = 420
    196     Top = 120
     198    Left = 438
     199    Top = 125
    197200  end
    198201end
  • trunk/Forms/UFormMain.pas

    r81 r90  
    1919    MenuItem10: TMenuItem;
    2020    MenuItem3: TMenuItem;
     21    MenuItem4: TMenuItem;
    2122    MenuItem5: TMenuItem;
    2223    MenuItem6: TMenuItem;
  • trunk/Install/snap/snapcraft.yaml

    r86 r90  
    66  A contact management application with support for vCard file format (.vcf).
    77 
    8   Features:
     8  **Features**:
    99  * Add, Edit, Clone or Remove contacts and contact properties
    1010  * Shows contact fields in multiple tabs General, Home, Work, Social, Chat and Others
     
    146146    command-chain:
    147147    - bin/desktop-launch
    148     desktop: usr/share/applications/vCardStudio.desktop   
     148    desktop: usr/share/applications/vCardStudio.desktop
    149149    plugs:
    150150    - desktop
  • trunk/Languages/vCardStudio.cs.po

    r82 r90  
    8080msgstr "Nastavení"
    8181
     82#: tcore.atest.caption
     83msgctxt "tcore.atest.caption"
     84msgid "Test"
     85msgstr ""
     86
    8287#: tformcontact.aphotoclear.caption
    8388msgid "Clear"
     
    787792msgstr "DPI:"
    788793
     794#: tformtest.buttonrun.caption
     795msgid "Run"
     796msgstr ""
     797
     798#: tformtest.caption
     799msgctxt "tformtest.caption"
     800msgid "Test"
     801msgstr ""
     802
     803#: tformtest.listviewtestcases.columns[0].caption
     804#, fuzzy
     805msgctxt "tformtest.listviewtestcases.columns[0].caption"
     806msgid "Name"
     807msgstr "Jméno"
     808
     809#: tformtest.listviewtestcases.columns[1].caption
     810msgid "Result"
     811msgstr ""
     812
    789813#: ucontact.saim
    790814msgid "AIM"
     
    11491173
    11501174#: ucore.scombinedcontacts
     1175#, object-pascal-format
    11511176msgctxt "ucore.scombinedcontacts"
    11521177msgid "Combined %d contact files."
     
    11541179
    11551180#: ucore.sfilenotfound
     1181#, object-pascal-format
    11561182msgid "File '%s' not found."
    11571183msgstr "Soubor '%s' nenalezen."
     
    11621188
    11631189#: ucore.sfilesplitfinishedopendirectory
     1190#, object-pascal-format
    11641191msgid "Total %d contact files saved. Do you want to open the directory %s?"
    11651192msgstr "Uloženo celkem %d souborů kontaktů. Chcete otevřít adresář %s?"
    11661193
    11671194#: ucore.sline
     1195#, object-pascal-format
    11681196msgid "Line %d: %s"
    11691197msgstr "Řádek %d: %s"
     
    12531281msgid "Invalid line length for encoded text"
    12541282msgstr "Neplatná délka řádky kódovaného textu"
     1283
  • trunk/Packages/Common/Common.lpk

    r22 r90  
    11<?xml version="1.0" encoding="UTF-8"?>
    22<CONFIG>
    3   <Package Version="4">
     3  <Package Version="5">
    44    <PathDelim Value="\"/>
    55    <Name Value="Common"/>
     
    3333      <Other>
    3434        <CompilerMessages>
    35           <IgnoredMessages idx5024="True"/>
     35          <IgnoredMessages idx6058="True" idx5024="True" idx3124="True" idx3123="True"/>
    3636        </CompilerMessages>
    3737      </Other>
     
    4141Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/>
    4242    <License Value="Copy left."/>
    43     <Version Minor="8"/>
     43    <Version Minor="9"/>
    4444    <Files Count="29">
    4545      <Item1>
     
    172172      </Item29>
    173173    </Files>
     174    <CompatibilityMode Value="True"/>
    174175    <i18n>
    175176      <EnableI18N Value="True"/>
  • trunk/Packages/Common/Languages/UJobProgressView.cs.po

    r21 r90  
    1313
    1414#: ujobprogressview.sestimatedtime
     15#, object-pascal-format
    1516msgid "Estimated time: %s"
    1617msgstr "Odhadovaný čas: %s"
     
    3334
    3435#: ujobprogressview.stotalestimatedtime
     36#, object-pascal-format
    3537msgid "Total estimated time: %s"
    3638msgstr "Celkový odhadovaný čas: %s"
  • trunk/Packages/Common/Languages/UScaleDPI.cs.po

    r21 r90  
    1313
    1414#: uscaledpi.swrongdpi
     15#, object-pascal-format
    1516msgid "Wrong DPI [%d,%d]"
    1617msgstr "Chybné DPI [%d,%d]"
  • trunk/Packages/Common/Languages/UThreading.cs.po

    r1 r90  
    1111
    1212#: uthreading.scurrentthreadnotfound
     13#, object-pascal-format
    1314msgid "Current thread ID %d not found in virtual thread list."
    1415msgstr "Aktuální vlákno ID %d nenalezeno v seznamu virtuálních vláken."
  • trunk/Packages/Common/UAboutDialog.pas

    r83 r90  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
    9   StdCtrls, ExtCtrls, UApplicationInfo, UCommon, UTranslator, UTheme, UFormAbout;
     9  ExtCtrls, UApplicationInfo, UCommon, UTranslator, UTheme, UFormAbout;
    1010
    1111type
  • trunk/Packages/Common/UCommon.pas

    r68 r90  
    66
    77uses
    8   {$ifdef Windows}Windows,{$endif}
    9   {$ifdef Linux}baseunix,{$endif}
     8  {$IFDEF WINDOWS}Windows,{$ENDIF}
     9  {$IFDEF UNIX}baseunix,{$ENDIF}
    1010  Classes, SysUtils, StrUtils, Dialogs, Process, LCLIntf,
    1111  FileUtil; //, ShFolder, ShellAPI;
     
    3535  DLLHandle1: HModule;
    3636
    37 {$IFDEF Windows}
     37{$IFDEF WINDOWS}
    3838  GetUserNameEx: procedure (NameFormat: DWORD;
    3939    lpNameBuffer: LPSTR; nSize: PULONG); stdcall;
     
    292292function Explode(Separator: char; Data: string): TArrayOfString;
    293293begin
     294  Result := nil;
    294295  SetLength(Result, 0);
    295296  while Pos(Separator, Data) > 0 do begin
     
    346347  Name: UtsName;
    347348begin
     349  Name := Default(UtsName);
    348350  fpuname(Name);
    349351  Result := Name.Nodename;
     
    505507  I: Integer;
    506508begin
     509  Result := Default(TArrayOfString);
    507510  SetLength(Result, Length(A) + Length(B));
    508511  for I := 0 to Length(A) - 1 do
  • trunk/Packages/Common/UFindFile.pas

    r21 r90  
    5959  FilterAll = '*.*';
    6060{$ENDIF}
    61 {$IFDEF LINUX}
     61{$IFDEF UNIX}
    6262  FilterAll = '*';
    6363{$ENDIF}
  • trunk/Packages/Common/UGeometric.pas

    r22 r90  
    9696  I: Integer;
    9797begin
     98  Result := Default(TPointArray);
    9899  SetLength(Result, Length(P));
    99100  for I := 0 to High(P) do
  • trunk/Packages/Common/UJobProgressView.lfm

    r21 r90  
    11object FormJobProgressView: TFormJobProgressView
    22  Left = 467
    3   Height = 345
     3  Height = 414
    44  Top = 252
    5   Width = 539
     5  Width = 647
    66  BorderIcons = [biSystemMenu]
    7   ClientHeight = 345
    8   ClientWidth = 539
    9   DesignTimePPI = 120
     7  ClientHeight = 414
     8  ClientWidth = 647
     9  DesignTimePPI = 144
    1010  OnClose = FormClose
    1111  OnCloseQuery = FormCloseQuery
    1212  OnCreate = FormCreate
    13   OnDestroy = FormDestroy
    1413  OnHide = FormHide
    1514  OnShow = FormShow
    1615  Position = poScreenCenter
    17   LCLVersion = '2.0.2.0'
     16  LCLVersion = '2.2.0.4'
    1817  object PanelOperationsTitle: TPanel
    1918    Left = 0
    20     Height = 32
     19    Height = 38
    2120    Top = 0
    22     Width = 539
     21    Width = 647
    2322    Align = alTop
    2423    BevelOuter = bvNone
    25     ClientHeight = 32
    26     ClientWidth = 539
     24    ClientHeight = 38
     25    ClientWidth = 647
    2726    FullRepaint = False
    2827    TabOrder = 0
    2928    object LabelOperation: TLabel
    30       Left = 8
    31       Height = 20
    32       Top = 8
    33       Width = 76
     29      Left = 10
     30      Height = 26
     31      Top = 10
     32      Width = 99
    3433      Caption = 'Operations:'
    35       ParentColor = False
    3634      ParentFont = False
    3735    end
     
    3937  object PanelLog: TPanel
    4038    Left = 0
    41     Height = 133
    42     Top = 212
    43     Width = 539
     39    Height = 161
     40    Top = 253
     41    Width = 647
    4442    Align = alClient
    4543    BevelOuter = bvSpace
    46     ClientHeight = 133
    47     ClientWidth = 539
     44    ClientHeight = 161
     45    ClientWidth = 647
    4846    TabOrder = 1
    4947    object MemoLog: TMemo
    50       Left = 8
    51       Height = 117
    52       Top = 8
    53       Width = 523
     48      Left = 10
     49      Height = 141
     50      Top = 10
     51      Width = 627
    5452      Anchors = [akTop, akLeft, akRight, akBottom]
    5553      ReadOnly = True
     
    6058  object PanelProgress: TPanel
    6159    Left = 0
    62     Height = 54
    63     Top = 106
    64     Width = 539
     60    Height = 65
     61    Top = 126
     62    Width = 647
    6563    Align = alTop
    6664    BevelOuter = bvNone
    67     ClientHeight = 54
    68     ClientWidth = 539
     65    ClientHeight = 65
     66    ClientWidth = 647
    6967    TabOrder = 2
    7068    object ProgressBarPart: TProgressBar
    71       Left = 10
    72       Height = 24
    73       Top = 24
    74       Width = 523
     69      Left = 12
     70      Height = 29
     71      Top = 29
     72      Width = 628
    7573      Anchors = [akTop, akLeft, akRight]
    7674      TabOrder = 0
    7775    end
    7876    object LabelEstimatedTimePart: TLabel
    79       Left = 8
    80       Height = 20
     77      Left = 10
     78      Height = 26
    8179      Top = -2
    82       Width = 103
     80      Width = 132
    8381      Caption = 'Estimated time:'
    84       ParentColor = False
    8582    end
    8683  end
    8784  object PanelOperations: TPanel
    8885    Left = 0
    89     Height = 42
    90     Top = 64
    91     Width = 539
     86    Height = 50
     87    Top = 76
     88    Width = 647
    9289    Align = alTop
    9390    BevelOuter = bvNone
    94     ClientHeight = 42
    95     ClientWidth = 539
     91    ClientHeight = 50
     92    ClientWidth = 647
    9693    FullRepaint = False
    9794    TabOrder = 3
    9895    object ListViewJobs: TListView
    99       Left = 8
    100       Height = 32
    101       Top = 5
    102       Width = 523
     96      Left = 10
     97      Height = 38
     98      Top = 6
     99      Width = 627
    103100      Anchors = [akTop, akLeft, akRight, akBottom]
    104101      AutoWidthLastColumn = True
     
    107104      Columns = <     
    108105        item
    109           Width = 523
     106          Width = 614
    110107        end>
    111108      OwnerData = True
     
    120117  object PanelProgressTotal: TPanel
    121118    Left = 0
    122     Height = 52
    123     Top = 160
    124     Width = 539
     119    Height = 62
     120    Top = 191
     121    Width = 647
    125122    Align = alTop
    126123    BevelOuter = bvNone
    127     ClientHeight = 52
    128     ClientWidth = 539
     124    ClientHeight = 62
     125    ClientWidth = 647
    129126    TabOrder = 4
    130127    object LabelEstimatedTimeTotal: TLabel
    131       Left = 8
    132       Height = 20
     128      Left = 10
     129      Height = 26
    133130      Top = 0
    134       Width = 141
     131      Width = 178
    135132      Caption = 'Total estimated time:'
    136       ParentColor = False
    137133    end
    138134    object ProgressBarTotal: TProgressBar
    139       Left = 8
    140       Height = 24
    141       Top = 24
    142       Width = 523
     135      Left = 10
     136      Height = 29
     137      Top = 29
     138      Width = 627
    143139      Anchors = [akTop, akLeft, akRight]
    144140      TabOrder = 0
     
    147143  object PanelText: TPanel
    148144    Left = 0
    149     Height = 32
    150     Top = 32
    151     Width = 539
     145    Height = 38
     146    Top = 38
     147    Width = 647
    152148    Align = alTop
    153149    BevelOuter = bvNone
    154     ClientHeight = 32
    155     ClientWidth = 539
     150    ClientHeight = 38
     151    ClientWidth = 647
    156152    TabOrder = 5
    157153    object LabelText: TLabel
    158       Left = 8
    159       Height = 24
    160       Top = 8
    161       Width = 525
     154      Left = 10
     155      Height = 29
     156      Top = 10
     157      Width = 630
    162158      Anchors = [akTop, akLeft, akRight]
    163159      AutoSize = False
    164       ParentColor = False
    165160    end
    166161  end
    167162  object ImageList1: TImageList
    168     BkColor = clForeground
    169     left = 200
    170     top = 8
     163    Left = 240
     164    Top = 10
    171165    Bitmap = {
    172       4C69020000001000000010000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
    173       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    174       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    175       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    176       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    177       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    178       FF00000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    179       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
    180       00FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    181       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF0000
    182       00FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    183       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF0000
    184       00FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    185       FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000
    186       00FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FFFF00FF00FF00
    187       FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF000000FFFF00
    188       FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FFFF00
    189       FF00FF00FF00FF00FF00000000FF000000FF000000FF000000FFFF00FF00FF00
    190       FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000
    191       00FFFF00FF00000000FF000000FF000000FF000000FFFF00FF00FF00FF00FF00
    192       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF0000
    193       00FF000000FF000000FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00
    194       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF0000
    195       00FF000000FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00
    196       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
    197       00FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    198       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    199       FF00000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    200       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    201       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    202       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    203       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    204       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    205       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    206       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    207       FF00FF00FF00FF00FF00FF00FF00000000FFFF00FF00FF00FF00FF00FF00FF00
    208       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    209       FF00FF00FF00FF00FF00FF00FF00000000FF000000FFFF00FF00FF00FF00FF00
    210       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    211       FF00FF00FF00FF00FF00FF00FF00000000FF000084FF000000FFFF00FF00FF00
    212       FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000
    213       00FF000000FF000000FF000000FF000000FF0000FFFF000084FF000000FFFF00
    214       FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000
    215       FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000084FF0000
    216       00FFFF00FF00FF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000
    217       FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
    218       84FF000000FFFF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000
    219       FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
    220       FFFF000084FF000000FFFF00FF00FF00FF00000000FF0000FFFF0000FFFF0000
    221       FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
    222       84FF000000FFFF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000
    223       FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000084FF0000
    224       00FFFF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000
    225       00FF000000FF000000FF000000FF000000FF0000FFFF000084FF000000FFFF00
    226       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    227       FF00FF00FF00FF00FF00FF00FF00000000FF000084FF000000FFFF00FF00FF00
    228       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    229       FF00FF00FF00FF00FF00FF00FF00000000FF000000FFFF00FF00FF00FF00FF00
    230       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    231       FF00FF00FF00FF00FF00FF00FF00000000FFFF00FF00FF00FF00FF00FF00FF00
    232       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    233       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    234       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    235       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    236       FF00FF00FF00FF00FF00FF00FF00
     166      4C7A0200000010000000100000006A0000000000000078DAE593490E00100C45
     167      7B78F72E5684A63A1142C382BE4F0708F89C955117F4B016BE67B5FC6E96DB97
     168      B0D4B9F4CD949F36DED1DF922B0F1BD11FAB5AFC68DE5C44D40220A9FA779EC8
     169      6A349FD5A435E43CADA1E3678D73F773F1DBF3EFADFFEEFEBBF97F6696BE9D36
    237170    }
    238171  end
     
    241174    Interval = 100
    242175    OnTimer = TimerUpdateTimer
    243     left = 320
    244     top = 8
     176    Left = 384
     177    Top = 10
    245178  end
    246179end
  • trunk/Packages/Common/UJobProgressView.pas

    r21 r90  
    77uses
    88  SysUtils, Variants, Classes, Graphics, Controls, Forms, Syncobjs,
    9   Dialogs, ComCtrls, StdCtrls, ExtCtrls, Contnrs, UThreading, Math,
     9  Dialogs, ComCtrls, StdCtrls, ExtCtrls, fgl, UThreading, Math,
    1010  DateUtils;
    1111
     
    7171  end;
    7272
    73   TJobs = class(TObjectList)
     73  TJobs = class(TFPGObjectList<TJob>)
    7474  end;
    7575
     
    105105    procedure ReloadJobList;
    106106    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    107     procedure FormDestroy(Sender: TObject);
    108107    procedure ListViewJobsData(Sender: TObject; Item: TListItem);
    109108    procedure TimerUpdateTimer(Sender: TObject);
     
    286285end;
    287286
    288 procedure TFormJobProgressView.FormDestroy(Sender:TObject);
    289 begin
    290 end;
    291 
    292287procedure TFormJobProgressView.ListViewJobsData(Sender: TObject; Item: TListItem);
    293288begin
    294289  if (Item.Index >= 0) and (Item.Index < JobProgressView.Jobs.Count) then
    295   with TJob(JobProgressView.Jobs[Item.Index]) do begin
     290  with JobProgressView.Jobs[Item.Index] do begin
    296291    Item.Caption := Title;
    297292    if Item.Index = JobProgressView.CurrentJobIndex then Item.ImageIndex := 1
     
    405400    I := 0;
    406401    while I < Jobs.Count do
    407     with TJob(Jobs[I]) do begin
     402    with Jobs[I] do begin
    408403      CurrentJobIndex := I;
    409       CurrentJob := TJob(Jobs[I]);
     404      CurrentJob := Jobs[I];
    410405      JobProgressChange(Self);
    411406      StartTime := Now;
     
    420415        Method(CurrentJob);
    421416      end else begin
     417        Thread := TJobThread.Create(True);
    422418        try
    423           Thread := TJobThread.Create(True);
    424419          with Thread do begin
    425420            FreeOnTerminate := False;
     
    494489  if AValue = FTerminate then Exit;
    495490  for I := 0 to Jobs.Count - 1 do
    496     TJob(Jobs[I]).Terminate := AValue;
     491    Jobs[I].Terminate := AValue;
    497492  FTerminate := AValue;
    498493end;
     
    620615procedure TProgress.Increment;
    621616begin
    622   try
    623     FLock.Acquire;
     617  FLock.Acquire;
     618  try
    624619    Value := Value + 1;
    625620  finally
     
    630625procedure TProgress.Reset;
    631626begin
    632   try
    633     FLock.Acquire;
     627  FLock.Acquire;
     628  try
    634629    FValue := 0;
    635630  finally
     
    678673destructor TJob.Destroy;
    679674begin
    680   Progress.Free;
     675  FreeAndNil(Progress);
    681676  inherited;
    682677end;
  • trunk/Packages/Common/ULanguages.pas

    r22 r90  
    11unit ULanguages;
    22
    3 {$mode objfpc}{$H+}
     3{$mode delphi}{$H+}
    44
    55interface
    66
    77uses
    8   Classes, SysUtils, Contnrs;
     8  Classes, SysUtils, fgl;
    99
    1010type
     
    1515  end;
    1616
    17   { TLanguageList }
    18 
    19   TLanguageList = class(TObjectList)
     17  { TLanguages }
     18
     19  TLanguages = class(TFPGObjectList<TLanguage>)
    2020    function SearchByCode(ACode: string): TLanguage;
    2121    procedure AddNew(Code: string; Name: string);
    22     constructor Create;
     22    constructor Create(FreeObjects: Boolean = True);
    2323  end;
    2424
     
    223223
    224224
    225 { TLanguageList }
    226 
    227 function TLanguageList.SearchByCode(ACode: string): TLanguage;
     225{ TLanguages }
     226
     227function TLanguages.SearchByCode(ACode: string): TLanguage;
    228228var
    229229  I: Integer;
     
    235235end;
    236236
    237 procedure TLanguageList.AddNew(Code: string; Name: string);
     237procedure TLanguages.AddNew(Code: string; Name: string);
    238238var
    239239  NewItem: TLanguage;
     
    245245end;
    246246
    247 constructor TLanguageList.Create;
     247constructor TLanguages.Create(FreeObjects: Boolean);
    248248begin
    249   inherited Create;
     249  inherited;
    250250  AddNew('', SLangAuto);
    251251  AddNew('aa', SLang_aa);
  • trunk/Packages/Common/UMetaCanvas.pas

    r22 r90  
    142142    procedure RoundRect(const Rect: TRect; RX,RY: Integer); overload;
    143143    procedure TextOut(X,Y: Integer; const Text: String); override;
    144     procedure Polygon(Points: PPoint; NumPts: Integer; Winding: boolean = False); override;
     144    procedure Polygon(Points: PPoint; NumPts: Integer; Winding: Boolean = False); override;
    145145    procedure Ellipse(x1, y1, x2, y2: Integer); override;
    146146    procedure StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); override;
     
    502502end;
    503503
    504 procedure TMetaCanvas.Polygon(Points: PPoint; NumPts: Integer; Winding: boolean
     504procedure TMetaCanvas.Polygon(Points: PPoint; NumPts: Integer; Winding: Boolean
    505505  );
    506506var
     
    508508  I: Integer;
    509509begin
     510  APoints := nil;
    510511  SetLength(APoints, NumPts);
    511512  for I := 0 to High(APoints) do
  • trunk/Packages/Common/URegistry.pas

    r22 r90  
    132132function TRegistryEx.OpenKey(const Key: string; CanCreate: Boolean): Boolean;
    133133begin
    134   {$IFDEF Linux}
     134  {$IFDEF UNIX}
    135135  //CloseKey;
    136136  {$ENDIF}
     
    140140function TRegistryEx.GetCurrentContext: TRegistryContext;
    141141begin
    142   Result.Key := CurrentPath;
     142  Result.Key := String(CurrentPath);
    143143  Result.RootKey := RootKey;
    144144end;
  • trunk/Packages/Common/UScaleDPI.pas

    r22 r90  
    88
    99uses
    10   Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils, StdCtrls,
    11   Contnrs;
     10  Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils, fgl;
    1211
    1312type
     13  TControlDimensions = class;
    1414
    1515  { TControlDimension }
     
    1818    BoundsRect: TRect;
    1919    FontHeight: Integer;
    20     Controls: TObjectList; // TList<TControlDimension>
     20    Controls: TControlDimensions;
    2121    // Class specifics
    2222    ButtonSize: TPoint; // TToolBar
     
    2626    constructor Create;
    2727    destructor Destroy; override;
     28  end;
     29
     30  TControlDimensions = class(TFPGObjectList<TControlDimension>)
    2831  end;
    2932
     
    7376constructor TControlDimension.Create;
    7477begin
    75   Controls := TObjectList.Create;
     78  Controls := TControlDimensions.Create;
    7679end;
    7780
     
    7982begin
    8083  FreeAndNil(Controls);
    81   inherited Destroy;
     84  inherited;
    8285end;
    8386
     
    212215  TempBmp: TBitmap;
    213216  Temp: array of TBitmap;
    214   NewWidth, NewHeight: integer;
     217  NewWidth: Integer;
     218  NewHeight: Integer;
    215219  I: Integer;
    216220begin
    217221  ImgList.BeginUpdate;
    218   NewWidth := ScaleX(ImgList.Width, FromDPI.X);
    219   NewHeight := ScaleY(ImgList.Height, FromDPI.Y);
    220 
    221   SetLength(Temp, ImgList.Count);
    222   for I := 0 to ImgList.Count - 1 do
    223   begin
    224     TempBmp := TBitmap.Create;
    225     TempBmp.PixelFormat := pf32bit;
    226     ImgList.GetBitmap(I, TempBmp);
    227     Temp[I] := TBitmap.Create;
    228     Temp[I].SetSize(NewWidth, NewHeight);
    229     {$IFDEF Linux}
    230     Temp[I].PixelFormat := pf24bit;
    231     {$ELSE}
    232     Temp[I].PixelFormat := pf32bit;
    233     {$ENDIF}
    234     Temp[I].TransparentColor := TempBmp.TransparentColor;
    235     //Temp[I].TransparentMode := TempBmp.TransparentMode;
    236     Temp[I].Transparent := True;
    237     Temp[I].Canvas.Brush.Style := bsSolid;
    238     Temp[I].Canvas.Brush.Color := Temp[I].TransparentColor;
    239     Temp[I].Canvas.FillRect(0, 0, Temp[I].Width, Temp[I].Height);
    240 
    241     if (Temp[I].Width = 0) or (Temp[I].Height = 0) then Continue;
    242     Temp[I].Canvas.StretchDraw(Rect(0, 0, Temp[I].Width, Temp[I].Height), TempBmp);
    243     TempBmp.Free;
    244   end;
    245 
    246   ImgList.Clear;
    247   ImgList.Width := NewWidth;
    248   ImgList.Height := NewHeight;
    249 
    250   for I := 0 to High(Temp) do
    251   begin
    252     ImgList.Add(Temp[I], nil);
    253     Temp[i].Free;
    254   end;
    255   ImgList.EndUpdate;
     222  try
     223    NewWidth := ScaleX(ImgList.Width, FromDPI.X);
     224    NewHeight := ScaleY(ImgList.Height, FromDPI.Y);
     225
     226    Temp := nil;
     227    SetLength(Temp, ImgList.Count);
     228    for I := 0 to ImgList.Count - 1 do
     229    begin
     230      TempBmp := TBitmap.Create;
     231      try
     232        TempBmp.PixelFormat := pf32bit;
     233        ImgList.GetBitmap(I, TempBmp);
     234        Temp[I] := TBitmap.Create;
     235        Temp[I].SetSize(NewWidth, NewHeight);
     236        {$IFDEF UNIX}
     237        Temp[I].PixelFormat := pf24bit;
     238        {$ELSE}
     239        Temp[I].PixelFormat := pf32bit;
     240        {$ENDIF}
     241        Temp[I].TransparentColor := TempBmp.TransparentColor;
     242        //Temp[I].TransparentMode := TempBmp.TransparentMode;
     243        Temp[I].Transparent := True;
     244        Temp[I].Canvas.Brush.Style := bsSolid;
     245        Temp[I].Canvas.Brush.Color := Temp[I].TransparentColor;
     246        Temp[I].Canvas.FillRect(0, 0, Temp[I].Width, Temp[I].Height);
     247
     248        if (Temp[I].Width = 0) or (Temp[I].Height = 0) then Continue;
     249        Temp[I].Canvas.StretchDraw(Rect(0, 0, Temp[I].Width, Temp[I].Height), TempBmp);
     250      finally
     251        TempBmp.Free;
     252      end;
     253    end;
     254
     255    ImgList.Clear;
     256    ImgList.Width := NewWidth;
     257    ImgList.Height := NewHeight;
     258
     259    for I := 0 to High(Temp) do
     260    begin
     261      ImgList.Add(Temp[I], nil);
     262      Temp[i].Free;
     263    end;
     264  finally
     265    ImgList.EndUpdate;
     266  end;
    256267end;
    257268
     
    331342  with TCoolBar(Control) do begin
    332343    BeginUpdate;
    333     for I := 0 to Bands.Count - 1 do
    334       with Bands[I] do begin
    335         MinWidth := ScaleX(MinWidth, FromDPI.X);
    336         MinHeight := ScaleY(MinHeight, FromDPI.Y);
    337         // Workaround to bad band width auto sizing
    338         //Width := ScaleX(Width, FromDPI.X);
    339         Width := ScaleX(Control.Width + 28, FromDPI.X);
    340         //Control.Invalidate;
     344    try
     345      for I := 0 to Bands.Count - 1 do
     346        with Bands[I] do begin
     347          MinWidth := ScaleX(MinWidth, FromDPI.X);
     348          MinHeight := ScaleY(MinHeight, FromDPI.Y);
     349          // Workaround to bad band width auto sizing
     350          //Width := ScaleX(Width, FromDPI.X);
     351          Width := ScaleX(Control.Width + 28, FromDPI.X);
     352          //Control.Invalidate;
     353        end;
     354      // Workaround for bad autosizing of coolbar
     355      if AutoSize then begin
     356        AutoSize := False;
     357        Height := ScaleY(Height, FromDPI.Y);
     358        AutoSize := True;
    341359      end;
    342     // Workaround for bad autosizing of coolbar
    343     if AutoSize then begin
    344       AutoSize := False;
    345       Height := ScaleY(Height, FromDPI.Y);
    346       AutoSize := True;
    347     end;
    348     EndUpdate;
     360    finally
     361      EndUpdate;
     362    end;
    349363  end;
    350364
  • trunk/Packages/Common/UTranslator.pas

    r22 r90  
    11unit UTranslator;
    22
    3 {$mode Delphi}{$H+}
     3{$mode delphi}{$H+}
    44
    55interface
    66
    77uses
    8   Classes, SysUtils, Forms, ExtCtrls, Controls, Contnrs, LazFileUtils, LazUTF8,
     8  Classes, SysUtils, Forms, ExtCtrls, Controls, fgl, LazFileUtils, LazUTF8,
    99  Translations, TypInfo, Dialogs, FileUtil, LCLProc, ULanguages, LCLType,
    1010  LCLVersion;
     
    1212type
    1313  THandleStringEvent = function (AValue: string): string of object;
     14
     15  TPoFiles = class(TFPGObjectList<TPOFile>)
     16  end;
    1417
    1518  { TComponentExcludes }
     
    2427  { TComponentExcludesList }
    2528
    26   TComponentExcludesList = class(TObjectList)
     29  TComponentExcludesList = class(TFPGObjectList<TComponentExcludes>)
    2730    function FindByClassType(AClassType: TClass): TComponentExcludes;
    2831    procedure DumpToStrings(Strings: TStrings);
     
    3639    FOnAutomaticLanguage: THandleStringEvent;
    3740    FOnTranslate: TNotifyEvent;
    38     FPOFilesFolder: string;
    39     FPOFiles: TObjectList; // TObjectList<TPOFile>;
     41    FPoFilesFolder: string;
     42    FPoFiles: TPoFiles;
    4043    function GetLocale: string;
    4144    function GetLocaleShort: string;
     
    5053  public
    5154    ComponentExcludes: TComponentExcludesList;
    52     Languages: TLanguageList;
     55    Languages: TLanguages;
    5356    procedure Translate;
    54     procedure LanguageListToStrings(Strings: TStrings);
     57    procedure LanguageListToStrings(Strings: TStrings; WithCode: Boolean = True);
    5558    procedure TranslateResourceStrings(PoFileName: string);
    5659    procedure TranslateUnitResourceStrings(UnitName: string; PoFileName: string);
     
    6366    destructor Destroy; override;
    6467  published
    65     property POFilesFolder: string read FPOFilesFolder write SetPOFilesFolder;
     68    property POFilesFolder: string read FPoFilesFolder write SetPOFilesFolder;
    6669    property Language: TLanguage read FLanguage write SetLanguage;
    6770    property OnTranslate: TNotifyEvent read FOnTranslate write FOnTranslate;
     
    7174
    7275procedure Register;
     76
    7377
    7478implementation
     
    117121destructor TComponentExcludes.Destroy;
    118122begin
    119   PropertyExcludes.Free;
    120   inherited Destroy;
     123  FreeAndNil(PropertyExcludes);
     124  inherited;
    121125end;
    122126
     
    128132  I, J: Integer;
    129133  Po: TPoFile;
    130   Item: TPOFileItem;
     134  Item: TPoFileItem;
    131135begin
    132136  TranslateComponentRecursive(Application);
     
    134138  // Merge files to single translation file
    135139  try
    136     Po := TPOFile.Create;
    137     for I := 0 to FPOFiles.Count - 1 do
     140    Po := TPoFile.Create;
     141    for I := 0 to FPoFiles.Count - 1 do
    138142    with TPoFile(FPoFiles[I]) do
    139143      for J := 0 to Items.Count - 1 do
     
    162166  SearchMask: string;
    163167begin
    164   FPOFiles.Clear;
     168  FPoFiles.Clear;
    165169  if Assigned(FLanguage) then
    166170  try
     
    177181      if FileExists(FileName) and (
    178182      ((LocaleShort = '') and (Pos('.', FileName) = Pos('.po', FileName))) or
    179       (LocaleShort <> '')) then FPOFiles.Add(TPOFile.Create(FileName));
     183      (LocaleShort <> '')) then FPoFiles.Add(TPOFile.Create(FileName));
    180184    end;
    181185  finally
     
    281285var
    282286  Item: TClass;
    283 
    284287  Excludes: TComponentExcludes;
    285288begin
     
    301304function TTranslator.GetLangFileDir: string;
    302305begin
    303   Result := FPOFilesFolder;
     306  Result := FPoFilesFolder;
    304307  if Copy(Result, 1, 1) <> DirectorySeparator then
    305308    Result := ExtractFileDir(Application.ExeName) +
     
    307310end;
    308311
    309 procedure TTranslator.LanguageListToStrings(Strings: TStrings);
     312procedure TTranslator.LanguageListToStrings(Strings: TStrings; WithCode: Boolean = True);
    310313var
    311314  I: Integer;
     
    313316begin
    314317  with Strings do begin
    315     Clear;
    316     for I := 0 to Languages.Count - 1 do
    317     with TLanguage(Languages[I]) do
    318       if Available then begin
    319         ItemName := Name;
    320         if Code <> '' then ItemName := ItemName + ' (' + Code + ')';
    321         AddObject(ItemName, Languages[I]);
    322       end;
     318    BeginUpdate;
     319    try
     320      Clear;
     321      for I := 0 to Languages.Count - 1 do
     322      with Languages[I] do
     323        if Available then begin
     324          ItemName := Name;
     325          if WithCode and (Code <> '') then ItemName := ItemName + ' (' + Code + ')';
     326          AddObject(ItemName, Languages[I]);
     327        end;
     328    finally
     329      EndUpdate;
     330    end;
    323331  end;
    324332end;
     
    342350  if Text <> '' then begin
    343351    for I := 0 to FPoFiles.Count - 1 do begin
    344       Result := TPoFile(FPOFiles[I]).Translate(Identifier, Text);
     352      Result := TPoFile(FPoFiles[I]).Translate(Identifier, Text);
    345353      if Result <> Text then Break;
    346354    end;
     
    369377begin
    370378  LangDir := GetLangFileDir;
    371   TLanguage(Languages[0]).Available := True; // Automatic
     379  Languages.SearchByCode('').Available := True; // Automatic
    372380
    373381  for I := 1 to Languages.Count - 1 do
    374   with TLanguage(Languages[I]) do begin
     382  with Languages[I] do begin
    375383    Available := FileExists(LangDir + DirectorySeparator + ExtractFileNameOnly(Application.ExeName) +
    376384      '.' + Code + ExtensionSeparator + 'po') or (Code = 'en');
     
    381389begin
    382390  inherited;
    383   FPOFiles := TObjectList.Create;
     391  FPoFiles := TPoFiles.Create;
    384392  ComponentExcludes := TComponentExcludesList.Create;
    385   Languages := TLanguageList.Create;
     393  Languages := TLanguages.Create;
    386394  POFilesFolder := 'Languages';
    387395  CheckLanguageFiles;
     
    395403destructor TTranslator.Destroy;
    396404begin
    397   FPOFiles.Free;
    398   Languages.Free;
    399   ComponentExcludes.Free;
    400   inherited Destroy;
     405  FreeAndNil(FPoFiles);
     406  FreeAndNil(Languages);
     407  FreeAndNil(ComponentExcludes);
     408  inherited;
    401409end;
    402410
  • trunk/UContact.pas

    r88 r90  
    11471147  ParseState: TParseState;
    11481148  Line: string;
     1149  Line2: string;
    11491150  Value: string;
    11501151  I: Integer;
     
    11811182        while True do begin
    11821183          Inc(I);
    1183           if (Length(Lines[I]) > 0) and (Lines[I][1] = ' ') then begin
     1184          Line2 := Lines[I];
     1185          if (Length(Lines[I]) > 0) and (Line2[1] = ' ') then begin
    11841186            Value := Value + Trim(Lines[I]);
    11851187          end else
  • trunk/UCore.lfm

    r83 r90  
    33  OnDestroy = DataModuleDestroy
    44  OldCreateOrder = False
    5   Height = 529
    6   HorizontalOffset = 669
    7   VerticalOffset = 607
    8   Width = 726
    9   PPI = 144
     5  Height = 551
     6  HorizontalOffset = 697
     7  VerticalOffset = 632
     8  Width = 756
     9  PPI = 150
    1010  object ImageList1: TImageList
    11     Left = 115
    12     Top = 200
     11    Left = 120
     12    Top = 208
    1313    Bitmap = {
    14       4C690F0000001000000010000000000000000000000000000000000000000000
    15       0000000000000000000000000000000000000000000000000000000000000000
    16       0000000000000000000000000000000000000000000000000000000000000000
    17       00000000000000000000D69562FFD69562FFD69562FFD1925FFFD1925FFFD192
    18       5FFFD1925FFFD1925FFF875735FF000000000000000000000000000000000000
    19       00000000000000000000D69562FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5
    20       F5FFF5F5F5FFF5F5F5FF875735FF000000000000000000000000000000000000
    21       00000000000000000000D69562FFFAFAFAFFFFEDE0FFFFEDE0FFFFEDE0FFFFED
    22       E0FFFFEDE0FFFFFFFFFF875735FF000000000000000000000000000000000000
    23       00000000000000000000EED4BFFFFFFFFFFFE0D5BFFFE4D9C3FFCCB27EFFFFED
    24       E0FFFFEDE0FFFFFFFFFF875735FF00000000D69562FFD69562FFD69562FFD192
    25       5FFFD1925FFFD1925FFFD1925FFFD1925FFF875735FFFFF7F2FFFFECDEFFFFEC
    26       DEFFFFECDDFFFFFFFFFF875735FF00000000D69562FFF5F5F5FFF5F5F5FFF5F5
    27       F5FFF5F5F5FFF5F5F5FFF5F5F5FFF5F5F5FF875735FFE4D9C3FFCCB27EFFD5BC
    28       87FFDDC490FFFFFFFFFF875735FF00000000D69562FFFAFAFAFFFFEDE0FFFFED
    29       E0FFFFEDE0FFFFEDE0FFFFEDE0FFFFFFFFFF875735FFFFF6EFFFFFE8D7FFFFE8
    30       D7FFFFE8D7FFFFFFFFFF875735FF00000000D49360FFFFFFFFFFB2955FFFBB9F
    31       69FFCCB27EFFFFEDE0FFFFEDE0FFFFFFFFFF875735FFE4D9C3FFCCB27EFFD5BC
    32       87FFDDC490FFFFFFFFFF875735FF00000000D0905EFFFFFFFFFFFFECDEFFFFEC
    33       DEFFFFECDEFFFFECDEFFFFECDDFFFFFFFFFF875735FFFFF6EFFFFFE8D7FFFFE8
    34       D7FFFFE8D7FFFFFFFFFF875735FF00000000CC8D5CFFFFFFFFFFB2955FFFBB9F
    35       69FFCCB27EFFD5BC87FFDDC490FFFFFFFFFF875735FFFFFFFFFFFFFFFFFFFFFF
    36       FFFFFFFFFFFFFFFFFFFF875735FF00000000C18556FFFFFFFFFFFFE8D7FFFFE8
    37       D7FFFFE8D7FFFFE8D7FFFFE8D7FFFFFFFFFF875735FFCFBCAEFF875735FF8757
    38       35FF875735FF875735FF875735FF00000000C18556FFFFFFFFFFB2955FFFBB9F
    39       69FFCCB27EFFD5BC87FFDDC490FFFFFFFFFF875735FF00000000000000000000
    40       000000000000000000000000000000000000C18556FFFFFFFFFFFFE8D7FFFFE8
    41       D7FFFFE8D7FFFFE8D7FFFFE8D7FFFFFFFFFF875735FF00000000000000000000
    42       000000000000000000000000000000000000C18556FFFFFFFFFFFFFFFFFFFFFF
    43       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF875735FF00000000000000000000
    44       000000000000000000000000000000000000875735FF875735FF875735FF8757
    45       35FF875735FF875735FF875735FF875735FF875735FF00000000000000000000
    46       0000000000000000000000000000000000000000000000000000000000000000
    47       0000000000000000000000000000000000000000000000000000000000000000
    48       0000000000000000000000000000000000000000000000000000000000000000
    49       0000000000000000000000000000000000000000000000000000000000000000
    50       000000000000000000000000000000000000000000001818C0FF1818C0FFC0C0
    51       C0FF000000000000000000000000000000000000000000000000000000000000
    52       00001818C0FF1818C0FFC0C0C0FF00000000000000002020C8FF2020C8FF2020
    53       C8FF2020C8FFC0C0C0FF00000000000000000000000000000000000000002020
    54       C8FF2020C8FFC0C0C0FF000000000000000000000000000000002626CEFF2626
    55       CEFF2626CEFF2626CEFFC0C0C0FF0000000000000000000000002626CEFF2626
    56       CEFFC0C0C0FF0000000000000000000000000000000000000000000000000000
    57       00002929D1FF2929D1FF2929D1FFC0C0C0FF000000002929D1FFC0C0C0FF0000
    58       0000000000000000000000000000000000000000000000000000000000000000
    59       0000000000002C2CD4FF2C2CD4FF2C2CD4FF2C2CD4FF2C2CD4FFC0C0C0FF0000
    60       0000000000000000000000000000000000000000000000000000000000000000
    61       000000000000000000002F2FD7FF2F2FD7FF2F2FD7FFC0C0C0FF000000000000
    62       0000000000000000000000000000000000000000000000000000000000000000
    63       0000000000003232DAFF3232DAFF3232DAFF3232DAFF3232DAFFC0C0C0FF0000
    64       0000000000000000000000000000000000000000000000000000000000000000
    65       00003535DDFF3535DDFF3535DDFFC0C0C0FF000000003535DDFF3535DDFFC0C0
    66       C0FF000000000000000000000000000000000000000000000000000000003838
    67       E0FF3838E0FF3838E0FFC0C0C0FF0000000000000000000000003838E0FF3838
    68       E0FFC0C0C0FF00000000000000000000000000000000000000003A3AE2FF3A3A
    69       E2FF3A3AE2FFC0C0C0FF00000000000000000000000000000000000000003A3A
    70       E2FFC0C0C0FF00000000000000000000000000000000000000003A3AE2FF3A3A
    71       E2FF3A3AE2FFC0C0C0FF00000000000000000000000000000000000000000000
    72       00003A3AE2FFC0C0C0FF00000000000000000000000000000000000000003A3A
    73       E2FFC0C0C0FF0000000000000000000000000000000000000000000000000000
    74       0000000000000000000000000000000000000000000000000000000000000000
    75       0000000000000000000000000000000000000000000000000000000000000000
    76       0000000000003A3AE2FFC0C0C0FF000000000000000000000000000000000000
    77       0000000000000000000000000000000000000000000000000000000000000000
    78       0000000000000000000000000000000000000000000000000000000000000000
    79       0000000000000000000000000000000000000000000000000000000000000000
    80       000000000000000000000000000000000000000000FF000000FF000000FF0000
    81       00FF000000FF000000FF000000FF000000FF0000000000000000000000000000
    82       000000000000000000000000000000000000000000FF000000FFFFFFFFFFFFFF
    83       FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000000000000000000000
    84       000000000000000000000000000000000000000000FF008484FF000000FFFFFF
    85       FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000000000000000000000
    86       0000840000FF000000000000000000000000000000FF008484FF008484FF0000
    87       00FFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000000000000000008400
    88       00FF840000FF000000000000000000000000000000FF008484FF008484FF0084
    89       84FF000000FFFFFFFFFFFFFFFFFF000000FF0000000000000000840000FF8400
    90       00FF840000FF840000FF840000FF00000000000000FF008484FF008484FF0084
    91       84FF000000FFFFFFFFFFFFFFFFFF000000FF00000000840000FF840000FF8400
    92       00FF840000FF840000FF840000FF00000000000000FF008484FF008484FF0084
    93       84FF000000FFFFFFFFFFFFFFFFFF000000FF0000000000000000840000FF8400
    94       00FF840000FF840000FF840000FF00000000000000FF008484FF008484FF0084
    95       84FF000000FFFFFFFFFFFFFFFFFF000000FF0000000000000000000000008400
    96       00FF840000FF000000000000000000000000000000FF008484FF008484FF0000
    97       00FF000000FFFFFFFFFFFFFFFFFF000000FF0000000000000000000000000000
    98       0000840000FF000000000000000000000000000000FF008484FF008484FF0084
    99       84FF000000FFFFFFFFFFFFFFFFFF000000FF0000000000000000000000000000
    100       0000000000000000000000000000000000FF000000FF008484FF008484FF0084
    101       84FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
    102       00FF0000000000000000000000000000000000000000000000FF008484FF0084
    103       84FF000000FF0000000000000000000000000000000000000000000000000000
    104       0000000000000000000000000000000000000000000000000000000000FF0084
    105       84FF000000FF0000000000000000000000000000000000000000000000000000
    106       0000000000000000000000000000000000000000000000000000000000000000
    107       00FF000000FF0000000000000000000000000000000000000000000000000000
    108       0000000000000000000000000000000000000000000000000000000000000000
    109       0000000000FF0000000000000000000000000000000000000000000000000000
    110       0000000000000000000000000000000000000000000000000000000000000000
    111       0000000000000000000000000000000000000000000000000000000000000000
    112       000000000000000000000000000000000000000000000000000000000000C584
    113       44FFC28342FFD89C6DFFD69668FFD49463FFD69668FFB2793CFFB1783BFF0000
    114       0000000000000000000000000000000000000000000000000000C58442FFDCA2
    115       77FFF3DAC7FFFCF7F1FFFFFEFEFFFFFEFEFFFCF4EDFFF1D6C0FFC7935DFFA66F
    116       33FF0000000000000000000000000000000000000000C48443FFE5B999FFFCF4
    117       EDFFFBD2C1FFFAA887FFFD8757FFFD8454FFF8A582FFF7CEBDFFFAF1E7FFD2A7
    118       7AFFA36A2AFF000000000000000000000000C48445FFDCA277FFFCF4EDFFFABF
    119       A6FFFF7A43FFFFBB9EFFFFF6F3FFFFFEFEFFFEEDE5FFFA9970FFF3B69CFFF8F0
    120       E6FFBB8B56FF986426FF0000000000000000C48341FFF0DAC3FFFAD1C0FFFF79
    121       40FFFF986EFFFFFEFEFFFFC9B2FFFD9164FFFAC6AFFFFEF5F1FFF5773DFFEDC5
    122       B2FFE4CBB3FF905D21FF0000000000000000D1834CFFFCF7F1FFFAA582FFFF73
    123       3AFFFF844EFFFFAE8AFFFE6C2DFFF76727FFF19268FFFFFEFEFFE98354FFD785
    124       60FFF8F1ECFF81551FFF0000000000000000CD844EFFFFFEFEFFFC814CFFFF70
    125       31FFFF6B2CFFFD6928FFF86523FFF49265FFFDF5F1FFF4D4C5FFC65018FFBA59
    126       27FFFEFEFDFF834A1CFF0000000000000000CD8147FFFFFEFEFFF87A46FFF968
    127       29FFF66525FFF16020FFF18653FFFFFEFEFFF0BFA8FFC55A24FFB64C15FFB757
    128       24FFFEFEFDFF7F481AFF0000000000000000CD7F45FFFCF4EDFFEC9772FFE860
    129       21FFE05A1DFFDB5819FFEDAA89FFFFFEFEFFC84E12FFB94C11FFB34C13FFC77B
    130       53FFF6F0ECFF7A4319FF0000000000000000B4793AFFEFD6C1FFEDC5B2FFDD5A
    131       1AFFD55617FFD25313FFD87D4DFFE3A686FFBB4C11FFB34A12FFB64A10FFDEB9
    132       A6FFDCC9B8FF563C0DFF0000000000000000B67734FFD6996BFFF9F0E7FFDDA4
    133       88FFC75013FFC04E11FFDCA688FFFFFEFEFFB54911FFB64A10FFD59E82FFF3EC
    134       E7FF9A7352FF49340DFF000000000000000000000000B2702BFFDBAB80FFF8EF
    135       E7FFE2BBA6FFCC7E56FFC15823FFC05722FFC97F56FFDEBAA7FFF2EBE7FFB393
    136       76FF483108FF0000000000000000000000000000000000000000A1692CFFC088
    137       58FFE0C9B4FFF7F1ECFFFEFDFCFFFEFDFCFFF5F0ECFFDCC9B8FF9E7857FF4731
    138       08FF000000000000000000000000000000000000000000000000000000009164
    139       29FF855A24FF885015FF824A1DFF7E4719FF794417FF583C0EFF49340DFF0000
    140       0000000000000000000000000000000000000000000000000000000000000000
    141       0000000000000000000000000000000000000000000000000000000000000000
    142       00000000000000000000000000000000000000000000F8CCA3FFEE9640FFEE96
    143       40FFEE9640FFEE9640FFEE9640FFEE9640FFEE9640FFF8CEA8FF000000000000
    144       00000000000000000000000000000000000000000000EE9640FFFFDCC8FFFFF2
    145       EBFFFFFCFAFFFFFFFFFFFFFFFFFFFFFAF7FFF9AF68FFF8C799FFEDC49EFF0000
    146       00000000000000000000000000000000000000000000EE9640FFFFEBDFFFFFDE
    147       CBFFFFE0CEFFFFE2D1FFFFE3D3FFFFE5D5FFF9AF68FFFCEEE0FFFAD2ADFFEDC4
    148       9EFF0000000000000000000000000000000000000000EE9640FFFFF5EFFFFFE1
    149       CFFFFFE3D3FFFFE5D5FFFFE6D8FFFFE8DAFFF9AF68FFFEF6EFFFFCEFE2FFF9CB
    150       A0FFEDC59FFF00000000000000000000000000000000EE9640FFFFFAF7FFFFE3
    151       D3FFFFE5D7FFFFE7DAFFFFE9DDFFFFEBDFFFEBB27CFFF9AF68FFF9AF68FFF9AF
    152       68FFF0A358FFEDEDEDFF000000000000000000000000EE9640FFFFFDFCFFFFE5
    153       D6FFFFE7DAFFFFEADEFFFFECE1FFFFEEE4FFF1D9C7FFF2D9C8FFF2D9C8FFF2E2
    154       D5FFF0AC6BFFD9D9D9FF000000000000000000000000EE9640FFFFFFFFFFFFE7
    155       D9FFFFEADDFFFFECE1FFFFEEE5FFFFF1E8FFFFF2EAFFFFF3ECFFFFF3ECFFFFFD
    156       FCFFF3B77BFFD9D9D9FF000000000000000000000000EE9640FFFFFFFFFFFFE8
    157       DCFFFFEBE0FFFFEEE4FFFFF1EAFFFFF4EDFFFFF6F1FFFFF7F2FFFFF7F3FFFFFF
    158       FFFFF4BE88FFD9D9D9FF000000000000000000000000EE9741FFFFFFFFFFFFEA
    159       DEFFFFEEE4FFFFF1E9FFFFF5EFFFFFF7F3FFFFF9F6FFFFFAF7FFFFFAF7FFFFFF
    160       FFFFF5C28FFFD9D9D9FF000000000000000000000000EE9843FFFFFEFDFFFFED
    161       E2FFFFF1E8FFFFF4EDFFFFF7F2FFFFF9F6FFFFFCF9FFFFFDFCFFFFFDFBFFFFFF
    162       FFFFF5C291FFD9D9D9FF000000000000000000000000EE9640FFFFFCFAFFFFEF
    163       E6FFFFF2EBFFFFF5EFFFFFF8F4FFFFFBF8FFFFFDFBFFFFFFFFFFFFFDFDFFFFFF
    164       FFFFF5C08DFFD9D9D9FF000000000000000000000000EE9640FFFFFAF7FFFFF1
    165       E9FFFFF4EEFFFFF7F2FFFFF9F5FFFFFBF9FFFFFDFBFFFFFEFDFFFFFDFCFFFFFE
    166       FEFFF4BB83FFD9D9D9FF000000000000000000000000EE9640FFFFF6F1FFFFF3
    167       ECFFFFF5EFFFFFF7F3FFFFF9F6FFFFFBF9FFFFFCFBFFFFFDFBFFFFFDFCFFFFFD
    168       FDFFF3B374FFD9D9D9FF000000000000000000000000EE9640FFFFF2EAFFFFF8
    169       F4FFFFFCFAFFFFFDFCFFFFFEFDFFFFFEFEFFFFFEFEFFFFFEFDFFFFFEFDFFFFFD
    170       FCFFF1A963FFD9D9D9FF000000000000000000000000F6C898FFEE9640FFEE96
    171       40FFF09F51FFF1A860FFF2AE6CFFF3B274FFF3B476FFF3B273FFF2AE6BFFF1A7
    172       5FFFE6BC93FFD9D9D9FF00000000000000000000000000000000EBEBEBFFD9D9
    173       D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9D9FFD9D9
    174       D9FFD9D9D9FFEBEBEBFF00000000000000000000000000000000000000000000
    175       0000000000000000000000000000000000000000000000000000000000000000
    176       0000000000000000000000000000000000000000000000000000000000000000
    177       000000000000000000000000000000000000000000FF000000FF000000FF0000
    178       0000000000000000000000000000000000000000000000000000000000000000
    179       0000000000000000000000000000000000FF0000000000000000000000000000
    180       00FF00000000000000FF00000000000000000000000000000000000000000000
    181       0000000000000000000000000000000000000000000000000000000000000000
    182       0000000000FF000000FF0000000000000000000000FF000000FF000000FF0000
    183       0000000000000000000000000000000000000000000000000000000000000000
    184       00FF000000FF000000FF00000000000000FF00FFFFFFFFFFFFFF00FFFFFF0000
    185       00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000
    186       0000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00FF
    187       FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF000000000000
    188       0000000000000000000000000000000000FF00FFFFFFFFFFFFFF00FFFFFFFFFF
    189       FFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFF000000FF000000000000
    190       0000000000000000000000000000000000FFFFFFFFFF00FFFFFFFFFFFFFF00FF
    191       FFFF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
    192       00FF000000FF000000FF000000FF000000FF00FFFFFFFFFFFFFF00FFFFFF0000
    193       00FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084
    194       84FF008484FF000000FF00000000000000FFFFFFFFFF00FFFFFF000000FF0084
    195       84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084
    196       84FF000000FF0000000000000000000000FF00FFFFFF000000FF008484FF0084
    197       84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0000
    198       00FF000000000000000000000000000000FF000000FF008484FF008484FF0084
    199       84FF008484FF008484FF008484FF008484FF008484FF008484FF000000FF0000
    200       0000000000000000000000000000000000FF000000FF000000FF000000FF0000
    201       00FF000000FF000000FF000000FF000000FF000000FF000000FF000000000000
    202       0000000000000000000000000000000000000000000000000000000000000000
    203       0000000000000000000000000000000000000000000000000000000000000000
    204       0000000000000000000000000000000000000000000000000000000000000000
    205       0000000000000000000000000000000000000000000000000000000000000000
    206       0000000000000000000000000000A37B48FFA37B48FFA27A47FFA27946FFA178
    207       45FFA07744FFA07643FF9F7542FF9E7441FF9E7340FF9D723FFF9C713EFF9C70
    208       3DFF9B6F3CFF9A6E3BFF9A6D3AFFA37B48FFBEA27FFFBEA17EFFBDA17DFFBDA0
    209       7CFFBD9F7CFFBC9F7BFFBB9E7AFFBB9D7AFFBB9D79FFBA9C78FFB99B78FFB99A
    210       77FFB89A76FFB89975FF996C39FFA27A47FFFFFFFFFFFFFFFFFFFEFEFEFFFEFE
    211       FEFFFDFDFDFFFDFDFCFFFCFCFBFFFCFBFBFFFBFBFAFFFBFAF9FFFAFAF9FFFAF9
    212       F8FFF9F9F7FFF9F8F7FF986B37FFA17946FFFFFFFFFF878787FF5D5D5DFFA0A0
    213       A0FFFDFCFCFFFCFCFBFFFCFBFBFFFBFBFAFFFBFAF9FFFAFAF9FFFAF9F8FFF9F8
    214       F7FFF8F8F7FFF8F7F6FF976A36FFA17844FFFEFEFEFF5F5F5FFF949494FF5353
    215       53FFFCFCFBFF7B7B7BFF797979FF757575FF727272FF6E6E6EFF6A6A69FF6666
    216       66FF626262FFF7F7F5FF966935FFA07643FFFEFDFDFF8C8C8CFF525252FFA4A4
    217       A4FFFBFBFAFFFBFBFAFFFAFAF9FFFAF9F8FFF9F9F8FFF9F8F7FFF8F8F6FFF8F7
    218       F6FFF7F7F5FFF7F6F4FF966734FF9F7542FFFDFDFCFFFCFCFCFFFCFCFBFFFBFB
    219       FAFFFBFAFAFFFAFAF9FFFAF9F8FFF9F9F8FFF9F8F7FFF8F8F6FFF8F7F6FFF7F6
    220       F5FFF7F6F4FFF6F5F4FF956633FF9E7441FFFCFCFCFFB5B5B5FF848484FFBEBD
    221       BDFFFAFAF9FFFAF9F8FFF9F9F7FFF9F8F7FFF8F8F6FFF8F7F5FFF7F6F5FFF7F6
    222       F4FFF6F5F3FFF6F5F3FF946531FF9D7340FFFCFBFBFF818181FFC4C4C4FF8F8F
    223       8FFFFAF9F8FF7B7B7AFF797979FF757574FF727171FF6D6D6DFF696969FF6666
    224       65FF626261FFF5F4F2FF936430FF9D723EFFFBFBFAFF9F9F9EFF7F7F7FFFAEAE
    225       ADFFF9F8F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6F5FFF6F6F4FFF6F5F3FFF5F4
    226       F3FFF5F4F2FFF4F3F1FF92622FFF9C703DFFFAFAF9FFFAF9F9FFF9F9F8FFF9F8
    227       F7FFF8F8F7FFF8F7F6FFF7F7F5FFF7F6F5FFF6F5F4FFF6F5F3FFF5F4F3FFF5F4
    228       F2FFF4F3F1FFF4F3F0FF92612EFF9B6F3CFFFAF9F8FFBEBEBDFF929292FFBCBC
    229       BBFFF8F7F6FFF7F7F5FFF7F6F4FFF6F5F4FFF6F5F3FFF5F4F2FFF5F4F2FFF4F3
    230       F1FFF4F2F0FFF3F2F0FF91602DFF9A6E3BFFF9F9F8FF7C7C7CFFC4C4C4FF8787
    231       87FFF7F6F5FF7A7A7AFF787878FF747474FF717170FF6D6D6CFF696968FF6565
    232       65FF616161FFF2F1EFFF905F2BFF996D3AFFF9F8F7FF959594FF878787FF9B9A
    233       9AFFF7F6F4FFF6F5F3FFF6F5F3FFF5F4F2FFF4F3F1FFF4F3F1FFF3F2F0FFF3F2
    234       EFFFF2F1EFFFF2F1EEFF8F5E2AFF996C38FFF8F7F6FFF8F7F5FFF7F6F5FFF6F6
    235       F4FFF6F5F3FFF5F5F3FFF5F4F2FFF4F3F1FFF4F3F1FFF3F2F0FFF3F2EFFFF2F1
    236       EFFFF2F0EEFFF1F0EDFF8E5D29FF986B37FF976A36FF966935FF966734FF9566
    237       33FF946532FF946531FF936430FF92622FFF92612EFF91602DFF90602CFF905F
    238       2BFF8F5D2AFF8E5C29FF8D5B28FF000000000000000000000000000000000000
    239       0000000000000000000000000000000000000000000000000000000000000000
    240       000000000000000000000000000000000000000000FF000000FF000000FF0000
    241       00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
    242       00FF000000FF000000FF0000000000000000000000FF008484FF000000FFFFFF
    243       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
    244       00FFFFFFFFFF000000FF0000000000000000000000FF008484FF000000FFFFFF
    245       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
    246       00FF000000FF000000FF0000000000000000000000FF008484FF000000FFFFFF
    247       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
    248       00FF008484FF000000FF0000000000000000000000FF008484FF000000FFFFFF
    249       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
    250       00FF008484FF000000FF0000000000000000000000FF008484FF000000FFFFFF
    251       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
    252       00FF008484FF000000FF0000000000000000000000FF008484FF000000FFFFFF
    253       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
    254       00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
    255       00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0084
    256       84FF008484FF000000FF0000000000000000000000FF008484FF008484FF0084
    257       84FF008484FF008484FF008484FF008484FF008484FF008484FF008484FF0084
    258       84FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
    259       00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
    260       00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
    261       00FF000000FF000000FF000000FF000000FF000000FFFFFFFFFFFFFFFFFF0000
    262       00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
    263       00FF000000FF000000FF000000FF000000FF000000FFFFFFFFFFFFFFFFFF0000
    264       00FF008484FF000000FF0000000000000000000000FF008484FF008484FF0000
    265       00FF000000FF000000FF000000FF000000FF000000FFFFFFFFFFFFFFFFFF0000
    266       00FF008484FF000000FF000000000000000000000000000000FF000000FF0000
    267       00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
    268       00FF000000FF000000FF00000000000000000000000000000000000000000000
    269       0000000000000000000000000000000000000000000000000000000000000000
    270       0000000000000000000000000000000000000000000000000000000000000000
    271       000000000000A19588FF9C9083FF9C9083FFA19588FF00000000000000000000
    272       00000000000000000000000000000000000000000000000000009C9083FF9C90
    273       83FF00000000998D80FFFFFFFFFFFFFFFFFF998D80FF000000009C9083FF9C90
    274       83FF0000000000000000000000000000000000000000998F83FFCCC5BEFFF6F1
    275       EEFF908377FF908377FFEDE7E0FFEDE7E0FF908377FF908377FFF6F1EEFFCCC5
    276       BEFFA9A096FF000000000000000000000000675D50FFCDC6BFFFF6F1EEFFF8F7
    277       F4FFF8F7F4FFFFFFFFFFFCFDFDFFFCFDFDFFFFFFFFFFF8F7F4FFF8F7F4FFF6F1
    278       EEFFCDC6BFFF696053FF0000000000000000696053FFF6F1EEFFBBAC9DFFDFD8
    279       D3FFEEEFEFFFEBE7E2FFE3D9D1FFE3D9D1FFEBE7E2FFEEEFEFFFDFD8D3FFBBAC
    280       9DFFF6F1EEFF696053FF000000000000000000000000696053FFDFDFDEFFDFDF
    281       DEFFD1C4BAFF8E8377FF44392EFF44392EFF8E8377FFD1C4BAFFDFDFDEFFDFDF
    282       DEFF696053FF00000000000000008E8378FF897D72FF84796CFFD8D5D3FFC9C2
    283       B9FFA99C90FF594F45FFFFFFFF00FFFFFF0060564DFFA99C90FFC9C2B9FFD8D5
    284       D3FF84796CFF897D72FF8E8378FF877B70FFFFFFFFFFFFFFFFFFBFBCB8FFD6CD
    285       C5FF695E53FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00695E53FFD6CDC5FFBFBC
    286       B8FFFFFFFFFFFFFFFFFF877B70FF897E74FFE8E0D7FFE8E0D7FFB0ACA8FFE8E3
    287       DDFF695E53FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00695E53FFE8E3DDFFB0AC
    288       A8FFE8E0D7FFE8E0D7FF897E74FF463B2FFF3E3328FF61564CFFAFA8A4FFC1BC
    289       B6FFAFA8A4FF695E53FFFFFFFF00FFFFFF00695E53FFAFA8A4FFC1BCB6FFAFA8
    290       A4FF61564CFF3E3328FF463B2FFF000000000000000061564CFFE1D9D1FFACA3
    291       9BFFE4E1DCFFAFA8A4FF695E53FF695E53FFAFA8A4FFE4E1DCFFACA39BFFE1D9
    292       D1FF61564CFF0000000000000000000000003F3428FFE1D9D1FFEBE7E2FFE1D9
    293       D1FFAEA7A0FFE2DDDAFFB7B1ABFFB7B1ABFFE2DDDAFFAEA7A0FFE1D9D1FFEBE7
    294       E2FFE1D9D1FF3F3428FF00000000000000003F3428FFB6B0A9FFE1D9D1FFC8BE
    295       B4FFE1D9D1FFC8BEB4FFEDE5DDFFEDE5DDFFC8BEB4FFE1D9D1FFC8BEB4FFE1D9
    296       D1FFB6B0A9FF3F3428FF0000000000000000000000003F3428FF877D73FFE1D9
    297       D1FF574D42FF766C63FFEDE5DDFFEDE5DDFF766C63FF574D42FFE1D9D1FF877D
    298       73FF3F3428FF00000000000000000000000000000000000000003F3428FF3F34
    299       28FF00000000776D66FFE5DBD2FFE5DBD2FF776D66FF000000003F3428FF3F34
    300       28FF000000000000000000000000000000000000000000000000000000000000
    301       0000000000003F3428FF3F3428FF3F3428FF3F3428FF00000000000000000000
    302       0000000000000000000000000000000000000000000000000000000000000000
    303       000070A970FF006400FF006200FF70A670FF0000000000000000000000000000
    304       0000000000000000000000000000000000000000000000000000000000000000
    305       0000006400FFECFFECFF8CFE8CFF006000FFD4D4D4FF00000000000000000000
    306       0000000000000000000000000000000000000000000000000000000000000000
    307       0000006400FF8CFE8CFF00E800FF005E00FFB2B2B2FF00000000000000000000
    308       0000000000000000000000000000000000000000000000000000000000000000
    309       0000006200FF8CFE8CFF00E500FF005C00FFB2B2B2FF00000000000000000000
    310       0000000000000000000000000000000000000000000000000000000000000000
    311       0000006000FF8CFE8CFF00E000FF005A00FFB2B2B2FF00000000000000000000
    312       000000000000000000000000000070A970FF006400FF006400FF006200FF0060
    313       00FF006000FF8CFE8CFF00DD00FF005800FF005600FF005400FF005300FF0050
    314       00FF709C70FF0000000000000000006400FFECFFECFF8CFE8CFF8CFE8CFF8CFE
    315       8CFF8CFE8CFF00DE00FF00D900FF00D400FF00D000FF00CC00FF00C800FF00C4
    316       00FF004A00FFD4D4D4FF00000000006200FF8CFE8CFF00EA00FF00E600FF00E2
    317       00FF00DE00FF00DA00FF00D400FF00D000FF00CC00FF00C800FF00C400FF00C2
    318       00FF004800FFB2B2B2FF0000000070A670FF005E00FF005C00FF005A00FF0058
    319       00FF005600FF00D600FF00D000FF005000FF004E00FF004C00FF004A00FF004A
    320       00FF4E764EFFB2B2B2FF0000000000000000D4D4D4FFB2B2B2FFB2B2B2FFB2B2
    321       B2FF005400FF00D200FF00CE00FF004E00FFB2B2B2FFB2B2B2FFB2B2B2FFB2B2
    322       B2FFB2B2B2FFD4D4D4FF00000000000000000000000000000000000000000000
    323       0000005300FF00CE00FF00CA00FF004C00FFB2B2B2FF00000000000000000000
    324       0000000000000000000000000000000000000000000000000000000000000000
    325       0000005000FF00CA00FF00C600FF004A00FFB2B2B2FF00000000000000000000
    326       0000000000000000000000000000000000000000000000000000000000000000
    327       0000004E00FF00C800FF00C400FF004800FFB2B2B2FF00000000000000000000
    328       0000000000000000000000000000000000000000000000000000000000000000
    329       0000709B70FF004A00FF004800FF4E764EFFB2B2B2FF00000000000000000000
    330       0000000000000000000000000000000000000000000000000000000000000000
    331       000000000000D4D4D4FFB2B2B2FFB2B2B2FFD4D4D4FF00000000000000000000
    332       0000000000000000000000000000000000000000000000000000000000000000
    333       0000000000000000000000000000000000000000000000000000000000000000
    334       0000000000000000000000000000000000000000000000000000000000000000
    335       0000000000000000000000000000000000000000000000000000000000000000
    336       000000000000000000000000000000000000000000008C8CBBFF000088FF8C8C
    337       BBFF00000000000000000000000000000000000000008C8CBBFF000075FF8C8C
    338       BBFF000000000000000000000000000000008C8CBBFF000088FF619BFFFF0000
    339       86FF7979A8FF0000000000000000000000008C8CBBFF000075FF619BFFFF0000
    340       6EFF7979A8FF000000000000000000000000000088FF619BFFFF0057FFFF0054
    341       FFFF000082FF7979A8FF000000008C8CBBFF000075FF619BFFFF003AFFFF0035
    342       FFFF000068FFDCDCDCFF00000000000000008C8CBBFF000086FF0054FFFF0052
    343       FFFF004EFFFF00007CFF7979A8FF000075FF619BFFFF003AFFFF0035FFFF0000
    344       67FF626291FFB2B2B2FF0000000000000000000000007979A8FF000082FF004E
    345       FFFF004BFFFF0047FFFF000075FF619BFFFF003AFFFF0035FFFF000068FF6262
    346       91FFB2B2B2FFDCDCDCFF000000000000000000000000000000007979A8FF0000
    347       7CFF0047FFFF0042FFFF003EFFFF003AFFFF0035FFFF000068FF626291FFB2B2
    348       B2FFDCDCDCFF0000000000000000000000000000000000000000000000007979
    349       A8FF000075FF003EFFFF003AFFFF0035FFFF000068FF626291FFB2B2B2FFDCDC
    350       DCFF0000000000000000000000000000000000000000000000008C8CBBFF0000
    351       75FF619BFFFF003AFFFF0035FFFF0030FFFF002BFFFF000061FF7979A8FF0000
    352       000000000000000000000000000000000000000000008C8CBBFF000075FF619B
    353       FFFF003AFFFF0035FFFF000067FF002CFFFF0027FFFF0023FFFF000059FF7979
    354       A8FF000000000000000000000000000000008C8CBBFF000075FF619BFFFF003A
    355       FFFF0035FFFF000067FF626291FF000061FF0023FFFF001FFFFF001BFFFF0000
    356       54FF7979A8FF000000000000000000000000000072FF619BFFFF003AFFFF0035
    357       FFFF000067FF626291FFB2B2B2FF7979A8FF000059FF001BFFFF0018FFFF0015
    358       FFFF000050FFDCDCDCFF00000000000000008C8CBBFF00006EFF0035FFFF0000
    359       68FF626291FFB2B2B2FFDCDCDCFF000000007979A8FF000054FF0015FFFF0000
    360       50FF626291FFB2B2B2FF0000000000000000000000007979A8FF000067FF6262
    361       91FFB2B2B2FFDCDCDCFF0000000000000000000000007979A8FF000050FF6262
    362       91FFB2B2B2FFDCDCDCFF00000000000000000000000000000000DCDCDCFFB2B2
    363       B2FFDCDCDCFF0000000000000000000000000000000000000000DCDCDCFFB2B2
    364       B2FFDCDCDCFF0000000000000000000000000000000000000000000000000000
    365       0000000000000000000000000000000000000000000000000000000000000000
    366       0000000000000000000000000000000000000000000000000000000000000000
    367       0000000000000000000000000000000000000000000000000000000000000000
    368       0000000000000000000000000000000000000000000000000000000000000000
    369       0000000000000000000000000000000000000000000000000000000000000000
    370       000000000000000000000000000000000000000000FF000000FF000000FF0000
    371       00FF000000FF000000FF00000000000000000000000000000000000000000000
    372       000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
    373       FFFFFFFFFFFF000000FF000000FF000000000000000000000000000000000000
    374       000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
    375       FFFFFFFFFFFF000000FFFFFFFFFF000000FF0000000000000000000000000000
    376       000000000000000000000000000000000000000000FFFFFFFFFF000000FF0000
    377       00FFFFFFFFFF000000FF840000FF840000FF840000FF840000FF840000FF8400
    378       00FF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
    379       FFFFFFFFFFFFFFFFFFFF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
    380       00FF840000FF000000000000000000000000000000FFFFFFFFFF000000FF0000
    381       00FF000000FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
    382       00FFFFFFFFFF840000FF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFF
    383       FFFFFFFFFFFFFFFFFFFF840000FFFFFFFFFF000000FF000000FFFFFFFFFF8400
    384       00FF840000FF840000FF840000FF00000000000000FFFFFFFFFF000000FF0000
    385       00FF000000FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    386       FFFFFFFFFFFFFFFFFFFF840000FF00000000000000FFFFFFFFFFFFFFFFFFFFFF
    387       FFFFFFFFFFFFFFFFFFFF840000FFFFFFFFFF000000FF000000FF000000FF0000
    388       00FF000000FFFFFFFFFF840000FF00000000000000FF000000FF000000FF0000
    389       00FF000000FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    390       FFFFFFFFFFFFFFFFFFFF840000FF000000000000000000000000000000000000
    391       00000000000000000000840000FFFFFFFFFF000000FF000000FF000000FF0000
    392       00FF000000FFFFFFFFFF840000FF000000000000000000000000000000000000
    393       00000000000000000000840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    394       FFFFFFFFFFFFFFFFFFFF840000FF000000000000000000000000000000000000
    395       00000000000000000000840000FF840000FF840000FF840000FF840000FF8400
    396       00FF840000FF840000FF840000FF000000000000000000000000000000000000
    397       0000000000000000000000000000000000000000000000000000000000000000
    398       0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    399       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    400       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    401       FF00000000FFFFFFFF00FFFFFF00FFFFFF00000000FFFFFFFF00FFFFFF00FFFF
    402       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    403       FF00000000FFFFFFFF00FFFFFF00FFFFFF00000000FFFFFFFF00FFFFFF00FFFF
    404       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    405       FF00000000FFFFFFFF00FFFFFF00FFFFFF00000000FFFFFFFF00FFFFFF00FFFF
    406       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    407       FF00000000FF000000FFFFFFFF00000000FF000000FFFFFFFF00FFFFFF00FFFF
    408       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    409       FF00FFFFFF00000000FFFFFFFF00000000FFFFFFFF00FFFFFF00FFFFFF00FFFF
    410       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    411       FF00FFFFFF00000000FF000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF
    412       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    413       FF00FFFFFF00FFFFFF00000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    414       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    415       FF00FFFFFF00800000FF000000FF800000FFFFFFFF00FFFFFF00FFFFFF00FFFF
    416       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    417       FF00FFFFFF00800000FFFFFFFF00800000FF800000FF800000FFFFFFFF00FFFF
    418       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008000
    419       00FF800000FF800000FFFFFFFF00800000FFFFFFFF00FFFFFF00800000FFFFFF
    420       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00800000FFFFFF
    421       FF00FFFFFF00800000FFFFFFFF00800000FFFFFFFF00FFFFFF00800000FFFFFF
    422       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00800000FFFFFF
    423       FF00FFFFFF00800000FFFFFFFF00800000FFFFFFFF00FFFFFF00800000FFFFFF
    424       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00800000FFFFFF
    425       FF00FFFFFF00800000FFFFFFFF00FFFFFF00800000FF800000FFFFFFFF00FFFF
    426       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008000
    427       00FF800000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    428       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    429       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    430       FF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    431       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    432       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    433       FF00000000FF000000FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00
    434       FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000
    435       00FF000000FF00FFFFFF00FFFFFF000000FF000000FF000000FF000000FF0000
    436       00FFFF00FF00FF00FF00FF00FF00000000FF008484FF848484FF008484FF0000
    437       00FF00FFFFFF000000FF000000FF00FFFFFF000000FF848484FF008484FF8484
    438       84FF000000FFFF00FF00FF00FF00000000FF848484FF848484FF000000FFFF00
    439       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF848484FF0084
    440       84FF000000FFFF00FF00FF00FF00000000FF008484FF848484FF000000FF0000
    441       00FF000000FF000000FF000000FF000000FF000000FF000000FF848484FF8484
    442       84FF000000FFFF00FF00FF00FF00000000FF848484FF008484FF848484FF0084
    443       84FF848484FF008484FF848484FF008484FF848484FF008484FF848484FF0084
    444       84FF000000FFFF00FF00FF00FF00000000FF008484FF848484FF008484FF8484
    445       84FF008484FF840000FF840000FF840000FF840000FF840000FF840000FF8400
    446       00FF000000FFFF00FF00FF00FF00000000FF848484FF008484FF848484FF0084
    447       84FF848484FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
    448       00FF840000FFFF00FF00FF00FF00000000FF008484FF848484FF008484FF8484
    449       84FF008484FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8400
    450       00FFFFFFFFFF840000FFFF00FF00000000FF848484FF008484FF848484FF0084
    451       84FF848484FF840000FFFFFFFFFF000000FF000000FF000000FFFFFFFFFF8400
    452       00FF840000FF840000FF840000FF000000FF008484FF848484FF008484FF8484
    453       84FF008484FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    454       FFFFFFFFFFFFFFFFFFFF840000FF000000FF848484FF008484FF848484FF0084
    455       84FF848484FF840000FFFFFFFFFF000000FF000000FF000000FF000000FF0000
    456       00FF000000FFFFFFFFFF840000FFFF00FF00000000FF000000FF000000FF0000
    457       00FF000000FF840000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    458       FFFFFFFFFFFFFFFFFFFF840000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00
    459       FF00FF00FF00840000FF840000FF840000FF840000FF840000FF840000FF8400
    460       00FF840000FF840000FF840000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00
    461       FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
    462       FF00FF00FF00FF00FF00FF00FF000000000000000000000000010000001A0000
    463       0074000000C1000000DD000000DE000000BF0000006D0000001E000000020000
    464       0000000000000000000000000000000000000000000100000036000000B20000
    465       00D0000000930000006F0000006D00000098000000CE000000B1000000360000
    466       00000000000000000000000000000000000000000024000000B1000000BE0000
    467       00370000000700000000000000000000000800000042000000BC000000BE0000
    468       000D000000000000000000000000000000050000006B000000D40000003D0000
    469       000000000000000000000000000000000000000000020000003C000000DE0000
    470       006500000000000000000000000000000019000000B2000000850000000A0000
    471       0000000000000000000000000000000000000000000000000000000000910000
    472       00C300000006000000000000000000000023000000C900000061000000000000
    473       00000000000000000000000000000000000000000000000000000000005D0000
    474       00D50000001B000000000000000000000023000000C900000061000000000000
    475       00000000000000000000000000000000000000000000000000000000005D0000
    476       00D60000001C000000000000000000000019000000B2000000850000000A0000
    477       0000000000000000000000000000000000000000000000000000000000910000
    478       00C5000000060000000000000000000000050000006B000000D40000003D0000
    479       000000000000000000000000000000000000000000020000003C000000DF0000
    480       00680000000000000000000000000000000000000024000000AE000000BE0000
    481       00370000000700000000000000000000000800000042000000BC000000F90000
    482       0039000000000000000000000000000000000000000100000032000000AF0000
    483       00D0000000930000006F0000006D00000098000000CE000000ED000000FD0000
    484       00B50000002F00000000000000000000000000000000000000000000001A0000
    485       0074000000C2000000E5000000E8000000C00000006B00000044000000CA0000
    486       00FB000000B40000002900000000000000000000000000000000000000000000
    487       0000000000000000000000000000000000000000000000000000000000130000
    488       00C4000000FC000000C800000034000000000000000000000000000000000000
    489       0000000000000000000000000000000000000000000000000000000000000000
    490       002E000000BA000000FA000000B9000000000000000000000000000000000000
    491       0000000000000000000000000000000000000000000000000000000000000000
    492       000200000033000000A5000000A5000000000000000000000000000000000000
    493       0000000000000000000000000000000000000000000000000000000000000000
    494       0000000000020000001600000016
     14      4C7A0F00000010000000100000001B0D00000000000078DADD9A097415D519C7
     15      D39ED3E5F41C7BAA1C2BB8542D56415194C50511155190629A121A961A489000
     16      61338400D958F320D8B284B0482090B0C85211342C0209216080A08882492098
     17      4008844421CBCB9E97E5DFEFBBF3E665326FE6BD792F50B437E77F66E6DEEF77
     18      BFEF7EF7CE9AE7E171FB4AF6AAD190753676949DA287F68433BEBABA5A574678
     19      8BC50294E4DB8B8A33BE34F388B0CBCF3A826B395FE074D26C4DDEC838515B01
     20      DCBC64559E1DEF6C9CB2FFAC9468E4A5C7D8F1CEC6899A32A0F87C8B147CE60A
     21      3F719CB46A1492130235C7E9C8FFB73123C571CBF8ECC7E9C8FFE925EFDAF957
     22      FBD12A327F74818F54A1EC5FE5E79B945D62AB969277E4DFD13A31E2DF10AF53
     23      9CF15AE3D21AE74FB9B46F9F06565A5A1ADCB17DE4910C28A5D78FA3F6C71F3F
     24      03A5D4367AF5EAD2B9F359C8926D95FB464A972E9950CB159E4BD7AEE721CB55
     25      B65BB78B50CB681F3D7BE64196CCA88FF5CA8B2FE64396DA56AF5E2EBD7A1540
     26      96239BB6F046FA7035D7EE94FF951F83054E6488D72A86799349B30F2DDE645F
     27      27F11A7DA879661DF2AA3E94BCCC2A6594D7625DE1DBEADFF0F85573E972FE9D
     28      F8D75D7B2ADE8DF5A8E6DD3B0FDAC67BB870CE38EBE38E94E3A67E3816D51717
     29      E227237BF57864AE7C4F6C93C27AE3B3D097E198ED8BDC4D335179F1241A6BCD
     30      4073B350635509CCD96938B9C2175BDFEFAED947BAE90D141E8C13B60DE78EC2
     31      B23D1A4DD143D1641A82BA8FE6A3F6CC6158CC4538B72D1C9B273C89D6EC9BC2
     32      2FB396235B81F03780E40DF4CC5A29FC379714C2121784CAFDF1A82BBF8EE47F
     33      FB60CD98C76D7DA447BD8EF28B5FC072360D087B0D5833458AFD54129A968F81
     34      E5C46E34579B513DF315941C4FC2B5AFF620C6F7511B7F366A9018AF85E2C4B4
     35      5E80C913D8F52F344F7A1AB5E39E803976BCE8EF87A82138BFC00F75E69B98F7
     36      8F876DFCD76CCF799A3708087A0E98D8054D819D5017D01155B1016822DF5599
     37      C771C2AB3D0E0D7F824C9B1035F0C1167E5E7FC1D785BF85FAF19D5113F01798
     38      FD1E8179A1B7A82F3FB21DC7473C86FD83EEC5E7431F13FC9C01F7B7F073DE14
     39      B9BBF961308AFD1E45FE8887F0FDB00E28F9CF0782CFF0BC070707DD8D3D83DA
     40      E16484376ACA6F528A3BD8F8BD61BD50967D54E4266FC4FDC8F2B90FE7BCDBE1
     41      C2AC777075EB4224333BF01EEC1FF8075C3AB815B9A70EC0A7F75D367EFFCC1E
     42      C88E9B88FAF222E46D5984935EED90E6793772B72E12FEF7BD7DB760B336CC47
     43      E5CD22AC9D36186FF7B8ABD51A480A7A0ADF7F3C177565452848DE8AD3B37D70
     44      745847A40DFD334ECDF1C1A543DB5071A3087B56CCC080E77EABB90637067641
     45      DAA261C83FB517B53447CD4D8D42D5345E8E7943E850F4D761E5B27C4C672CA0
     46      5C2FF2BA17F3073E84D9FD3B20ACDF7D18D6FBF77631DFCA52777A334A57BFA6
     47      ABBA33DB1DBF2B930D72334049021A2D2D37504B2DEA778F47DDC93894A46F80
     48      43FEC665E0D257F4C27D0628380B5CFD0E28CC127C63693E2CE73ED1ED43F0D5
     49      F48E79E51B1B87EB17E81DECA2E09BE9FDB3B1AC00F55F25D23A4B80264FB14A
     50      2CBDB7155D047EC81331DD488A147DC82ADF3C0C252525B0E369AE51982DB13F
     51      F2FBEF15A0F41ACC392751919321A9200BE53B27222727C79EE75294436C9E95
     52      2D04CCC594D31F410B5712F9A8FC3C429F2FCEA598F3855F9889A3F3123566E9
     53      FB436DA530A94A5D64CF7FF8BAC473DC82FD41CA2733F535526E5854AA8F2DB3
     54      E7D7D03593AE0B2829906266BFEC93D9C67A29374D0D567EB976FCBC6ECAAE4B
     55      6B887DD755010D75360E4D4D129FB6449BE7F838EEAA52ABEF6AE2EB259E63E3
     56      18E87A50951CA5CD739E38C7CA7133DFD820F521C6D084CA3D21DA3CCF13C7CC
     57      E310BE9A6CF730695F8AC1BCE33D3BBE26638DED5C2B4FF83BCCDBFD50B16B12
     58      2A934250B977066DA7D1F14498B78DC2F59415763C971B376E887A2362DB3BF4
     59      7ED0D66719DC82671C752C2EBFABB48A437E566D795E75E9B953661D6E1D3DB7
     60      3A639DF03AB6C6A56695CFE27A52E4AF0DAC6DFC6EB2DAEF0FC6590F1773F593
     61      2B9B230680B529BC3F3685BD858DA16F2271663F24CE780309D3FB6243C8EBD8
     62      30ED35AC0F7E15F153FB203EE815AC7BBF37D64E79196B27F7126CEAA63948DD
     63      381B8737CEC2E1C4481C4E88444A42043D428723793D2B0C87E24371701D69ED
     64      4C1C583B0307E2A6236ED24BC2AF5C9AF9599BD444D7D826BA4E36D275B7B1A1
     65      010D0D163458EA6161D5D7A1BE9E9E29EA6AB166E20BD848318B6FA4D1D1F0F5
     66      F5456262225D621DB0C4D5B16A6BF0E184E769BCFD84CF51A34661E5CA95F0F6
     67      F6166C444404C2C2C2307DFA7404070763CA94299830211063C78EC5E8D1A351
     68      5B5B8DD5813D459E9A29DEC58B1763F0E0C1D8B2658BE493D412AFECB746F865
     69      B6B6A60AABC7F5103996C62AC52CC5EB80AD91D89AEA2AAC1ADB5DCC0FB3FBF6
     70      ED8389D668EAE1C3767992D86A055B29B432E039ACA7B9E53CCD9B370FE9E9E9
     71      58B66C99602322C2ADE30F41F0D4A9983C7932020379FC01347E7F54575560C5
     72      9867695DF4113127246CC09C3973B06BD727AD725C6BF55B63F55B5D5529D8AA
     73      4A3362477715EB498AB75E3156155B6DCF56559623D6FF19B11639DED4D4C388
     74      8D8D454A4A72AB1CB7B0152D6C45392A49CBFD9E16EB98FD4646468AF1F33A62
     75      9FE1E1E1080D0D45484808A64E0DA2F14FA2F18F47404000FCFDFD51612E43CC
     76      A8A71047E700C7BC6AD54AC1AE5BBBB6558E5BE2350B9F95156582AD309762D9
     77      C827E91C7851C45BA7CE9323B6BC14E6F2122CF5ED2CCE015EC7BC16793DF19A
     78      5819D04DCC2DCF0FE798F3C4638DF1EB22625EE6FB2496BEDB194BFED909B7E1
     79      FEEECEF550F7FB9DD6F73C8DFBA14B7C5BFD6BDE83FE1F7823DFCEF4EEC146EE
     80      9F8EEEE1C6BFDDB9C5B775FCB799F768E3F973CBCBC6558B101F1325C4FB4618
     81      D99EF7E396CCB58D99F7D5EDEA12B72C0AA78FA7D22B582962A2660A9514E50B
     82      C9C7DCC6363B1257B7EA639CAF17BE3E7144B4D7D556097169A4FB72A3F59D51
     83      AE671BB60DF4F3B6F5C1FB5C9FBC733D2E5FF80EA56565B8515480AB39678578
     84      9FEBB88D6DD856C9CB7D5CBE7C49E86CFA212CA578FBBDF48C10EF739DDCAE64
     85      974685E28359C130854DC285ACEF70EAD841EC888FC1F0BFBD697B2CF6F37947
     86      D4711BDBB02D33CC464704D9F27C24E500B2BF3E8EC091DE365616D7711BDBD8
     87      FEAF4CEC07B343509C7F5EE8D39DDB517C354F97E7366163B567F6AD97BBA24F
     88      F74EF0F71984DDDBB7E068CA7EB155F6C1FBCA36B6658659390F5C778572BD73
     89      F33A5CBB926BEB4366B98EDBD8866D95B97FB5472751CFF3C4DB5DDB12519077
     90      119F7FF6B110EF739DD2861925BFFFD31DA23E2375AF6D5B529827A4ACE32DDB
     91      2A79B98FE859D344FBD077FA62C6A4F76C3CEF731DB7B18D9A55F621B7CD9C3C
     92      1685DF9F13E27D75BBB322DBBAC2C8256847103CC6D0F565B40782B606B97E9D
     93      21F626FD2D6E5E4C8BD7039999997095176C31C530D203494949AEF1A3AD7C21
     94      F1EFBAC1FB59F97CE24738E66DB9B2E68B591B9F47FBC3483EA421246F9217E5
     95      345E915345AE94F2B844B639A44CD2B7A4D3A40C523A69A022A7F2587FA4FAEB
     96      A4020F89BDA8C31E230D68199398DF91529E78ACB678B3AD2CC5EBE1491A24F9
     97      6579CEF06C95138E858F6589B19E239D9158659B2C876BC2DBCA7E29F97579FE
     98      BCACEC09295E97794F45BE06B8CE07AD0B927235C03E57468B32A72E9F3F77A0
     99      2C5E9C4C312E82B4D56B9FAED92EB3FEEBF8F96821BD77B6FE5F83CC4AED53EC
     100      DA6DEC50D210B6996FB369C5F622F5E4F6F1C8CDCD45EBFE174AEC609227DB44
     101      5AFB50B3E3E8FD77B9DD9C4AB6F325F6AFA4FED0F42BB34AFFADFB8894D8BEA4
     102      3EC6D9D67D4C778BD5CCD5B3A4A7B80F7F8DBC3B6129571E5D68FB04A9231F0F
     103      D7EC438FE598D9AF601F263DC0F54334FA08D69D23C976B8C4B627DDCBED5E1A
     104      F33F453757521F436CACFEFC8FD3CDB3D4EEE5701EB8CED11C396BFF1997B6BE
     105      DF387ACF779B77E5F7474A9FF2BE93DFEC38F4CFC5A451AFF7FB1B8D6F1BBABC
     106      BC35EA5F392EBDDF0F19F5AFEEDF15FFEAF76953EBFF05B5C5BF6671C1BF43BE
     107      2DFE9DA9CD279EEA3DEF56C89A1FDDE39F032F33CA7D7762708755FA75976F8B
     108      6FD65CABEFB96EF6217373AD7D18ED476DAFE49CF5A1657BA779E5985C19FFED
     109      382F35751BFEECAE952EDADBFEA7AB77ED55B32693F8DF97EDBBAA9293EFC5D6
     110      7693FC9D5CC19B34EAB56254FAD0F4EFE47BADC9817FE5189C6D75FD2BB78EEF
     111      194EFD9B1CDC934D06FD3BBAA7CB7D38F3AF75CF558FC515FF1AF75FC3FEB562
     112      D15BBF46FDEBAD3723F77E938173CBC0B927975F90EE2785908E92F248974847
     113      4893497F22FD52E73182D9E7F96794A46F492B48EF5BB935A433A4CFAC365AE5
     114      316B7B2AE905D26F146DBF25F525A558DBEF52B1BF224DE44F26A45774FAE7B8
     115      7B5BC713A06AEB608D7B01E9774E1E979693BE20FD5A51D791748A3F611B78DC
     116      F22565911E68039F4D7AB00DF11F57C5EF4AFE2E93C6EBCCDF2E03F3574F7A49
     117      67FD7423ED76B07E4A484DA47DA4AE3A71CAEBF718A990544C4AB38EAF1FE94B
     118      5203FFE498D4D98DC7E576FC736F52232983D4C38D3E9E211D22594807DDE079
     119      2EBA933EB2CAC3CD3EFEC8FA2F987023EA
    495120    }
    496121  end
    497122  object ActionList1: TActionList
    498123    Images = ImageList1
    499     Left = 384
    500     Top = 200
     124    Left = 400
     125    Top = 208
    501126    object AExit: TAction
    502127      Caption = 'Exit'
     
    582207      ShortCut = 16454
    583208    end
     209    object ATest: TAction
     210      Caption = 'Test'
     211      OnExecute = ATestExecute
     212    end
    584213  end
    585214  object LastOpenedList1: TLastOpenedList
    586215    MaxCount = 10
    587216    OnChange = LastOpenedList1Change
    588     Left = 384
    589     Top = 288
     217    Left = 400
     218    Top = 300
    590219  end
    591220  object OpenDialog1: TOpenDialog
    592     Left = 384
    593     Top = 365
     221    Left = 400
     222    Top = 380
    594223  end
    595224  object SaveDialog1: TSaveDialog
    596     Left = 115
    597     Top = 365
     225    Left = 120
     226    Top = 380
    598227  end
    599228  object ApplicationInfo1: TApplicationInfo
     
    88088437      0000000000000000000000000000000000000000000000000000
    88098438    }
    8810     Left = 115
    8811     Top = 288
     8439    Left = 120
     8440    Top = 300
    88128441  end
    88138442  object PersistentForm1: TPersistentForm
    88148443    MinVisiblePart = 50
    88158444    EntireVisible = False
    8816     Left = 384
    8817     Top = 125
     8445    Left = 400
     8446    Top = 130
    88188447  end
    88198448  object Translator: TTranslator
    88208449    POFilesFolder = 'Languages'
    8821     Left = 115
    8822     Top = 48
     8450    Left = 120
     8451    Top = 50
    88238452  end
    88248453  object ScaleDPI1: TScaleDPI
    88258454    AutoDetect = False
    8826     Left = 384
    8827     Top = 48
     8455    Left = 400
     8456    Top = 50
    88288457  end
    88298458  object ThemeManager1: TThemeManager
    8830     Left = 115
    8831     Top = 125
     8459    Left = 120
     8460    Top = 130
    88328461  end
    88338462  object AboutDialog1: TAboutDialog
     
    88358464    ThemeManager = ThemeManager1
    88368465    ApplicationInfo = ApplicationInfo1
    8837     Left = 576
    8838     Top = 48
     8466    Left = 600
     8467    Top = 50
    88398468  end
    88408469  object SelectDirectoryDialog1: TSelectDirectoryDialog
    8841     Left = 578
    8842     Top = 376
     8470    Left = 602
     8471    Top = 392
    88438472  end
    88448473end
  • trunk/UCore.lrj

    r82 r90  
    1515{"hash":120616622,"name":"tcore.afilesplit.caption","sourcebytes":[83,112,108,105,116,46,46,46],"value":"Split..."},
    1616{"hash":218394958,"name":"tcore.afind.caption","sourcebytes":[70,105,110,100,46,46,46],"value":"Find..."},
     17{"hash":371876,"name":"tcore.atest.caption","sourcebytes":[84,101,115,116],"value":"Test"},
    1718{"hash":190444780,"name":"tcore.applicationinfo1.description","sourcebytes":[118,67,97,114,100,32,102,105,108,101,115,32,109,97,110,97,103,101,109,101,110,116,32,116,111,111,108],"value":"vCard files management tool"}
    1819]}
  • trunk/UCore.pas

    r82 r90  
    1717    AAbout: TAction;
    1818    AboutDialog1: TAboutDialog;
     19    ATest: TAction;
    1920    AFind: TAction;
    2021    AFileSplit: TAction;
     
    5758    procedure AHomePageExecute(Sender: TObject);
    5859    procedure ASettingsExecute(Sender: TObject);
     60    procedure ATestExecute(Sender: TObject);
    5961    procedure DataModuleCreate(Sender: TObject);
    6062    procedure DataModuleDestroy(Sender: TObject);
     
    102104uses
    103105  UFormMain, UFormSettings, UContact, UFormContacts, UFormFindDuplicity,
    104   UFormGenerate, UFormError, UFormFind;
     106  UFormGenerate, UFormError, UFormFind, UFormTest;
    105107
    106108resourcestring
     
    264266end;
    265267
     268procedure TCore.ATestExecute(Sender: TObject);
     269begin
     270  with TFormTest.Create(nil) do
     271  try
     272    ShowModal;
     273  finally
     274    Free;
     275  end;
     276end;
     277
    266278procedure TCore.AFileNewExecute(Sender: TObject);
    267279begin
     
    512524  AFindDuplicate.Enabled := Assigned(DataFile);
    513525  AGenerate.Enabled := Assigned(DataFile);
     526  {$IFOPT D+}
     527  ATest.Enabled := True;
     528  {$ENDIF}
     529  {$IFOPT D-}
     530  ATest.Enabled := False;
     531  {$ENDIF}
     532  ATest.Visible := ATest.Enabled;
    514533end;
    515534
  • trunk/vCardStudio.lpi

    r83 r90  
    22<CONFIG>
    33  <ProjectOptions>
    4     <Version Value="11"/>
     4    <Version Value="12"/>
    55    <PathDelim Value="\"/>
    66    <General>
     7      <Flags>
     8        <CompatibilityMode Value="True"/>
     9      </Flags>
    710      <SessionStorage Value="InProjectDir"/>
    8       <MainUnit Value="0"/>
    911      <Title Value="vCard Studio"/>
    1012      <Scaled Value="True"/>
     
    5658            <Debugging>
    5759              <GenerateDebugInfo Value="False"/>
     60              <DebugInfoType Value="dsDwarf2Set"/>
    5861            </Debugging>
    5962            <LinkSmart Value="True"/>
     
    6669          <Other>
    6770            <CompilerMessages>
    68               <IgnoredMessages idx5024="True"/>
     71              <IgnoredMessages idx6058="True" idx5024="True" idx3124="True" idx3123="True"/>
    6972            </CompilerMessages>
    7073          </Other>
     
    101104      </Item2>
    102105    </RequiredPackages>
    103     <Units Count="15">
     106    <Units Count="17">
    104107      <Unit0>
    105108        <Filename Value="vCardStudio.lpr"/>
     
    195198        <ResourceBaseClass Value="Form"/>
    196199      </Unit14>
     200      <Unit15>
     201        <Filename Value="Forms\UFormTest.pas"/>
     202        <IsPartOfProject Value="True"/>
     203        <ComponentName Value="FormTest"/>
     204        <ResourceBaseClass Value="Form"/>
     205      </Unit15>
     206      <Unit16>
     207        <Filename Value="UTest.pas"/>
     208        <IsPartOfProject Value="True"/>
     209      </Unit16>
    197210    </Units>
    198211  </ProjectOptions>
     
    228241    <Linking>
    229242      <Debugging>
     243        <DebugInfoType Value="dsDwarf2Set"/>
    230244        <UseHeaptrc Value="True"/>
    231245        <UseExternalDbgSyms Value="True"/>
     
    239253    <Other>
    240254      <CompilerMessages>
    241         <IgnoredMessages idx5024="True"/>
     255        <IgnoredMessages idx6058="True" idx5024="True" idx3124="True" idx3123="True"/>
    242256      </CompilerMessages>
    243257    </Other>
  • trunk/vCardStudio.lpr

    r87 r90  
    88  {$ENDIF}
    99  Interfaces, // this includes the LCL widgetset
    10   Forms, UFormMain, UCore, Common, UDataFile, SysUtils
    11   { you can add units after this };
     10  Forms, UFormMain, UCore, Common, UDataFile, SysUtils, UFormTest, UTest;
    1211
    1312{$R *.res}
     
    2019begin
    2120  Application.Scaled:=True;
    22   Application.Title := 'vCard Studio';
     21  Application.Title:='vCard Studio';
    2322  {$if declared(UseHeapTrace)}
    2423  DeleteFile(ExtractFilePath(ParamStr(0)) + HeapTraceLog);
Note: See TracChangeset for help on using the changeset viewer.