VaporShell.Config.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 'ConfigConfigurationAggregatorOrganizationAggregationSource'"

class ConfigConfigurationAggregatorOrganizationAggregationSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigConfigurationAggregatorOrganizationAggregationSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html'

    hidden [object] $_allAwsRegions
    hidden [object] $_awsRegions
    hidden [object] $_roleArn

    [bool] $AllAwsRegions
    [string[]] $AwsRegions
    [string] $RoleArn

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

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

Write-Verbose "Importing class 'ConfigDeliveryChannelConfigSnapshotDeliveryProperties'"

class ConfigDeliveryChannelConfigSnapshotDeliveryProperties : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigDeliveryChannelConfigSnapshotDeliveryProperties'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html'

    hidden [object] $_deliveryFrequency

    [string] $DeliveryFrequency

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

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

Write-Verbose "Importing class 'ConfigConfigurationRecorderRecordingGroup'"

class ConfigConfigurationRecorderRecordingGroup : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigConfigurationRecorderRecordingGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html'

    hidden [object] $_allSupported
    hidden [object] $_includeGlobalResourceTypes
    hidden [object] $_resourceTypes

    [bool] $AllSupported
    [bool] $IncludeGlobalResourceTypes
    [string[]] $ResourceTypes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllSupported -Value {
            $this._allSupported
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allSupported = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IncludeGlobalResourceTypes -Value {
            $this._includeGlobalResourceTypes
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._includeGlobalResourceTypes = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceTypes -Value {
            $this._resourceTypes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resourceTypes = @($value)
        }
    }

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

Write-Verbose "Importing class 'ConfigRemediationConfigurationResourceValue'"

class ConfigRemediationConfigurationResourceValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigRemediationConfigurationResourceValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-resourcevalue.html'

    hidden [object] $_value

    [string] $Value

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

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

Write-Verbose "Importing class 'ConfigRemediationConfigurationRemediationParameterValue'"

class ConfigRemediationConfigurationRemediationParameterValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigRemediationConfigurationRemediationParameterValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-remediationparametervalue.html'

    hidden [object] $_resourceValue
    hidden [object] $_staticValue

    [ConfigRemediationConfigurationResourceValue] $ResourceValue
    [ConfigRemediationConfigurationStaticValue] $StaticValue

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceValue -Value {
            $this._resourceValue
        } -SecondValue {
            param([ValidateType(([ConfigRemediationConfigurationResourceValue], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceValue = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StaticValue -Value {
            $this._staticValue
        } -SecondValue {
            param([ValidateType(([ConfigRemediationConfigurationStaticValue], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._staticValue = $value
        }
    }

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

Write-Verbose "Importing class 'ConfigConformancePackConformancePackInputParameter'"

class ConfigConformancePackConformancePackInputParameter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigConformancePackConformancePackInputParameter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-conformancepackinputparameter.html'

    hidden [object] $_parameterName
    hidden [object] $_parameterValue

    [string] $ParameterName
    [string] $ParameterValue

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

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

Write-Verbose "Importing class 'ConfigConfigRuleSource'"

class ConfigConfigRuleSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigConfigRuleSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html'

    hidden [object] $_owner
    hidden [object] $_sourceDetails
    hidden [object] $_sourceIdentifier

    [string] $Owner
    [ConfigConfigRuleSourceDetail[]] $SourceDetails
    [string] $SourceIdentifier

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

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

Write-Verbose "Importing class 'ConfigConfigurationAggregatorAccountAggregationSource'"

class ConfigConfigurationAggregatorAccountAggregationSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigConfigurationAggregatorAccountAggregationSource'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html'

    hidden [object] $_allAwsRegions
    hidden [object] $_awsRegions
    hidden [object] $_accountIds

    [bool] $AllAwsRegions
    [string[]] $AwsRegions
    [string[]] $AccountIds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllAwsRegions -Value {
            $this._allAwsRegions
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allAwsRegions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AwsRegions -Value {
            $this._awsRegions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._awsRegions = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccountIds -Value {
            $this._accountIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._accountIds = @($value)
        }
    }

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

Write-Verbose "Importing class 'ConfigOrganizationConformancePackConformancePackInputParameter'"

class ConfigOrganizationConformancePackConformancePackInputParameter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigOrganizationConformancePackConformancePackInputParameter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconformancepack-conformancepackinputparameter.html'

    hidden [object] $_parameterName
    hidden [object] $_parameterValue

    [string] $ParameterName
    [string] $ParameterValue

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

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

Write-Verbose "Importing class 'ConfigConfigRuleScope'"

class ConfigConfigRuleScope : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigConfigRuleScope'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html'

    hidden [object] $_complianceResourceId
    hidden [object] $_complianceResourceTypes
    hidden [object] $_tagKey
    hidden [object] $_tagValue

    [string] $ComplianceResourceId
    [string[]] $ComplianceResourceTypes
    [string] $TagKey
    [string] $TagValue

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComplianceResourceId -Value {
            $this._complianceResourceId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._complianceResourceId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComplianceResourceTypes -Value {
            $this._complianceResourceTypes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._complianceResourceTypes = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagKey -Value {
            $this._tagKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tagKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagValue -Value {
            $this._tagValue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tagValue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ConfigOrganizationConfigRuleOrganizationManagedRuleMetadata'"

class ConfigOrganizationConfigRuleOrganizationManagedRuleMetadata : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigOrganizationConfigRuleOrganizationManagedRuleMetadata'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationmanagedrulemetadata.html'

    hidden [object] $_tagKeyScope
    hidden [object] $_tagValueScope
    hidden [object] $_description
    hidden [object] $_resourceIdScope
    hidden [object] $_ruleIdentifier
    hidden [object] $_resourceTypesScope
    hidden [object] $_maximumExecutionFrequency
    hidden [object] $_inputParameters

    [string] $TagKeyScope
    [string] $TagValueScope
    [string] $Description
    [string] $ResourceIdScope
    [string] $RuleIdentifier
    [string[]] $ResourceTypesScope
    [string] $MaximumExecutionFrequency
    [string] $InputParameters

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagKeyScope -Value {
            $this._tagKeyScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tagKeyScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagValueScope -Value {
            $this._tagValueScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tagValueScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceIdScope -Value {
            $this._resourceIdScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceIdScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RuleIdentifier -Value {
            $this._ruleIdentifier
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ruleIdentifier = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceTypesScope -Value {
            $this._resourceTypesScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resourceTypesScope = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumExecutionFrequency -Value {
            $this._maximumExecutionFrequency
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumExecutionFrequency = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InputParameters -Value {
            $this._inputParameters
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._inputParameters = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ConfigRemediationConfigurationSsmControls'"

class ConfigRemediationConfigurationSsmControls : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigRemediationConfigurationSsmControls'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-ssmcontrols.html'

    hidden [object] $_errorPercentage
    hidden [object] $_concurrentExecutionRatePercentage

    [int] $ErrorPercentage
    [int] $ConcurrentExecutionRatePercentage

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

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

Write-Verbose "Importing class 'ConfigRemediationConfigurationStaticValue'"

class ConfigRemediationConfigurationStaticValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigRemediationConfigurationStaticValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-staticvalue.html'

    hidden [object] $_values

    [string[]] $Values

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

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

Write-Verbose "Importing class 'ConfigRemediationConfigurationExecutionControls'"

class ConfigRemediationConfigurationExecutionControls : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigRemediationConfigurationExecutionControls'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-executioncontrols.html'

    hidden [object] $_ssmControls

    [ConfigRemediationConfigurationSsmControls] $SsmControls

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

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

Write-Verbose "Importing class 'ConfigConfigRuleSourceDetail'"

class ConfigConfigRuleSourceDetail : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigConfigRuleSourceDetail'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html'

    hidden [object] $_eventSource
    hidden [object] $_maximumExecutionFrequency
    hidden [object] $_messageType

    [string] $EventSource
    [string] $MaximumExecutionFrequency
    [string] $MessageType

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

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

Write-Verbose "Importing class 'ConfigOrganizationConfigRuleOrganizationCustomRuleMetadata'"

class ConfigOrganizationConfigRuleOrganizationCustomRuleMetadata : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSConfigOrganizationConfigRuleOrganizationCustomRuleMetadata'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconfigrule-organizationcustomrulemetadata.html'

    hidden [object] $_tagKeyScope
    hidden [object] $_tagValueScope
    hidden [object] $_description
    hidden [object] $_resourceIdScope
    hidden [object] $_lambdaFunctionArn
    hidden [object] $_organizationConfigRuleTriggerTypes
    hidden [object] $_resourceTypesScope
    hidden [object] $_maximumExecutionFrequency
    hidden [object] $_inputParameters

    [string] $TagKeyScope
    [string] $TagValueScope
    [string] $Description
    [string] $ResourceIdScope
    [string] $LambdaFunctionArn
    [string[]] $OrganizationConfigRuleTriggerTypes
    [string[]] $ResourceTypesScope
    [string] $MaximumExecutionFrequency
    [string] $InputParameters

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagKeyScope -Value {
            $this._tagKeyScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tagKeyScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TagValueScope -Value {
            $this._tagValueScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tagValueScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceIdScope -Value {
            $this._resourceIdScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resourceIdScope = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LambdaFunctionArn -Value {
            $this._lambdaFunctionArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lambdaFunctionArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OrganizationConfigRuleTriggerTypes -Value {
            $this._organizationConfigRuleTriggerTypes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._organizationConfigRuleTriggerTypes = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResourceTypesScope -Value {
            $this._resourceTypesScope
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._resourceTypesScope = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumExecutionFrequency -Value {
            $this._maximumExecutionFrequency
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumExecutionFrequency = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InputParameters -Value {
            $this._inputParameters
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._inputParameters = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

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

Write-Verbose "Importing class 'ConfigDeliveryChannel'"

class ConfigDeliveryChannel : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigDeliveryChannel'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Config::DeliveryChannel'
    [ConfigDeliveryChannelConfigSnapshotDeliveryProperties] $ConfigSnapshotDeliveryProperties
    [string] $Name
    [string] $S3BucketName
    [string] $S3KeyPrefix
    [string] $S3KmsKeyArn
    [string] $SnsTopicARN
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'ConfigOrganizationConfigRule'"

class ConfigOrganizationConfigRule : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigOrganizationConfigRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Config::OrganizationConfigRule'
    [ConfigOrganizationConfigRuleOrganizationManagedRuleMetadata] $OrganizationManagedRuleMetadata
    [string] $OrganizationConfigRuleName
    [ConfigOrganizationConfigRuleOrganizationCustomRuleMetadata] $OrganizationCustomRuleMetadata
    [string[]] $ExcludedAccounts
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'ConfigConfigRule'"

class ConfigConfigRule : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigConfigRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html'

    hidden [string[]] $_attributes = @('Arn','Compliance.Type','ConfigRuleId')
    hidden [object] $_condition

    [string] $Type = 'AWS::Config::ConfigRule'
    [string] $ConfigRuleName
    [string] $Description
    [VSJson] $InputParameters
    [string] $MaximumExecutionFrequency
    [ConfigConfigRuleScope] $Scope
    [ConfigConfigRuleSource] $Source
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'ConfigStoredQuery'"

class ConfigStoredQuery : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigStoredQuery'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html'

    hidden [string[]] $_attributes = @('QueryArn','QueryId')
    hidden [object] $_condition

    [string] $Type = 'AWS::Config::StoredQuery'
    [string] $QueryName
    [string] $QueryDescription
    [string] $QueryExpression
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'ConfigRemediationConfiguration'"

class ConfigRemediationConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigRemediationConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Config::RemediationConfiguration'
    [string] $TargetVersion
    [ConfigRemediationConfigurationExecutionControls] $ExecutionControls
    [VSJson] $Parameters
    [string] $TargetType
    [string] $ConfigRuleName
    [string] $ResourceType
    [int] $RetryAttemptSeconds
    [int] $MaximumAutomaticAttempts
    [string] $TargetId
    [bool] $Automatic
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetVersion -Value {
            $this.Properties['TargetVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExecutionControls -Value {
            $this.Properties['ExecutionControls']
        } -SecondValue {
            param([ValidateType(([ConfigRemediationConfigurationExecutionControls], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ExecutionControls'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this.Properties['Parameters']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Parameters'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Parameters']
        }
        $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 ConfigRuleName -Value {
            $this.Properties['ConfigRuleName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ConfigRuleName'] = 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 RetryAttemptSeconds -Value {
            $this.Properties['RetryAttemptSeconds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RetryAttemptSeconds'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumAutomaticAttempts -Value {
            $this.Properties['MaximumAutomaticAttempts']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MaximumAutomaticAttempts'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetId -Value {
            $this.Properties['TargetId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Automatic -Value {
            $this.Properties['Automatic']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Automatic'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ConfigConfigurationAggregator'"

class ConfigConfigurationAggregator : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigConfigurationAggregator'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html'

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

    [string] $Type = 'AWS::Config::ConfigurationAggregator'
    [ConfigConfigurationAggregatorAccountAggregationSource[]] $AccountAggregationSources
    [string] $ConfigurationAggregatorName
    [ConfigConfigurationAggregatorOrganizationAggregationSource] $OrganizationAggregationSource
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'ConfigAggregationAuthorization'"

class ConfigAggregationAuthorization : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigAggregationAuthorization'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Config::AggregationAuthorization'
    [string] $AuthorizedAccountId
    [string] $AuthorizedAwsRegion
    [VSTag[]] $Tags
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'ConfigConfigurationRecorder'"

class ConfigConfigurationRecorder : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigConfigurationRecorder'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Config::ConfigurationRecorder'
    [string] $Name
    [ConfigConfigurationRecorderRecordingGroup] $RecordingGroup
    [string] $RoleARN
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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

Write-Verbose "Importing class 'ConfigOrganizationConformancePack'"

class ConfigOrganizationConformancePack : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigOrganizationConformancePack'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Config::OrganizationConformancePack'
    [string] $OrganizationConformancePackName
    [string] $TemplateS3Uri
    [string] $TemplateBody
    [string] $DeliveryS3Bucket
    [string] $DeliveryS3KeyPrefix
    [ConfigOrganizationConformancePackConformancePackInputParameter[]] $ConformancePackInputParameters
    [string[]] $ExcludedAccounts
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name OrganizationConformancePackName -Value {
            $this.Properties['OrganizationConformancePackName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OrganizationConformancePackName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateS3Uri -Value {
            $this.Properties['TemplateS3Uri']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TemplateS3Uri'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TemplateBody -Value {
            $this.Properties['TemplateBody']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TemplateBody'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeliveryS3Bucket -Value {
            $this.Properties['DeliveryS3Bucket']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeliveryS3Bucket'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeliveryS3KeyPrefix -Value {
            $this.Properties['DeliveryS3KeyPrefix']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeliveryS3KeyPrefix'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConformancePackInputParameters -Value {
            $this.Properties['ConformancePackInputParameters']
        } -SecondValue {
            param([ValidateType(([ConfigOrganizationConformancePackConformancePackInputParameter], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ConformancePackInputParameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ExcludedAccounts -Value {
            $this.Properties['ExcludedAccounts']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['ExcludedAccounts'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

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

Write-Verbose "Importing class 'ConfigConformancePack'"

class ConfigConformancePack : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSConfigConformancePack'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Config::ConformancePack'
    [string] $ConformancePackName
    [string] $DeliveryS3Bucket
    [string] $DeliveryS3KeyPrefix
    [string] $TemplateBody
    [string] $TemplateS3Uri
    [ConfigConformancePackConformancePackInputParameter[]] $ConformancePackInputParameters
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

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

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