VaporShell.SSM.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 'SSMDocumentDocumentRequires'"

class SSMDocumentDocumentRequires : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMDocumentDocumentRequires'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-document-documentrequires.html'

    hidden [object] $_name
    hidden [object] $_version

    [string] $Name
    [string] $Version

    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 Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'SSMPatchBaselinePatchStringDate'"

class SSMPatchBaselinePatchStringDate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMPatchBaselinePatchStringDate'



    hidden [void] _addAccessors() {
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskLoggingInfo'"

class SSMMaintenanceWindowTaskLoggingInfo : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskLoggingInfo'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-logginginfo.html'

    hidden [object] $_s3Bucket
    hidden [object] $_region
    hidden [object] $_s3Prefix

    [string] $S3Bucket
    [string] $Region
    [string] $S3Prefix

    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 Region -Value {
            $this._region
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._region = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3Prefix -Value {
            $this._s3Prefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3Prefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskTarget'"

class SSMMaintenanceWindowTaskTarget : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-target.html'

    hidden [object] $_values
    hidden [object] $_key

    [string[]] $Values
    [string] $Key

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

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

Write-Verbose "Importing class 'SSMAssociationInstanceAssociationOutputLocation'"

class SSMAssociationInstanceAssociationOutputLocation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMAssociationInstanceAssociationOutputLocation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-instanceassociationoutputlocation.html'

    hidden [object] $_s3Location

    [SSMAssociationS3OutputLocation] $S3Location

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

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskNotificationConfig'"

class SSMMaintenanceWindowTaskNotificationConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskNotificationConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-notificationconfig.html'

    hidden [object] $_notificationArn
    hidden [object] $_notificationType
    hidden [object] $_notificationEvents

    [string] $NotificationArn
    [string] $NotificationType
    [string[]] $NotificationEvents

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

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

Write-Verbose "Importing class 'SSMResourceDataSyncAwsOrganizationsSource'"

class SSMResourceDataSyncAwsOrganizationsSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMResourceDataSyncAwsOrganizationsSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-resourcedatasync-awsorganizationssource.html'

    hidden [object] $_organizationalUnits
    hidden [object] $_organizationSourceType

    [string[]] $OrganizationalUnits
    [string] $OrganizationSourceType

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

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

Write-Verbose "Importing class 'SSMAssociationTarget'"

class SSMAssociationTarget : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMAssociationTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-target.html'

    hidden [object] $_key
    hidden [object] $_values

    [string] $Key
    [string[]] $Values

    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 Values -Value {
            $this._values
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._values = @($value)
        }
    }

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

Write-Verbose "Importing class 'SSMResourceDataSyncSyncSource'"

class SSMResourceDataSyncSyncSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMResourceDataSyncSyncSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-resourcedatasync-syncsource.html'

    hidden [object] $_includeFutureRegions
    hidden [object] $_sourceRegions
    hidden [object] $_sourceType
    hidden [object] $_awsOrganizationsSource

    [bool] $IncludeFutureRegions
    [string[]] $SourceRegions
    [string] $SourceType
    [SSMResourceDataSyncAwsOrganizationsSource] $AwsOrganizationsSource

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IncludeFutureRegions -Value {
            $this._includeFutureRegions
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._includeFutureRegions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceRegions -Value {
            $this._sourceRegions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._sourceRegions = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SourceType -Value {
            $this._sourceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sourceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AwsOrganizationsSource -Value {
            $this._awsOrganizationsSource
        } -SecondValue {
            param([ValidateType(([SSMResourceDataSyncAwsOrganizationsSource], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._awsOrganizationsSource = $value
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters'"

class SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowautomationparameters.html'

    hidden [VSJson] $_parameters
    hidden [object] $_documentVersion

    [VSJson] $Parameters
    [string] $DocumentVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this._parameters
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._parameters = [VSJson]::Transform($value)
            Write-Debug $this._parameters
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DocumentVersion -Value {
            $this._documentVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._documentVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskTaskInvocationParameters'"

class SSMMaintenanceWindowTaskTaskInvocationParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskTaskInvocationParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-taskinvocationparameters.html'

    hidden [object] $_maintenanceWindowRunCommandParameters
    hidden [object] $_maintenanceWindowAutomationParameters
    hidden [object] $_maintenanceWindowStepFunctionsParameters
    hidden [object] $_maintenanceWindowLambdaParameters

    [SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters] $MaintenanceWindowRunCommandParameters
    [SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters] $MaintenanceWindowAutomationParameters
    [SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters] $MaintenanceWindowStepFunctionsParameters
    [SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters] $MaintenanceWindowLambdaParameters

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaintenanceWindowRunCommandParameters -Value {
            $this._maintenanceWindowRunCommandParameters
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maintenanceWindowRunCommandParameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaintenanceWindowAutomationParameters -Value {
            $this._maintenanceWindowAutomationParameters
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maintenanceWindowAutomationParameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaintenanceWindowStepFunctionsParameters -Value {
            $this._maintenanceWindowStepFunctionsParameters
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maintenanceWindowStepFunctionsParameters = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaintenanceWindowLambdaParameters -Value {
            $this._maintenanceWindowLambdaParameters
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maintenanceWindowLambdaParameters = $value
        }
    }

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

Write-Verbose "Importing class 'SSMPatchBaselinePatchFilter'"

class SSMPatchBaselinePatchFilter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMPatchBaselinePatchFilter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfilter.html'

    hidden [object] $_values
    hidden [object] $_key

    [string[]] $Values
    [string] $Key

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

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

Write-Verbose "Importing class 'SSMPatchBaselineRule'"

class SSMPatchBaselineRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMPatchBaselineRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rule.html'

    hidden [object] $_approveUntilDate
    hidden [object] $_enableNonSecurity
    hidden [object] $_patchFilterGroup
    hidden [object] $_approveAfterDays
    hidden [object] $_complianceLevel

    [SSMPatchBaselinePatchStringDate] $ApproveUntilDate
    [bool] $EnableNonSecurity
    [SSMPatchBaselinePatchFilterGroup] $PatchFilterGroup
    [int] $ApproveAfterDays
    [string] $ComplianceLevel

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApproveUntilDate -Value {
            $this._approveUntilDate
        } -SecondValue {
            param([ValidateType(([SSMPatchBaselinePatchStringDate], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._approveUntilDate = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnableNonSecurity -Value {
            $this._enableNonSecurity
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enableNonSecurity = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PatchFilterGroup -Value {
            $this._patchFilterGroup
        } -SecondValue {
            param([ValidateType(([SSMPatchBaselinePatchFilterGroup], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._patchFilterGroup = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApproveAfterDays -Value {
            $this._approveAfterDays
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._approveAfterDays = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComplianceLevel -Value {
            $this._complianceLevel
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._complianceLevel = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'SSMPatchBaselinePatchFilterGroup'"

class SSMPatchBaselinePatchFilterGroup : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMPatchBaselinePatchFilterGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfiltergroup.html'

    hidden [object] $_patchFilters

    [SSMPatchBaselinePatchFilter[]] $PatchFilters

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

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

Write-Verbose "Importing class 'SSMPatchBaselinePatchSource'"

class SSMPatchBaselinePatchSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMPatchBaselinePatchSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchsource.html'

    hidden [object] $_products
    hidden [object] $_configuration
    hidden [object] $_name

    [string[]] $Products
    [string] $Configuration
    [string] $Name

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

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTargetTargets'"

class SSMMaintenanceWindowTargetTargets : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTargetTargets'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtarget-targets.html'

    hidden [object] $_values
    hidden [object] $_key

    [string[]] $Values
    [string] $Key

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

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters'"

class SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowstepfunctionsparameters.html'

    hidden [object] $_input
    hidden [object] $_name

    [string] $Input
    [string] $Name

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

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

Write-Verbose "Importing class 'SSMPatchBaselineRuleGroup'"

class SSMPatchBaselineRuleGroup : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMPatchBaselineRuleGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rulegroup.html'

    hidden [object] $_patchRules

    [SSMPatchBaselineRule[]] $PatchRules

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

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

Write-Verbose "Importing class 'SSMResourceDataSyncS3Destination'"

class SSMResourceDataSyncS3Destination : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMResourceDataSyncS3Destination'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-resourcedatasync-s3destination.html'

    hidden [object] $_kMSKeyArn
    hidden [object] $_bucketPrefix
    hidden [object] $_bucketName
    hidden [object] $_bucketRegion
    hidden [object] $_syncFormat

    [string] $KMSKeyArn
    [string] $BucketPrefix
    [string] $BucketName
    [string] $BucketRegion
    [string] $SyncFormat

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name KMSKeyArn -Value {
            $this._kMSKeyArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kMSKeyArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketPrefix -Value {
            $this._bucketPrefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucketPrefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketName -Value {
            $this._bucketName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucketName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketRegion -Value {
            $this._bucketRegion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucketRegion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SyncFormat -Value {
            $this._syncFormat
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._syncFormat = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'SSMAssociationS3OutputLocation'"

class SSMAssociationS3OutputLocation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMAssociationS3OutputLocation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-s3outputlocation.html'

    hidden [object] $_outputS3Region
    hidden [object] $_outputS3BucketName
    hidden [object] $_outputS3KeyPrefix

    [string] $OutputS3Region
    [string] $OutputS3BucketName
    [string] $OutputS3KeyPrefix

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

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

Write-Verbose "Importing class 'SSMDocumentAttachmentsSource'"

class SSMDocumentAttachmentsSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMDocumentAttachmentsSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-document-attachmentssource.html'

    hidden [object] $_key
    hidden [object] $_values
    hidden [object] $_name

    [string] $Key
    [string[]] $Values
    [string] $Name

    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 Values -Value {
            $this._values
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._values = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters'"

class SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html'

    hidden [object] $_timeoutSeconds
    hidden [object] $_comment
    hidden [object] $_outputS3KeyPrefix
    hidden [VSJson] $_parameters
    hidden [object] $_documentHashType
    hidden [object] $_serviceRoleArn
    hidden [object] $_notificationConfig
    hidden [object] $_outputS3BucketName
    hidden [object] $_documentHash

    [int] $TimeoutSeconds
    [string] $Comment
    [string] $OutputS3KeyPrefix
    [VSJson] $Parameters
    [string] $DocumentHashType
    [string] $ServiceRoleArn
    [SSMMaintenanceWindowTaskNotificationConfig] $NotificationConfig
    [string] $OutputS3BucketName
    [string] $DocumentHash

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutSeconds -Value {
            $this._timeoutSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Comment -Value {
            $this._comment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comment = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OutputS3KeyPrefix -Value {
            $this._outputS3KeyPrefix
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._outputS3KeyPrefix = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this._parameters
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._parameters = [VSJson]::Transform($value)
            Write-Debug $this._parameters
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DocumentHashType -Value {
            $this._documentHashType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._documentHashType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceRoleArn -Value {
            $this._serviceRoleArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceRoleArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotificationConfig -Value {
            $this._notificationConfig
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskNotificationConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._notificationConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OutputS3BucketName -Value {
            $this._outputS3BucketName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._outputS3BucketName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DocumentHash -Value {
            $this._documentHash
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._documentHash = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters'"

class SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowlambdaparameters.html'

    hidden [object] $_clientContext
    hidden [object] $_qualifier
    hidden [object] $_payload

    [string] $ClientContext
    [string] $Qualifier
    [string] $Payload

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

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

Write-Verbose "Importing class 'SSMPatchBaseline'"

class SSMPatchBaseline : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMPatchBaseline'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::SSM::PatchBaseline'
    [string] $OperatingSystem
    [string] $Description
    [SSMPatchBaselineRuleGroup] $ApprovalRules
    [SSMPatchBaselinePatchSource[]] $Sources
    [string] $Name
    [string[]] $RejectedPatches
    [string[]] $ApprovedPatches
    [string] $RejectedPatchesAction
    [string[]] $PatchGroups
    [string] $ApprovedPatchesComplianceLevel
    [bool] $ApprovedPatchesEnableNonSecurity
    [SSMPatchBaselinePatchFilterGroup] $GlobalFilters
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name OperatingSystem -Value {
            $this.Properties['OperatingSystem']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OperatingSystem'] = 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 ApprovalRules -Value {
            $this.Properties['ApprovalRules']
        } -SecondValue {
            param([ValidateType(([SSMPatchBaselineRuleGroup], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApprovalRules'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sources -Value {
            $this.Properties['Sources']
        } -SecondValue {
            param([ValidateType(([SSMPatchBaselinePatchSource], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Sources'] = $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 RejectedPatches -Value {
            $this.Properties['RejectedPatches']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['RejectedPatches'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApprovedPatches -Value {
            $this.Properties['ApprovedPatches']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ApprovedPatches'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RejectedPatchesAction -Value {
            $this.Properties['RejectedPatchesAction']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RejectedPatchesAction'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PatchGroups -Value {
            $this.Properties['PatchGroups']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['PatchGroups'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApprovedPatchesComplianceLevel -Value {
            $this.Properties['ApprovedPatchesComplianceLevel']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApprovedPatchesComplianceLevel'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApprovedPatchesEnableNonSecurity -Value {
            $this.Properties['ApprovedPatchesEnableNonSecurity']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApprovedPatchesEnableNonSecurity'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name GlobalFilters -Value {
            $this.Properties['GlobalFilters']
        } -SecondValue {
            param([ValidateType(([SSMPatchBaselinePatchFilterGroup], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['GlobalFilters'] = $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
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTask'"

class SSMMaintenanceWindowTask : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMMaintenanceWindowTask'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::SSM::MaintenanceWindowTask'
    [string] $MaxErrors
    [string] $Description
    [string] $ServiceRoleArn
    [int] $Priority
    [string] $MaxConcurrency
    [SSMMaintenanceWindowTaskTarget[]] $Targets
    [string] $Name
    [string] $TaskArn
    [SSMMaintenanceWindowTaskTaskInvocationParameters] $TaskInvocationParameters
    [string] $WindowId
    [VSJson] $TaskParameters
    [string] $TaskType
    [SSMMaintenanceWindowTaskLoggingInfo] $LoggingInfo
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxErrors -Value {
            $this.Properties['MaxErrors']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxErrors'] = 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 ServiceRoleArn -Value {
            $this.Properties['ServiceRoleArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceRoleArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Priority -Value {
            $this.Properties['Priority']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Priority'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxConcurrency -Value {
            $this.Properties['MaxConcurrency']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxConcurrency'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Targets -Value {
            $this.Properties['Targets']
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskTarget], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Targets'] = $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 TaskArn -Value {
            $this.Properties['TaskArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TaskArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TaskInvocationParameters -Value {
            $this.Properties['TaskInvocationParameters']
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskTaskInvocationParameters], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TaskInvocationParameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WindowId -Value {
            $this.Properties['WindowId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WindowId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TaskParameters -Value {
            $this.Properties['TaskParameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['TaskParameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['TaskParameters']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TaskType -Value {
            $this.Properties['TaskType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TaskType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LoggingInfo -Value {
            $this.Properties['LoggingInfo']
        } -SecondValue {
            param([ValidateType(([SSMMaintenanceWindowTaskLoggingInfo], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LoggingInfo'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindow'"

class SSMMaintenanceWindow : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMMaintenanceWindow'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindow.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::SSM::MaintenanceWindow'
    [string] $StartDate
    [string] $Description
    [bool] $AllowUnassociatedTargets
    [int] $Cutoff
    [string] $Schedule
    [int] $Duration
    [int] $ScheduleOffset
    [string] $EndDate
    [VSTag[]] $Tags
    [string] $Name
    [string] $ScheduleTimezone
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartDate -Value {
            $this.Properties['StartDate']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StartDate'] = 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 AllowUnassociatedTargets -Value {
            $this.Properties['AllowUnassociatedTargets']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AllowUnassociatedTargets'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cutoff -Value {
            $this.Properties['Cutoff']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Cutoff'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this.Properties['Schedule']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Schedule'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Duration -Value {
            $this.Properties['Duration']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Duration'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduleOffset -Value {
            $this.Properties['ScheduleOffset']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScheduleOffset'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndDate -Value {
            $this.Properties['EndDate']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EndDate'] = 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 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 ScheduleTimezone -Value {
            $this.Properties['ScheduleTimezone']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScheduleTimezone'] = 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
        }
    }

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

Write-Verbose "Importing class 'SSMParameter'"

class SSMParameter : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMParameter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html'

    hidden [string[]] $_attributes = @('Type','Value')
    hidden [object] $_condition

    [string] $Type = 'AWS::SSM::Parameter'
    [string] $ParameterType
    [string] $Description
    [string] $Policies
    [string] $AllowedPattern
    [string] $Tier
    [string] $Value
    [string] $DataType
    [VSJson] $Tags
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ParameterType -Value {
            $this.Properties['ParameterType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ParameterType'] = 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 Policies -Value {
            $this.Properties['Policies']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Policies'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowedPattern -Value {
            $this.Properties['AllowedPattern']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AllowedPattern'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tier -Value {
            $this.Properties['Tier']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tier'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this.Properties['Value']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Value'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataType -Value {
            $this.Properties['DataType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DataType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Tags'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Tags']
        }
        $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 Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'SSMResourceDataSync'"

class SSMResourceDataSync : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMResourceDataSync'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html'

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

    [string] $Type = 'AWS::SSM::ResourceDataSync'
    [SSMResourceDataSyncS3Destination] $S3Destination
    [string] $KMSKeyArn
    [SSMResourceDataSyncSyncSource] $SyncSource
    [string] $BucketName
    [string] $BucketRegion
    [string] $SyncFormat
    [string] $SyncName
    [string] $SyncType
    [string] $BucketPrefix
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3Destination -Value {
            $this.Properties['S3Destination']
        } -SecondValue {
            param([ValidateType(([SSMResourceDataSyncS3Destination], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['S3Destination'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KMSKeyArn -Value {
            $this.Properties['KMSKeyArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KMSKeyArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SyncSource -Value {
            $this.Properties['SyncSource']
        } -SecondValue {
            param([ValidateType(([SSMResourceDataSyncSyncSource], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SyncSource'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketName -Value {
            $this.Properties['BucketName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BucketName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketRegion -Value {
            $this.Properties['BucketRegion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BucketRegion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SyncFormat -Value {
            $this.Properties['SyncFormat']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SyncFormat'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SyncName -Value {
            $this.Properties['SyncName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SyncName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SyncType -Value {
            $this.Properties['SyncType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SyncType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketPrefix -Value {
            $this.Properties['BucketPrefix']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BucketPrefix'] = 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
        }
    }

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

Write-Verbose "Importing class 'SSMMaintenanceWindowTarget'"

class SSMMaintenanceWindowTarget : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMMaintenanceWindowTarget'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtarget.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::SSM::MaintenanceWindowTarget'
    [string] $OwnerInformation
    [string] $Description
    [string] $WindowId
    [string] $ResourceType
    [SSMMaintenanceWindowTargetTargets[]] $Targets
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'SSMDocument'"

class SSMDocument : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMDocument'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::SSM::Document'
    [VSJson] $Content
    [SSMDocumentAttachmentsSource[]] $Attachments
    [string] $Name
    [string] $VersionName
    [string] $DocumentType
    [string] $DocumentFormat
    [string] $TargetType
    [VSTag[]] $Tags
    [SSMDocumentDocumentRequires[]] $Requires
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Content -Value {
            $this.Properties['Content']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Content'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Content']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Attachments -Value {
            $this.Properties['Attachments']
        } -SecondValue {
            param([ValidateType(([SSMDocumentAttachmentsSource], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Attachments'] = $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 VersionName -Value {
            $this.Properties['VersionName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VersionName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DocumentType -Value {
            $this.Properties['DocumentType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DocumentType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DocumentFormat -Value {
            $this.Properties['DocumentFormat']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DocumentFormat'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetType -Value {
            $this.Properties['TargetType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name 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 Requires -Value {
            $this.Properties['Requires']
        } -SecondValue {
            param([ValidateType(([SSMDocumentDocumentRequires], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Requires'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'SSMAssociation'"

class SSMAssociation : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSSMAssociation'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html'

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

    [string] $Type = 'AWS::SSM::Association'
    [string] $AssociationName
    [string] $DocumentVersion
    [string] $InstanceId
    [string] $Name
    [VSJson] $Parameters
    [string] $ScheduleExpression
    [SSMAssociationTarget[]] $Targets
    [SSMAssociationInstanceAssociationOutputLocation] $OutputLocation
    [string] $AutomationTargetParameterName
    [string] $MaxErrors
    [string] $MaxConcurrency
    [string] $ComplianceSeverity
    [string] $SyncCompliance
    [int] $WaitForSuccessTimeoutSeconds
    [bool] $ApplyOnlyAtCronInterval
    [string[]] $CalendarNames
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AssociationName -Value {
            $this.Properties['AssociationName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AssociationName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DocumentVersion -Value {
            $this.Properties['DocumentVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DocumentVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceId -Value {
            $this.Properties['InstanceId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceId'] = 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 Parameters -Value {
            $this.Properties['Parameters']
        } -SecondValue {
            param([ValidateType(([VSJson], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Parameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScheduleExpression -Value {
            $this.Properties['ScheduleExpression']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScheduleExpression'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Targets -Value {
            $this.Properties['Targets']
        } -SecondValue {
            param([ValidateType(([SSMAssociationTarget], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Targets'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OutputLocation -Value {
            $this.Properties['OutputLocation']
        } -SecondValue {
            param([ValidateType(([SSMAssociationInstanceAssociationOutputLocation], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OutputLocation'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutomationTargetParameterName -Value {
            $this.Properties['AutomationTargetParameterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutomationTargetParameterName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxErrors -Value {
            $this.Properties['MaxErrors']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxErrors'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxConcurrency -Value {
            $this.Properties['MaxConcurrency']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaxConcurrency'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComplianceSeverity -Value {
            $this.Properties['ComplianceSeverity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ComplianceSeverity'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SyncCompliance -Value {
            $this.Properties['SyncCompliance']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SyncCompliance'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WaitForSuccessTimeoutSeconds -Value {
            $this.Properties['WaitForSuccessTimeoutSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WaitForSuccessTimeoutSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApplyOnlyAtCronInterval -Value {
            $this.Properties['ApplyOnlyAtCronInterval']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ApplyOnlyAtCronInterval'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CalendarNames -Value {
            $this.Properties['CalendarNames']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['CalendarNames'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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