docs: function findPreliminaries(rootNode, robots)
  {
  	var name;
  	var find = {
  		base: true,
  		robots: robots != null
  	};
  	var found = {
  		base: false
  	};
  	var result = {
  		base: null
  	};
  	
  	walk(rootNode, function(node)
  	{
  		switch (node.nodeName)
  		{
  			// `<base>` can be anywhere, not just within `<head>`
  			case "base":
  			{
  				if (find.base===true && found.base===false && node.attrMap.href!=null)
  				{
  					// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-url-potentially-surrounded-by-spaces
  					result.base = node.attrMap.href.trim();
  					
  					found.base = true;
  				}
  				
  				break;
  			}
  			// `<meta>` can be anywhere
  			case "meta":
  			{
  				if (find.robots===true && node.attrMap.name!=null && node.attrMap.content!=null)
  				{
  					name = node.attrMap.name.trim().toLowerCase();
  					
  					switch (name)
  					{
  						case "description":
  						case "keywords":
  						{
  							break;
  						}
  						// Catches all because we have "robots" and countless botnames such as "googlebot"
  						default:
  						{
  							if (name==="robots" || RobotDirectives.isBot(name)===true)
  							{
  								robots.meta(name, node.attrMap.content);
  							}
  						}
  					}
  				}
  				
  				break;
  			}
  		}
  		
  		if (found.base===true && find.robots===false)
  		{
  			// Kill walk
  			return false;
  		}
  	});
  	
  	return result;
  }