anchor.diff:      Result := (State = STATE_SUBDOMAIN) and (subdomains >= 2);
   end;
   
  -function EncodeURIComponent(const ASrc: string): UTF8String;
  +function EncodeURIComponent(const aSrc: String): UTF8String;
   const
     HexMap: UTF8String = '0123456789ABCDEF';
   
  
positive.code: begin
    Result := '';    {Do not Localize}
  
    ASrcUTF8 := UTF8Encode(ASrc);
    // UTF8Encode call not strictly necessary but
    // prevents implicit conversion warning
  
  
negative.code:   end;
  end;
  
  
  (*
      https://docs.microsoft.com/it-it/windows/desktop/FileIO/naming-a-file#basic_naming_conventions
  
      Use almost any character in the current code page for a name, including Unicode characters and characters in the extended character set (128–255), except for the following:
          The following reserved characters are not allowed:
          < > : " / \ | ? *
          Characters whose integer representations are in the range from zero through 31 are not allowed.
          Any other character that the target file system does not allow.
  
      Do not use the following reserved device names for the name of a file: CON, PRN, AUX, NUL, COM1..COM9, LPT1..LPT9.
      Also avoid these names followed immediately by an extension; for example, NUL.txt is not recommended.
  
  *)
  function SanitizeFileName(const aSrc: String): String;
  var
    i : integer;
    tmp : String;
  begin
    Result := '';
    tmp := ChangeFileExt(ExtractFileName(aSrc), '');
    for i := 1 to Length(tmp) do
    begin
      if tmp[i] = '<' then
        Result := Result + '_'
      else if tmp[i] = '>' then
        Result := Result + '_'
      else if tmp[i] = ':' then
        Result := Result + '_'
      else if tmp[i] = '"' then
        Result := Result + '_'
      else if tmp[i] = '/' then
        Result := Result + '_'
      else if tmp[i] = '\' then
        Result := Result + '_'
      else if tmp[i] = '|' then
        Result := Result + '_'
      else if tmp[i] = '?' then
        Result := Result + '_'
      else if tmp[i] = '*' then
        Result := Result + '_'
      else if tmp[i] = '.' then
        Result := Result + '_'
      else if Ord(tmp[i]) <= 31 then
        Result := Result + '_'
      else
        Result := Result + tmp[i];
    end;
    tmp := ExtractFileDir(aSrc);
    if tmp <> '' then
      Result := IncludeTrailingPathDelimiter(tmp) + ChangeFileExt(Result, ExtractFileExt(aSrc))
    else
      Result := ChangeFileExt(Result, ExtractFileExt(aSrc));
  end;
  
  function IsRunningAsRoot: boolean;
  begin
  {$IFDEF WINDOWS}
  