vault.rabbitMq.SecretBackendRole
Explore with Pulumi AI
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as vault from "@pulumi/vault";
const rabbitmq = new vault.rabbitmq.SecretBackend("rabbitmq", {
connectionUri: "https://.....",
username: "user",
password: "password",
});
const role = new vault.rabbitmq.SecretBackendRole("role", {
backend: rabbitmq.path,
name: "deploy",
tags: "tag1,tag2",
vhosts: [{
host: "/",
configure: "",
read: ".*",
write: "",
}],
vhostTopics: [{
vhosts: [{
topic: "amq.topic",
read: ".*",
write: "",
}],
host: "/",
}],
});
import pulumi
import pulumi_vault as vault
rabbitmq = vault.rabbit_mq.SecretBackend("rabbitmq",
connection_uri="https://.....",
username="user",
password="password")
role = vault.rabbit_mq.SecretBackendRole("role",
backend=rabbitmq.path,
name="deploy",
tags="tag1,tag2",
vhosts=[{
"host": "/",
"configure": "",
"read": ".*",
"write": "",
}],
vhost_topics=[{
"vhosts": [{
"topic": "amq.topic",
"read": ".*",
"write": "",
}],
"host": "/",
}])
package main
import (
"github.com/pulumi/pulumi-vault/sdk/v6/go/vault/rabbitMq"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
rabbitmq, err := rabbitMq.NewSecretBackend(ctx, "rabbitmq", &rabbitMq.SecretBackendArgs{
ConnectionUri: pulumi.String("https://....."),
Username: pulumi.String("user"),
Password: pulumi.String("password"),
})
if err != nil {
return err
}
_, err = rabbitMq.NewSecretBackendRole(ctx, "role", &rabbitMq.SecretBackendRoleArgs{
Backend: rabbitmq.Path,
Name: pulumi.String("deploy"),
Tags: pulumi.String("tag1,tag2"),
Vhosts: rabbitmq.SecretBackendRoleVhostArray{
&rabbitmq.SecretBackendRoleVhostArgs{
Host: pulumi.String("/"),
Configure: pulumi.String(""),
Read: pulumi.String(".*"),
Write: pulumi.String(""),
},
},
VhostTopics: rabbitmq.SecretBackendRoleVhostTopicArray{
&rabbitmq.SecretBackendRoleVhostTopicArgs{
Vhosts: rabbitmq.SecretBackendRoleVhostTopicVhostArray{
&rabbitmq.SecretBackendRoleVhostTopicVhostArgs{
Topic: pulumi.String("amq.topic"),
Read: pulumi.String(".*"),
Write: pulumi.String(""),
},
},
Host: pulumi.String("/"),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Vault = Pulumi.Vault;
return await Deployment.RunAsync(() =>
{
var rabbitmq = new Vault.RabbitMQ.SecretBackend("rabbitmq", new()
{
ConnectionUri = "https://.....",
Username = "user",
Password = "password",
});
var role = new Vault.RabbitMQ.SecretBackendRole("role", new()
{
Backend = rabbitmq.Path,
Name = "deploy",
Tags = "tag1,tag2",
Vhosts = new[]
{
new Vault.RabbitMQ.Inputs.SecretBackendRoleVhostArgs
{
Host = "/",
Configure = "",
Read = ".*",
Write = "",
},
},
VhostTopics = new[]
{
new Vault.RabbitMQ.Inputs.SecretBackendRoleVhostTopicArgs
{
Vhosts = new[]
{
new Vault.RabbitMQ.Inputs.SecretBackendRoleVhostTopicVhostArgs
{
Topic = "amq.topic",
Read = ".*",
Write = "",
},
},
Host = "/",
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vault.rabbitMq.SecretBackend;
import com.pulumi.vault.rabbitMq.SecretBackendArgs;
import com.pulumi.vault.rabbitMq.SecretBackendRole;
import com.pulumi.vault.rabbitMq.SecretBackendRoleArgs;
import com.pulumi.vault.rabbitMq.inputs.SecretBackendRoleVhostArgs;
import com.pulumi.vault.rabbitMq.inputs.SecretBackendRoleVhostTopicArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var rabbitmq = new SecretBackend("rabbitmq", SecretBackendArgs.builder()
.connectionUri("https://.....")
.username("user")
.password("password")
.build());
var role = new SecretBackendRole("role", SecretBackendRoleArgs.builder()
.backend(rabbitmq.path())
.name("deploy")
.tags("tag1,tag2")
.vhosts(SecretBackendRoleVhostArgs.builder()
.host("/")
.configure("")
.read(".*")
.write("")
.build())
.vhostTopics(SecretBackendRoleVhostTopicArgs.builder()
.vhosts(SecretBackendRoleVhostTopicVhostArgs.builder()
.topic("amq.topic")
.read(".*")
.write("")
.build())
.host("/")
.build())
.build());
}
}
resources:
rabbitmq:
type: vault:rabbitMq:SecretBackend
properties:
connectionUri: https://.....
username: user
password: password
role:
type: vault:rabbitMq:SecretBackendRole
properties:
backend: ${rabbitmq.path}
name: deploy
tags: tag1,tag2
vhosts:
- host: /
configure:
read: .*
write:
vhostTopics:
- vhosts:
- topic: amq.topic
read: .*
write:
host: /
Create SecretBackendRole Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new SecretBackendRole(name: string, args: SecretBackendRoleArgs, opts?: CustomResourceOptions);
@overload
def SecretBackendRole(resource_name: str,
args: SecretBackendRoleArgs,
opts: Optional[ResourceOptions] = None)
@overload
def SecretBackendRole(resource_name: str,
opts: Optional[ResourceOptions] = None,
backend: Optional[str] = None,
name: Optional[str] = None,
namespace: Optional[str] = None,
tags: Optional[str] = None,
vhost_topics: Optional[Sequence[_rabbitmq.SecretBackendRoleVhostTopicArgs]] = None,
vhosts: Optional[Sequence[_rabbitmq.SecretBackendRoleVhostArgs]] = None)
func NewSecretBackendRole(ctx *Context, name string, args SecretBackendRoleArgs, opts ...ResourceOption) (*SecretBackendRole, error)
public SecretBackendRole(string name, SecretBackendRoleArgs args, CustomResourceOptions? opts = null)
public SecretBackendRole(String name, SecretBackendRoleArgs args)
public SecretBackendRole(String name, SecretBackendRoleArgs args, CustomResourceOptions options)
type: vault:rabbitMq:SecretBackendRole
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args SecretBackendRoleArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args SecretBackendRoleArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args SecretBackendRoleArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args SecretBackendRoleArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args SecretBackendRoleArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole = new Vault.RabbitMQ.SecretBackendRole("examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole", new()
{
Backend = "string",
Name = "string",
Namespace = "string",
Tags = "string",
VhostTopics = new[]
{
new Vault.RabbitMQ.Inputs.SecretBackendRoleVhostTopicArgs
{
Host = "string",
Vhosts = new[]
{
new Vault.RabbitMQ.Inputs.SecretBackendRoleVhostTopicVhostArgs
{
Read = "string",
Topic = "string",
Write = "string",
},
},
},
},
Vhosts = new[]
{
new Vault.RabbitMQ.Inputs.SecretBackendRoleVhostArgs
{
Configure = "string",
Host = "string",
Read = "string",
Write = "string",
},
},
});
example, err := rabbitMq.NewSecretBackendRole(ctx, "examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole", &rabbitMq.SecretBackendRoleArgs{
Backend: pulumi.String("string"),
Name: pulumi.String("string"),
Namespace: pulumi.String("string"),
Tags: pulumi.String("string"),
VhostTopics: rabbitmq.SecretBackendRoleVhostTopicArray{
&rabbitmq.SecretBackendRoleVhostTopicArgs{
Host: pulumi.String("string"),
Vhosts: rabbitmq.SecretBackendRoleVhostTopicVhostArray{
&rabbitmq.SecretBackendRoleVhostTopicVhostArgs{
Read: pulumi.String("string"),
Topic: pulumi.String("string"),
Write: pulumi.String("string"),
},
},
},
},
Vhosts: rabbitmq.SecretBackendRoleVhostArray{
&rabbitmq.SecretBackendRoleVhostArgs{
Configure: pulumi.String("string"),
Host: pulumi.String("string"),
Read: pulumi.String("string"),
Write: pulumi.String("string"),
},
},
})
var examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole = new SecretBackendRole("examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole", SecretBackendRoleArgs.builder()
.backend("string")
.name("string")
.namespace("string")
.tags("string")
.vhostTopics(SecretBackendRoleVhostTopicArgs.builder()
.host("string")
.vhosts(SecretBackendRoleVhostTopicVhostArgs.builder()
.read("string")
.topic("string")
.write("string")
.build())
.build())
.vhosts(SecretBackendRoleVhostArgs.builder()
.configure("string")
.host("string")
.read("string")
.write("string")
.build())
.build());
examplesecret_backend_role_resource_resource_from_rabbit_mqsecret_backend_role = vault.rabbit_mq.SecretBackendRole("examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole",
backend="string",
name="string",
namespace="string",
tags="string",
vhost_topics=[{
"host": "string",
"vhosts": [{
"read": "string",
"topic": "string",
"write": "string",
}],
}],
vhosts=[{
"configure": "string",
"host": "string",
"read": "string",
"write": "string",
}])
const examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole = new vault.rabbitmq.SecretBackendRole("examplesecretBackendRoleResourceResourceFromRabbitMqsecretBackendRole", {
backend: "string",
name: "string",
namespace: "string",
tags: "string",
vhostTopics: [{
host: "string",
vhosts: [{
read: "string",
topic: "string",
write: "string",
}],
}],
vhosts: [{
configure: "string",
host: "string",
read: "string",
write: "string",
}],
});
type: vault:rabbitMq:SecretBackendRole
properties:
backend: string
name: string
namespace: string
tags: string
vhostTopics:
- host: string
vhosts:
- read: string
topic: string
write: string
vhosts:
- configure: string
host: string
read: string
write: string
SecretBackendRole Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The SecretBackendRole resource accepts the following input properties:
- Backend string
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - Name string
- The name to identify this role within the backend. Must be unique within the backend.
- Namespace string
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - string
- Specifies a comma-separated RabbitMQ management tags.
- Vhost
Topics List<SecretBackend Role Vhost Topic> - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- Vhosts
List<Secret
Backend Role Vhost> - Specifies a map of virtual hosts to permissions.
- Backend string
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - Name string
- The name to identify this role within the backend. Must be unique within the backend.
- Namespace string
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - string
- Specifies a comma-separated RabbitMQ management tags.
- Vhost
Topics []SecretBackend Role Vhost Topic Args - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- Vhosts
[]Secret
Backend Role Vhost Args - Specifies a map of virtual hosts to permissions.
- backend String
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name String
- The name to identify this role within the backend. Must be unique within the backend.
- namespace String
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - String
- Specifies a comma-separated RabbitMQ management tags.
- vhost
Topics List<SecretBackend Role Vhost Topic> - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts
List<Secret
Backend Role Vhost> - Specifies a map of virtual hosts to permissions.
- backend string
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name string
- The name to identify this role within the backend. Must be unique within the backend.
- namespace string
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - string
- Specifies a comma-separated RabbitMQ management tags.
- vhost
Topics SecretBackend Role Vhost Topic[] - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts
Secret
Backend Role Vhost[] - Specifies a map of virtual hosts to permissions.
- backend str
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name str
- The name to identify this role within the backend. Must be unique within the backend.
- namespace str
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - str
- Specifies a comma-separated RabbitMQ management tags.
- vhost_
topics Sequence[rabbitmq.Secret Backend Role Vhost Topic Args] - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts
Sequence[rabbitmq.
Secret Backend Role Vhost Args] - Specifies a map of virtual hosts to permissions.
- backend String
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name String
- The name to identify this role within the backend. Must be unique within the backend.
- namespace String
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - String
- Specifies a comma-separated RabbitMQ management tags.
- vhost
Topics List<Property Map> - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts List<Property Map>
- Specifies a map of virtual hosts to permissions.
Outputs
All input properties are implicitly available as output properties. Additionally, the SecretBackendRole resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Id string
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
- id string
- The provider-assigned unique ID for this managed resource.
- id str
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
Look up Existing SecretBackendRole Resource
Get an existing SecretBackendRole resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: SecretBackendRoleState, opts?: CustomResourceOptions): SecretBackendRole
@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
backend: Optional[str] = None,
name: Optional[str] = None,
namespace: Optional[str] = None,
tags: Optional[str] = None,
vhost_topics: Optional[Sequence[_rabbitmq.SecretBackendRoleVhostTopicArgs]] = None,
vhosts: Optional[Sequence[_rabbitmq.SecretBackendRoleVhostArgs]] = None) -> SecretBackendRole
func GetSecretBackendRole(ctx *Context, name string, id IDInput, state *SecretBackendRoleState, opts ...ResourceOption) (*SecretBackendRole, error)
public static SecretBackendRole Get(string name, Input<string> id, SecretBackendRoleState? state, CustomResourceOptions? opts = null)
public static SecretBackendRole get(String name, Output<String> id, SecretBackendRoleState state, CustomResourceOptions options)
Resource lookup is not supported in YAML
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Backend string
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - Name string
- The name to identify this role within the backend. Must be unique within the backend.
- Namespace string
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - string
- Specifies a comma-separated RabbitMQ management tags.
- Vhost
Topics List<SecretBackend Role Vhost Topic> - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- Vhosts
List<Secret
Backend Role Vhost> - Specifies a map of virtual hosts to permissions.
- Backend string
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - Name string
- The name to identify this role within the backend. Must be unique within the backend.
- Namespace string
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - string
- Specifies a comma-separated RabbitMQ management tags.
- Vhost
Topics []SecretBackend Role Vhost Topic Args - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- Vhosts
[]Secret
Backend Role Vhost Args - Specifies a map of virtual hosts to permissions.
- backend String
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name String
- The name to identify this role within the backend. Must be unique within the backend.
- namespace String
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - String
- Specifies a comma-separated RabbitMQ management tags.
- vhost
Topics List<SecretBackend Role Vhost Topic> - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts
List<Secret
Backend Role Vhost> - Specifies a map of virtual hosts to permissions.
- backend string
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name string
- The name to identify this role within the backend. Must be unique within the backend.
- namespace string
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - string
- Specifies a comma-separated RabbitMQ management tags.
- vhost
Topics SecretBackend Role Vhost Topic[] - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts
Secret
Backend Role Vhost[] - Specifies a map of virtual hosts to permissions.
- backend str
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name str
- The name to identify this role within the backend. Must be unique within the backend.
- namespace str
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - str
- Specifies a comma-separated RabbitMQ management tags.
- vhost_
topics Sequence[rabbitmq.Secret Backend Role Vhost Topic Args] - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts
Sequence[rabbitmq.
Secret Backend Role Vhost Args] - Specifies a map of virtual hosts to permissions.
- backend String
- The path the RabbitMQ secret backend is mounted at,
with no leading or trailing
/
s. - name String
- The name to identify this role within the backend. Must be unique within the backend.
- namespace String
- The namespace to provision the resource in.
The value should not contain leading or trailing forward slashes.
The
namespace
is always relative to the provider's configured namespace. Available only for Vault Enterprise. - String
- Specifies a comma-separated RabbitMQ management tags.
- vhost
Topics List<Property Map> - Specifies a map of virtual hosts and exchanges to topic permissions. This option requires RabbitMQ 3.7.0 or later.
- vhosts List<Property Map>
- Specifies a map of virtual hosts to permissions.
Supporting Types
SecretBackendRoleVhost, SecretBackendRoleVhostArgs
SecretBackendRoleVhostTopic, SecretBackendRoleVhostTopicArgs
- Host string
- The vhost to set permissions for.
- Vhosts
List<Secret
Backend Role Vhost Topic Vhost> - Specifies a map of virtual hosts to permissions.
- Host string
- The vhost to set permissions for.
- Vhosts
[]Secret
Backend Role Vhost Topic Vhost - Specifies a map of virtual hosts to permissions.
- host String
- The vhost to set permissions for.
- vhosts
List<Secret
Backend Role Vhost Topic Vhost> - Specifies a map of virtual hosts to permissions.
- host string
- The vhost to set permissions for.
- vhosts
Secret
Backend Role Vhost Topic Vhost[] - Specifies a map of virtual hosts to permissions.
- host str
- The vhost to set permissions for.
- vhosts
Sequence[rabbitmq.
Secret Backend Role Vhost Topic Vhost] - Specifies a map of virtual hosts to permissions.
- host String
- The vhost to set permissions for.
- vhosts List<Property Map>
- Specifies a map of virtual hosts to permissions.
SecretBackendRoleVhostTopicVhost, SecretBackendRoleVhostTopicVhostArgs
Import
RabbitMQ secret backend roles can be imported using the path
, e.g.
$ pulumi import vault:rabbitMq/secretBackendRole:SecretBackendRole role rabbitmq/roles/deploy
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- Vault pulumi/pulumi-vault
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
vault
Terraform Provider.