anchor.diff:      '  <p>{Detail}' + sLineBreak +
       '</html>';
   
  +function RemoveTrailingDelim(const APath: string): string;
  +begin
  +  if APath.EndsWith(PathDelim) then
  +    Result := APath.Substring(0, APath.Length - 1)
  +  else
  +    Result := APath;
  +end;
  +
   { TWiRLFileSystemEngine }
   
   procedure TWiRLFileSystemEngine.CheckRelativePath(const ARelativeURL: string);
  
positive.code: end;
  
  function TWiRLFileSystemEngine.ExpandMacros(const ATemplate: string): string;
  begin
    Result := ATemplate.Replace('{AppPath}', ExtractFilePath(ParamStr(0)), [rfIgnoreCase]);
    Result := Result.Replace(PathDelim + PathDelim, PathDelim, [rfReplaceAll]);
  end;
  
  procedure TWiRLFileSystemEngine.HandleError(AStatusCode: Integer;
  
negative.code:   IndexFileNames.Add('default.htm');
  end;
  
  procedure TWiRLFileSystemEngine.InitMacros;
  begin
    Macros.Add('AppPath', function ():string
    begin
      Result := ExtractFilePath(ParamStr(0));
    end);
  
    Macros.Add('CurrPath', function ():string
    begin
      Result := TDirectory.GetCurrentDirectory;
    end);
  
    Macros.Add('TempPath', function ():string
    begin
      Result := TPath.GetTempPath;
    end);
  
    Macros.Add('HomePath', function ():string
    begin
      Result := TPath.GetHomePath;
    end);
  
    Macros.Add('DocumentsPath', function ():string
    begin
      Result := TPath.GetDocumentsPath;
    end);
  
    Macros.Add('PublicPath', function ():string
    begin
      Result := TPath.GetPublicPath;
    end);
  end;
  
  procedure TWiRLFileSystemEngine.ServeFileContent(const AFileNamme: string;
    AResponse: TWiRLResponse);
  begin
  