code: func DeployENS(transactOpts *bind.TransactOpts, contractBackend bind.ContractBackend) (common.Address, *ENS, error) {
  	// Deploy the ENS registry
  	ensAddr, _, _, err := contract.DeployENSRegistry(transactOpts, contractBackend)
  	if err != nil {
  		return ensAddr, nil, err
  	}
  	ens, err := NewENS(transactOpts, ensAddr, contractBackend)
  	if err != nil {
  		return ensAddr, nil, err
  	}
  	// Deploy the registrar
  	regAddr, _, _, err := contract.DeployFIFSRegistrar(transactOpts, contractBackend, ensAddr, [32]byte{})
  	if err != nil {
  		return ensAddr, nil, err
  	}
  	// Set the registrar as owner of the ENS root
  	if _, err = ens.SetOwner([32]byte{}, regAddr); err != nil {
  		return ensAddr, nil, err
  	}
  	return ensAddr, ens, nil
  }
docs: // DeployENS deploys an instance of the ENS nameservice, with a 'first-in, first-served' root registrar.