VaporShell.RDS.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 'RDSDBProxyTargetGroupConnectionPoolConfigurationInfoFormat'"

class RDSDBProxyTargetGroupConnectionPoolConfigurationInfoFormat : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBProxyTargetGroupConnectionPoolConfigurationInfoFormat'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxytargetgroup-connectionpoolconfigurationinfoformat.html'

    hidden [object] $_maxConnectionsPercent
    hidden [object] $_maxIdleConnectionsPercent
    hidden [object] $_connectionBorrowTimeout
    hidden [object] $_sessionPinningFilters
    hidden [object] $_initQuery

    [int] $MaxConnectionsPercent
    [int] $MaxIdleConnectionsPercent
    [int] $ConnectionBorrowTimeout
    [string[]] $SessionPinningFilters
    [string] $InitQuery

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxConnectionsPercent -Value {
            $this._maxConnectionsPercent
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxConnectionsPercent = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxIdleConnectionsPercent -Value {
            $this._maxIdleConnectionsPercent
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxIdleConnectionsPercent = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConnectionBorrowTimeout -Value {
            $this._connectionBorrowTimeout
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._connectionBorrowTimeout = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionPinningFilters -Value {
            $this._sessionPinningFilters
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._sessionPinningFilters = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InitQuery -Value {
            $this._initQuery
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._initQuery = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'RDSDBInstanceDBInstanceRole'"

class RDSDBInstanceDBInstanceRole : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBInstanceDBInstanceRole'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-dbinstancerole.html'

    hidden [object] $_featureName
    hidden [object] $_roleArn

    [string] $FeatureName
    [string] $RoleArn

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

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

Write-Verbose "Importing class 'RDSDBClusterScalingConfiguration'"

class RDSDBClusterScalingConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBClusterScalingConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-scalingconfiguration.html'

    hidden [object] $_autoPause
    hidden [object] $_maxCapacity
    hidden [object] $_minCapacity
    hidden [object] $_secondsUntilAutoPause

    [bool] $AutoPause
    [int] $MaxCapacity
    [int] $MinCapacity
    [int] $SecondsUntilAutoPause

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoPause -Value {
            $this._autoPause
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._autoPause = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxCapacity -Value {
            $this._maxCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinCapacity -Value {
            $this._minCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecondsUntilAutoPause -Value {
            $this._secondsUntilAutoPause
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._secondsUntilAutoPause = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'RDSDBInstanceProcessorFeature'"

class RDSDBInstanceProcessorFeature : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBInstanceProcessorFeature'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbinstance-processorfeature.html'

    hidden [object] $_name
    hidden [object] $_value

    [string] $Name
    [string] $Value

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

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

Write-Verbose "Importing class 'RDSDBSecurityGroupIngressProperty'"

class RDSDBSecurityGroupIngressProperty : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBSecurityGroupIngress'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html'

    hidden [object] $_cIDRIP
    hidden [object] $_eC2SecurityGroupId
    hidden [object] $_eC2SecurityGroupName
    hidden [object] $_eC2SecurityGroupOwnerId

    [string] $CIDRIP
    [string] $EC2SecurityGroupId
    [string] $EC2SecurityGroupName
    [string] $EC2SecurityGroupOwnerId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CIDRIP -Value {
            $this._cIDRIP
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cIDRIP = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupId -Value {
            $this._eC2SecurityGroupId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eC2SecurityGroupId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupName -Value {
            $this._eC2SecurityGroupName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eC2SecurityGroupName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupOwnerId -Value {
            $this._eC2SecurityGroupOwnerId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eC2SecurityGroupOwnerId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'RDSDBProxyTagFormat'"

class RDSDBProxyTagFormat : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBProxyTagFormat'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-tagformat.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
            }
        }
    }

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

Write-Verbose "Importing class 'RDSDBProxyAuthFormat'"

class RDSDBProxyAuthFormat : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBProxyAuthFormat'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxy-authformat.html'

    hidden [object] $_authScheme
    hidden [object] $_description
    hidden [object] $_iAMAuth
    hidden [object] $_secretArn
    hidden [object] $_userName

    [string] $AuthScheme
    [string] $Description
    [string] $IAMAuth
    [string] $SecretArn
    [string] $UserName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthScheme -Value {
            $this._authScheme
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._authScheme = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IAMAuth -Value {
            $this._iAMAuth
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iAMAuth = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecretArn -Value {
            $this._secretArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._secretArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserName -Value {
            $this._userName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._userName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'RDSOptionGroupOptionSetting'"

class RDSOptionGroupOptionSetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSOptionGroupOptionSetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations-optionsettings.html'

    hidden [object] $_name
    hidden [object] $_value

    [string] $Name
    [string] $Value

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

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

Write-Verbose "Importing class 'RDSDBClusterDBClusterRole'"

class RDSDBClusterDBClusterRole : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSDBClusterDBClusterRole'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-dbclusterrole.html'

    hidden [object] $_featureName
    hidden [object] $_roleArn

    [string] $FeatureName
    [string] $RoleArn

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

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

Write-Verbose "Importing class 'RDSOptionGroupOptionConfiguration'"

class RDSOptionGroupOptionConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSRDSOptionGroupOptionConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html'

    hidden [object] $_dBSecurityGroupMemberships
    hidden [object] $_optionName
    hidden [object] $_optionSettings
    hidden [object] $_optionVersion
    hidden [object] $_port
    hidden [object] $_vpcSecurityGroupMemberships

    [string[]] $DBSecurityGroupMemberships
    [string] $OptionName
    [RDSOptionGroupOptionSetting[]] $OptionSettings
    [string] $OptionVersion
    [int] $Port
    [string[]] $VpcSecurityGroupMemberships

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBSecurityGroupMemberships -Value {
            $this._dBSecurityGroupMemberships
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dBSecurityGroupMemberships = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OptionName -Value {
            $this._optionName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._optionName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OptionSettings -Value {
            $this._optionSettings
        } -SecondValue {
            param([ValidateType(([RDSOptionGroupOptionSetting], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._optionSettings = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OptionVersion -Value {
            $this._optionVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._optionVersion = 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
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcSecurityGroupMemberships -Value {
            $this._vpcSecurityGroupMemberships
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._vpcSecurityGroupMemberships = @($value)
        }
    }

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

Write-Verbose "Importing class 'RDSDBSubnetGroup'"

class RDSDBSubnetGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBSubnetGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBSubnetGroup'
    [string] $DBSubnetGroupDescription
    [string] $DBSubnetGroupName
    [string[]] $SubnetIds
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'RDSGlobalCluster'"

class RDSGlobalCluster : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSGlobalCluster'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-globalcluster.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::GlobalCluster'
    [string] $Engine
    [string] $EngineVersion
    [bool] $DeletionProtection
    [string] $GlobalClusterIdentifier
    [string] $SourceDBClusterIdentifier
    [bool] $StorageEncrypted
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'RDSDBInstance'"

class RDSDBInstance : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBInstance'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html'

    hidden [string[]] $_attributes = @('Endpoint.Address','Endpoint.Port')
    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBInstance'
    [string] $AllocatedStorage
    [bool] $AllowMajorVersionUpgrade
    [RDSDBInstanceDBInstanceRole[]] $AssociatedRoles
    [bool] $AutoMinorVersionUpgrade
    [string] $AvailabilityZone
    [int] $BackupRetentionPeriod
    [string] $CACertificateIdentifier
    [string] $CharacterSetName
    [bool] $CopyTagsToSnapshot
    [string] $DBClusterIdentifier
    [string] $DBInstanceClass
    [string] $DBInstanceIdentifier
    [string] $DBName
    [string] $DBParameterGroupName
    [string[]] $DBSecurityGroups
    [string] $DBSnapshotIdentifier
    [string] $DBSubnetGroupName
    [bool] $DeleteAutomatedBackups
    [bool] $DeletionProtection
    [string] $Domain
    [string] $DomainIAMRoleName
    [string[]] $EnableCloudwatchLogsExports
    [bool] $EnableIAMDatabaseAuthentication
    [bool] $EnablePerformanceInsights
    [string] $Engine
    [string] $EngineVersion
    [int] $Iops
    [string] $KmsKeyId
    [string] $LicenseModel
    [string] $MasterUserPassword
    [string] $MasterUsername
    [int] $MaxAllocatedStorage
    [int] $MonitoringInterval
    [string] $MonitoringRoleArn
    [bool] $MultiAZ
    [string] $OptionGroupName
    [string] $PerformanceInsightsKMSKeyId
    [int] $PerformanceInsightsRetentionPeriod
    [string] $Port
    [string] $PreferredBackupWindow
    [string] $PreferredMaintenanceWindow
    [RDSDBInstanceProcessorFeature[]] $ProcessorFeatures
    [int] $PromotionTier
    [bool] $PubliclyAccessible
    [string] $SourceDBInstanceIdentifier
    [string] $SourceRegion
    [bool] $StorageEncrypted
    [string] $StorageType
    [VSTag[]] $Tags
    [string] $Timezone
    [bool] $UseDefaultProcessorFeatures
    [string[]] $VPCSecurityGroups
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllocatedStorage -Value {
            $this.Properties['AllocatedStorage']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AllocatedStorage'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowMajorVersionUpgrade -Value {
            $this.Properties['AllowMajorVersionUpgrade']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AllowMajorVersionUpgrade'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AssociatedRoles -Value {
            $this.Properties['AssociatedRoles']
        } -SecondValue {
            param([ValidateType(([RDSDBInstanceDBInstanceRole], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AssociatedRoles'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoMinorVersionUpgrade -Value {
            $this.Properties['AutoMinorVersionUpgrade']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoMinorVersionUpgrade'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZone -Value {
            $this.Properties['AvailabilityZone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AvailabilityZone'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackupRetentionPeriod -Value {
            $this.Properties['BackupRetentionPeriod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BackupRetentionPeriod'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CACertificateIdentifier -Value {
            $this.Properties['CACertificateIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CACertificateIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CharacterSetName -Value {
            $this.Properties['CharacterSetName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CharacterSetName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CopyTagsToSnapshot -Value {
            $this.Properties['CopyTagsToSnapshot']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CopyTagsToSnapshot'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBClusterIdentifier -Value {
            $this.Properties['DBClusterIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBClusterIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBInstanceClass -Value {
            $this.Properties['DBInstanceClass']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBInstanceClass'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBInstanceIdentifier -Value {
            $this.Properties['DBInstanceIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBInstanceIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBName -Value {
            $this.Properties['DBName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBParameterGroupName -Value {
            $this.Properties['DBParameterGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBParameterGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBSecurityGroups -Value {
            $this.Properties['DBSecurityGroups']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['DBSecurityGroups'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBSnapshotIdentifier -Value {
            $this.Properties['DBSnapshotIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBSnapshotIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBSubnetGroupName -Value {
            $this.Properties['DBSubnetGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBSubnetGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeleteAutomatedBackups -Value {
            $this.Properties['DeleteAutomatedBackups']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeleteAutomatedBackups'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeletionProtection -Value {
            $this.Properties['DeletionProtection']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeletionProtection'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Domain -Value {
            $this.Properties['Domain']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Domain'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainIAMRoleName -Value {
            $this.Properties['DomainIAMRoleName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainIAMRoleName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableCloudwatchLogsExports -Value {
            $this.Properties['EnableCloudwatchLogsExports']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['EnableCloudwatchLogsExports'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableIAMDatabaseAuthentication -Value {
            $this.Properties['EnableIAMDatabaseAuthentication']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableIAMDatabaseAuthentication'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnablePerformanceInsights -Value {
            $this.Properties['EnablePerformanceInsights']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnablePerformanceInsights'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Engine -Value {
            $this.Properties['Engine']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Engine'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EngineVersion -Value {
            $this.Properties['EngineVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EngineVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iops -Value {
            $this.Properties['Iops']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Iops'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KmsKeyId -Value {
            $this.Properties['KmsKeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KmsKeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LicenseModel -Value {
            $this.Properties['LicenseModel']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LicenseModel'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterUserPassword -Value {
            $this.Properties['MasterUserPassword']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MasterUserPassword'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterUsername -Value {
            $this.Properties['MasterUsername']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MasterUsername'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxAllocatedStorage -Value {
            $this.Properties['MaxAllocatedStorage']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxAllocatedStorage'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MonitoringInterval -Value {
            $this.Properties['MonitoringInterval']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MonitoringInterval'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MonitoringRoleArn -Value {
            $this.Properties['MonitoringRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MonitoringRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MultiAZ -Value {
            $this.Properties['MultiAZ']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MultiAZ'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OptionGroupName -Value {
            $this.Properties['OptionGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OptionGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerformanceInsightsKMSKeyId -Value {
            $this.Properties['PerformanceInsightsKMSKeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PerformanceInsightsKMSKeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PerformanceInsightsRetentionPeriod -Value {
            $this.Properties['PerformanceInsightsRetentionPeriod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PerformanceInsightsRetentionPeriod'] = if ($cast = $value -as [int]) {
                $cast
            }
            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 ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PreferredBackupWindow -Value {
            $this.Properties['PreferredBackupWindow']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PreferredBackupWindow'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PreferredMaintenanceWindow -Value {
            $this.Properties['PreferredMaintenanceWindow']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PreferredMaintenanceWindow'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ProcessorFeatures -Value {
            $this.Properties['ProcessorFeatures']
        } -SecondValue {
            param([ValidateType(([RDSDBInstanceProcessorFeature], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ProcessorFeatures'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PromotionTier -Value {
            $this.Properties['PromotionTier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PromotionTier'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PubliclyAccessible -Value {
            $this.Properties['PubliclyAccessible']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PubliclyAccessible'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceDBInstanceIdentifier -Value {
            $this.Properties['SourceDBInstanceIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SourceDBInstanceIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceRegion -Value {
            $this.Properties['SourceRegion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SourceRegion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageEncrypted -Value {
            $this.Properties['StorageEncrypted']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StorageEncrypted'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageType -Value {
            $this.Properties['StorageType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StorageType'] = 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 Timezone -Value {
            $this.Properties['Timezone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Timezone'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UseDefaultProcessorFeatures -Value {
            $this.Properties['UseDefaultProcessorFeatures']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UseDefaultProcessorFeatures'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VPCSecurityGroups -Value {
            $this.Properties['VPCSecurityGroups']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VPCSecurityGroups'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RDSDBSecurityGroup'"

class RDSDBSecurityGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBSecurityGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBSecurityGroup'
    [RDSDBSecurityGroupIngress[]] $DBSecurityGroupIngress
    [string] $EC2VpcId
    [string] $GroupDescription
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'RDSDBClusterParameterGroup'"

class RDSDBClusterParameterGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBClusterParameterGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBClusterParameterGroup'
    [string] $Description
    [string] $Family
    [VSJson] $Parameters
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'RDSDBSecurityGroupIngress'"

class RDSDBSecurityGroupIngress : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBSecurityGroupIngress'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBSecurityGroupIngress'
    [string] $CIDRIP
    [string] $DBSecurityGroupName
    [string] $EC2SecurityGroupId
    [string] $EC2SecurityGroupName
    [string] $EC2SecurityGroupOwnerId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name CIDRIP -Value {
            $this.Properties['CIDRIP']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CIDRIP'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBSecurityGroupName -Value {
            $this.Properties['DBSecurityGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBSecurityGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupId -Value {
            $this.Properties['EC2SecurityGroupId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EC2SecurityGroupId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupName -Value {
            $this.Properties['EC2SecurityGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EC2SecurityGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2SecurityGroupOwnerId -Value {
            $this.Properties['EC2SecurityGroupOwnerId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EC2SecurityGroupOwnerId'] = 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
        }
    }

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

Write-Verbose "Importing class 'RDSDBCluster'"

class RDSDBCluster : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBCluster'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html'

    hidden [string[]] $_attributes = @('Endpoint.Address','Endpoint.Port','ReadEndpoint.Address')
    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBCluster'
    [RDSDBClusterDBClusterRole[]] $AssociatedRoles
    [string[]] $AvailabilityZones
    [long] $BacktrackWindow
    [int] $BackupRetentionPeriod
    [string] $DBClusterIdentifier
    [string] $DBClusterParameterGroupName
    [string] $DBSubnetGroupName
    [string] $DatabaseName
    [bool] $DeletionProtection
    [string[]] $EnableCloudwatchLogsExports
    [bool] $EnableHttpEndpoint
    [bool] $EnableIAMDatabaseAuthentication
    [string] $Engine
    [string] $EngineMode
    [string] $EngineVersion
    [string] $GlobalClusterIdentifier
    [string] $KmsKeyId
    [string] $MasterUserPassword
    [string] $MasterUsername
    [int] $Port
    [string] $PreferredBackupWindow
    [string] $PreferredMaintenanceWindow
    [string] $ReplicationSourceIdentifier
    [string] $RestoreType
    [RDSDBClusterScalingConfiguration] $ScalingConfiguration
    [string] $SnapshotIdentifier
    [string] $SourceDBClusterIdentifier
    [string] $SourceRegion
    [bool] $StorageEncrypted
    [VSTag[]] $Tags
    [bool] $UseLatestRestorableTime
    [string[]] $VpcSecurityGroupIds
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AssociatedRoles -Value {
            $this.Properties['AssociatedRoles']
        } -SecondValue {
            param([ValidateType(([RDSDBClusterDBClusterRole], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AssociatedRoles'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZones -Value {
            $this.Properties['AvailabilityZones']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AvailabilityZones'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BacktrackWindow -Value {
            $this.Properties['BacktrackWindow']
        } -SecondValue {
            param([ValidateType(([long], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BacktrackWindow'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BackupRetentionPeriod -Value {
            $this.Properties['BackupRetentionPeriod']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BackupRetentionPeriod'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBClusterIdentifier -Value {
            $this.Properties['DBClusterIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBClusterIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBClusterParameterGroupName -Value {
            $this.Properties['DBClusterParameterGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBClusterParameterGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBSubnetGroupName -Value {
            $this.Properties['DBSubnetGroupName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBSubnetGroupName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DatabaseName -Value {
            $this.Properties['DatabaseName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DatabaseName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeletionProtection -Value {
            $this.Properties['DeletionProtection']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeletionProtection'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableCloudwatchLogsExports -Value {
            $this.Properties['EnableCloudwatchLogsExports']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['EnableCloudwatchLogsExports'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableHttpEndpoint -Value {
            $this.Properties['EnableHttpEndpoint']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableHttpEndpoint'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableIAMDatabaseAuthentication -Value {
            $this.Properties['EnableIAMDatabaseAuthentication']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableIAMDatabaseAuthentication'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Engine -Value {
            $this.Properties['Engine']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Engine'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EngineMode -Value {
            $this.Properties['EngineMode']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EngineMode'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EngineVersion -Value {
            $this.Properties['EngineVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EngineVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GlobalClusterIdentifier -Value {
            $this.Properties['GlobalClusterIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['GlobalClusterIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KmsKeyId -Value {
            $this.Properties['KmsKeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KmsKeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterUserPassword -Value {
            $this.Properties['MasterUserPassword']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MasterUserPassword'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterUsername -Value {
            $this.Properties['MasterUsername']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MasterUsername'] = 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 PreferredBackupWindow -Value {
            $this.Properties['PreferredBackupWindow']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PreferredBackupWindow'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PreferredMaintenanceWindow -Value {
            $this.Properties['PreferredMaintenanceWindow']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PreferredMaintenanceWindow'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReplicationSourceIdentifier -Value {
            $this.Properties['ReplicationSourceIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ReplicationSourceIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestoreType -Value {
            $this.Properties['RestoreType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RestoreType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingConfiguration -Value {
            $this.Properties['ScalingConfiguration']
        } -SecondValue {
            param([ValidateType(([RDSDBClusterScalingConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScalingConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnapshotIdentifier -Value {
            $this.Properties['SnapshotIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnapshotIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceDBClusterIdentifier -Value {
            $this.Properties['SourceDBClusterIdentifier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SourceDBClusterIdentifier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceRegion -Value {
            $this.Properties['SourceRegion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SourceRegion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StorageEncrypted -Value {
            $this.Properties['StorageEncrypted']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StorageEncrypted'] = $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 UseLatestRestorableTime -Value {
            $this.Properties['UseLatestRestorableTime']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UseLatestRestorableTime'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcSecurityGroupIds -Value {
            $this.Properties['VpcSecurityGroupIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VpcSecurityGroupIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RDSOptionGroup'"

class RDSOptionGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSOptionGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::OptionGroup'
    [string] $EngineName
    [string] $MajorEngineVersion
    [RDSOptionGroupOptionConfiguration[]] $OptionConfigurations
    [string] $OptionGroupDescription
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'RDSDBParameterGroup'"

class RDSDBParameterGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBParameterGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBParameterGroup'
    [string] $Description
    [string] $Family
    [string] $Parameters
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'RDSEventSubscription'"

class RDSEventSubscription : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSEventSubscription'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::EventSubscription'
    [bool] $Enabled
    [string[]] $EventCategories
    [string] $SnsTopicArn
    [string[]] $SourceIds
    [string] $SourceType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this.Properties['Enabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Enabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventCategories -Value {
            $this.Properties['EventCategories']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['EventCategories'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SnsTopicArn -Value {
            $this.Properties['SnsTopicArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SnsTopicArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceIds -Value {
            $this.Properties['SourceIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SourceIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceType -Value {
            $this.Properties['SourceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SourceType'] = 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
        }
    }

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

Write-Verbose "Importing class 'RDSDBProxy'"

class RDSDBProxy : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBProxy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html'

    hidden [string[]] $_attributes = @('DBProxyArn','Endpoint')
    hidden [object] $_condition

    [string] $Type = 'AWS::RDS::DBProxy'
    [RDSDBProxyAuthFormat[]] $Auth
    [string] $DBProxyName
    [bool] $DebugLogging
    [string] $EngineFamily
    [int] $IdleClientTimeout
    [bool] $RequireTLS
    [string] $RoleArn
    [RDSDBProxyTagFormat[]] $Tags
    [string[]] $VpcSecurityGroupIds
    [string[]] $VpcSubnetIds
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Auth -Value {
            $this.Properties['Auth']
        } -SecondValue {
            param([ValidateType(([RDSDBProxyAuthFormat], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Auth'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DBProxyName -Value {
            $this.Properties['DBProxyName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DBProxyName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DebugLogging -Value {
            $this.Properties['DebugLogging']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DebugLogging'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EngineFamily -Value {
            $this.Properties['EngineFamily']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EngineFamily'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdleClientTimeout -Value {
            $this.Properties['IdleClientTimeout']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdleClientTimeout'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequireTLS -Value {
            $this.Properties['RequireTLS']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RequireTLS'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RoleArn -Value {
            $this.Properties['RoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([RDSDBProxyTagFormat], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcSecurityGroupIds -Value {
            $this.Properties['VpcSecurityGroupIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VpcSecurityGroupIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcSubnetIds -Value {
            $this.Properties['VpcSubnetIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['VpcSubnetIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'RDSDBProxyTargetGroup'"

class RDSDBProxyTargetGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSRDSDBProxyTargetGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html'

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

    [string] $Type = 'AWS::RDS::DBProxyTargetGroup'
    [string] $DBProxyName
    [string] $TargetGroupName
    [RDSDBProxyTargetGroupConnectionPoolConfigurationInfoFormat] $ConnectionPoolConfigurationInfo
    [string[]] $DBInstanceIdentifiers
    [string[]] $DBClusterIdentifiers
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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