VaporShell.AppMesh.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'AppMeshVirtualRouterPortMapping'"

class AppMeshVirtualRouterPortMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualRouterPortMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualrouter-portmapping.html'

    hidden [object] $_port
    hidden [object] $_protocol

    [int] $Port
    [string] $Protocol

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this._port
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._port = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this._protocol
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protocol = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualRouterPortMapping() : base() {}
    AppMeshVirtualRouterPortMapping([IDictionary] $props) : base($props) {}
    AppMeshVirtualRouterPortMapping([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeTlsValidationContextSdsTrust'"

class AppMeshVirtualNodeTlsValidationContextSdsTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeTlsValidationContextSdsTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust.html'

    hidden [object] $_secretName

    [string] $SecretName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecretName -Value {
            $this._secretName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._secretName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeTlsValidationContextSdsTrust() : base() {}
    AppMeshVirtualNodeTlsValidationContextSdsTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeTlsValidationContextSdsTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteDuration'"

class AppMeshRouteDuration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteDuration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-duration.html'

    hidden [object] $_value
    hidden [object] $_unit

    [int] $Value
    [string] $Unit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshRouteDuration() : base() {}
    AppMeshRouteDuration([IDictionary] $props) : base($props) {}
    AppMeshRouteDuration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteWeightedTarget'"

class AppMeshRouteWeightedTarget : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteWeightedTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-weightedtarget.html'

    hidden [object] $_virtualNode
    hidden [object] $_weight

    [string] $VirtualNode
    [int] $Weight

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualNode -Value {
            $this._virtualNode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualNode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Weight -Value {
            $this._weight
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weight = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshRouteWeightedTarget() : base() {}
    AppMeshRouteWeightedTarget([IDictionary] $props) : base($props) {}
    AppMeshRouteWeightedTarget([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust'"

class AppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust.html'

    hidden [object] $_sDS
    hidden [object] $_aCM
    hidden [object] $_file

    [AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust] $SDS
    [AppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust] $ACM
    [AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ACM -Value {
            $this._aCM
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aCM = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust() : base() {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeClientPolicyTls'"

class AppMeshVirtualNodeClientPolicyTls : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeClientPolicyTls'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicytls.html'

    hidden [object] $_validation
    hidden [object] $_enforce
    hidden [object] $_ports
    hidden [object] $_certificate

    [AppMeshVirtualNodeTlsValidationContext] $Validation
    [bool] $Enforce
    [int[]] $Ports
    [AppMeshVirtualNodeClientTlsCertificate] $Certificate

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Validation -Value {
            $this._validation
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTlsValidationContext], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._validation = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enforce -Value {
            $this._enforce
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enforce = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ports -Value {
            $this._ports
        } -SecondValue {
            param([ValidateType(([int], [string], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ports = if ($cast = @($value) -as [int]) {
                $cast
            }
            else {
                @($value)
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Certificate -Value {
            $this._certificate
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeClientTlsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificate = $value
        }
    }

    AppMeshVirtualNodeClientPolicyTls() : base() {}
    AppMeshVirtualNodeClientPolicyTls([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeClientPolicyTls([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteGrpcRouteMetadataMatchMethod'"

class AppMeshRouteGrpcRouteMetadataMatchMethod : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteGrpcRouteMetadataMatchMethod'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-grpcroutemetadatamatchmethod.html'

    hidden [object] $_suffix
    hidden [object] $_regex
    hidden [object] $_exact
    hidden [object] $_prefix
    hidden [object] $_range

    [string] $Suffix
    [string] $Regex
    [string] $Exact
    [string] $Prefix
    [AppMeshRouteMatchRange] $Range

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Suffix -Value {
            $this._suffix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._suffix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Regex -Value {
            $this._regex
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._regex = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Exact -Value {
            $this._exact
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._exact = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Prefix -Value {
            $this._prefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._prefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Range -Value {
            $this._range
        } -SecondValue {
            param([ValidateType(([AppMeshRouteMatchRange], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._range = $value
        }
    }

    AppMeshRouteGrpcRouteMetadataMatchMethod() : base() {}
    AppMeshRouteGrpcRouteMetadataMatchMethod([IDictionary] $props) : base($props) {}
    AppMeshRouteGrpcRouteMetadataMatchMethod([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate'"

class AppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsacmcertificate.html'

    hidden [object] $_certificateArn

    [string] $CertificateArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateArn -Value {
            $this._certificateArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeFileAccessLog'"

class AppMeshVirtualNodeFileAccessLog : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeFileAccessLog'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-fileaccesslog.html'

    hidden [object] $_path

    [string] $Path

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeFileAccessLog() : base() {}
    AppMeshVirtualNodeFileAccessLog([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeFileAccessLog([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeAwsCloudMapInstanceAttribute'"

class AppMeshVirtualNodeAwsCloudMapInstanceAttribute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeAwsCloudMapInstanceAttribute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-awscloudmapinstanceattribute.html'

    hidden [object] $_value
    hidden [object] $_key

    [string] $Value
    [string] $Key

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeAwsCloudMapInstanceAttribute() : base() {}
    AppMeshVirtualNodeAwsCloudMapInstanceAttribute([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeAwsCloudMapInstanceAttribute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteHeaderMatchMethod'"

class AppMeshRouteHeaderMatchMethod : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteHeaderMatchMethod'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-headermatchmethod.html'

    hidden [object] $_suffix
    hidden [object] $_regex
    hidden [object] $_exact
    hidden [object] $_prefix
    hidden [object] $_range

    [string] $Suffix
    [string] $Regex
    [string] $Exact
    [string] $Prefix
    [AppMeshRouteMatchRange] $Range

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Suffix -Value {
            $this._suffix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._suffix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Regex -Value {
            $this._regex
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._regex = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Exact -Value {
            $this._exact
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._exact = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Prefix -Value {
            $this._prefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._prefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Range -Value {
            $this._range
        } -SecondValue {
            param([ValidateType(([AppMeshRouteMatchRange], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._range = $value
        }
    }

    AppMeshRouteHeaderMatchMethod() : base() {}
    AppMeshRouteHeaderMatchMethod([IDictionary] $props) : base($props) {}
    AppMeshRouteHeaderMatchMethod([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust'"

class AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust.html'

    hidden [object] $_certificateChain

    [string] $CertificateChain

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateChain -Value {
            $this._certificateChain
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateChain = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust() : base() {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteGatewayRouteSpec'"

class AppMeshGatewayRouteGatewayRouteSpec : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteGatewayRouteSpec'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-gatewayroutespec.html'

    hidden [object] $_httpRoute
    hidden [object] $_http2Route
    hidden [object] $_grpcRoute

    [AppMeshGatewayRouteHttpGatewayRoute] $HttpRoute
    [AppMeshGatewayRouteHttpGatewayRoute] $Http2Route
    [AppMeshGatewayRouteGrpcGatewayRoute] $GrpcRoute

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpRoute -Value {
            $this._httpRoute
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteHttpGatewayRoute], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpRoute = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Http2Route -Value {
            $this._http2Route
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteHttpGatewayRoute], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._http2Route = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GrpcRoute -Value {
            $this._grpcRoute
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteGrpcGatewayRoute], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._grpcRoute = $value
        }
    }

    AppMeshGatewayRouteGatewayRouteSpec() : base() {}
    AppMeshGatewayRouteGatewayRouteSpec([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteGatewayRouteSpec([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteRouteSpec'"

class AppMeshRouteRouteSpec : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteRouteSpec'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-routespec.html'

    hidden [object] $_httpRoute
    hidden [object] $_priority
    hidden [object] $_http2Route
    hidden [object] $_grpcRoute
    hidden [object] $_tcpRoute

    [AppMeshRouteHttpRoute] $HttpRoute
    [int] $Priority
    [AppMeshRouteHttpRoute] $Http2Route
    [AppMeshRouteGrpcRoute] $GrpcRoute
    [AppMeshRouteTcpRoute] $TcpRoute

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpRoute -Value {
            $this._httpRoute
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHttpRoute], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpRoute = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this._priority
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._priority = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Http2Route -Value {
            $this._http2Route
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHttpRoute], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._http2Route = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GrpcRoute -Value {
            $this._grpcRoute
        } -SecondValue {
            param([ValidateType(([AppMeshRouteGrpcRoute], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._grpcRoute = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TcpRoute -Value {
            $this._tcpRoute
        } -SecondValue {
            param([ValidateType(([AppMeshRouteTcpRoute], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tcpRoute = $value
        }
    }

    AppMeshRouteRouteSpec() : base() {}
    AppMeshRouteRouteSpec([IDictionary] $props) : base($props) {}
    AppMeshRouteRouteSpec([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTlsValidationContext'"

class AppMeshVirtualNodeListenerTlsValidationContext : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTlsValidationContext'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsvalidationcontext.html'

    hidden [object] $_subjectAlternativeNames
    hidden [object] $_trust

    [AppMeshVirtualNodeSubjectAlternativeNames] $SubjectAlternativeNames
    [AppMeshVirtualNodeListenerTlsValidationContextTrust] $Trust

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubjectAlternativeNames -Value {
            $this._subjectAlternativeNames
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeSubjectAlternativeNames], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._subjectAlternativeNames = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Trust -Value {
            $this._trust
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsValidationContextTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._trust = $value
        }
    }

    AppMeshVirtualNodeListenerTlsValidationContext() : base() {}
    AppMeshVirtualNodeListenerTlsValidationContext([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTlsValidationContext([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool'"

class AppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool.html'

    hidden [object] $_maxRequests

    [int] $MaxRequests

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxRequests -Value {
            $this._maxRequests
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxRequests = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool() : base() {}
    AppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeTcpTimeout'"

class AppMeshVirtualNodeTcpTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeTcpTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tcptimeout.html'

    hidden [object] $_idle

    [AppMeshVirtualNodeDuration] $Idle

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Idle -Value {
            $this._idle
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._idle = $value
        }
    }

    AppMeshVirtualNodeTcpTimeout() : base() {}
    AppMeshVirtualNodeTcpTimeout([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeTcpTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeBackend'"

class AppMeshVirtualNodeBackend : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeBackend'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-backend.html'

    hidden [object] $_virtualService

    [AppMeshVirtualNodeVirtualServiceBackend] $VirtualService

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualService -Value {
            $this._virtualService
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeVirtualServiceBackend], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualService = $value
        }
    }

    AppMeshVirtualNodeBackend() : base() {}
    AppMeshVirtualNodeBackend([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeBackend([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewaySpec'"

class AppMeshVirtualGatewayVirtualGatewaySpec : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewaySpec'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayspec.html'

    hidden [object] $_logging
    hidden [object] $_listeners
    hidden [object] $_backendDefaults

    [AppMeshVirtualGatewayVirtualGatewayLogging] $Logging
    [AppMeshVirtualGatewayVirtualGatewayListener[]] $Listeners
    [AppMeshVirtualGatewayVirtualGatewayBackendDefaults] $BackendDefaults

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Logging -Value {
            $this._logging
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayLogging], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logging = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Listeners -Value {
            $this._listeners
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListener], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._listeners = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackendDefaults -Value {
            $this._backendDefaults
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayBackendDefaults], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._backendDefaults = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewaySpec() : base() {}
    AppMeshVirtualGatewayVirtualGatewaySpec([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewaySpec([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTimeout'"

class AppMeshVirtualNodeListenerTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertimeout.html'

    hidden [object] $_tCP
    hidden [object] $_hTTP2
    hidden [object] $_hTTP
    hidden [object] $_gRPC

    [AppMeshVirtualNodeTcpTimeout] $TCP
    [AppMeshVirtualNodeHttpTimeout] $HTTP2
    [AppMeshVirtualNodeHttpTimeout] $HTTP
    [AppMeshVirtualNodeGrpcTimeout] $GRPC

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TCP -Value {
            $this._tCP
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTcpTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tCP = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTP2 -Value {
            $this._hTTP2
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeHttpTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTP2 = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTP -Value {
            $this._hTTP
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeHttpTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTP = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GRPC -Value {
            $this._gRPC
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeGrpcTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._gRPC = $value
        }
    }

    AppMeshVirtualNodeListenerTimeout() : base() {}
    AppMeshVirtualNodeListenerTimeout([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayTlsValidationContext'"

class AppMeshVirtualGatewayVirtualGatewayTlsValidationContext : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayTlsValidationContext'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext.html'

    hidden [object] $_subjectAlternativeNames
    hidden [object] $_trust

    [AppMeshVirtualGatewaySubjectAlternativeNames] $SubjectAlternativeNames
    [AppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust] $Trust

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubjectAlternativeNames -Value {
            $this._subjectAlternativeNames
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewaySubjectAlternativeNames], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._subjectAlternativeNames = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Trust -Value {
            $this._trust
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayTlsValidationContextTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._trust = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayTlsValidationContext() : base() {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContext([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContext([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodePortMapping'"

class AppMeshVirtualNodePortMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodePortMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-portmapping.html'

    hidden [object] $_port
    hidden [object] $_protocol

    [int] $Port
    [string] $Protocol

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this._port
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._port = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this._protocol
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protocol = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodePortMapping() : base() {}
    AppMeshVirtualNodePortMapping([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodePortMapping([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTls'"

class AppMeshVirtualNodeListenerTls : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTls'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertls.html'

    hidden [object] $_validation
    hidden [object] $_mode
    hidden [object] $_certificate

    [AppMeshVirtualNodeListenerTlsValidationContext] $Validation
    [string] $Mode
    [AppMeshVirtualNodeListenerTlsCertificate] $Certificate

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Validation -Value {
            $this._validation
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsValidationContext], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._validation = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Mode -Value {
            $this._mode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Certificate -Value {
            $this._certificate
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificate = $value
        }
    }

    AppMeshVirtualNodeListenerTls() : base() {}
    AppMeshVirtualNodeListenerTls([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTls([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualServiceVirtualRouterServiceProvider'"

class AppMeshVirtualServiceVirtualRouterServiceProvider : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualServiceVirtualRouterServiceProvider'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualservice-virtualrouterserviceprovider.html'

    hidden [object] $_virtualRouterName

    [string] $VirtualRouterName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualRouterName -Value {
            $this._virtualRouterName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualRouterName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualServiceVirtualRouterServiceProvider() : base() {}
    AppMeshVirtualServiceVirtualRouterServiceProvider([IDictionary] $props) : base($props) {}
    AppMeshVirtualServiceVirtualRouterServiceProvider([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTlsSdsCertificate'"

class AppMeshVirtualNodeListenerTlsSdsCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTlsSdsCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlssdscertificate.html'

    hidden [object] $_secretName

    [string] $SecretName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecretName -Value {
            $this._secretName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._secretName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeListenerTlsSdsCertificate() : base() {}
    AppMeshVirtualNodeListenerTlsSdsCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTlsSdsCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate'"

class AppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlscertificate.html'

    hidden [object] $_sDS
    hidden [object] $_aCM
    hidden [object] $_file

    [AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate] $SDS
    [AppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate] $ACM
    [AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ACM -Value {
            $this._aCM
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsAcmCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aCM = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteGrpcGatewayRouteAction'"

class AppMeshGatewayRouteGrpcGatewayRouteAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteGrpcGatewayRouteAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-grpcgatewayrouteaction.html'

    hidden [object] $_target

    [AppMeshGatewayRouteGatewayRouteTarget] $Target

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Target -Value {
            $this._target
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteGatewayRouteTarget], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._target = $value
        }
    }

    AppMeshGatewayRouteGrpcGatewayRouteAction() : base() {}
    AppMeshGatewayRouteGrpcGatewayRouteAction([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteGrpcGatewayRouteAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeBackendDefaults'"

class AppMeshVirtualNodeBackendDefaults : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeBackendDefaults'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-backenddefaults.html'

    hidden [object] $_clientPolicy

    [AppMeshVirtualNodeClientPolicy] $ClientPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientPolicy -Value {
            $this._clientPolicy
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeClientPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientPolicy = $value
        }
    }

    AppMeshVirtualNodeBackendDefaults() : base() {}
    AppMeshVirtualNodeBackendDefaults([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeBackendDefaults([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool'"

class AppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool.html'

    hidden [object] $_maxRequests

    [int] $MaxRequests

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxRequests -Value {
            $this._maxRequests
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxRequests = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool() : base() {}
    AppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayConnectionPool'"

class AppMeshVirtualGatewayVirtualGatewayConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html'

    hidden [object] $_hTTP2
    hidden [object] $_hTTP
    hidden [object] $_gRPC

    [AppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool] $HTTP2
    [AppMeshVirtualGatewayVirtualGatewayHttpConnectionPool] $HTTP
    [AppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool] $GRPC

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTP2 -Value {
            $this._hTTP2
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayHttp2ConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTP2 = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTP -Value {
            $this._hTTP
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayHttpConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTP = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GRPC -Value {
            $this._gRPC
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayGrpcConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._gRPC = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayConnectionPool() : base() {}
    AppMeshVirtualGatewayVirtualGatewayConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeVirtualNodeTcpConnectionPool'"

class AppMeshVirtualNodeVirtualNodeTcpConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeVirtualNodeTcpConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool.html'

    hidden [object] $_maxConnections

    [int] $MaxConnections

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxConnections -Value {
            $this._maxConnections
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxConnections = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeVirtualNodeTcpConnectionPool() : base() {}
    AppMeshVirtualNodeVirtualNodeTcpConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeVirtualNodeTcpConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewaySubjectAlternativeNames'"

class AppMeshVirtualGatewaySubjectAlternativeNames : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewaySubjectAlternativeNames'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-subjectalternativenames.html'

    hidden [object] $_match

    [AppMeshVirtualGatewaySubjectAlternativeNameMatchers] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewaySubjectAlternativeNameMatchers], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshVirtualGatewaySubjectAlternativeNames() : base() {}
    AppMeshVirtualGatewaySubjectAlternativeNames([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewaySubjectAlternativeNames([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteGrpcRouteMetadata'"

class AppMeshRouteGrpcRouteMetadata : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteGrpcRouteMetadata'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-grpcroutemetadata.html'

    hidden [object] $_invert
    hidden [object] $_name
    hidden [object] $_match

    [bool] $Invert
    [string] $Name
    [AppMeshRouteGrpcRouteMetadataMatchMethod] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Invert -Value {
            $this._invert
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._invert = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshRouteGrpcRouteMetadataMatchMethod], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshRouteGrpcRouteMetadata() : base() {}
    AppMeshRouteGrpcRouteMetadata([IDictionary] $props) : base($props) {}
    AppMeshRouteGrpcRouteMetadata([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteHttpRouteMatch'"

class AppMeshRouteHttpRouteMatch : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteHttpRouteMatch'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httproutematch.html'

    hidden [object] $_scheme
    hidden [object] $_headers
    hidden [object] $_prefix
    hidden [object] $_method

    [string] $Scheme
    [AppMeshRouteHttpRouteHeader[]] $Headers
    [string] $Prefix
    [string] $Method

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scheme -Value {
            $this._scheme
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scheme = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Headers -Value {
            $this._headers
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHttpRouteHeader], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._headers = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Prefix -Value {
            $this._prefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._prefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Method -Value {
            $this._method
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._method = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshRouteHttpRouteMatch() : base() {}
    AppMeshRouteHttpRouteMatch([IDictionary] $props) : base($props) {}
    AppMeshRouteHttpRouteMatch([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteGatewayRouteTarget'"

class AppMeshGatewayRouteGatewayRouteTarget : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteGatewayRouteTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-gatewayroutetarget.html'

    hidden [object] $_virtualService

    [AppMeshGatewayRouteGatewayRouteVirtualService] $VirtualService

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualService -Value {
            $this._virtualService
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteGatewayRouteVirtualService], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualService = $value
        }
    }

    AppMeshGatewayRouteGatewayRouteTarget() : base() {}
    AppMeshGatewayRouteGatewayRouteTarget([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteGatewayRouteTarget([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeHttpTimeout'"

class AppMeshVirtualNodeHttpTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeHttpTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-httptimeout.html'

    hidden [object] $_perRequest
    hidden [object] $_idle

    [AppMeshVirtualNodeDuration] $PerRequest
    [AppMeshVirtualNodeDuration] $Idle

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerRequest -Value {
            $this._perRequest
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._perRequest = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Idle -Value {
            $this._idle
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._idle = $value
        }
    }

    AppMeshVirtualNodeHttpTimeout() : base() {}
    AppMeshVirtualNodeHttpTimeout([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeHttpTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeHealthCheck'"

class AppMeshVirtualNodeHealthCheck : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeHealthCheck'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-healthcheck.html'

    hidden [object] $_path
    hidden [object] $_unhealthyThreshold
    hidden [object] $_port
    hidden [object] $_healthyThreshold
    hidden [object] $_timeoutMillis
    hidden [object] $_protocol
    hidden [object] $_intervalMillis

    [string] $Path
    [int] $UnhealthyThreshold
    [int] $Port
    [int] $HealthyThreshold
    [int] $TimeoutMillis
    [string] $Protocol
    [int] $IntervalMillis

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnhealthyThreshold -Value {
            $this._unhealthyThreshold
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unhealthyThreshold = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this._port
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._port = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthyThreshold -Value {
            $this._healthyThreshold
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._healthyThreshold = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutMillis -Value {
            $this._timeoutMillis
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutMillis = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this._protocol
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protocol = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalMillis -Value {
            $this._intervalMillis
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalMillis = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeHealthCheck() : base() {}
    AppMeshVirtualNodeHealthCheck([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeHealthCheck([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayClientTlsCertificate'"

class AppMeshVirtualGatewayVirtualGatewayClientTlsCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayClientTlsCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayclienttlscertificate.html'

    hidden [object] $_sDS
    hidden [object] $_file

    [AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate] $SDS
    [AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayClientTlsCertificate() : base() {}
    AppMeshVirtualGatewayVirtualGatewayClientTlsCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayClientTlsCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteGrpcGatewayRouteMatch'"

class AppMeshGatewayRouteGrpcGatewayRouteMatch : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteGrpcGatewayRouteMatch'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-grpcgatewayroutematch.html'

    hidden [object] $_serviceName

    [string] $ServiceName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceName -Value {
            $this._serviceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshGatewayRouteGrpcGatewayRouteMatch() : base() {}
    AppMeshGatewayRouteGrpcGatewayRouteMatch([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteGrpcGatewayRouteMatch([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext'"

class AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext.html'

    hidden [object] $_subjectAlternativeNames
    hidden [object] $_trust

    [AppMeshVirtualGatewaySubjectAlternativeNames] $SubjectAlternativeNames
    [AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust] $Trust

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubjectAlternativeNames -Value {
            $this._subjectAlternativeNames
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewaySubjectAlternativeNames], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._subjectAlternativeNames = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Trust -Value {
            $this._trust
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._trust = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeAwsCloudMapServiceDiscovery'"

class AppMeshVirtualNodeAwsCloudMapServiceDiscovery : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeAwsCloudMapServiceDiscovery'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-awscloudmapservicediscovery.html'

    hidden [object] $_namespaceName
    hidden [object] $_serviceName
    hidden [object] $_attributes

    [string] $NamespaceName
    [string] $ServiceName
    [AppMeshVirtualNodeAwsCloudMapInstanceAttribute[]] $Attributes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name NamespaceName -Value {
            $this._namespaceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._namespaceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceName -Value {
            $this._serviceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attributes -Value {
            $this._attributes
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeAwsCloudMapInstanceAttribute], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._attributes = $value
        }
    }

    AppMeshVirtualNodeAwsCloudMapServiceDiscovery() : base() {}
    AppMeshVirtualNodeAwsCloudMapServiceDiscovery([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeAwsCloudMapServiceDiscovery([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeVirtualNodeHttpConnectionPool'"

class AppMeshVirtualNodeVirtualNodeHttpConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeVirtualNodeHttpConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.html'

    hidden [object] $_maxConnections
    hidden [object] $_maxPendingRequests

    [int] $MaxConnections
    [int] $MaxPendingRequests

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxConnections -Value {
            $this._maxConnections
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxConnections = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxPendingRequests -Value {
            $this._maxPendingRequests
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxPendingRequests = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeVirtualNodeHttpConnectionPool() : base() {}
    AppMeshVirtualNodeVirtualNodeHttpConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeVirtualNodeHttpConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualServiceVirtualNodeServiceProvider'"

class AppMeshVirtualServiceVirtualNodeServiceProvider : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualServiceVirtualNodeServiceProvider'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualservice-virtualnodeserviceprovider.html'

    hidden [object] $_virtualNodeName

    [string] $VirtualNodeName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualNodeName -Value {
            $this._virtualNodeName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualNodeName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualServiceVirtualNodeServiceProvider() : base() {}
    AppMeshVirtualServiceVirtualNodeServiceProvider([IDictionary] $props) : base($props) {}
    AppMeshVirtualServiceVirtualNodeServiceProvider([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate'"

class AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate.html'

    hidden [object] $_privateKey
    hidden [object] $_certificateChain

    [string] $PrivateKey
    [string] $CertificateChain

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PrivateKey -Value {
            $this._privateKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._privateKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateChain -Value {
            $this._certificateChain
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateChain = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsFileCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteGrpcGatewayRoute'"

class AppMeshGatewayRouteGrpcGatewayRoute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteGrpcGatewayRoute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-grpcgatewayroute.html'

    hidden [object] $_action
    hidden [object] $_match

    [AppMeshGatewayRouteGrpcGatewayRouteAction] $Action
    [AppMeshGatewayRouteGrpcGatewayRouteMatch] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteGrpcGatewayRouteAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteGrpcGatewayRouteMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshGatewayRouteGrpcGatewayRoute() : base() {}
    AppMeshGatewayRouteGrpcGatewayRoute([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteGrpcGatewayRoute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayLogging'"

class AppMeshVirtualGatewayVirtualGatewayLogging : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayLogging'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylogging.html'

    hidden [object] $_accessLog

    [AppMeshVirtualGatewayVirtualGatewayAccessLog] $AccessLog

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessLog -Value {
            $this._accessLog
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayAccessLog], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessLog = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayLogging() : base() {}
    AppMeshVirtualGatewayVirtualGatewayLogging([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayLogging([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTlsFileCertificate'"

class AppMeshVirtualNodeListenerTlsFileCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTlsFileCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsfilecertificate.html'

    hidden [object] $_privateKey
    hidden [object] $_certificateChain

    [string] $PrivateKey
    [string] $CertificateChain

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PrivateKey -Value {
            $this._privateKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._privateKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateChain -Value {
            $this._certificateChain
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateChain = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeListenerTlsFileCertificate() : base() {}
    AppMeshVirtualNodeListenerTlsFileCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTlsFileCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeTlsValidationContext'"

class AppMeshVirtualNodeTlsValidationContext : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeTlsValidationContext'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontext.html'

    hidden [object] $_subjectAlternativeNames
    hidden [object] $_trust

    [AppMeshVirtualNodeSubjectAlternativeNames] $SubjectAlternativeNames
    [AppMeshVirtualNodeTlsValidationContextTrust] $Trust

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubjectAlternativeNames -Value {
            $this._subjectAlternativeNames
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeSubjectAlternativeNames], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._subjectAlternativeNames = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Trust -Value {
            $this._trust
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTlsValidationContextTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._trust = $value
        }
    }

    AppMeshVirtualNodeTlsValidationContext() : base() {}
    AppMeshVirtualNodeTlsValidationContext([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeTlsValidationContext([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualRouterVirtualRouterSpec'"

class AppMeshVirtualRouterVirtualRouterSpec : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualRouterVirtualRouterSpec'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualrouter-virtualrouterspec.html'

    hidden [object] $_listeners

    [AppMeshVirtualRouterVirtualRouterListener[]] $Listeners

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Listeners -Value {
            $this._listeners
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualRouterVirtualRouterListener], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._listeners = $value
        }
    }

    AppMeshVirtualRouterVirtualRouterSpec() : base() {}
    AppMeshVirtualRouterVirtualRouterSpec([IDictionary] $props) : base($props) {}
    AppMeshVirtualRouterVirtualRouterSpec([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListenerTls'"

class AppMeshVirtualGatewayVirtualGatewayListenerTls : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListenerTls'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistenertls.html'

    hidden [object] $_validation
    hidden [object] $_mode
    hidden [object] $_certificate

    [AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext] $Validation
    [string] $Mode
    [AppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate] $Certificate

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Validation -Value {
            $this._validation
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContext], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._validation = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Mode -Value {
            $this._mode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Certificate -Value {
            $this._certificate
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTlsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificate = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListenerTls() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListenerTls([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListenerTls([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewaySubjectAlternativeNameMatchers'"

class AppMeshVirtualGatewaySubjectAlternativeNameMatchers : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewaySubjectAlternativeNameMatchers'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-subjectalternativenamematchers.html'

    hidden [object] $_exact

    [string[]] $Exact

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Exact -Value {
            $this._exact
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._exact = @($value)
        }
    }

    AppMeshVirtualGatewaySubjectAlternativeNameMatchers() : base() {}
    AppMeshVirtualGatewaySubjectAlternativeNameMatchers([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewaySubjectAlternativeNameMatchers([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeVirtualNodeSpec'"

class AppMeshVirtualNodeVirtualNodeSpec : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeVirtualNodeSpec'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html'

    hidden [object] $_logging
    hidden [object] $_backends
    hidden [object] $_listeners
    hidden [object] $_backendDefaults
    hidden [object] $_serviceDiscovery

    [AppMeshVirtualNodeLogging] $Logging
    [AppMeshVirtualNodeBackend[]] $Backends
    [AppMeshVirtualNodeListener[]] $Listeners
    [AppMeshVirtualNodeBackendDefaults] $BackendDefaults
    [AppMeshVirtualNodeServiceDiscovery] $ServiceDiscovery

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Logging -Value {
            $this._logging
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeLogging], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logging = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Backends -Value {
            $this._backends
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeBackend], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._backends = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Listeners -Value {
            $this._listeners
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListener], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._listeners = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackendDefaults -Value {
            $this._backendDefaults
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeBackendDefaults], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._backendDefaults = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceDiscovery -Value {
            $this._serviceDiscovery
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeServiceDiscovery], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceDiscovery = $value
        }
    }

    AppMeshVirtualNodeVirtualNodeSpec() : base() {}
    AppMeshVirtualNodeVirtualNodeSpec([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeVirtualNodeSpec([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteGrpcRouteAction'"

class AppMeshRouteGrpcRouteAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteGrpcRouteAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-grpcrouteaction.html'

    hidden [object] $_weightedTargets

    [AppMeshRouteWeightedTarget[]] $WeightedTargets

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeightedTargets -Value {
            $this._weightedTargets
        } -SecondValue {
            param([ValidateType(([AppMeshRouteWeightedTarget], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._weightedTargets = $value
        }
    }

    AppMeshRouteGrpcRouteAction() : base() {}
    AppMeshRouteGrpcRouteAction([IDictionary] $props) : base($props) {}
    AppMeshRouteGrpcRouteAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteGrpcRouteMatch'"

class AppMeshRouteGrpcRouteMatch : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteGrpcRouteMatch'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-grpcroutematch.html'

    hidden [object] $_serviceName
    hidden [object] $_metadata
    hidden [object] $_methodName

    [string] $ServiceName
    [AppMeshRouteGrpcRouteMetadata[]] $Metadata
    [string] $MethodName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceName -Value {
            $this._serviceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Metadata -Value {
            $this._metadata
        } -SecondValue {
            param([ValidateType(([AppMeshRouteGrpcRouteMetadata], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._metadata = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MethodName -Value {
            $this._methodName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._methodName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshRouteGrpcRouteMatch() : base() {}
    AppMeshRouteGrpcRouteMatch([IDictionary] $props) : base($props) {}
    AppMeshRouteGrpcRouteMatch([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListener'"

class AppMeshVirtualNodeListener : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListener'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html'

    hidden [object] $_connectionPool
    hidden [object] $_timeout
    hidden [object] $_healthCheck
    hidden [object] $_tLS
    hidden [object] $_portMapping
    hidden [object] $_outlierDetection

    [AppMeshVirtualNodeVirtualNodeConnectionPool] $ConnectionPool
    [AppMeshVirtualNodeListenerTimeout] $Timeout
    [AppMeshVirtualNodeHealthCheck] $HealthCheck
    [AppMeshVirtualNodeListenerTls] $TLS
    [AppMeshVirtualNodePortMapping] $PortMapping
    [AppMeshVirtualNodeOutlierDetection] $OutlierDetection

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionPool -Value {
            $this._connectionPool
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeVirtualNodeConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._connectionPool = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timeout -Value {
            $this._timeout
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeout = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheck -Value {
            $this._healthCheck
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeHealthCheck], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._healthCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TLS -Value {
            $this._tLS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTls], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tLS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PortMapping -Value {
            $this._portMapping
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodePortMapping], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._portMapping = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OutlierDetection -Value {
            $this._outlierDetection
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeOutlierDetection], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._outlierDetection = $value
        }
    }

    AppMeshVirtualNodeListener() : base() {}
    AppMeshVirtualNodeListener([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListener([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualServiceVirtualServiceProvider'"

class AppMeshVirtualServiceVirtualServiceProvider : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualServiceVirtualServiceProvider'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualservice-virtualserviceprovider.html'

    hidden [object] $_virtualNode
    hidden [object] $_virtualRouter

    [AppMeshVirtualServiceVirtualNodeServiceProvider] $VirtualNode
    [AppMeshVirtualServiceVirtualRouterServiceProvider] $VirtualRouter

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualNode -Value {
            $this._virtualNode
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualServiceVirtualNodeServiceProvider], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualNode = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualRouter -Value {
            $this._virtualRouter
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualServiceVirtualRouterServiceProvider], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualRouter = $value
        }
    }

    AppMeshVirtualServiceVirtualServiceProvider() : base() {}
    AppMeshVirtualServiceVirtualServiceProvider([IDictionary] $props) : base($props) {}
    AppMeshVirtualServiceVirtualServiceProvider([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeDnsServiceDiscovery'"

class AppMeshVirtualNodeDnsServiceDiscovery : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeDnsServiceDiscovery'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-dnsservicediscovery.html'

    hidden [object] $_hostname

    [string] $Hostname

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Hostname -Value {
            $this._hostname
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hostname = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeDnsServiceDiscovery() : base() {}
    AppMeshVirtualNodeDnsServiceDiscovery([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeDnsServiceDiscovery([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayClientPolicy'"

class AppMeshVirtualGatewayVirtualGatewayClientPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayClientPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicy.html'

    hidden [object] $_tLS

    [AppMeshVirtualGatewayVirtualGatewayClientPolicyTls] $TLS

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TLS -Value {
            $this._tLS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayClientPolicyTls], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tLS = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayClientPolicy() : base() {}
    AppMeshVirtualGatewayVirtualGatewayClientPolicy([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayClientPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeTlsValidationContextFileTrust'"

class AppMeshVirtualNodeTlsValidationContextFileTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeTlsValidationContextFileTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust.html'

    hidden [object] $_certificateChain

    [string] $CertificateChain

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateChain -Value {
            $this._certificateChain
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateChain = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeTlsValidationContextFileTrust() : base() {}
    AppMeshVirtualNodeTlsValidationContextFileTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeTlsValidationContextFileTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteHttpRoute'"

class AppMeshRouteHttpRoute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteHttpRoute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httproute.html'

    hidden [object] $_action
    hidden [object] $_timeout
    hidden [object] $_retryPolicy
    hidden [object] $_match

    [AppMeshRouteHttpRouteAction] $Action
    [AppMeshRouteHttpTimeout] $Timeout
    [AppMeshRouteHttpRetryPolicy] $RetryPolicy
    [AppMeshRouteHttpRouteMatch] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHttpRouteAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timeout -Value {
            $this._timeout
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHttpTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeout = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RetryPolicy -Value {
            $this._retryPolicy
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHttpRetryPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._retryPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHttpRouteMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshRouteHttpRoute() : base() {}
    AppMeshRouteHttpRoute([IDictionary] $props) : base($props) {}
    AppMeshRouteHttpRoute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteTcpRouteAction'"

class AppMeshRouteTcpRouteAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteTcpRouteAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-tcprouteaction.html'

    hidden [object] $_weightedTargets

    [AppMeshRouteWeightedTarget[]] $WeightedTargets

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeightedTargets -Value {
            $this._weightedTargets
        } -SecondValue {
            param([ValidateType(([AppMeshRouteWeightedTarget], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._weightedTargets = $value
        }
    }

    AppMeshRouteTcpRouteAction() : base() {}
    AppMeshRouteTcpRouteAction([IDictionary] $props) : base($props) {}
    AppMeshRouteTcpRouteAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeGrpcTimeout'"

class AppMeshVirtualNodeGrpcTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeGrpcTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-grpctimeout.html'

    hidden [object] $_perRequest
    hidden [object] $_idle

    [AppMeshVirtualNodeDuration] $PerRequest
    [AppMeshVirtualNodeDuration] $Idle

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerRequest -Value {
            $this._perRequest
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._perRequest = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Idle -Value {
            $this._idle
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._idle = $value
        }
    }

    AppMeshVirtualNodeGrpcTimeout() : base() {}
    AppMeshVirtualNodeGrpcTimeout([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeGrpcTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeVirtualNodeConnectionPool'"

class AppMeshVirtualNodeVirtualNodeConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeVirtualNodeConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html'

    hidden [object] $_tCP
    hidden [object] $_hTTP2
    hidden [object] $_hTTP
    hidden [object] $_gRPC

    [AppMeshVirtualNodeVirtualNodeTcpConnectionPool] $TCP
    [AppMeshVirtualNodeVirtualNodeHttp2ConnectionPool] $HTTP2
    [AppMeshVirtualNodeVirtualNodeHttpConnectionPool] $HTTP
    [AppMeshVirtualNodeVirtualNodeGrpcConnectionPool] $GRPC

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TCP -Value {
            $this._tCP
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeVirtualNodeTcpConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tCP = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTP2 -Value {
            $this._hTTP2
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeVirtualNodeHttp2ConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTP2 = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HTTP -Value {
            $this._hTTP
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeVirtualNodeHttpConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hTTP = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GRPC -Value {
            $this._gRPC
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeVirtualNodeGrpcConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._gRPC = $value
        }
    }

    AppMeshVirtualNodeVirtualNodeConnectionPool() : base() {}
    AppMeshVirtualNodeVirtualNodeConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeVirtualNodeConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeLogging'"

class AppMeshVirtualNodeLogging : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeLogging'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-logging.html'

    hidden [object] $_accessLog

    [AppMeshVirtualNodeAccessLog] $AccessLog

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessLog -Value {
            $this._accessLog
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeAccessLog], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._accessLog = $value
        }
    }

    AppMeshVirtualNodeLogging() : base() {}
    AppMeshVirtualNodeLogging([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeLogging([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualRouterVirtualRouterListener'"

class AppMeshVirtualRouterVirtualRouterListener : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualRouterVirtualRouterListener'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualrouter-virtualrouterlistener.html'

    hidden [object] $_portMapping

    [AppMeshVirtualRouterPortMapping] $PortMapping

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PortMapping -Value {
            $this._portMapping
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualRouterPortMapping], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._portMapping = $value
        }
    }

    AppMeshVirtualRouterVirtualRouterListener() : base() {}
    AppMeshVirtualRouterVirtualRouterListener([IDictionary] $props) : base($props) {}
    AppMeshVirtualRouterVirtualRouterListener([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust'"

class AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust.html'

    hidden [object] $_secretName

    [string] $SecretName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecretName -Value {
            $this._secretName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._secretName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust() : base() {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteGrpcRetryPolicy'"

class AppMeshRouteGrpcRetryPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteGrpcRetryPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-grpcretrypolicy.html'

    hidden [object] $_maxRetries
    hidden [object] $_perRetryTimeout
    hidden [object] $_grpcRetryEvents
    hidden [object] $_httpRetryEvents
    hidden [object] $_tcpRetryEvents

    [int] $MaxRetries
    [AppMeshRouteDuration] $PerRetryTimeout
    [string[]] $GrpcRetryEvents
    [string[]] $HttpRetryEvents
    [string[]] $TcpRetryEvents

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxRetries -Value {
            $this._maxRetries
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxRetries = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerRetryTimeout -Value {
            $this._perRetryTimeout
        } -SecondValue {
            param([ValidateType(([AppMeshRouteDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._perRetryTimeout = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GrpcRetryEvents -Value {
            $this._grpcRetryEvents
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._grpcRetryEvents = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpRetryEvents -Value {
            $this._httpRetryEvents
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._httpRetryEvents = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TcpRetryEvents -Value {
            $this._tcpRetryEvents
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._tcpRetryEvents = @($value)
        }
    }

    AppMeshRouteGrpcRetryPolicy() : base() {}
    AppMeshRouteGrpcRetryPolicy([IDictionary] $props) : base($props) {}
    AppMeshRouteGrpcRetryPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeServiceDiscovery'"

class AppMeshVirtualNodeServiceDiscovery : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeServiceDiscovery'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-servicediscovery.html'

    hidden [object] $_dNS
    hidden [object] $_aWSCloudMap

    [AppMeshVirtualNodeDnsServiceDiscovery] $DNS
    [AppMeshVirtualNodeAwsCloudMapServiceDiscovery] $AWSCloudMap

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DNS -Value {
            $this._dNS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDnsServiceDiscovery], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dNS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AWSCloudMap -Value {
            $this._aWSCloudMap
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeAwsCloudMapServiceDiscovery], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aWSCloudMap = $value
        }
    }

    AppMeshVirtualNodeServiceDiscovery() : base() {}
    AppMeshVirtualNodeServiceDiscovery([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeServiceDiscovery([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeDuration'"

class AppMeshVirtualNodeDuration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeDuration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-duration.html'

    hidden [object] $_value
    hidden [object] $_unit

    [int] $Value
    [string] $Unit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeDuration() : base() {}
    AppMeshVirtualNodeDuration([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeDuration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteTcpRoute'"

class AppMeshRouteTcpRoute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteTcpRoute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-tcproute.html'

    hidden [object] $_action
    hidden [object] $_timeout

    [AppMeshRouteTcpRouteAction] $Action
    [AppMeshRouteTcpTimeout] $Timeout

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([AppMeshRouteTcpRouteAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timeout -Value {
            $this._timeout
        } -SecondValue {
            param([ValidateType(([AppMeshRouteTcpTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeout = $value
        }
    }

    AppMeshRouteTcpRoute() : base() {}
    AppMeshRouteTcpRoute([IDictionary] $props) : base($props) {}
    AppMeshRouteTcpRoute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListener'"

class AppMeshVirtualGatewayVirtualGatewayListener : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListener'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistener.html'

    hidden [object] $_connectionPool
    hidden [object] $_healthCheck
    hidden [object] $_tLS
    hidden [object] $_portMapping

    [AppMeshVirtualGatewayVirtualGatewayConnectionPool] $ConnectionPool
    [AppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy] $HealthCheck
    [AppMeshVirtualGatewayVirtualGatewayListenerTls] $TLS
    [AppMeshVirtualGatewayVirtualGatewayPortMapping] $PortMapping

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionPool -Value {
            $this._connectionPool
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayConnectionPool], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._connectionPool = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheck -Value {
            $this._healthCheck
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._healthCheck = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TLS -Value {
            $this._tLS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayListenerTls], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tLS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PortMapping -Value {
            $this._portMapping
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayPortMapping], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._portMapping = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListener() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListener([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListener([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteHttpRetryPolicy'"

class AppMeshRouteHttpRetryPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteHttpRetryPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httpretrypolicy.html'

    hidden [object] $_maxRetries
    hidden [object] $_perRetryTimeout
    hidden [object] $_httpRetryEvents
    hidden [object] $_tcpRetryEvents

    [int] $MaxRetries
    [AppMeshRouteDuration] $PerRetryTimeout
    [string[]] $HttpRetryEvents
    [string[]] $TcpRetryEvents

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxRetries -Value {
            $this._maxRetries
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxRetries = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerRetryTimeout -Value {
            $this._perRetryTimeout
        } -SecondValue {
            param([ValidateType(([AppMeshRouteDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._perRetryTimeout = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpRetryEvents -Value {
            $this._httpRetryEvents
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._httpRetryEvents = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TcpRetryEvents -Value {
            $this._tcpRetryEvents
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._tcpRetryEvents = @($value)
        }
    }

    AppMeshRouteHttpRetryPolicy() : base() {}
    AppMeshRouteHttpRetryPolicy([IDictionary] $props) : base($props) {}
    AppMeshRouteHttpRetryPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeTlsValidationContextTrust'"

class AppMeshVirtualNodeTlsValidationContextTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeTlsValidationContextTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust.html'

    hidden [object] $_sDS
    hidden [object] $_aCM
    hidden [object] $_file

    [AppMeshVirtualNodeTlsValidationContextSdsTrust] $SDS
    [AppMeshVirtualNodeTlsValidationContextAcmTrust] $ACM
    [AppMeshVirtualNodeTlsValidationContextFileTrust] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTlsValidationContextSdsTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ACM -Value {
            $this._aCM
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTlsValidationContextAcmTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aCM = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTlsValidationContextFileTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualNodeTlsValidationContextTrust() : base() {}
    AppMeshVirtualNodeTlsValidationContextTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeTlsValidationContextTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayPortMapping'"

class AppMeshVirtualGatewayVirtualGatewayPortMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayPortMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayportmapping.html'

    hidden [object] $_port
    hidden [object] $_protocol

    [int] $Port
    [string] $Protocol

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this._port
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._port = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this._protocol
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protocol = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayPortMapping() : base() {}
    AppMeshVirtualGatewayVirtualGatewayPortMapping([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayPortMapping([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteHttpGatewayRouteAction'"

class AppMeshGatewayRouteHttpGatewayRouteAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteHttpGatewayRouteAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-httpgatewayrouteaction.html'

    hidden [object] $_target

    [AppMeshGatewayRouteGatewayRouteTarget] $Target

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Target -Value {
            $this._target
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteGatewayRouteTarget], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._target = $value
        }
    }

    AppMeshGatewayRouteHttpGatewayRouteAction() : base() {}
    AppMeshGatewayRouteHttpGatewayRouteAction([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteHttpGatewayRouteAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTlsAcmCertificate'"

class AppMeshVirtualNodeListenerTlsAcmCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTlsAcmCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsacmcertificate.html'

    hidden [object] $_certificateArn

    [string] $CertificateArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateArn -Value {
            $this._certificateArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificateArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeListenerTlsAcmCertificate() : base() {}
    AppMeshVirtualNodeListenerTlsAcmCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTlsAcmCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayBackendDefaults'"

class AppMeshVirtualGatewayVirtualGatewayBackendDefaults : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayBackendDefaults'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaybackenddefaults.html'

    hidden [object] $_clientPolicy

    [AppMeshVirtualGatewayVirtualGatewayClientPolicy] $ClientPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientPolicy -Value {
            $this._clientPolicy
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayClientPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientPolicy = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayBackendDefaults() : base() {}
    AppMeshVirtualGatewayVirtualGatewayBackendDefaults([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayBackendDefaults([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayClientPolicyTls'"

class AppMeshVirtualGatewayVirtualGatewayClientPolicyTls : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayClientPolicyTls'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicytls.html'

    hidden [object] $_validation
    hidden [object] $_enforce
    hidden [object] $_ports
    hidden [object] $_certificate

    [AppMeshVirtualGatewayVirtualGatewayTlsValidationContext] $Validation
    [bool] $Enforce
    [int[]] $Ports
    [AppMeshVirtualGatewayVirtualGatewayClientTlsCertificate] $Certificate

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Validation -Value {
            $this._validation
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayTlsValidationContext], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._validation = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enforce -Value {
            $this._enforce
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enforce = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ports -Value {
            $this._ports
        } -SecondValue {
            param([ValidateType(([int], [string], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ports = if ($cast = @($value) -as [int]) {
                $cast
            }
            else {
                @($value)
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Certificate -Value {
            $this._certificate
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayClientTlsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._certificate = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayClientPolicyTls() : base() {}
    AppMeshVirtualGatewayVirtualGatewayClientPolicyTls([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayClientPolicyTls([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshMeshMeshSpec'"

class AppMeshMeshMeshSpec : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshMeshMeshSpec'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-mesh-meshspec.html'

    hidden [object] $_egressFilter

    [AppMeshMeshEgressFilter] $EgressFilter

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EgressFilter -Value {
            $this._egressFilter
        } -SecondValue {
            param([ValidateType(([AppMeshMeshEgressFilter], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._egressFilter = $value
        }
    }

    AppMeshMeshMeshSpec() : base() {}
    AppMeshMeshMeshSpec([IDictionary] $props) : base($props) {}
    AppMeshMeshMeshSpec([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayAccessLog'"

class AppMeshVirtualGatewayVirtualGatewayAccessLog : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayAccessLog'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayaccesslog.html'

    hidden [object] $_file

    [AppMeshVirtualGatewayVirtualGatewayFileAccessLog] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayFileAccessLog], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayAccessLog() : base() {}
    AppMeshVirtualGatewayVirtualGatewayAccessLog([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayAccessLog([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteGrpcTimeout'"

class AppMeshRouteGrpcTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteGrpcTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-grpctimeout.html'

    hidden [object] $_perRequest
    hidden [object] $_idle

    [AppMeshRouteDuration] $PerRequest
    [AppMeshRouteDuration] $Idle

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerRequest -Value {
            $this._perRequest
        } -SecondValue {
            param([ValidateType(([AppMeshRouteDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._perRequest = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Idle -Value {
            $this._idle
        } -SecondValue {
            param([ValidateType(([AppMeshRouteDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._idle = $value
        }
    }

    AppMeshRouteGrpcTimeout() : base() {}
    AppMeshRouteGrpcTimeout([IDictionary] $props) : base($props) {}
    AppMeshRouteGrpcTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeVirtualNodeHttp2ConnectionPool'"

class AppMeshVirtualNodeVirtualNodeHttp2ConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeVirtualNodeHttp2ConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool.html'

    hidden [object] $_maxRequests

    [int] $MaxRequests

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxRequests -Value {
            $this._maxRequests
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxRequests = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeVirtualNodeHttp2ConnectionPool() : base() {}
    AppMeshVirtualNodeVirtualNodeHttp2ConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeVirtualNodeHttp2ConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteGrpcRoute'"

class AppMeshRouteGrpcRoute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteGrpcRoute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-grpcroute.html'

    hidden [object] $_action
    hidden [object] $_timeout
    hidden [object] $_retryPolicy
    hidden [object] $_match

    [AppMeshRouteGrpcRouteAction] $Action
    [AppMeshRouteGrpcTimeout] $Timeout
    [AppMeshRouteGrpcRetryPolicy] $RetryPolicy
    [AppMeshRouteGrpcRouteMatch] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([AppMeshRouteGrpcRouteAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timeout -Value {
            $this._timeout
        } -SecondValue {
            param([ValidateType(([AppMeshRouteGrpcTimeout], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeout = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RetryPolicy -Value {
            $this._retryPolicy
        } -SecondValue {
            param([ValidateType(([AppMeshRouteGrpcRetryPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._retryPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshRouteGrpcRouteMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshRouteGrpcRoute() : base() {}
    AppMeshRouteGrpcRoute([IDictionary] $props) : base($props) {}
    AppMeshRouteGrpcRoute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTlsCertificate'"

class AppMeshVirtualNodeListenerTlsCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTlsCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlscertificate.html'

    hidden [object] $_sDS
    hidden [object] $_aCM
    hidden [object] $_file

    [AppMeshVirtualNodeListenerTlsSdsCertificate] $SDS
    [AppMeshVirtualNodeListenerTlsAcmCertificate] $ACM
    [AppMeshVirtualNodeListenerTlsFileCertificate] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsSdsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ACM -Value {
            $this._aCM
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsAcmCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aCM = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsFileCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualNodeListenerTlsCertificate() : base() {}
    AppMeshVirtualNodeListenerTlsCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTlsCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteTcpTimeout'"

class AppMeshRouteTcpTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteTcpTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-tcptimeout.html'

    hidden [object] $_idle

    [AppMeshRouteDuration] $Idle

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Idle -Value {
            $this._idle
        } -SecondValue {
            param([ValidateType(([AppMeshRouteDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._idle = $value
        }
    }

    AppMeshRouteTcpTimeout() : base() {}
    AppMeshRouteTcpTimeout([IDictionary] $props) : base($props) {}
    AppMeshRouteTcpTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayFileAccessLog'"

class AppMeshVirtualGatewayVirtualGatewayFileAccessLog : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayFileAccessLog'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayfileaccesslog.html'

    hidden [object] $_path

    [string] $Path

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayFileAccessLog() : base() {}
    AppMeshVirtualGatewayVirtualGatewayFileAccessLog([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayFileAccessLog([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteGatewayRouteVirtualService'"

class AppMeshGatewayRouteGatewayRouteVirtualService : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteGatewayRouteVirtualService'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-gatewayroutevirtualservice.html'

    hidden [object] $_virtualServiceName

    [string] $VirtualServiceName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualServiceName -Value {
            $this._virtualServiceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualServiceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshGatewayRouteGatewayRouteVirtualService() : base() {}
    AppMeshGatewayRouteGatewayRouteVirtualService([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteGatewayRouteVirtualService([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteHttpTimeout'"

class AppMeshRouteHttpTimeout : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteHttpTimeout'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httptimeout.html'

    hidden [object] $_perRequest
    hidden [object] $_idle

    [AppMeshRouteDuration] $PerRequest
    [AppMeshRouteDuration] $Idle

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerRequest -Value {
            $this._perRequest
        } -SecondValue {
            param([ValidateType(([AppMeshRouteDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._perRequest = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Idle -Value {
            $this._idle
        } -SecondValue {
            param([ValidateType(([AppMeshRouteDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._idle = $value
        }
    }

    AppMeshRouteHttpTimeout() : base() {}
    AppMeshRouteHttpTimeout([IDictionary] $props) : base($props) {}
    AppMeshRouteHttpTimeout([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualServiceVirtualServiceSpec'"

class AppMeshVirtualServiceVirtualServiceSpec : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualServiceVirtualServiceSpec'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualservice-virtualservicespec.html'

    hidden [object] $_provider

    [AppMeshVirtualServiceVirtualServiceProvider] $Provider

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Provider -Value {
            $this._provider
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualServiceVirtualServiceProvider], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._provider = $value
        }
    }

    AppMeshVirtualServiceVirtualServiceSpec() : base() {}
    AppMeshVirtualServiceVirtualServiceSpec([IDictionary] $props) : base($props) {}
    AppMeshVirtualServiceVirtualServiceSpec([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeVirtualServiceBackend'"

class AppMeshVirtualNodeVirtualServiceBackend : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeVirtualServiceBackend'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualservicebackend.html'

    hidden [object] $_clientPolicy
    hidden [object] $_virtualServiceName

    [AppMeshVirtualNodeClientPolicy] $ClientPolicy
    [string] $VirtualServiceName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientPolicy -Value {
            $this._clientPolicy
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeClientPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualServiceName -Value {
            $this._virtualServiceName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._virtualServiceName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeVirtualServiceBackend() : base() {}
    AppMeshVirtualNodeVirtualServiceBackend([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeVirtualServiceBackend([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayHttpConnectionPool'"

class AppMeshVirtualGatewayVirtualGatewayHttpConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayHttpConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.html'

    hidden [object] $_maxConnections
    hidden [object] $_maxPendingRequests

    [int] $MaxConnections
    [int] $MaxPendingRequests

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxConnections -Value {
            $this._maxConnections
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxConnections = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxPendingRequests -Value {
            $this._maxPendingRequests
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxPendingRequests = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayHttpConnectionPool() : base() {}
    AppMeshVirtualGatewayVirtualGatewayHttpConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayHttpConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeOutlierDetection'"

class AppMeshVirtualNodeOutlierDetection : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeOutlierDetection'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html'

    hidden [object] $_maxEjectionPercent
    hidden [object] $_baseEjectionDuration
    hidden [object] $_maxServerErrors
    hidden [object] $_interval

    [int] $MaxEjectionPercent
    [AppMeshVirtualNodeDuration] $BaseEjectionDuration
    [int] $MaxServerErrors
    [AppMeshVirtualNodeDuration] $Interval

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxEjectionPercent -Value {
            $this._maxEjectionPercent
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxEjectionPercent = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BaseEjectionDuration -Value {
            $this._baseEjectionDuration
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._baseEjectionDuration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxServerErrors -Value {
            $this._maxServerErrors
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxServerErrors = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Interval -Value {
            $this._interval
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeDuration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._interval = $value
        }
    }

    AppMeshVirtualNodeOutlierDetection() : base() {}
    AppMeshVirtualNodeOutlierDetection([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeOutlierDetection([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteHttpGatewayRouteMatch'"

class AppMeshGatewayRouteHttpGatewayRouteMatch : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteHttpGatewayRouteMatch'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-httpgatewayroutematch.html'

    hidden [object] $_prefix

    [string] $Prefix

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Prefix -Value {
            $this._prefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._prefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshGatewayRouteHttpGatewayRouteMatch() : base() {}
    AppMeshGatewayRouteHttpGatewayRouteMatch([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteHttpGatewayRouteMatch([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteHttpRouteHeader'"

class AppMeshRouteHttpRouteHeader : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteHttpRouteHeader'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httprouteheader.html'

    hidden [object] $_invert
    hidden [object] $_name
    hidden [object] $_match

    [bool] $Invert
    [string] $Name
    [AppMeshRouteHeaderMatchMethod] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Invert -Value {
            $this._invert
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._invert = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshRouteHeaderMatchMethod], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshRouteHttpRouteHeader() : base() {}
    AppMeshRouteHttpRouteHeader([IDictionary] $props) : base($props) {}
    AppMeshRouteHttpRouteHeader([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy'"

class AppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy.html'

    hidden [object] $_path
    hidden [object] $_unhealthyThreshold
    hidden [object] $_port
    hidden [object] $_healthyThreshold
    hidden [object] $_timeoutMillis
    hidden [object] $_protocol
    hidden [object] $_intervalMillis

    [string] $Path
    [int] $UnhealthyThreshold
    [int] $Port
    [int] $HealthyThreshold
    [int] $TimeoutMillis
    [string] $Protocol
    [int] $IntervalMillis

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnhealthyThreshold -Value {
            $this._unhealthyThreshold
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unhealthyThreshold = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this._port
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._port = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthyThreshold -Value {
            $this._healthyThreshold
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._healthyThreshold = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutMillis -Value {
            $this._timeoutMillis
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutMillis = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this._protocol
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._protocol = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IntervalMillis -Value {
            $this._intervalMillis
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._intervalMillis = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy() : base() {}
    AppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayHealthCheckPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeTlsValidationContextAcmTrust'"

class AppMeshVirtualNodeTlsValidationContextAcmTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeTlsValidationContextAcmTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust.html'

    hidden [object] $_certificateAuthorityArns

    [string[]] $CertificateAuthorityArns

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateAuthorityArns -Value {
            $this._certificateAuthorityArns
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._certificateAuthorityArns = @($value)
        }
    }

    AppMeshVirtualNodeTlsValidationContextAcmTrust() : base() {}
    AppMeshVirtualNodeTlsValidationContextAcmTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeTlsValidationContextAcmTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshMeshEgressFilter'"

class AppMeshMeshEgressFilter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshMeshEgressFilter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-mesh-egressfilter.html'

    hidden [object] $_type

    [string] $Type

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshMeshEgressFilter() : base() {}
    AppMeshMeshEgressFilter([IDictionary] $props) : base($props) {}
    AppMeshMeshEgressFilter([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeClientPolicy'"

class AppMeshVirtualNodeClientPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeClientPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicy.html'

    hidden [object] $_tLS

    [AppMeshVirtualNodeClientPolicyTls] $TLS

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TLS -Value {
            $this._tLS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeClientPolicyTls], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tLS = $value
        }
    }

    AppMeshVirtualNodeClientPolicy() : base() {}
    AppMeshVirtualNodeClientPolicy([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeClientPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRouteHttpGatewayRoute'"

class AppMeshGatewayRouteHttpGatewayRoute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshGatewayRouteHttpGatewayRoute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-gatewayroute-httpgatewayroute.html'

    hidden [object] $_action
    hidden [object] $_match

    [AppMeshGatewayRouteHttpGatewayRouteAction] $Action
    [AppMeshGatewayRouteHttpGatewayRouteMatch] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteHttpGatewayRouteAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteHttpGatewayRouteMatch], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshGatewayRouteHttpGatewayRoute() : base() {}
    AppMeshGatewayRouteHttpGatewayRoute([IDictionary] $props) : base($props) {}
    AppMeshGatewayRouteHttpGatewayRoute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeClientTlsCertificate'"

class AppMeshVirtualNodeClientTlsCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeClientTlsCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clienttlscertificate.html'

    hidden [object] $_sDS
    hidden [object] $_file

    [AppMeshVirtualNodeListenerTlsSdsCertificate] $SDS
    [AppMeshVirtualNodeListenerTlsFileCertificate] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsSdsCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeListenerTlsFileCertificate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualNodeClientTlsCertificate() : base() {}
    AppMeshVirtualNodeClientTlsCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeClientTlsCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeListenerTlsValidationContextTrust'"

class AppMeshVirtualNodeListenerTlsValidationContextTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeListenerTlsValidationContextTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsvalidationcontexttrust.html'

    hidden [object] $_sDS
    hidden [object] $_file

    [AppMeshVirtualNodeTlsValidationContextSdsTrust] $SDS
    [AppMeshVirtualNodeTlsValidationContextFileTrust] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTlsValidationContextSdsTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeTlsValidationContextFileTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualNodeListenerTlsValidationContextTrust() : base() {}
    AppMeshVirtualNodeListenerTlsValidationContextTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeListenerTlsValidationContextTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust'"

class AppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextacmtrust.html'

    hidden [object] $_certificateAuthorityArns

    [string[]] $CertificateAuthorityArns

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CertificateAuthorityArns -Value {
            $this._certificateAuthorityArns
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._certificateAuthorityArns = @($value)
        }
    }

    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust() : base() {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayTlsValidationContextAcmTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteHttpRouteAction'"

class AppMeshRouteHttpRouteAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteHttpRouteAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httprouteaction.html'

    hidden [object] $_weightedTargets

    [AppMeshRouteWeightedTarget[]] $WeightedTargets

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeightedTargets -Value {
            $this._weightedTargets
        } -SecondValue {
            param([ValidateType(([AppMeshRouteWeightedTarget], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._weightedTargets = $value
        }
    }

    AppMeshRouteHttpRouteAction() : base() {}
    AppMeshRouteHttpRouteAction([IDictionary] $props) : base($props) {}
    AppMeshRouteHttpRouteAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeAccessLog'"

class AppMeshVirtualNodeAccessLog : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeAccessLog'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-accesslog.html'

    hidden [object] $_file

    [AppMeshVirtualNodeFileAccessLog] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeFileAccessLog], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualNodeAccessLog() : base() {}
    AppMeshVirtualNodeAccessLog([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeAccessLog([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust'"

class AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust.html'

    hidden [object] $_sDS
    hidden [object] $_file

    [AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust] $SDS
    [AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust] $File

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SDS -Value {
            $this._sDS
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayTlsValidationContextSdsTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sDS = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name File -Value {
            $this._file
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewayTlsValidationContextFileTrust], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._file = $value
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsValidationContextTrust([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate'"

class AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlssdscertificate.html'

    hidden [object] $_secretName

    [string] $SecretName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecretName -Value {
            $this._secretName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._secretName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate() : base() {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate([IDictionary] $props) : base($props) {}
    AppMeshVirtualGatewayVirtualGatewayListenerTlsSdsCertificate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeSubjectAlternativeNameMatchers'"

class AppMeshVirtualNodeSubjectAlternativeNameMatchers : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeSubjectAlternativeNameMatchers'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-subjectalternativenamematchers.html'

    hidden [object] $_exact

    [string[]] $Exact

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Exact -Value {
            $this._exact
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._exact = @($value)
        }
    }

    AppMeshVirtualNodeSubjectAlternativeNameMatchers() : base() {}
    AppMeshVirtualNodeSubjectAlternativeNameMatchers([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeSubjectAlternativeNameMatchers([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeSubjectAlternativeNames'"

class AppMeshVirtualNodeSubjectAlternativeNames : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeSubjectAlternativeNames'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-subjectalternativenames.html'

    hidden [object] $_match

    [AppMeshVirtualNodeSubjectAlternativeNameMatchers] $Match

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Match -Value {
            $this._match
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeSubjectAlternativeNameMatchers], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._match = $value
        }
    }

    AppMeshVirtualNodeSubjectAlternativeNames() : base() {}
    AppMeshVirtualNodeSubjectAlternativeNames([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeSubjectAlternativeNames([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNodeVirtualNodeGrpcConnectionPool'"

class AppMeshVirtualNodeVirtualNodeGrpcConnectionPool : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshVirtualNodeVirtualNodeGrpcConnectionPool'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool.html'

    hidden [object] $_maxRequests

    [int] $MaxRequests

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxRequests -Value {
            $this._maxRequests
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxRequests = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshVirtualNodeVirtualNodeGrpcConnectionPool() : base() {}
    AppMeshVirtualNodeVirtualNodeGrpcConnectionPool([IDictionary] $props) : base($props) {}
    AppMeshVirtualNodeVirtualNodeGrpcConnectionPool([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRouteMatchRange'"

class AppMeshRouteMatchRange : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppMeshRouteMatchRange'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-matchrange.html'

    hidden [object] $_start
    hidden [object] $_end

    [int] $Start
    [int] $End

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Start -Value {
            $this._start
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._start = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name End -Value {
            $this._end
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._end = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    AppMeshRouteMatchRange() : base() {}
    AppMeshRouteMatchRange([IDictionary] $props) : base($props) {}
    AppMeshRouteMatchRange([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshRoute'"

class AppMeshRoute : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppMeshRoute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html'

    hidden [string[]] $_attributes = @('Uid','MeshName','VirtualRouterName','MeshOwner','ResourceOwner','RouteName','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppMesh::Route'
    [string] $MeshName
    [string] $VirtualRouterName
    [string] $MeshOwner
    [string] $RouteName
    [AppMeshRouteRouteSpec] $Spec
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshName -Value {
            $this.Properties['MeshName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualRouterName -Value {
            $this.Properties['VirtualRouterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VirtualRouterName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshOwner -Value {
            $this.Properties['MeshOwner']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshOwner'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RouteName -Value {
            $this.Properties['RouteName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RouteName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Spec -Value {
            $this.Properties['Spec']
        } -SecondValue {
            param([ValidateType(([AppMeshRouteRouteSpec], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Spec'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AppMeshRoute() : base() {}
    AppMeshRoute([IDictionary] $props) : base($props) {}
    AppMeshRoute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshGatewayRoute'"

class AppMeshGatewayRoute : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppMeshGatewayRoute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-gatewayroute.html'

    hidden [string[]] $_attributes = @('Uid','MeshName','VirtualGatewayName','MeshOwner','ResourceOwner','GatewayRouteName','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppMesh::GatewayRoute'
    [string] $MeshName
    [string] $VirtualGatewayName
    [string] $MeshOwner
    [string] $GatewayRouteName
    [AppMeshGatewayRouteGatewayRouteSpec] $Spec
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshName -Value {
            $this.Properties['MeshName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualGatewayName -Value {
            $this.Properties['VirtualGatewayName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VirtualGatewayName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshOwner -Value {
            $this.Properties['MeshOwner']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshOwner'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GatewayRouteName -Value {
            $this.Properties['GatewayRouteName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['GatewayRouteName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Spec -Value {
            $this.Properties['Spec']
        } -SecondValue {
            param([ValidateType(([AppMeshGatewayRouteGatewayRouteSpec], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Spec'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AppMeshGatewayRoute() : base() {}
    AppMeshGatewayRoute([IDictionary] $props) : base($props) {}
    AppMeshGatewayRoute([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualGateway'"

class AppMeshVirtualGateway : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppMeshVirtualGateway'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-virtualgateway.html'

    hidden [string[]] $_attributes = @('Uid','VirtualGatewayName','MeshName','MeshOwner','ResourceOwner','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppMesh::VirtualGateway'
    [string] $VirtualGatewayName
    [string] $MeshName
    [string] $MeshOwner
    [AppMeshVirtualGatewayVirtualGatewaySpec] $Spec
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualGatewayName -Value {
            $this.Properties['VirtualGatewayName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VirtualGatewayName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshName -Value {
            $this.Properties['MeshName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshOwner -Value {
            $this.Properties['MeshOwner']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshOwner'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Spec -Value {
            $this.Properties['Spec']
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualGatewayVirtualGatewaySpec], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Spec'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AppMeshVirtualGateway() : base() {}
    AppMeshVirtualGateway([IDictionary] $props) : base($props) {}
    AppMeshVirtualGateway([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualNode'"

class AppMeshVirtualNode : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppMeshVirtualNode'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-virtualnode.html'

    hidden [string[]] $_attributes = @('Uid','MeshName','MeshOwner','ResourceOwner','Arn','VirtualNodeName')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppMesh::VirtualNode'
    [string] $MeshName
    [string] $MeshOwner
    [AppMeshVirtualNodeVirtualNodeSpec] $Spec
    [string] $VirtualNodeName
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshName -Value {
            $this.Properties['MeshName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshOwner -Value {
            $this.Properties['MeshOwner']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshOwner'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Spec -Value {
            $this.Properties['Spec']
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualNodeVirtualNodeSpec], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Spec'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualNodeName -Value {
            $this.Properties['VirtualNodeName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VirtualNodeName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AppMeshVirtualNode() : base() {}
    AppMeshVirtualNode([IDictionary] $props) : base($props) {}
    AppMeshVirtualNode([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualRouter'"

class AppMeshVirtualRouter : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppMeshVirtualRouter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-virtualrouter.html'

    hidden [string[]] $_attributes = @('Uid','MeshName','VirtualRouterName','MeshOwner','ResourceOwner','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppMesh::VirtualRouter'
    [string] $MeshName
    [string] $VirtualRouterName
    [string] $MeshOwner
    [AppMeshVirtualRouterVirtualRouterSpec] $Spec
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshName -Value {
            $this.Properties['MeshName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualRouterName -Value {
            $this.Properties['VirtualRouterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VirtualRouterName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshOwner -Value {
            $this.Properties['MeshOwner']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshOwner'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Spec -Value {
            $this.Properties['Spec']
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualRouterVirtualRouterSpec], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Spec'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AppMeshVirtualRouter() : base() {}
    AppMeshVirtualRouter([IDictionary] $props) : base($props) {}
    AppMeshVirtualRouter([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshVirtualService'"

class AppMeshVirtualService : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppMeshVirtualService'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-virtualservice.html'

    hidden [string[]] $_attributes = @('Uid','MeshName','MeshOwner','ResourceOwner','VirtualServiceName','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppMesh::VirtualService'
    [string] $MeshName
    [string] $MeshOwner
    [string] $VirtualServiceName
    [AppMeshVirtualServiceVirtualServiceSpec] $Spec
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshName -Value {
            $this.Properties['MeshName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshOwner -Value {
            $this.Properties['MeshOwner']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshOwner'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VirtualServiceName -Value {
            $this.Properties['VirtualServiceName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VirtualServiceName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Spec -Value {
            $this.Properties['Spec']
        } -SecondValue {
            param([ValidateType(([AppMeshVirtualServiceVirtualServiceSpec], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Spec'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AppMeshVirtualService() : base() {}
    AppMeshVirtualService([IDictionary] $props) : base($props) {}
    AppMeshVirtualService([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AppMeshMesh'"

class AppMeshMesh : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppMeshMesh'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-mesh.html'

    hidden [string[]] $_attributes = @('Uid','MeshName','MeshOwner','ResourceOwner','Arn')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppMesh::Mesh'
    [string] $MeshName
    [AppMeshMeshMeshSpec] $Spec
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MeshName -Value {
            $this.Properties['MeshName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MeshName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Spec -Value {
            $this.Properties['Spec']
        } -SecondValue {
            param([ValidateType(([AppMeshMeshMeshSpec], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Spec'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AppMeshMesh() : base() {}
    AppMeshMesh([IDictionary] $props) : base($props) {}
    AppMeshMesh([psobject] $props) : base($props) {}
}