VaporShell.AppStream.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 'AppStreamImageBuilderVpcConfig'"

class AppStreamImageBuilderVpcConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamImageBuilderVpcConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-imagebuilder-vpcconfig.html'

    hidden [object] $_securityGroupIds
    hidden [object] $_subnetIds

    [string[]] $SecurityGroupIds
    [string[]] $SubnetIds

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

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

Write-Verbose "Importing class 'AppStreamFleetDomainJoinInfo'"

class AppStreamFleetDomainJoinInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamFleetDomainJoinInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-fleet-domainjoininfo.html'

    hidden [object] $_organizationalUnitDistinguishedName
    hidden [object] $_directoryName

    [string] $OrganizationalUnitDistinguishedName
    [string] $DirectoryName

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

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

Write-Verbose "Importing class 'AppStreamStackAccessEndpoint'"

class AppStreamStackAccessEndpoint : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamStackAccessEndpoint'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-accessendpoint.html'

    hidden [object] $_endpointType
    hidden [object] $_vpceId

    [string] $EndpointType
    [string] $VpceId

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

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

Write-Verbose "Importing class 'AppStreamApplicationS3Location'"

class AppStreamApplicationS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamApplicationS3Location'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-application-s3location.html'

    hidden [object] $_s3Bucket
    hidden [object] $_s3Key

    [string] $S3Bucket
    [string] $S3Key

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

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

Write-Verbose "Importing class 'AppStreamFleetVpcConfig'"

class AppStreamFleetVpcConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamFleetVpcConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-fleet-vpcconfig.html'

    hidden [object] $_subnetIds
    hidden [object] $_securityGroupIds

    [string[]] $SubnetIds
    [string[]] $SecurityGroupIds

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

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

Write-Verbose "Importing class 'AppStreamStackUserSetting'"

class AppStreamStackUserSetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamStackUserSetting'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-usersetting.html'

    hidden [object] $_action
    hidden [object] $_permission

    [string] $Action
    [string] $Permission

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

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

Write-Verbose "Importing class 'AppStreamImageBuilderAccessEndpoint'"

class AppStreamImageBuilderAccessEndpoint : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamImageBuilderAccessEndpoint'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-imagebuilder-accessendpoint.html'

    hidden [object] $_endpointType
    hidden [object] $_vpceId

    [string] $EndpointType
    [string] $VpceId

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

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

Write-Verbose "Importing class 'AppStreamStackApplicationSettings'"

class AppStreamStackApplicationSettings : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamStackApplicationSettings'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-applicationsettings.html'

    hidden [object] $_settingsGroup
    hidden [object] $_enabled

    [string] $SettingsGroup
    [bool] $Enabled

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

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

Write-Verbose "Importing class 'AppStreamDirectoryConfigServiceAccountCredentials'"

class AppStreamDirectoryConfigServiceAccountCredentials : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamDirectoryConfigServiceAccountCredentials'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-directoryconfig-serviceaccountcredentials.html'

    hidden [object] $_accountName
    hidden [object] $_accountPassword

    [string] $AccountName
    [string] $AccountPassword

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

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

Write-Verbose "Importing class 'AppStreamAppBlockS3Location'"

class AppStreamAppBlockS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamAppBlockS3Location'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-appblock-s3location.html'

    hidden [object] $_s3Bucket
    hidden [object] $_s3Key

    [string] $S3Bucket
    [string] $S3Key

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

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

Write-Verbose "Importing class 'AppStreamFleetComputeCapacity'"

class AppStreamFleetComputeCapacity : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamFleetComputeCapacity'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-fleet-computecapacity.html'

    hidden [object] $_desiredInstances

    [int] $DesiredInstances

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

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

Write-Verbose "Importing class 'AppStreamAppBlockScriptDetails'"

class AppStreamAppBlockScriptDetails : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamAppBlockScriptDetails'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-appblock-scriptdetails.html'

    hidden [object] $_scriptS3Location
    hidden [object] $_executablePath
    hidden [object] $_executableParameters
    hidden [object] $_timeoutInSeconds

    [AppStreamAppBlockS3Location] $ScriptS3Location
    [string] $ExecutablePath
    [string] $ExecutableParameters
    [int] $TimeoutInSeconds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScriptS3Location -Value {
            $this._scriptS3Location
        } -SecondValue {
            param([ValidateType(([AppStreamAppBlockS3Location], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scriptS3Location = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExecutablePath -Value {
            $this._executablePath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._executablePath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExecutableParameters -Value {
            $this._executableParameters
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._executableParameters = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutInSeconds -Value {
            $this._timeoutInSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutInSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'AppStreamImageBuilderDomainJoinInfo'"

class AppStreamImageBuilderDomainJoinInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamImageBuilderDomainJoinInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-imagebuilder-domainjoininfo.html'

    hidden [object] $_organizationalUnitDistinguishedName
    hidden [object] $_directoryName

    [string] $OrganizationalUnitDistinguishedName
    [string] $DirectoryName

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

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

Write-Verbose "Importing class 'AppStreamStackStorageConnector'"

class AppStreamStackStorageConnector : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAppStreamStackStorageConnector'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appstream-stack-storageconnector.html'

    hidden [object] $_domains
    hidden [object] $_resourceIdentifier
    hidden [object] $_connectorType

    [string[]] $Domains
    [string] $ResourceIdentifier
    [string] $ConnectorType

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

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

Write-Verbose "Importing class 'AppStreamStack'"

class AppStreamStack : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamStack'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-stack.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::Stack'
    [string] $Description
    [AppStreamStackStorageConnector[]] $StorageConnectors
    [bool] $DeleteStorageConnectors
    [string[]] $EmbedHostDomains
    [AppStreamStackUserSetting[]] $UserSettings
    [string[]] $AttributesToDelete
    [string] $RedirectURL
    [string] $Name
    [string] $FeedbackURL
    [AppStreamStackApplicationSettings] $ApplicationSettings
    [string] $DisplayName
    [VSTag[]] $Tags
    [AppStreamStackAccessEndpoint[]] $AccessEndpoints
    [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 StorageConnectors -Value {
            $this.Properties['StorageConnectors']
        } -SecondValue {
            param([ValidateType(([AppStreamStackStorageConnector], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['StorageConnectors'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeleteStorageConnectors -Value {
            $this.Properties['DeleteStorageConnectors']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeleteStorageConnectors'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EmbedHostDomains -Value {
            $this.Properties['EmbedHostDomains']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['EmbedHostDomains'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserSettings -Value {
            $this.Properties['UserSettings']
        } -SecondValue {
            param([ValidateType(([AppStreamStackUserSetting], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['UserSettings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AttributesToDelete -Value {
            $this.Properties['AttributesToDelete']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AttributesToDelete'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RedirectURL -Value {
            $this.Properties['RedirectURL']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RedirectURL'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FeedbackURL -Value {
            $this.Properties['FeedbackURL']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FeedbackURL'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApplicationSettings -Value {
            $this.Properties['ApplicationSettings']
        } -SecondValue {
            param([ValidateType(([AppStreamStackApplicationSettings], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApplicationSettings'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisplayName -Value {
            $this.Properties['DisplayName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisplayName'] = 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 AccessEndpoints -Value {
            $this.Properties['AccessEndpoints']
        } -SecondValue {
            param([ValidateType(([AppStreamStackAccessEndpoint], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AccessEndpoints'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AppStreamUser'"

class AppStreamUser : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamUser'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-user.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::User'
    [string] $UserName
    [string] $FirstName
    [string] $MessageAction
    [string] $LastName
    [string] $AuthenticationType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'AppStreamStackUserAssociation'"

class AppStreamStackUserAssociation : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamStackUserAssociation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-stackuserassociation.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::StackUserAssociation'
    [bool] $SendEmailNotification
    [string] $UserName
    [string] $StackName
    [string] $AuthenticationType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'AppStreamAppBlock'"

class AppStreamAppBlock : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamAppBlock'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-appblock.html'

    hidden [string[]] $_attributes = @('Arn','CreatedTime')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::AppBlock'
    [string] $Name
    [string] $Description
    [string] $DisplayName
    [AppStreamAppBlockS3Location] $SourceS3Location
    [AppStreamAppBlockScriptDetails] $SetupScriptDetails
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'AppStreamApplicationFleetAssociation'"

class AppStreamApplicationFleetAssociation : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamApplicationFleetAssociation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-applicationfleetassociation.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::ApplicationFleetAssociation'
    [string] $FleetName
    [string] $ApplicationArn
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'AppStreamApplication'"

class AppStreamApplication : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamApplication'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-application.html'

    hidden [string[]] $_attributes = @('Arn','CreatedTime')
    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::Application'
    [string] $Name
    [string] $DisplayName
    [string] $Description
    [string] $LaunchPath
    [string] $LaunchParameters
    [string] $WorkingDirectory
    [string[]] $InstanceFamilies
    [AppStreamApplicationS3Location] $IconS3Location
    [string] $AppBlockArn
    [string[]] $Platforms
    [VSTag[]] $Tags
    [string[]] $AttributesToDelete
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisplayName -Value {
            $this.Properties['DisplayName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisplayName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $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 LaunchPath -Value {
            $this.Properties['LaunchPath']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LaunchPath'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchParameters -Value {
            $this.Properties['LaunchParameters']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LaunchParameters'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WorkingDirectory -Value {
            $this.Properties['WorkingDirectory']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WorkingDirectory'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceFamilies -Value {
            $this.Properties['InstanceFamilies']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['InstanceFamilies'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IconS3Location -Value {
            $this.Properties['IconS3Location']
        } -SecondValue {
            param([ValidateType(([AppStreamApplicationS3Location], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IconS3Location'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AppBlockArn -Value {
            $this.Properties['AppBlockArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AppBlockArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Platforms -Value {
            $this.Properties['Platforms']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Platforms'] = @($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 AttributesToDelete -Value {
            $this.Properties['AttributesToDelete']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AttributesToDelete'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AppStreamFleet'"

class AppStreamFleet : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamFleet'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::Fleet'
    [string] $Description
    [AppStreamFleetComputeCapacity] $ComputeCapacity
    [string] $Platform
    [AppStreamFleetVpcConfig] $VpcConfig
    [string] $FleetType
    [bool] $EnableDefaultInternetAccess
    [AppStreamFleetDomainJoinInfo] $DomainJoinInfo
    [string] $Name
    [string] $ImageName
    [int] $MaxUserDurationInSeconds
    [int] $IdleDisconnectTimeoutInSeconds
    [string[]] $UsbDeviceFilterStrings
    [int] $DisconnectTimeoutInSeconds
    [string] $DisplayName
    [string] $StreamView
    [string] $IamRoleArn
    [string] $InstanceType
    [int] $MaxConcurrentSessions
    [VSTag[]] $Tags
    [string] $ImageArn
    [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 ComputeCapacity -Value {
            $this.Properties['ComputeCapacity']
        } -SecondValue {
            param([ValidateType(([AppStreamFleetComputeCapacity], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ComputeCapacity'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Platform -Value {
            $this.Properties['Platform']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Platform'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcConfig -Value {
            $this.Properties['VpcConfig']
        } -SecondValue {
            param([ValidateType(([AppStreamFleetVpcConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FleetType -Value {
            $this.Properties['FleetType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FleetType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableDefaultInternetAccess -Value {
            $this.Properties['EnableDefaultInternetAccess']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableDefaultInternetAccess'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainJoinInfo -Value {
            $this.Properties['DomainJoinInfo']
        } -SecondValue {
            param([ValidateType(([AppStreamFleetDomainJoinInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainJoinInfo'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageName -Value {
            $this.Properties['ImageName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxUserDurationInSeconds -Value {
            $this.Properties['MaxUserDurationInSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxUserDurationInSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdleDisconnectTimeoutInSeconds -Value {
            $this.Properties['IdleDisconnectTimeoutInSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdleDisconnectTimeoutInSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UsbDeviceFilterStrings -Value {
            $this.Properties['UsbDeviceFilterStrings']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['UsbDeviceFilterStrings'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisconnectTimeoutInSeconds -Value {
            $this.Properties['DisconnectTimeoutInSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisconnectTimeoutInSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisplayName -Value {
            $this.Properties['DisplayName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisplayName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StreamView -Value {
            $this.Properties['StreamView']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StreamView'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamRoleArn -Value {
            $this.Properties['IamRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IamRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this.Properties['InstanceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxConcurrentSessions -Value {
            $this.Properties['MaxConcurrentSessions']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxConcurrentSessions'] = if ($cast = $value -as [int]) {
                $cast
            }
            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 ImageArn -Value {
            $this.Properties['ImageArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageArn'] = 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
        }
    }

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

Write-Verbose "Importing class 'AppStreamImageBuilder'"

class AppStreamImageBuilder : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamImageBuilder'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html'

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

    [string] $Type = 'AWS::AppStream::ImageBuilder'
    [string] $Description
    [AppStreamImageBuilderVpcConfig] $VpcConfig
    [bool] $EnableDefaultInternetAccess
    [AppStreamImageBuilderDomainJoinInfo] $DomainJoinInfo
    [string] $AppstreamAgentVersion
    [string] $Name
    [string] $ImageName
    [string] $DisplayName
    [string] $IamRoleArn
    [string] $InstanceType
    [VSTag[]] $Tags
    [string] $ImageArn
    [AppStreamImageBuilderAccessEndpoint[]] $AccessEndpoints
    [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 VpcConfig -Value {
            $this.Properties['VpcConfig']
        } -SecondValue {
            param([ValidateType(([AppStreamImageBuilderVpcConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableDefaultInternetAccess -Value {
            $this.Properties['EnableDefaultInternetAccess']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EnableDefaultInternetAccess'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainJoinInfo -Value {
            $this.Properties['DomainJoinInfo']
        } -SecondValue {
            param([ValidateType(([AppStreamImageBuilderDomainJoinInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DomainJoinInfo'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AppstreamAgentVersion -Value {
            $this.Properties['AppstreamAgentVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AppstreamAgentVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ImageName -Value {
            $this.Properties['ImageName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DisplayName -Value {
            $this.Properties['DisplayName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DisplayName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IamRoleArn -Value {
            $this.Properties['IamRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IamRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this.Properties['InstanceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceType'] = 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 ImageArn -Value {
            $this.Properties['ImageArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ImageArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessEndpoints -Value {
            $this.Properties['AccessEndpoints']
        } -SecondValue {
            param([ValidateType(([AppStreamImageBuilderAccessEndpoint], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['AccessEndpoints'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'AppStreamDirectoryConfig'"

class AppStreamDirectoryConfig : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamDirectoryConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-directoryconfig.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::DirectoryConfig'
    [string[]] $OrganizationalUnitDistinguishedNames
    [AppStreamDirectoryConfigServiceAccountCredentials] $ServiceAccountCredentials
    [string] $DirectoryName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name OrganizationalUnitDistinguishedNames -Value {
            $this.Properties['OrganizationalUnitDistinguishedNames']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['OrganizationalUnitDistinguishedNames'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceAccountCredentials -Value {
            $this.Properties['ServiceAccountCredentials']
        } -SecondValue {
            param([ValidateType(([AppStreamDirectoryConfigServiceAccountCredentials], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceAccountCredentials'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DirectoryName -Value {
            $this.Properties['DirectoryName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DirectoryName'] = 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
        }
    }

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

Write-Verbose "Importing class 'AppStreamStackFleetAssociation'"

class AppStreamStackFleetAssociation : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAppStreamStackFleetAssociation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-stackfleetassociation.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::AppStream::StackFleetAssociation'
    [string] $FleetName
    [string] $StackName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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