VaporShell.ElasticLoadBalancingV2.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 'ElasticLoadBalancingV2ListenerRuleSourceIpConfig'"

class ElasticLoadBalancingV2ListenerRuleSourceIpConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleSourceIpConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-sourceipconfig.html'

    hidden [object] $_values

    [string[]] $Values

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig'"

class ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html'

    hidden [object] $_onUnauthenticatedRequest
    hidden [object] $_tokenEndpoint
    hidden [object] $_sessionTimeout
    hidden [object] $_scope
    hidden [object] $_issuer
    hidden [object] $_clientSecret
    hidden [object] $_userInfoEndpoint
    hidden [object] $_clientId
    hidden [object] $_authorizationEndpoint
    hidden [object] $_sessionCookieName
    hidden [object] $_useExistingClientSecret
    hidden [object] $_authenticationRequestExtraParams

    [string] $OnUnauthenticatedRequest
    [string] $TokenEndpoint
    [int] $SessionTimeout
    [string] $Scope
    [string] $Issuer
    [string] $ClientSecret
    [string] $UserInfoEndpoint
    [string] $ClientId
    [string] $AuthorizationEndpoint
    [string] $SessionCookieName
    [bool] $UseExistingClientSecret
    [string] $AuthenticationRequestExtraParams

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnUnauthenticatedRequest -Value {
            $this._onUnauthenticatedRequest
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onUnauthenticatedRequest = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TokenEndpoint -Value {
            $this._tokenEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tokenEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionTimeout -Value {
            $this._sessionTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this._scope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Issuer -Value {
            $this._issuer
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._issuer = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientSecret -Value {
            $this._clientSecret
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientSecret = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserInfoEndpoint -Value {
            $this._userInfoEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userInfoEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientId -Value {
            $this._clientId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizationEndpoint -Value {
            $this._authorizationEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authorizationEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionCookieName -Value {
            $this._sessionCookieName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionCookieName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseExistingClientSecret -Value {
            $this._useExistingClientSecret
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._useExistingClientSecret = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticationRequestExtraParams -Value {
            $this._authenticationRequestExtraParams
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticationRequestExtraParams = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig'"

class ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html'

    hidden [object] $_onUnauthenticatedRequest
    hidden [object] $_userPoolClientId
    hidden [object] $_userPoolDomain
    hidden [object] $_sessionTimeout
    hidden [object] $_scope
    hidden [object] $_sessionCookieName
    hidden [object] $_userPoolArn
    hidden [object] $_authenticationRequestExtraParams

    [string] $OnUnauthenticatedRequest
    [string] $UserPoolClientId
    [string] $UserPoolDomain
    [int] $SessionTimeout
    [string] $Scope
    [string] $SessionCookieName
    [string] $UserPoolArn
    [string] $AuthenticationRequestExtraParams

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnUnauthenticatedRequest -Value {
            $this._onUnauthenticatedRequest
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onUnauthenticatedRequest = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserPoolClientId -Value {
            $this._userPoolClientId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userPoolClientId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserPoolDomain -Value {
            $this._userPoolDomain
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userPoolDomain = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionTimeout -Value {
            $this._sessionTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this._scope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionCookieName -Value {
            $this._sessionCookieName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionCookieName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserPoolArn -Value {
            $this._userPoolArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userPoolArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticationRequestExtraParams -Value {
            $this._authenticationRequestExtraParams
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticationRequestExtraParams = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue'"

class ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleQueryStringKeyValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-querystringkeyvalue.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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleQueryStringConfig'"

class ElasticLoadBalancingV2ListenerRuleQueryStringConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleQueryStringConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-querystringconfig.html'

    hidden [object] $_values

    [ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue[]] $Values

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRulePathPatternConfig'"

class ElasticLoadBalancingV2ListenerRulePathPatternConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRulePathPatternConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-pathpatternconfig.html'

    hidden [object] $_values

    [string[]] $Values

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute'"

class ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattributes.html'

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

    [string] $Key
    [string] $Value

    hidden [void] _addAccessors() {
        $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
            }
        }
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerForwardConfig'"

class ElasticLoadBalancingV2ListenerForwardConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerForwardConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-forwardconfig.html'

    hidden [object] $_targetGroupStickinessConfig
    hidden [object] $_targetGroups

    [ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig] $TargetGroupStickinessConfig
    [ElasticLoadBalancingV2ListenerTargetGroupTuple[]] $TargetGroups

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroupStickinessConfig -Value {
            $this._targetGroupStickinessConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetGroupStickinessConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroups -Value {
            $this._targetGroups
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerTargetGroupTuple], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._targetGroups = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2TargetGroupTargetDescription'"

class ElasticLoadBalancingV2TargetGroupTargetDescription : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2TargetGroupTargetDescription'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html'

    hidden [object] $_availabilityZone
    hidden [object] $_id
    hidden [object] $_port

    [string] $AvailabilityZone
    [string] $Id
    [int] $Port

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZone -Value {
            $this._availabilityZone
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._availabilityZone = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Id -Value {
            $this._id
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._id = if ($value -is [int]) {
                $value.ToString()
            }
            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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerAuthenticateOidcConfig'"

class ElasticLoadBalancingV2ListenerAuthenticateOidcConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerAuthenticateOidcConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html'

    hidden [object] $_onUnauthenticatedRequest
    hidden [object] $_tokenEndpoint
    hidden [object] $_sessionTimeout
    hidden [object] $_scope
    hidden [object] $_issuer
    hidden [object] $_clientSecret
    hidden [object] $_userInfoEndpoint
    hidden [object] $_clientId
    hidden [object] $_authorizationEndpoint
    hidden [object] $_sessionCookieName
    hidden [object] $_authenticationRequestExtraParams

    [string] $OnUnauthenticatedRequest
    [string] $TokenEndpoint
    [string] $SessionTimeout
    [string] $Scope
    [string] $Issuer
    [string] $ClientSecret
    [string] $UserInfoEndpoint
    [string] $ClientId
    [string] $AuthorizationEndpoint
    [string] $SessionCookieName
    [string] $AuthenticationRequestExtraParams

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnUnauthenticatedRequest -Value {
            $this._onUnauthenticatedRequest
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onUnauthenticatedRequest = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TokenEndpoint -Value {
            $this._tokenEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tokenEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionTimeout -Value {
            $this._sessionTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionTimeout = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this._scope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Issuer -Value {
            $this._issuer
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._issuer = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientSecret -Value {
            $this._clientSecret
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientSecret = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserInfoEndpoint -Value {
            $this._userInfoEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userInfoEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClientId -Value {
            $this._clientId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._clientId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthorizationEndpoint -Value {
            $this._authorizationEndpoint
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authorizationEndpoint = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionCookieName -Value {
            $this._sessionCookieName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionCookieName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticationRequestExtraParams -Value {
            $this._authenticationRequestExtraParams
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticationRequestExtraParams = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleRuleCondition'"

class ElasticLoadBalancingV2ListenerRuleRuleCondition : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleRuleCondition'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html'

    hidden [object] $_field
    hidden [object] $_values
    hidden [object] $_httpRequestMethodConfig
    hidden [object] $_pathPatternConfig
    hidden [object] $_httpHeaderConfig
    hidden [object] $_sourceIpConfig
    hidden [object] $_hostHeaderConfig
    hidden [object] $_queryStringConfig

    [string] $Field
    [string[]] $Values
    [ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig] $HttpRequestMethodConfig
    [ElasticLoadBalancingV2ListenerRulePathPatternConfig] $PathPatternConfig
    [ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig] $HttpHeaderConfig
    [ElasticLoadBalancingV2ListenerRuleSourceIpConfig] $SourceIpConfig
    [ElasticLoadBalancingV2ListenerRuleHostHeaderConfig] $HostHeaderConfig
    [ElasticLoadBalancingV2ListenerRuleQueryStringConfig] $QueryStringConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Field -Value {
            $this._field
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._field = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Values -Value {
            $this._values
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._values = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpRequestMethodConfig -Value {
            $this._httpRequestMethodConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpRequestMethodConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PathPatternConfig -Value {
            $this._pathPatternConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRulePathPatternConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._pathPatternConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HttpHeaderConfig -Value {
            $this._httpHeaderConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._httpHeaderConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceIpConfig -Value {
            $this._sourceIpConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleSourceIpConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sourceIpConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HostHeaderConfig -Value {
            $this._hostHeaderConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleHostHeaderConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hostHeaderConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryStringConfig -Value {
            $this._queryStringConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleQueryStringConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._queryStringConfig = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerCertificateProperty'"

class ElasticLoadBalancingV2ListenerCertificateProperty : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificate.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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleRedirectConfig'"

class ElasticLoadBalancingV2ListenerRuleRedirectConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleRedirectConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html'

    hidden [object] $_path
    hidden [object] $_query
    hidden [object] $_port
    hidden [object] $_host
    hidden [object] $_protocol
    hidden [object] $_statusCode

    [string] $Path
    [string] $Query
    [string] $Port
    [string] $Host
    [string] $Protocol
    [string] $StatusCode

    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 Query -Value {
            $this._query
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._query = if ($value -is [int]) {
                $value.ToString()
            }
            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 ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Host -Value {
            $this._host
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._host = if ($value -is [int]) {
                $value.ToString()
            }
            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 StatusCode -Value {
            $this._statusCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statusCode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2LoadBalancerSubnetMapping'"

class ElasticLoadBalancingV2LoadBalancerSubnetMapping : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2LoadBalancerSubnetMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-subnetmapping.html'

    hidden [object] $_allocationId
    hidden [object] $_iPv6Address
    hidden [object] $_privateIPv4Address
    hidden [object] $_subnetId

    [string] $AllocationId
    [string] $IPv6Address
    [string] $PrivateIPv4Address
    [string] $SubnetId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllocationId -Value {
            $this._allocationId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allocationId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IPv6Address -Value {
            $this._iPv6Address
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iPv6Address = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PrivateIPv4Address -Value {
            $this._privateIPv4Address
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._privateIPv4Address = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetId -Value {
            $this._subnetId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._subnetId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleHostHeaderConfig'"

class ElasticLoadBalancingV2ListenerRuleHostHeaderConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleHostHeaderConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-hostheaderconfig.html'

    hidden [object] $_values

    [string[]] $Values

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig'"

class ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerTargetGroupStickinessConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgroupstickinessconfig.html'

    hidden [object] $_enabled
    hidden [object] $_durationSeconds

    [bool] $Enabled
    [int] $DurationSeconds

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerCertificateCertificate'"

class ElasticLoadBalancingV2ListenerCertificateCertificate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerCertificateCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2TargetGroupTargetGroupAttribute'"

class ElasticLoadBalancingV2TargetGroupTargetGroupAttribute : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2TargetGroupTargetGroupAttribute'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetgroupattribute.html'

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

    [string] $Key
    [string] $Value

    hidden [void] _addAccessors() {
        $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
            }
        }
        $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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig'"

class ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerAuthenticateCognitoConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html'

    hidden [object] $_onUnauthenticatedRequest
    hidden [object] $_userPoolClientId
    hidden [object] $_userPoolDomain
    hidden [object] $_sessionTimeout
    hidden [object] $_scope
    hidden [object] $_sessionCookieName
    hidden [object] $_userPoolArn
    hidden [object] $_authenticationRequestExtraParams

    [string] $OnUnauthenticatedRequest
    [string] $UserPoolClientId
    [string] $UserPoolDomain
    [string] $SessionTimeout
    [string] $Scope
    [string] $SessionCookieName
    [string] $UserPoolArn
    [string] $AuthenticationRequestExtraParams

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnUnauthenticatedRequest -Value {
            $this._onUnauthenticatedRequest
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onUnauthenticatedRequest = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserPoolClientId -Value {
            $this._userPoolClientId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userPoolClientId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserPoolDomain -Value {
            $this._userPoolDomain
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userPoolDomain = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionTimeout -Value {
            $this._sessionTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionTimeout = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scope -Value {
            $this._scope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionCookieName -Value {
            $this._sessionCookieName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sessionCookieName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserPoolArn -Value {
            $this._userPoolArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userPoolArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticationRequestExtraParams -Value {
            $this._authenticationRequestExtraParams
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticationRequestExtraParams = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerAction'"

class ElasticLoadBalancingV2ListenerAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html'

    hidden [object] $_order
    hidden [object] $_targetGroupArn
    hidden [object] $_fixedResponseConfig
    hidden [object] $_authenticateCognitoConfig
    hidden [object] $_type
    hidden [object] $_redirectConfig
    hidden [object] $_forwardConfig
    hidden [object] $_authenticateOidcConfig

    [int] $Order
    [string] $TargetGroupArn
    [ElasticLoadBalancingV2ListenerFixedResponseConfig] $FixedResponseConfig
    [ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig] $AuthenticateCognitoConfig
    [string] $Type
    [ElasticLoadBalancingV2ListenerRedirectConfig] $RedirectConfig
    [ElasticLoadBalancingV2ListenerForwardConfig] $ForwardConfig
    [ElasticLoadBalancingV2ListenerAuthenticateOidcConfig] $AuthenticateOidcConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Order -Value {
            $this._order
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._order = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroupArn -Value {
            $this._targetGroupArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetGroupArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FixedResponseConfig -Value {
            $this._fixedResponseConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerFixedResponseConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fixedResponseConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticateCognitoConfig -Value {
            $this._authenticateCognitoConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticateCognitoConfig = $value
        }
        $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
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RedirectConfig -Value {
            $this._redirectConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRedirectConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._redirectConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardConfig -Value {
            $this._forwardConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerForwardConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticateOidcConfig -Value {
            $this._authenticateOidcConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerAuthenticateOidcConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticateOidcConfig = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleFixedResponseConfig'"

class ElasticLoadBalancingV2ListenerRuleFixedResponseConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleFixedResponseConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-fixedresponseconfig.html'

    hidden [object] $_contentType
    hidden [object] $_statusCode
    hidden [object] $_messageBody

    [string] $ContentType
    [string] $StatusCode
    [string] $MessageBody

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleAction'"

class ElasticLoadBalancingV2ListenerRuleAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html'

    hidden [object] $_order
    hidden [object] $_targetGroupArn
    hidden [object] $_fixedResponseConfig
    hidden [object] $_authenticateCognitoConfig
    hidden [object] $_type
    hidden [object] $_redirectConfig
    hidden [object] $_forwardConfig
    hidden [object] $_authenticateOidcConfig

    [int] $Order
    [string] $TargetGroupArn
    [ElasticLoadBalancingV2ListenerRuleFixedResponseConfig] $FixedResponseConfig
    [ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig] $AuthenticateCognitoConfig
    [string] $Type
    [ElasticLoadBalancingV2ListenerRuleRedirectConfig] $RedirectConfig
    [ElasticLoadBalancingV2ListenerRuleForwardConfig] $ForwardConfig
    [ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig] $AuthenticateOidcConfig

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Order -Value {
            $this._order
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._order = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroupArn -Value {
            $this._targetGroupArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetGroupArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FixedResponseConfig -Value {
            $this._fixedResponseConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleFixedResponseConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._fixedResponseConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticateCognitoConfig -Value {
            $this._authenticateCognitoConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticateCognitoConfig = $value
        }
        $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
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RedirectConfig -Value {
            $this._redirectConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleRedirectConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._redirectConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ForwardConfig -Value {
            $this._forwardConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleForwardConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._forwardConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthenticateOidcConfig -Value {
            $this._authenticateOidcConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authenticateOidcConfig = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2TargetGroupMatcher'"

class ElasticLoadBalancingV2TargetGroupMatcher : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2TargetGroupMatcher'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-matcher.html'

    hidden [object] $_grpcCode
    hidden [object] $_httpCode

    [string] $GrpcCode
    [string] $HttpCode

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig'"

class ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleHttpHeaderConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-httpheaderconfig.html'

    hidden [object] $_values
    hidden [object] $_httpHeaderName

    [string[]] $Values
    [string] $HttpHeaderName

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleForwardConfig'"

class ElasticLoadBalancingV2ListenerRuleForwardConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleForwardConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-forwardconfig.html'

    hidden [object] $_targetGroupStickinessConfig
    hidden [object] $_targetGroups

    [ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig] $TargetGroupStickinessConfig
    [ElasticLoadBalancingV2ListenerRuleTargetGroupTuple[]] $TargetGroups

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroupStickinessConfig -Value {
            $this._targetGroupStickinessConfig
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetGroupStickinessConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroups -Value {
            $this._targetGroups
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleTargetGroupTuple], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._targetGroups = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleTargetGroupTuple'"

class ElasticLoadBalancingV2ListenerRuleTargetGroupTuple : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleTargetGroupTuple'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgrouptuple.html'

    hidden [object] $_targetGroupArn
    hidden [object] $_weight

    [string] $TargetGroupArn
    [int] $Weight

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroupArn -Value {
            $this._targetGroupArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetGroupArn = 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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRedirectConfig'"

class ElasticLoadBalancingV2ListenerRedirectConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRedirectConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html'

    hidden [object] $_path
    hidden [object] $_query
    hidden [object] $_port
    hidden [object] $_host
    hidden [object] $_protocol
    hidden [object] $_statusCode

    [string] $Path
    [string] $Query
    [string] $Port
    [string] $Host
    [string] $Protocol
    [string] $StatusCode

    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 Query -Value {
            $this._query
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._query = if ($value -is [int]) {
                $value.ToString()
            }
            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 ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Host -Value {
            $this._host
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._host = if ($value -is [int]) {
                $value.ToString()
            }
            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 StatusCode -Value {
            $this._statusCode
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statusCode = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig'"

class ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-httprequestmethodconfig.html'

    hidden [object] $_values

    [string[]] $Values

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerFixedResponseConfig'"

class ElasticLoadBalancingV2ListenerFixedResponseConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerFixedResponseConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-fixedresponseconfig.html'

    hidden [object] $_contentType
    hidden [object] $_statusCode
    hidden [object] $_messageBody

    [string] $ContentType
    [string] $StatusCode
    [string] $MessageBody

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig'"

class ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgroupstickinessconfig.html'

    hidden [object] $_enabled
    hidden [object] $_durationSeconds

    [bool] $Enabled
    [int] $DurationSeconds

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

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerTargetGroupTuple'"

class ElasticLoadBalancingV2ListenerTargetGroupTuple : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSElasticLoadBalancingV2ListenerTargetGroupTuple'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgrouptuple.html'

    hidden [object] $_targetGroupArn
    hidden [object] $_weight

    [string] $TargetGroupArn
    [int] $Weight

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetGroupArn -Value {
            $this._targetGroupArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetGroupArn = 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
            }
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2LoadBalancer'"

class ElasticLoadBalancingV2LoadBalancer : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSElasticLoadBalancingV2LoadBalancer'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html'

    hidden [string[]] $_attributes = @('CanonicalHostedZoneID','DNSName','LoadBalancerFullName','LoadBalancerName','SecurityGroups')
    hidden [object] $_condition

    [string] $Type = 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    [string] $IpAddressType
    [ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute[]] $LoadBalancerAttributes
    [string] $Name
    [string] $Scheme
    [string[]] $SecurityGroups
    [ElasticLoadBalancingV2LoadBalancerSubnetMapping[]] $SubnetMappings
    [string[]] $Subnets
    [VSTag[]] $Tags
    [string] $LoadBalancerType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name IpAddressType -Value {
            $this.Properties['IpAddressType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IpAddressType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoadBalancerAttributes -Value {
            $this.Properties['LoadBalancerAttributes']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['LoadBalancerAttributes'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Scheme -Value {
            $this.Properties['Scheme']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Scheme'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroups -Value {
            $this.Properties['SecurityGroups']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SecurityGroups'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetMappings -Value {
            $this.Properties['SubnetMappings']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2LoadBalancerSubnetMapping], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SubnetMappings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Subnets -Value {
            $this.Properties['Subnets']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Subnets'] = @($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 LoadBalancerType -Value {
            $this.Properties['LoadBalancerType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LoadBalancerType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2Listener'"

class ElasticLoadBalancingV2Listener : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSElasticLoadBalancingV2Listener'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html'

    hidden [string[]] $_attributes = @('ListenerArn')
    hidden [object] $_condition

    [string] $Type = 'AWS::ElasticLoadBalancingV2::Listener'
    [string] $SslPolicy
    [string] $LoadBalancerArn
    [ElasticLoadBalancingV2ListenerAction[]] $DefaultActions
    [int] $Port
    [ElasticLoadBalancingV2ListenerCertificate[]] $Certificates
    [string] $Protocol
    [string[]] $AlpnPolicy
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name SslPolicy -Value {
            $this.Properties['SslPolicy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SslPolicy'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoadBalancerArn -Value {
            $this.Properties['LoadBalancerArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LoadBalancerArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultActions -Value {
            $this.Properties['DefaultActions']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['DefaultActions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this.Properties['Port']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Port'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Certificates -Value {
            $this.Properties['Certificates']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerCertificate], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Certificates'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this.Properties['Protocol']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Protocol'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AlpnPolicy -Value {
            $this.Properties['AlpnPolicy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AlpnPolicy'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerRule'"

class ElasticLoadBalancingV2ListenerRule : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSElasticLoadBalancingV2ListenerRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html'

    hidden [string[]] $_attributes = @('RuleArn','IsDefault')
    hidden [object] $_condition

    [string] $Type = 'AWS::ElasticLoadBalancingV2::ListenerRule'
    [string] $ListenerArn
    [ElasticLoadBalancingV2ListenerRuleAction[]] $Actions
    [int] $Priority
    [ElasticLoadBalancingV2ListenerRuleRuleCondition[]] $Conditions
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ListenerArn -Value {
            $this.Properties['ListenerArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ListenerArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Actions -Value {
            $this.Properties['Actions']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleAction], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Actions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this.Properties['Priority']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Priority'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Conditions -Value {
            $this.Properties['Conditions']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerRuleRuleCondition], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Conditions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2ListenerCertificate'"

class ElasticLoadBalancingV2ListenerCertificate : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSElasticLoadBalancingV2ListenerCertificate'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenercertificate.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::ElasticLoadBalancingV2::ListenerCertificate'
    [ElasticLoadBalancingV2ListenerCertificateCertificate[]] $Certificates
    [string] $ListenerArn
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Certificates -Value {
            $this.Properties['Certificates']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2ListenerCertificateCertificate], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Certificates'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ListenerArn -Value {
            $this.Properties['ListenerArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ListenerArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ElasticLoadBalancingV2TargetGroup'"

class ElasticLoadBalancingV2TargetGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSElasticLoadBalancingV2TargetGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html'

    hidden [string[]] $_attributes = @('LoadBalancerArns','TargetGroupFullName','TargetGroupName')
    hidden [object] $_condition

    [string] $Type = 'AWS::ElasticLoadBalancingV2::TargetGroup'
    [bool] $HealthCheckEnabled
    [int] $HealthCheckIntervalSeconds
    [string] $HealthCheckPath
    [string] $HealthCheckPort
    [string] $HealthCheckProtocol
    [int] $HealthCheckTimeoutSeconds
    [int] $HealthyThresholdCount
    [ElasticLoadBalancingV2TargetGroupMatcher] $Matcher
    [string] $Name
    [int] $Port
    [string] $Protocol
    [string] $ProtocolVersion
    [VSTag[]] $Tags
    [ElasticLoadBalancingV2TargetGroupTargetGroupAttribute[]] $TargetGroupAttributes
    [string] $TargetType
    [ElasticLoadBalancingV2TargetGroupTargetDescription[]] $Targets
    [int] $UnhealthyThresholdCount
    [string] $VpcId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckEnabled -Value {
            $this.Properties['HealthCheckEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckEnabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckIntervalSeconds -Value {
            $this.Properties['HealthCheckIntervalSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckIntervalSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckPath -Value {
            $this.Properties['HealthCheckPath']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckPath'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckPort -Value {
            $this.Properties['HealthCheckPort']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckPort'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckProtocol -Value {
            $this.Properties['HealthCheckProtocol']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckProtocol'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthCheckTimeoutSeconds -Value {
            $this.Properties['HealthCheckTimeoutSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthCheckTimeoutSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HealthyThresholdCount -Value {
            $this.Properties['HealthyThresholdCount']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HealthyThresholdCount'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Matcher -Value {
            $this.Properties['Matcher']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2TargetGroupMatcher], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Matcher'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Port -Value {
            $this.Properties['Port']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Port'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Protocol -Value {
            $this.Properties['Protocol']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Protocol'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ProtocolVersion -Value {
            $this.Properties['ProtocolVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ProtocolVersion'] = 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 TargetGroupAttributes -Value {
            $this.Properties['TargetGroupAttributes']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2TargetGroupTargetGroupAttribute], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['TargetGroupAttributes'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetType -Value {
            $this.Properties['TargetType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Targets -Value {
            $this.Properties['Targets']
        } -SecondValue {
            param([ValidateType(([ElasticLoadBalancingV2TargetGroupTargetDescription], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Targets'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnhealthyThresholdCount -Value {
            $this.Properties['UnhealthyThresholdCount']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UnhealthyThresholdCount'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcId -Value {
            $this.Properties['VpcId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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