anchor.diff:  
     if isNew and tableExists then
     begin
  -    chgTotalPowerChart := TChartLines.Create(aScenario, 'Santos' , chartID, 'Charge Location ' + aCharger.ToString + ' Total Power',
  +    chgTotalPowerChart := TChartLines.Create(aScenario, 'Santos' , chartID, '' + name + ' Total Power',
                     'Charge Location ' + aCharger.ToString + ' Total Power', True, 'line',
                 TChartAxis.Create('Time (hour of day)', 'lightBlue', 'Time', 'h'),
                 [ TChartAxis.Create('Total Power (-)', 'lightBlue', 'Dimensionless', '-')]);
  
positive.code:     fSantosLayers: TObjectDictionary<TScenario, TSantosLayer>; // ref
      fBaseDay: Array of Word;
    protected
      function  ReadScenario(const aID: string): TScenario; override;
      procedure ReadChartBlockSoC(aSession: TOraSession; aScenario: TScenario; const aTablePrefix: string);
      procedure ReadChartChargerTotalPower(aSession: TOraSession; aScenario: TScenario; const aTablePrefix: string; aCharger: Integer);
    public
      procedure ReadBasicData(); override;
      procedure handleClientMessage(aClient: TClient; aScenario: TScenario; aJSONObject: TJSONObject); override;
  
negative.code:   end;
  end;
  
  procedure TSantosProject.HandleDataUpdate(aSession: TOrasession;
    aScenario: TScenario; aLayer: TSantosLayer; const aTablePrefix: string);
  var
    stop: TPair<string, TBusStop>;
  begin
    ReadChartBlockSoC(aSession, aScenario, aTablePrefix);
    TMonitor.Enter(aLayer.fBusStops);
    try
      for stop in aLayer.fBusStops do
        if stop.Value.isCharger then
          ReadChartChargerTotalPower(aSession, aScenario, aTablePrefix, stop.Value.objectID, stop.Value.name);
    finally
      TMonitor.Exit(aLayer.fBusStops);
    end;
  end;
  
  procedure TSantosProject.ReadBasicData;
  var
    y,m,d: Word;
  begin
    setLength(fBaseDay, 3);
  