UNPKG

iam-floyd

Version:

AWS IAM policy statement generator with fluent interface

909 lines 91.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Directconnect = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [directconnect](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdirectconnect.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class Directconnect extends shared_1.PolicyStatement { /** * Statement provider for service [directconnect](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdirectconnect.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ constructor(sid) { super(sid); this.servicePrefix = 'directconnect'; this.accessLevelList = { Write: [ 'AcceptDirectConnectGatewayAssociationProposal', 'AllocateConnectionOnInterconnect', 'AllocateHostedConnection', 'AllocatePrivateVirtualInterface', 'AllocatePublicVirtualInterface', 'AllocateTransitVirtualInterface', 'AssociateConnectionWithLag', 'AssociateHostedConnection', 'AssociateMacSecKey', 'AssociateVirtualInterface', 'ConfirmConnection', 'ConfirmCustomerAgreement', 'ConfirmPrivateVirtualInterface', 'ConfirmPublicVirtualInterface', 'ConfirmTransitVirtualInterface', 'CreateBGPPeer', 'CreateConnection', 'CreateDirectConnectGateway', 'CreateDirectConnectGatewayAssociation', 'CreateDirectConnectGatewayAssociationProposal', 'CreateInterconnect', 'CreateLag', 'CreatePrivateVirtualInterface', 'CreatePublicVirtualInterface', 'CreateTransitVirtualInterface', 'DeleteBGPPeer', 'DeleteConnection', 'DeleteDirectConnectGateway', 'DeleteDirectConnectGatewayAssociation', 'DeleteDirectConnectGatewayAssociationProposal', 'DeleteInterconnect', 'DeleteLag', 'DeleteVirtualInterface', 'DisassociateConnectionFromLag', 'DisassociateMacSecKey', 'StartBgpFailoverTest', 'StopBgpFailoverTest', 'UpdateConnection', 'UpdateDirectConnectGateway', 'UpdateDirectConnectGatewayAssociation', 'UpdateLag', 'UpdateVirtualInterfaceAttributes' ], Read: [ 'DescribeConnectionLoa', 'DescribeConnections', 'DescribeConnectionsOnInterconnect', 'DescribeCustomerMetadata', 'DescribeDirectConnectGatewayAssociationProposals', 'DescribeDirectConnectGatewayAssociations', 'DescribeDirectConnectGatewayAttachments', 'DescribeDirectConnectGateways', 'DescribeHostedConnections', 'DescribeInterconnectLoa', 'DescribeInterconnects', 'DescribeLags', 'DescribeLoa', 'DescribeLocations', 'DescribeRouterConfiguration', 'DescribeTags', 'DescribeVirtualGateways', 'DescribeVirtualInterfaces' ], List: [ 'ListVirtualInterfaceTestHistory' ], Tagging: [ 'TagResource', 'UntagResource' ] }; } /** * Grants permission to accept a proposal request to attach a virtual private gateway to a Direct Connect gateway * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AcceptDirectConnectGatewayAssociationProposal.html */ toAcceptDirectConnectGatewayAssociationProposal() { return this.to('AcceptDirectConnectGatewayAssociationProposal'); } /** * Grants permission to create a hosted connection on an interconnect * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocateConnectionOnInterconnect.html */ toAllocateConnectionOnInterconnect() { return this.to('AllocateConnectionOnInterconnect'); } /** * Grants permission to create a new hosted connection between a AWS Direct Connect partner's network and a specific AWS Direct Connect location * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocateHostedConnection.html */ toAllocateHostedConnection() { return this.to('AllocateHostedConnection'); } /** * Grants permission to provision a private virtual interface to be owned by a different customer * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocatePrivateVirtualInterface.html */ toAllocatePrivateVirtualInterface() { return this.to('AllocatePrivateVirtualInterface'); } /** * Grants permission to provision a public virtual interface to be owned by a different customer * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocatePublicVirtualInterface.html */ toAllocatePublicVirtualInterface() { return this.to('AllocatePublicVirtualInterface'); } /** * Grants permission to provision a transit virtual interface to be owned by a different customer * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AllocateTransitVirtualInterface.html */ toAllocateTransitVirtualInterface() { return this.to('AllocateTransitVirtualInterface'); } /** * Grants permission to associate a connection with a LAG * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AssociateConnectionWithLag.html */ toAssociateConnectionWithLag() { return this.to('AssociateConnectionWithLag'); } /** * Grants permission to associate a hosted connection and its virtual interfaces with a link aggregation group (LAG) or interconnect * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AssociateHostedConnection.html */ toAssociateHostedConnection() { return this.to('AssociateHostedConnection'); } /** * Grants permission to associate a MAC Security (MACsec) Connection Key Name (CKN)/ Connectivity Association Key (CAK) pair with an AWS Direct Connect dedicated connection * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AssociateMacSecKey.html */ toAssociateMacSecKey() { return this.to('AssociateMacSecKey'); } /** * Grants permission to associate a virtual interface with a specified link aggregation group (LAG) or connection * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_AssociateVirtualInterface.html */ toAssociateVirtualInterface() { return this.to('AssociateVirtualInterface'); } /** * Grants permission to confirm the creation of a hosted connection on an interconnect * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmConnection.html */ toConfirmConnection() { return this.to('ConfirmConnection'); } /** * Grants permission to confirm the the terms of agreement when creating the connection or link aggregation group (LAG) * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmCustomerAgreement.html */ toConfirmCustomerAgreement() { return this.to('ConfirmCustomerAgreement'); } /** * Grants permission to accept ownership of a private virtual interface created by another customer * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmPrivateVirtualInterface.html */ toConfirmPrivateVirtualInterface() { return this.to('ConfirmPrivateVirtualInterface'); } /** * Grants permission to accept ownership of a public virtual interface created by another customer * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmPublicVirtualInterface.html */ toConfirmPublicVirtualInterface() { return this.to('ConfirmPublicVirtualInterface'); } /** * Grants permission to accept ownership of a transit virtual interface created by another customer * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_ConfirmTransitVirtualInterface.html */ toConfirmTransitVirtualInterface() { return this.to('ConfirmTransitVirtualInterface'); } /** * Grants permission to create a BGP peer on the specified virtual interface * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateBGPPeer.html */ toCreateBGPPeer() { return this.to('CreateBGPPeer'); } /** * Grants permission to create a new connection between the customer network and a specific AWS Direct Connect location * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateConnection.html */ toCreateConnection() { return this.to('CreateConnection'); } /** * Grants permission to create a Direct Connect gateway, which is an intermediate object that enables you to connect a set of virtual interfaces and virtual private gateways * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateDirectConnectGateway.html */ toCreateDirectConnectGateway() { return this.to('CreateDirectConnectGateway'); } /** * Grants permission to create an association between a Direct Connect gateway and a virtual private gateway * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateDirectConnectGatewayAssociation.html */ toCreateDirectConnectGatewayAssociation() { return this.to('CreateDirectConnectGatewayAssociation'); } /** * Grants permission to create a proposal to associate the specified virtual private gateway with the specified Direct Connect gateway * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateDirectConnectGatewayAssociationProposal.html */ toCreateDirectConnectGatewayAssociationProposal() { return this.to('CreateDirectConnectGatewayAssociationProposal'); } /** * Grants permission to create a new interconnect between a AWS Direct Connect partner's network and a specific AWS Direct Connect location * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateInterconnect.html */ toCreateInterconnect() { return this.to('CreateInterconnect'); } /** * Grants permission to create a link aggregation group (LAG) with the specified number of bundled physical connections between the customer network and a specific AWS Direct Connect location * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateLag.html */ toCreateLag() { return this.to('CreateLag'); } /** * Grants permission to create a new private virtual interface * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreatePrivateVirtualInterface.html */ toCreatePrivateVirtualInterface() { return this.to('CreatePrivateVirtualInterface'); } /** * Grants permission to create a new public virtual interface * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreatePublicVirtualInterface.html */ toCreatePublicVirtualInterface() { return this.to('CreatePublicVirtualInterface'); } /** * Grants permission to create a new transit virtual interface * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateTransitVirtualInterface.html */ toCreateTransitVirtualInterface() { return this.to('CreateTransitVirtualInterface'); } /** * Grants permission to delete the specified BGP peer on the specified virtual interface with the specified customer address and ASN * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteBGPPeer.html */ toDeleteBGPPeer() { return this.to('DeleteBGPPeer'); } /** * Grants permission to delete the connection * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteConnection.html */ toDeleteConnection() { return this.to('DeleteConnection'); } /** * Grants permission to delete the specified Direct Connect gateway * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteDirectConnectGateway.html */ toDeleteDirectConnectGateway() { return this.to('DeleteDirectConnectGateway'); } /** * Grants permission to delete the association between the specified Direct Connect gateway and virtual private gateway * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteDirectConnectGatewayAssociation.html */ toDeleteDirectConnectGatewayAssociation() { return this.to('DeleteDirectConnectGatewayAssociation'); } /** * Grants permission to delete the association proposal request between the specified Direct Connect gateway and virtual private gateway * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteDirectConnectGatewayAssociationProposal.html */ toDeleteDirectConnectGatewayAssociationProposal() { return this.to('DeleteDirectConnectGatewayAssociationProposal'); } /** * Grants permission to delete the specified interconnect * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteInterconnect.html */ toDeleteInterconnect() { return this.to('DeleteInterconnect'); } /** * Grants permission to delete the specified link aggregation group (LAG) * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteLag.html */ toDeleteLag() { return this.to('DeleteLag'); } /** * Grants permission to delete a virtual interface * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DeleteVirtualInterface.html */ toDeleteVirtualInterface() { return this.to('DeleteVirtualInterface'); } /** * Grants permission to describe the LOA-CFA for a Connection * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeConnectionLoa.html */ toDescribeConnectionLoa() { return this.to('DescribeConnectionLoa'); } /** * Grants permission to describe all connections in this region * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeConnections.html */ toDescribeConnections() { return this.to('DescribeConnections'); } /** * Grants permission to describe a list of connections that have been provisioned on the given interconnect * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeConnectionsOnInterconnect.html */ toDescribeConnectionsOnInterconnect() { return this.to('DescribeConnectionsOnInterconnect'); } /** * Grants permission to view a list of customer agreements, along with their signed status and whether the customer is an NNIPartner, NNIPartnerV2, or a nonPartner * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeCustomerMetadata.html */ toDescribeCustomerMetadata() { return this.to('DescribeCustomerMetadata'); } /** * Grants permission to describe one or more association proposals for connection between a virtual private gateway and a Direct Connect gateway * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeDirectConnectGatewayAssociationProposals.html */ toDescribeDirectConnectGatewayAssociationProposals() { return this.to('DescribeDirectConnectGatewayAssociationProposals'); } /** * Grants permission to describe the associations between your Direct Connect gateways and virtual private gateways * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeDirectConnectGatewayAssociations.html */ toDescribeDirectConnectGatewayAssociations() { return this.to('DescribeDirectConnectGatewayAssociations'); } /** * Grants permission to describe the attachments between your Direct Connect gateways and virtual interfaces * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeDirectConnectGatewayAttachments.html */ toDescribeDirectConnectGatewayAttachments() { return this.to('DescribeDirectConnectGatewayAttachments'); } /** * Grants permission to describe all your Direct Connect gateways or only the specified Direct Connect gateway * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeDirectConnectGateways.html */ toDescribeDirectConnectGateways() { return this.to('DescribeDirectConnectGateways'); } /** * Grants permission to describe the hosted connections that have been provisioned on the specified interconnect or link aggregation group (LAG) * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeHostedConnections.html */ toDescribeHostedConnections() { return this.to('DescribeHostedConnections'); } /** * Grants permission to describe the LOA-CFA for an Interconnect * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeInterconnectLoa.html */ toDescribeInterconnectLoa() { return this.to('DescribeInterconnectLoa'); } /** * Grants permission to describe a list of interconnects owned by the AWS account * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeInterconnects.html */ toDescribeInterconnects() { return this.to('DescribeInterconnects'); } /** * Grants permission to describe all your link aggregation groups (LAG) or the specified LAG * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeLags.html */ toDescribeLags() { return this.to('DescribeLags'); } /** * Grants permission to describe the LOA-CFA for a connection, interconnect, or link aggregation group (LAG) * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeLoa.html */ toDescribeLoa() { return this.to('DescribeLoa'); } /** * Grants permission to describe the list of AWS Direct Connect locations in the current AWS region * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeLocations.html */ toDescribeLocations() { return this.to('DescribeLocations'); } /** * Grants permission to describe Details about the router for a virtual interface * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeRouterConfiguration.html */ toDescribeRouterConfiguration() { return this.to('DescribeRouterConfiguration'); } /** * Grants permission to describe the tags associated with the specified AWS Direct Connect resources * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeTags.html */ toDescribeTags() { return this.to('DescribeTags'); } /** * Grants permission to describe a list of virtual private gateways owned by the AWS account * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeVirtualGateways.html */ toDescribeVirtualGateways() { return this.to('DescribeVirtualGateways'); } /** * Grants permission to describe all virtual interfaces for an AWS account * * Access Level: Read * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DescribeVirtualInterfaces.html */ toDescribeVirtualInterfaces() { return this.to('DescribeVirtualInterfaces'); } /** * Grants permission to disassociate a connection from a link aggregation group (LAG) * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DisassociateConnectionFromLag.html */ toDisassociateConnectionFromLag() { return this.to('DisassociateConnectionFromLag'); } /** * Grants permission to remove the association between a MAC Security (MACsec) security key and an AWS Direct Connect dedicated connection * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DisassociateMacSecKey.html */ toDisassociateMacSecKey() { return this.to('DisassociateMacSecKey'); } /** * Grants permission to list the virtual interface failover test history * * Access Level: List * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_ListVirtualInterfaceTestHistory.html */ toListVirtualInterfaceTestHistory() { return this.to('ListVirtualInterfaceTestHistory'); } /** * Grants permission to start the virtual interface failover test that verifies your configuration meets your resiliency requirements by placing the BGP peering session in the DOWN state. You can then send traffic to verify that there are no outages * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_StartBgpFailoverTest.html */ toStartBgpFailoverTest() { return this.to('StartBgpFailoverTest'); } /** * Grants permission to stop the virtual interface failover test * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_StopBgpFailoverTest.html */ toStopBgpFailoverTest() { return this.to('StopBgpFailoverTest'); } /** * Grants permission to add the specified tags to the specified AWS Direct Connect resource. Each resource can have a maximum of 50 tags * * Access Level: Tagging * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_TagResource.html */ toTagResource() { return this.to('TagResource'); } /** * Grants permission to remove one or more tags from the specified AWS Direct Connect resource * * Access Level: Tagging * * Possible conditions: * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_UntagResource.html */ toUntagResource() { return this.to('UntagResource'); } /** * Grants permission to update the AWS Direct Connect dedicated connection configuration. You can update the following parameters for a connection: The connection name or The connection's MAC Security (MACsec) encryption mode * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_UpdateConnection.html */ toUpdateConnection() { return this.to('UpdateConnection'); } /** * Grants permission to update the name of a Direct Connect gateway * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_UpdateDirectConnectGateway.html */ toUpdateDirectConnectGateway() { return this.to('UpdateDirectConnectGateway'); } /** * Grants permission to update the specified attributes of the Direct Connect gateway association * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_UpdateDirectConnectGatewayAssociation.html */ toUpdateDirectConnectGatewayAssociation() { return this.to('UpdateDirectConnectGatewayAssociation'); } /** * Grants permission to update the attributes of the specified link aggregation group (LAG) * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_UpdateLag.html */ toUpdateLag() { return this.to('UpdateLag'); } /** * Grants permission to update the specified attributes of the specified virtual private interface * * Access Level: Write * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_UpdateVirtualInterfaceAttributes.html */ toUpdateVirtualInterfaceAttributes() { return this.to('UpdateVirtualInterfaceAttributes'); } /** * Adds a resource of type dxcon to the statement * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_Connection.html * * @param connectionId - Identifier for the connectionId. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onDxcon(connectionId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:directconnect:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:dxcon/${connectionId}`); } /** * Adds a resource of type dxlag to the statement * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_Lag.html * * @param lagId - Identifier for the lagId. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onDxlag(lagId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:directconnect:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:dxlag/${lagId}`); } /** * Adds a resource of type dxvif to the statement * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_VirtualInterface.html * * @param virtualInterfaceId - Identifier for the virtualInterfaceId. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onDxvif(virtualInterfaceId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:directconnect:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:dxvif/${virtualInterfaceId}`); } /** * Adds a resource of type dx-gateway to the statement * * https://docs.aws.amazon.com/directconnect/latest/APIReference/API_DirectConnectGateway.html * * @param directConnectGatewayId - Identifier for the directConnectGatewayId. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. * * Possible conditions: * - .ifAwsResourceTag() */ onDxGateway(directConnectGatewayId, account, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:directconnect::${account ?? this.defaultAccount}:dx-gateway/${directConnectGatewayId}`); } /** * Filters access by actions based on the presence of tag key-value pairs in the request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag * * Applies to actions: * - .toAllocateHostedConnection() * - .toAllocatePrivateVirtualInterface() * - .toAllocatePublicVirtualInterface() * - .toAllocateTransitVirtualInterface() * - .toCreateConnection() * - .toCreateDirectConnectGateway() * - .toCreateInterconnect() * - .toCreateLag() * - .toCreatePrivateVirtualInterface() * - .toCreatePublicVirtualInterface() * - .toCreateTransitVirtualInterface() * - .toTagResource() * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsRequestTag(tagKey, value, operator) { return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by actions based on tag key-value pairs attached to the resource * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag * * Applies to resource types: * - dxcon * - dxlag * - dxvif * - dx-gateway * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsResourceTag(tagKey, value, operator) { return this.if(`aws:ResourceTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by actions based on the presence of tag keys in the request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys * * Applies to actions: * - .toAllocateHostedConnection() * - .toAllocatePrivateVirtualInterface() * - .toAllocatePublicVirtualInterface() * - .toAllocateTransitVirtualInterface() * - .toCreateConnection() * - .toCreateDirectConnectGateway() * - .toCreateInterconnect() * - .toCreateLag() * - .toCreatePrivateVirtualInterface() * - .toCreatePublicVirtualInterface() * - .toCreateTransitVirtualInterface() * - .toTagResource() * - .toUntagResource() * * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsTagKeys(value, operator) { return this.if(`aws:TagKeys`, value, operator ?? 'StringLike'); } } exports.Directconnect = Directconnect; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0Y29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpcmVjdGNvbm5lY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQXlEO0FBRXpEOzs7O0dBSUc7QUFDSCxNQUFhLGFBQWMsU0FBUSx3QkFBZTtJQUdoRDs7OztPQUlHO0lBQ0gsWUFBWSxHQUFZO1FBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQVJOLGtCQUFhLEdBQUcsZUFBZSxDQUFDO1FBbXZCN0Isb0JBQWUsR0FBb0I7WUFDM0MsS0FBSyxFQUFFO2dCQUNMLCtDQUErQztnQkFDL0Msa0NBQWtDO2dCQUNsQywwQkFBMEI7Z0JBQzFCLGlDQUFpQztnQkFDakMsZ0NBQWdDO2dCQUNoQyxpQ0FBaUM7Z0JBQ2pDLDRCQUE0QjtnQkFDNUIsMkJBQTJCO2dCQUMzQixvQkFBb0I7Z0JBQ3BCLDJCQUEyQjtnQkFDM0IsbUJBQW1CO2dCQUNuQiwwQkFBMEI7Z0JBQzFCLGdDQUFnQztnQkFDaEMsK0JBQStCO2dCQUMvQixnQ0FBZ0M7Z0JBQ2hDLGVBQWU7Z0JBQ2Ysa0JBQWtCO2dCQUNsQiw0QkFBNEI7Z0JBQzVCLHVDQUF1QztnQkFDdkMsK0NBQStDO2dCQUMvQyxvQkFBb0I7Z0JBQ3BCLFdBQVc7Z0JBQ1gsK0JBQStCO2dCQUMvQiw4QkFBOEI7Z0JBQzlCLCtCQUErQjtnQkFDL0IsZUFBZTtnQkFDZixrQkFBa0I7Z0JBQ2xCLDRCQUE0QjtnQkFDNUIsdUNBQXVDO2dCQUN2QywrQ0FBK0M7Z0JBQy9DLG9CQUFvQjtnQkFDcEIsV0FBVztnQkFDWCx3QkFBd0I7Z0JBQ3hCLCtCQUErQjtnQkFDL0IsdUJBQXVCO2dCQUN2QixzQkFBc0I7Z0JBQ3RCLHFCQUFxQjtnQkFDckIsa0JBQWtCO2dCQUNsQiw0QkFBNEI7Z0JBQzVCLHVDQUF1QztnQkFDdkMsV0FBVztnQkFDWCxrQ0FBa0M7YUFDbkM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osdUJBQXVCO2dCQUN2QixxQkFBcUI7Z0JBQ3JCLG1DQUFtQztnQkFDbkMsMEJBQTBCO2dCQUMxQixrREFBa0Q7Z0JBQ2xELDBDQUEwQztnQkFDMUMseUNBQXlDO2dCQUN6QywrQkFBK0I7Z0JBQy9CLDJCQUEyQjtnQkFDM0IseUJBQXlCO2dCQUN6Qix1QkFBdUI7Z0JBQ3ZCLGNBQWM7Z0JBQ2QsYUFBYTtnQkFDYixtQkFBbUI7Z0JBQ25CLDZCQUE2QjtnQkFDN0IsY0FBYztnQkFDZCx5QkFBeUI7Z0JBQ3pCLDJCQUEyQjthQUM1QjtZQUNELElBQUksRUFBRTtnQkFDSixpQ0FBaUM7YUFDbEM7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsYUFBYTtnQkFDYixlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztJQWx6QkYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLCtDQUErQztRQUNwRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0NBQWtDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksMEJBQTBCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksaUNBQWlDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksZ0NBQWdDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksaUNBQWlDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSw0QkFBNEI7UUFDakMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDJCQUEyQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG1CQUFtQjtRQUN4QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMEJBQTBCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQ0FBZ0M7UUFDckMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLCtCQUErQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZ0NBQWdDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLDRCQUE0QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksdUNBQXVDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwrQ0FBK0M7UUFDcEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxvQkFBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLCtCQUErQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLDhCQUE4QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLCtCQUErQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksNEJBQTRCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx1Q0FBdUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLCtDQUErQztRQUNwRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksd0JBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksbUNBQW1DO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwwQkFBMEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtEQUFrRDtRQUN2RCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMENBQTBDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx5Q0FBeUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLCtCQUErQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMkJBQTJCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QjtRQUM1QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDZCQUE2QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMkJBQTJCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwrQkFBK0I7UUFDcEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QjtRQUM1QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksaUNBQWlDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSw0QkFBNEI7UUFDakMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVDQUF1QztRQUM1QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtDQUFrQztRQUN2QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBNEVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLE9BQU8sQ0FBQyxZQUFvQixFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGtCQUFtQixNQUFNLElBQUksSUFBSSxDQUFDLGFBQWMsSUFBSyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWUsVUFBVyxZQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzVLLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxPQUFPLENBQUMsS0FBYSxFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGtCQUFtQixNQUFNLElBQUksSUFBSSxDQUFDLGFBQWMsSUFBSyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWUsVUFBVyxLQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3JLLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxPQUFPLENBQUMsa0JBQTBCLEVBQUUsT0FBZ0IsRUFBRSxNQUFlLEVBQUUsU0FBa0I7UUFDOUYsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQVEsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBaUIsa0JBQW1CLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYyxJQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBZSxVQUFXLGtCQUFtQixFQUFFLENBQUMsQ0FBQztJQUNsTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxXQUFXLENBQUMsc0JBQThCLEVBQUUsT0FBZ0IsRUFBRSxTQUFrQjtRQUNyRixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBUSxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFpQixtQkFBb0IsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFlLGVBQWdCLHNCQUF1QixFQUFFLENBQUMsQ0FBQztJQUMxSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FzQkc7SUFDSSxlQUFlLENBQUMsTUFBYyxFQUFFLEtBQXdCLEVBQUUsUUFBNEI7UUFDM0YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFtQixNQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxLQUF3QixFQUFFLFFBQTRCO1FBQzVGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBb0IsTUFBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FzQkc7SUFDSSxZQUFZLENBQUMsS0FBd0IsRUFBRSxRQUE0QjtRQUN4RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGO0FBejhCRCxzQ0F5OEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcblxuLyoqXG4gKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW2RpcmVjdGNvbm5lY3RdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c2RpcmVjdGNvbm5lY3QuaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3Rjb25uZWN0IGV4dGVuZHMgUG9saWN5U3RhdGVtZW50IHtcbiAgcHVibGljIHNlcnZpY2VQcmVmaXggPSAnZGlyZWN0Y29ubmVjdCc7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbZGlyZWN0Y29ubmVjdF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYXdzZGlyZWN0Y29ubmVjdC5odG1sKS5cbiAgICpcbiAgICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzaWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihzaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGFjY2VwdCBhIHByb3Bvc2FsIHJlcXVlc3QgdG8gYXR0YWNoIGEgdmlydHVhbCBwcml2YXRlIGdhdGV3YXkgdG8gYSBEaXJlY3QgQ29ubmVjdCBnYXRld2F5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RpcmVjdGNvbm5lY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQWNjZXB0RGlyZWN0Q29ubmVjdEdhdGV3YXlBc3NvY2lhdGlvblByb3Bvc2FsLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0FjY2VwdERpcmVjdENvbm5lY3RHYXRld2F5QXNzb2NpYXRpb25Qcm9wb3NhbCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQWNjZXB0RGlyZWN0Q29ubmVjdEdhdGV3YXlBc3NvY2lhdGlvblByb3Bvc2FsJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgaG9zdGVkIGNvbm5lY3Rpb24gb24gYW4gaW50ZXJjb25uZWN0XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RpcmVjdGNvbm5lY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQWxsb2NhdGVDb25uZWN0aW9uT25JbnRlcmNvbm5lY3QuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQWxsb2NhdGVDb25uZWN0aW9uT25JbnRlcmNvbm5lY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0FsbG9jYXRlQ29ubmVjdGlvbk9uSW50ZXJjb25uZWN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgbmV3IGhvc3RlZCBjb25uZWN0aW9uIGJldHdlZW4gYSBBV1MgRGlyZWN0IENvbm5lY3QgcGFydG5lcidzIG5ldHdvcmsgYW5kIGEgc3BlY2lmaWMgQVdTIERpcmVjdCBDb25uZWN0IGxvY2F0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RpcmVjdGNvbm5lY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQWxsb2NhdGVIb3N0ZWRDb25uZWN0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0FsbG9jYXRlSG9zdGVkQ29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQWxsb2NhdGVIb3N0ZWRDb25uZWN0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcHJvdmlzaW9uIGEgcHJpdmF0ZSB2aXJ0dWFsIGludGVyZmFjZSB0byBiZSBvd25lZCBieSBhIGRpZmZlcmVudCBjdXN0b21lclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kaXJlY3Rjb25uZWN0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0FsbG9jYXRlUHJpdmF0ZVZpcnR1YWxJbnRlcmZhY2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQWxsb2NhdGVQcml2YXRlVmlydHVhbEludGVyZmFjZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQWxsb2NhdGVQcml2YXRlVmlydHVhbEludGVyZmFjZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHByb3Zpc2lvbiBhIHB1YmxpYyB2aXJ0dWFsIGludGVyZmFjZSB0byBiZSBvd25lZCBieSBhIGRpZmZlcmVudCBjdXN0b21lclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kaXJlY3Rjb25uZWN0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0FsbG9jYXRlUHVibGljVmlydHVhbEludGVyZmFjZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9BbGxvY2F0ZVB1YmxpY1ZpcnR1YWxJbnRlcmZhY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0FsbG9jYXRlUHVibGljVmlydHVhbEludGVyZmFjZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHByb3Zpc2lvbiBhIHRyYW5zaXQgdmlydHVhbCBpbnRlcmZhY2UgdG8gYmUgb3duZWQgYnkgYSBkaWZmZXJlbnQgY3VzdG9tZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3