anchor.diff:    settings.setString(key, pair.path);
     await doSubscribeToValue(event.network, event.user, pair.value, pair.path);
     return "Subscribed.";
  +}
  +
  +@Command("dsa-alias", description: "Alias DSA Path", usage: "<name> <path>")
  +aliasPath(CommandEvent event, String input) {
  +  var pair = parsePathValuePair(event, input, true);
  +
  +  if (pair == null) {
  +    return "ERROR: Bad Command Input.";
  +  }
  +
  +  var data = event.getChannelMetadata();
  +  if (data.has("alias::${pair.value}")) {
  +    return "Alias named '${pair.value}' already exists.";
  +  }
  +  data.setString("alias::${pair.value}", pair.path);
  +  return "Alias Set.";
  +}
  +
  +@Command("dsa-unalias", description: "Remove an alias to a DSA Path", usage: "<name>")
  +unaliasPath(CommandEvent event, String input) {
  +  var data = event.getChannelMetadata();
  +  if (!data.has("alias::${input}")) {
  +    return "Alias '${input}' does not exist.";
  +  }
  +  data.remove(input);
  +  return "Alias Removed.";
  +}
  +
  +@Command("dsa-aliases", description: "List DSA Aliases", prefix: "DSA Aliases")
  +listAliases(CommandEvent event) {
  +  var data = event.getChannelMetadata();
  +  var out = [];
  +  for (var key in data.keys) {
  +    if (!key.startsWith("alias::")) {
  +      continue;
  +    }
  +
  +    var name = key.split("${key}::").last;
  +    out.add(name);
  +  }
  +
  +  if (out.isNotEmpty) {
  +    DisplayHelpers.paginate(out, 5, (page, items) {
  +      event.reply(items.join(", "));
  +    });
  +  } else {
  +    return "No Aliases Found.";
  +  }
   }
   
   @Command("dsa-unsubscribe", description: "Unsubscribe from DSA Values", usage: "<nickname>", prefix: "DSA")
  
positive.code: }
  
  @Command("dsa-html", description: "Generate an HTML Url to a DSA node", usage: "<path>", prefix: "DSA")
  getHtmlUrl(String input) {
    if (config.has("html_url_template")) {
      var template = config.getString("html_url_template");
      return template.replaceAll("{path}", Uri.encodeFull(input));
    } else {
      return "Unsupported.";
    }
  }
  
  
negative.code: 
    var path = flipped ? b : a;
    var value = flipped ? a : b;
  
    path = getAliasOrPath(event, path);
  
    return new PathValuePair(path, value);
  }
  