"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnSignalMapPropsMixin = exports.CfnSdiSourcePropsMixin = exports.CfnNetworkPropsMixin = exports.CfnMultiplexprogramPropsMixin = exports.CfnMultiplexPropsMixin = exports.CfnEventBridgeRuleTemplateGroupPropsMixin = exports.CfnEventBridgeRuleTemplatePropsMixin = exports.CfnClusterPropsMixin = exports.CfnCloudWatchAlarmTemplateGroupPropsMixin = exports.CfnCloudWatchAlarmTemplatePropsMixin = exports.CfnChannelPlacementGroupPropsMixin = exports.CfnInputSecurityGroupPropsMixin = exports.CfnInputPropsMixin = exports.CfnChannelPropsMixin = void 0;
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/* eslint-disable @stylistic/max-len, eol-last */
const cdk = __importStar(require("aws-cdk-lib/core"));
const service = __importStar(require("aws-cdk-lib/aws-medialive"));
/**
 * The AWS::MediaLive::Channel resource is a MediaLive resource type that creates a channel.
 *
 * A MediaLive channel ingests and transcodes (decodes and encodes) source content from the inputs that are attached to that channel, and packages the new content into outputs.
 *
 * @cloudformationResource AWS::MediaLive::Channel
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html
 */
class CfnChannelPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnChannelPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["anywhereSettings", "cdiInputSpecification", "channelClass", "channelEngineVersion", "channelSecurityGroups", "destinations", "dryRun", "encoderSettings", "inferenceSettings", "inputAttachments", "inputSpecification", "linkedChannelSettings", "logLevel", "maintenance", "name", "roleArn", "tags", "vpc"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::Channel`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnChannelMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnChannelPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnChannel.isCfnChannel(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnChannelPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnChannelPropsMixin = CfnChannelPropsMixin;
/**
 * The AWS::MediaLive::Input resource is a MediaLive resource type that creates an input.
 *
 * A MediaLive input holds information that describes how the MediaLive channel is connected to the upstream system that is providing the source content that is to be transcoded.
 *
 * @cloudformationResource AWS::MediaLive::Input
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-input.html
 */
class CfnInputPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnInputPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["destinations", "inputDevices", "inputNetworkLocation", "inputSecurityGroups", "mediaConnectFlows", "multicastSettings", "name", "roleArn", "routerSettings", "sdiSources", "smpte2110ReceiverGroupSettings", "sources", "srtSettings", "tags", "type", "vpc"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::Input`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnInputMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnInputPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnInput.isCfnInput(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnInputPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnInputPropsMixin = CfnInputPropsMixin;
/**
 * The AWS::MediaLive::InputSecurityGroup is a MediaLive resource type that creates an input security group.
 *
 * A MediaLive input security group is associated with a MediaLive input. The input security group is an "allow list" of IP addresses that controls whether an external IP address can push content to the associated MediaLive input.
 *
 * @cloudformationResource AWS::MediaLive::InputSecurityGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-inputsecuritygroup.html
 */
class CfnInputSecurityGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnInputSecurityGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["tags", "whitelistRules"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::InputSecurityGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnInputSecurityGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnInputSecurityGroupPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnInputSecurityGroup.isCfnInputSecurityGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnInputSecurityGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnInputSecurityGroupPropsMixin = CfnInputSecurityGroupPropsMixin;
/**
 * Definition of AWS::MediaLive::ChannelPlacementGroup Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::ChannelPlacementGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channelplacementgroup.html
 */
class CfnChannelPlacementGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnChannelPlacementGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["clusterId", "name", "nodes", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::ChannelPlacementGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnChannelPlacementGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnChannelPlacementGroupPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnChannelPlacementGroup.isCfnChannelPlacementGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnChannelPlacementGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnChannelPlacementGroupPropsMixin = CfnChannelPlacementGroupPropsMixin;
/**
 * Definition of AWS::MediaLive::CloudWatchAlarmTemplate Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::CloudWatchAlarmTemplate
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-cloudwatchalarmtemplate.html
 */
class CfnCloudWatchAlarmTemplatePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnCloudWatchAlarmTemplatePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["comparisonOperator", "datapointsToAlarm", "description", "evaluationPeriods", "groupIdentifier", "metricName", "name", "period", "statistic", "tags", "targetResourceType", "threshold", "treatMissingData"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::CloudWatchAlarmTemplate`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnCloudWatchAlarmTemplateMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCloudWatchAlarmTemplatePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnCloudWatchAlarmTemplate.isCfnCloudWatchAlarmTemplate(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCloudWatchAlarmTemplatePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCloudWatchAlarmTemplatePropsMixin = CfnCloudWatchAlarmTemplatePropsMixin;
/**
 * Definition of AWS::MediaLive::CloudWatchAlarmTemplateGroup Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::CloudWatchAlarmTemplateGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-cloudwatchalarmtemplategroup.html
 */
class CfnCloudWatchAlarmTemplateGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnCloudWatchAlarmTemplateGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::CloudWatchAlarmTemplateGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnCloudWatchAlarmTemplateGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCloudWatchAlarmTemplateGroupPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnCloudWatchAlarmTemplateGroup.isCfnCloudWatchAlarmTemplateGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCloudWatchAlarmTemplateGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCloudWatchAlarmTemplateGroupPropsMixin = CfnCloudWatchAlarmTemplateGroupPropsMixin;
/**
 * Definition of AWS::MediaLive::Cluster Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::Cluster
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-cluster.html
 */
class CfnClusterPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnClusterPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["clusterType", "instanceRoleArn", "name", "networkSettings", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::Cluster`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnClusterMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnClusterPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnCluster.isCfnCluster(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnClusterPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnClusterPropsMixin = CfnClusterPropsMixin;
/**
 * Definition of AWS::MediaLive::EventBridgeRuleTemplate Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::EventBridgeRuleTemplate
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-eventbridgeruletemplate.html
 */
class CfnEventBridgeRuleTemplatePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnEventBridgeRuleTemplatePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "eventTargets", "eventType", "groupIdentifier", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::EventBridgeRuleTemplate`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnEventBridgeRuleTemplateMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnEventBridgeRuleTemplatePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnEventBridgeRuleTemplate.isCfnEventBridgeRuleTemplate(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnEventBridgeRuleTemplatePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnEventBridgeRuleTemplatePropsMixin = CfnEventBridgeRuleTemplatePropsMixin;
/**
 * Definition of AWS::MediaLive::EventBridgeRuleTemplateGroup Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::EventBridgeRuleTemplateGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-eventbridgeruletemplategroup.html
 */
class CfnEventBridgeRuleTemplateGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnEventBridgeRuleTemplateGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::EventBridgeRuleTemplateGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnEventBridgeRuleTemplateGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnEventBridgeRuleTemplateGroupPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnEventBridgeRuleTemplateGroup.isCfnEventBridgeRuleTemplateGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnEventBridgeRuleTemplateGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnEventBridgeRuleTemplateGroupPropsMixin = CfnEventBridgeRuleTemplateGroupPropsMixin;
/**
 * The multiplex object.
 *
 * @cloudformationResource AWS::MediaLive::Multiplex
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-multiplex.html
 */
class CfnMultiplexPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnMultiplexPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["availabilityZones", "destinations", "multiplexSettings", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::Multiplex`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnMultiplexMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMultiplexPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnMultiplex.isCfnMultiplex(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMultiplexPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMultiplexPropsMixin = CfnMultiplexPropsMixin;
/**
 * Resource schema for AWS::MediaLive::Multiplexprogram.
 *
 * @cloudformationResource AWS::MediaLive::Multiplexprogram
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-multiplexprogram.html
 */
class CfnMultiplexprogramPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnMultiplexprogramPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["multiplexId", "multiplexProgramSettings", "packetIdentifiersMap", "pipelineDetails", "preferredChannelPipeline", "programName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::Multiplexprogram`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnMultiplexprogramMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMultiplexprogramPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnMultiplexprogram.isCfnMultiplexprogram(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMultiplexprogramPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMultiplexprogramPropsMixin = CfnMultiplexprogramPropsMixin;
/**
 * Resource schema for AWS::MediaLive::Network.
 *
 * @cloudformationResource AWS::MediaLive::Network
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-network.html
 */
class CfnNetworkPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnNetworkPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["ipPools", "name", "routes", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::Network`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnNetworkMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnNetworkPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnNetwork.isCfnNetwork(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnNetworkPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnNetworkPropsMixin = CfnNetworkPropsMixin;
/**
 * Definition of AWS::MediaLive::SdiSource Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::SdiSource
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-sdisource.html
 */
class CfnSdiSourcePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnSdiSourcePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["mode", "name", "tags", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::SdiSource`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnSdiSourceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSdiSourcePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSdiSource.isCfnSdiSource(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSdiSourcePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSdiSourcePropsMixin = CfnSdiSourcePropsMixin;
/**
 * Definition of AWS::MediaLive::SignalMap Resource Type.
 *
 * @cloudformationResource AWS::MediaLive::SignalMap
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-signalmap.html
 */
class CfnSignalMapPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_medialive.CfnSignalMapPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["cloudWatchAlarmTemplateGroupIdentifiers", "description", "discoveryEntryPointArn", "eventBridgeRuleTemplateGroupIdentifiers", "forceRediscovery", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::MediaLive::SignalMap`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_medialive_CfnSignalMapMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSignalMapPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSignalMap.isCfnSignalMap(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSignalMapPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSignalMapPropsMixin = CfnSignalMapPropsMixin;
