{"version":3,"sources":["../../../node_modules/.pnpm/@smithy+types@4.16.1/node_modules/@smithy/types/dist-es/extensions/checksum.js","../../../node_modules/.pnpm/@smithy+types@4.16.1/node_modules/@smithy/types/dist-es/middleware.js","../../../node_modules/.pnpm/@smithy+types@4.16.1/node_modules/@smithy/types/dist-es/endpoint.js","../../../node_modules/.pnpm/@smithy+types@4.16.1/node_modules/@smithy/types/dist-es/profile.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/getSmithyContext.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/normalizeProvider.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/parseQueryString.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/parseUrl.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/httpRequest.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/httpResponse.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/isValidHostLabel.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/isValidHostname.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/transport/toEndpointV1.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/deref.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/is-array-buffer/is-array-buffer.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-buffer-from/buffer-from.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/fromUtf8.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-hex-encoding/hex-encoding.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/index.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/fromBase64.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/toBase64.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/blob/Uint8ArrayBlobAdapter.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/uuid/v4.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-body-length/calculateBodyLength.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-type-check.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/fromUtf8.browser.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/constants-for-browser.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-base64/toBase64.browser.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/sdk-stream-mixin.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.browser.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/sdk-stream-mixin.browser.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/property-provider/ProviderError.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/property-provider/CredentialsProviderError.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getProfileName.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getConfigFilepath.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getHomeDir.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/loadSharedConfigFiles.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/constants.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getConfigData.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getCredentialsFilepath.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/parseIni.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/readFile.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSsoSessionData.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/loadSsoSessionData.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/mergeConfigFiles.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/parseKnownFiles.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFromFile.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFilepath.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/externalDataInterceptor.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/property-provider/chain.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/property-provider/memoize.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/getSelectorName.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromEnv.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromSharedConfigFiles.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/property-provider/fromValue.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/fromStatic.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/node-config-provider/configLoader.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/checkRegion.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/isFipsRegion.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getRealRegion.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/resolveRegionConfig.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/property-provider/TokenProviderError.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/booleanSelector.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/util-config-provider/types.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/endpointsConfig/NodeUseFipsEndpointConfigOptions.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/constants.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/getInstanceMetadataRegion.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/config.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/defaultsModeConfig.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/config/defaults-mode/resolveDefaultsModeConfig.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/middleware-content-length/contentLengthMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/protocol-http/extensions/httpExtensionConfiguration.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/util-uri-escape/escape-uri.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/protocols/querystring-builder/buildQueryString.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/middleware-stack/MiddlewareStack.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/schemaLogFilter.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/command.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/create-aggregated-client.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/exceptions.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/defaults-mode.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/emitWarningIfUnsupportedVersion.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/checksum.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/retry.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/extensions/defaultExtensionConfiguration.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-value-from-text-node.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/NoOpLogger.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/client-command-builder.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointUrlConfig.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getIgnoreConfiguredEndpointUrls.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromConfig.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/service-customizations/s3.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/createConfigValueProvider.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/getEndpointFromInstructions.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/endpointMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/getEndpointPlugin.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/resolveEndpointConfig.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/bdd/BinaryDecisionDiagram.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/cache/EndpointCache.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/types/EndpointError.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/debugId.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/debug/toDebugString.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/customEndpointFunctions.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/booleanEquals.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/coalesce.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/getAttrPathList.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/getAttr.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/isSet.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/ite.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/not.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/isIpAddress.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/parseURL.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/split.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/stringEquals.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/substring.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/uriEncode.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/endpointFunctions.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateTemplate.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getReferenceValue.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateExpression.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/evaluateCondition.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointHeaders.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointProperties.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/utils/getEndpointUrl.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/decideEndpoint.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/constants.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/service-error-classification.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRateLimiter.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/constants.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/retries-2026-config.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRetryBackoffStrategy.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/DefaultRetryToken.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/config.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/StandardRetryStrategy.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/util-retry/AdaptiveRetryStrategy.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/configurations.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/isStreamingPayload/isStreamingPayload.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/parseRetryAfterHeader.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/util.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/middleware-retry/retryMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/retry/index.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-host-header/hostHeaderMiddleware.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-logger/loggerMiddleware.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/configuration.js","../../../node_modules/.pnpm/@aws+lambda-invoke-store@0.3.0/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/recursionDetectionMiddleware.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/resolveAuthOptions.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/httpSigningMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/middleware-http-signing/getHttpSigningMiddleware.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/DefaultIdentityProviderConfig.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/httpAuthSchemes/noAuth.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/legacy-root-exports/util-identity-and-auth/memoizeIdentityProvider.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/normalizeProvider.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/configurations.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partitions.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partition.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/check-features.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/constants.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/encode-features.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/middleware-user-agent/user-agent-middleware.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/defaultUserAgent.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/getRuntimeUserAgentPair.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/crt-availability.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/is-crt-available.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-user-agent-node/nodeAppIdConfigOptions.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/isVirtualHostableS3Bucket.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/parseArn.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/aws.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/stsRegionDefaultResolver.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/client/region-config-resolver/extensions.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/constants.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/utilDate.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/SignatureV4Base.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/headerUtil.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js","../../../node_modules/.pnpm/@smithy+signature-v4@5.6.10/node_modules/@smithy/signature-v4/dist-es/signature-v4a-container.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-node-config.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/needsReviver.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/detectBufferParsing.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/writeKey.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js","../../../node_modules/.pnpm/@aws-sdk+xml-builder@3.972.37/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js","../../../node_modules/.pnpm/@aws-sdk+core@3.977.1/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js","../../../node_modules/.pnpm/@aws-sdk+signature-v4-multi-region@3.996.42/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/signature-v4-crt-container.js","../../../node_modules/.pnpm/@aws-sdk+signature-v4-multi-region@3.996.42/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4SignWithCredentials.js","../../../node_modules/.pnpm/@aws-sdk+signature-v4-multi-region@3.996.42/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4MultiRegion.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js","../../../node_modules/.pnpm/@smithy+core@3.30.0/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js","../src/index.ts","../src/email.ts","../../core/src/agent-enforcer-contract.ts","../../core/src/constants.ts","../../core/src/reply-token.ts","../../core/src/retention.ts","../../core/src/smtp.ts","../../core/src/index.ts","../../core/src/auth-templates.ts","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/endpoint/bdd.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/endpoint/endpointResolver.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/auth/httpAuthSchemeProvider.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/endpoint/EndpointParameters.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/package.json","../../../node_modules/.pnpm/@aws-sdk+credential-provider-node@3.972.72/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js","../../../node_modules/.pnpm/@aws-sdk+credential-provider-node@3.972.72/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js","../../../node_modules/.pnpm/@aws-sdk+credential-provider-node@3.972.72/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/models/SESv2ServiceException.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/models/errors.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/schemas/schemas_0.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/runtimeConfig.shared.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/runtimeConfig.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/auth/httpAuthExtensionConfiguration.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/runtimeExtensions.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/SESv2Client.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/commandBuilder.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/commands/CreateEmailTemplateCommand.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/commands/TestRenderEmailTemplateCommand.js","../../../node_modules/.pnpm/@aws-sdk+client-sesv2@3.1091.0/node_modules/@aws-sdk/client-sesv2/dist-es/commands/UpdateEmailTemplateCommand.js","../../core/src/provision-auth-templates.ts","../src/defaults.ts","../src/resources/acm.ts","../src/resources/cloudfront.ts","../src/resources/dns.ts","../src/resources/events.ts","../src/resources/iam.ts","../src/resources/lambda.ts","../src/resources/mail-manager.ts","../src/resources/oidc.ts","../src/resources/ses.ts","../src/resources/smtp.ts"],"sourcesContent":["export var AlgorithmId;\n(function (AlgorithmId) {\n    AlgorithmId[\"MD5\"] = \"md5\";\n    AlgorithmId[\"CRC32\"] = \"crc32\";\n    AlgorithmId[\"CRC32C\"] = \"crc32c\";\n    AlgorithmId[\"SHA1\"] = \"sha1\";\n    AlgorithmId[\"SHA256\"] = \"sha256\";\n})(AlgorithmId || (AlgorithmId = {}));\nexport const getChecksumConfiguration = (runtimeConfig) => {\n    const checksumAlgorithms = [];\n    if (runtimeConfig.sha256 !== undefined) {\n        checksumAlgorithms.push({\n            algorithmId: () => AlgorithmId.SHA256,\n            checksumConstructor: () => runtimeConfig.sha256,\n        });\n    }\n    if (runtimeConfig.md5 != undefined) {\n        checksumAlgorithms.push({\n            algorithmId: () => AlgorithmId.MD5,\n            checksumConstructor: () => runtimeConfig.md5,\n        });\n    }\n    return {\n        addChecksumAlgorithm(algo) {\n            checksumAlgorithms.push(algo);\n        },\n        checksumAlgorithms() {\n            return checksumAlgorithms;\n        },\n    };\n};\nexport const resolveChecksumRuntimeConfig = (clientConfig) => {\n    const runtimeConfig = {};\n    clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n        runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n    });\n    return runtimeConfig;\n};\n","export const SMITHY_CONTEXT_KEY = \"__smithy_context\";\n","export var EndpointURLScheme;\n(function (EndpointURLScheme) {\n    EndpointURLScheme[\"HTTP\"] = \"http\";\n    EndpointURLScheme[\"HTTPS\"] = \"https\";\n})(EndpointURLScheme || (EndpointURLScheme = {}));\n","export var IniSectionType;\n(function (IniSectionType) {\n    IniSectionType[\"PROFILE\"] = \"profile\";\n    IniSectionType[\"SSO_SESSION\"] = \"sso-session\";\n    IniSectionType[\"SERVICES\"] = \"services\";\n})(IniSectionType || (IniSectionType = {}));\n","import { SMITHY_CONTEXT_KEY } from \"@smithy/types\";\nexport const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {});\n","export const normalizeProvider = (input) => {\n    if (typeof input === \"function\")\n        return input;\n    const promisified = Promise.resolve(input);\n    return () => promisified;\n};\n","export function parseQueryString(querystring) {\n    const query = {};\n    querystring = querystring.replace(/^\\?/, \"\");\n    if (querystring) {\n        for (const pair of querystring.split(\"&\")) {\n            let [key, value = null] = pair.split(\"=\");\n            key = decodeURIComponent(key);\n            if (value) {\n                value = decodeURIComponent(value);\n            }\n            if (!(key in query)) {\n                query[key] = value;\n            }\n            else if (Array.isArray(query[key])) {\n                query[key].push(value);\n            }\n            else {\n                query[key] = [query[key], value];\n            }\n        }\n    }\n    return query;\n}\n","import { parseQueryString } from \"./parseQueryString\";\nexport const parseUrl = (url) => {\n    if (typeof url === \"string\") {\n        return parseUrl(new URL(url));\n    }\n    const { hostname, pathname, port, protocol, search } = url;\n    let query;\n    if (search) {\n        query = parseQueryString(search);\n    }\n    return {\n        hostname,\n        port: port ? parseInt(port) : undefined,\n        protocol,\n        path: pathname,\n        query,\n    };\n};\n","export class HttpRequest {\n    method;\n    protocol;\n    hostname;\n    port;\n    path;\n    query;\n    headers;\n    username;\n    password;\n    fragment;\n    body;\n    constructor(options) {\n        this.method = options.method || \"GET\";\n        this.hostname = options.hostname || \"localhost\";\n        this.port = options.port;\n        this.query = options.query || {};\n        this.headers = options.headers || {};\n        this.body = options.body;\n        this.protocol = options.protocol\n            ? options.protocol.slice(-1) !== \":\"\n                ? `${options.protocol}:`\n                : options.protocol\n            : \"https:\";\n        this.path = options.path ? (options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path) : \"/\";\n        this.username = options.username;\n        this.password = options.password;\n        this.fragment = options.fragment;\n    }\n    static clone(request) {\n        const cloned = new HttpRequest({\n            ...request,\n            headers: { ...request.headers },\n        });\n        if (cloned.query) {\n            cloned.query = cloneQuery(cloned.query);\n        }\n        return cloned;\n    }\n    static isInstance(request) {\n        if (!request) {\n            return false;\n        }\n        const req = request;\n        return (\"method\" in req &&\n            \"protocol\" in req &&\n            \"hostname\" in req &&\n            \"path\" in req &&\n            typeof req[\"query\"] === \"object\" &&\n            typeof req[\"headers\"] === \"object\");\n    }\n    clone() {\n        return HttpRequest.clone(this);\n    }\n}\nfunction cloneQuery(query) {\n    return Object.keys(query).reduce((carry, paramName) => {\n        const param = query[paramName];\n        return {\n            ...carry,\n            [paramName]: Array.isArray(param) ? [...param] : param,\n        };\n    }, {});\n}\n","export class HttpResponse {\n    statusCode;\n    reason;\n    headers;\n    body;\n    constructor(options) {\n        this.statusCode = options.statusCode;\n        this.reason = options.reason;\n        this.headers = options.headers || {};\n        this.body = options.body;\n    }\n    static isInstance(response) {\n        if (!response)\n            return false;\n        const resp = response;\n        return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n    }\n}\n","const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nexport const isValidHostLabel = (value, allowSubDomains = false) => {\n    if (!allowSubDomains) {\n        return VALID_HOST_LABEL_REGEX.test(value);\n    }\n    const labels = value.split(\".\");\n    for (const label of labels) {\n        if (!isValidHostLabel(label)) {\n            return false;\n        }\n    }\n    return true;\n};\n","export function isValidHostname(hostname) {\n    const hostPattern = /^[a-z0-9][a-z0-9.-]*[a-z0-9]$/;\n    return hostPattern.test(hostname);\n}\n","import { parseUrl } from \"./parseUrl\";\nexport const toEndpointV1 = (endpoint) => {\n    if (typeof endpoint === \"object\") {\n        if (\"url\" in endpoint) {\n            const v1Endpoint = parseUrl(endpoint.url);\n            if (endpoint.headers) {\n                v1Endpoint.headers = {};\n                for (const name in endpoint.headers) {\n                    v1Endpoint.headers[name.toLowerCase()] = endpoint.headers[name].join(\", \");\n                }\n            }\n            return v1Endpoint;\n        }\n        return endpoint;\n    }\n    return parseUrl(endpoint);\n};\n","export const operation = (namespace, name, traits, input, output) => ({\n    name,\n    namespace,\n    traits,\n    input,\n    output,\n});\n","import { HttpResponse, getSmithyContext } from \"@smithy/core/transport\";\nimport { operation } from \"../schemas/operation\";\nexport const schemaDeserializationMiddleware = (config) => (next, context) => async (args) => {\n    const { response } = await next(args);\n    const { operationSchema } = getSmithyContext(context);\n    const [, ns, n, t, i, o] = operationSchema ?? [];\n    try {\n        const parsed = await config.protocol.deserializeResponse(operation(ns, n, t, i, o), {\n            ...config,\n            ...context,\n        }, response);\n        return {\n            response,\n            output: parsed,\n        };\n    }\n    catch (error) {\n        Object.defineProperty(error, \"$response\", {\n            value: response,\n            enumerable: false,\n            writable: false,\n            configurable: false,\n        });\n        if (!(\"$metadata\" in error)) {\n            const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;\n            try {\n                error.message += \"\\n  \" + hint;\n            }\n            catch (ignored) {\n                if (!context.logger || context.logger?.constructor?.name === \"NoOpLogger\") {\n                    console.warn(hint);\n                }\n                else {\n                    context.logger?.warn?.(hint);\n                }\n            }\n            if (typeof error.$responseBodyText !== \"undefined\") {\n                if (error.$response) {\n                    error.$response.body = error.$responseBodyText;\n                }\n            }\n            try {\n                if (HttpResponse.isInstance(response)) {\n                    const { headers = {}, statusCode } = response;\n                    const headerEntries = Object.entries(headers);\n                    error.$metadata = {\n                        httpStatusCode: statusCode,\n                        requestId: findHeader(/^x-[\\w-]+-request-?id$/, headerEntries),\n                        extendedRequestId: findHeader(/^x-[\\w-]+-id-2$/, headerEntries),\n                        cfId: findHeader(/^x-[\\w-]+-cf-id$/, headerEntries),\n                    };\n                }\n            }\n            catch (ignored) {\n            }\n        }\n        throw error;\n    }\n};\nconst findHeader = (pattern, headers) => {\n    return (headers.find(([k]) => {\n        return k.match(pattern);\n    }) || [void 0, void 1])[1];\n};\n","import { getSmithyContext, toEndpointV1 } from \"@smithy/core/transport\";\nimport { operation } from \"../schemas/operation\";\nexport const schemaSerializationMiddleware = (config) => (next, context) => async (args) => {\n    const { operationSchema } = getSmithyContext(context);\n    const [, ns, n, t, i, o] = operationSchema ?? [];\n    const endpoint = context.endpointV2\n        ? async () => toEndpointV1(context.endpointV2)\n        : config.endpoint;\n    const request = await config.protocol.serializeRequest(operation(ns, n, t, i, o), args.input, {\n        ...config,\n        ...context,\n        endpoint,\n    });\n    return next({\n        ...args,\n        request,\n    });\n};\n","import { schemaDeserializationMiddleware } from \"./schemaDeserializationMiddleware\";\nimport { schemaSerializationMiddleware } from \"./schemaSerializationMiddleware\";\nexport const deserializerMiddlewareOption = {\n    name: \"deserializerMiddleware\",\n    step: \"deserialize\",\n    tags: [\"DESERIALIZER\"],\n    override: true,\n};\nexport const serializerMiddlewareOption = {\n    name: \"serializerMiddleware\",\n    step: \"serialize\",\n    tags: [\"SERIALIZER\"],\n    override: true,\n};\nexport function getSchemaSerdePlugin(config) {\n    return {\n        applyToStack: (commandStack) => {\n            commandStack.add(schemaSerializationMiddleware(config), serializerMiddlewareOption);\n            commandStack.add(schemaDeserializationMiddleware(config), deserializerMiddlewareOption);\n            config.protocol.setSerdeContext(config);\n        },\n    };\n}\n","export class TypeRegistry {\n    namespace;\n    schemas;\n    exceptions;\n    static registries = new Map();\n    constructor(namespace, schemas = new Map(), exceptions = new Map()) {\n        this.namespace = namespace;\n        this.schemas = schemas;\n        this.exceptions = exceptions;\n    }\n    static for(namespace) {\n        if (!TypeRegistry.registries.has(namespace)) {\n            TypeRegistry.registries.set(namespace, new TypeRegistry(namespace));\n        }\n        return TypeRegistry.registries.get(namespace);\n    }\n    copyFrom(other) {\n        const { schemas, exceptions } = this;\n        for (const [k, v] of other.schemas) {\n            if (!schemas.has(k)) {\n                schemas.set(k, v);\n            }\n        }\n        for (const [k, v] of other.exceptions) {\n            if (!exceptions.has(k)) {\n                exceptions.set(k, v);\n            }\n        }\n    }\n    register(shapeId, schema) {\n        const qualifiedName = this.normalizeShapeId(shapeId);\n        for (const r of [this, TypeRegistry.for(qualifiedName.split(\"#\")[0])]) {\n            r.schemas.set(qualifiedName, schema);\n        }\n    }\n    getSchema(shapeId) {\n        const id = this.normalizeShapeId(shapeId);\n        if (!this.schemas.has(id)) {\n            if (!shapeId.includes(\"#\")) {\n                const suffix = \"#\" + shapeId;\n                const candidates = [];\n                for (const [shapeId, schema] of this.schemas.entries()) {\n                    if (shapeId.endsWith(suffix)) {\n                        candidates.push(schema);\n                    }\n                }\n                if (candidates.length === 1) {\n                    return candidates[0];\n                }\n            }\n            throw new Error(`@smithy/core/schema - schema not found for ${id}`);\n        }\n        return this.schemas.get(id);\n    }\n    registerError(es, ctor) {\n        const $error = es;\n        const ns = $error[1];\n        for (const r of [this, TypeRegistry.for(ns)]) {\n            r.schemas.set(ns + \"#\" + $error[2], $error);\n            r.exceptions.set($error, ctor);\n        }\n    }\n    getErrorCtor(es) {\n        const $error = es;\n        if (this.exceptions.has($error)) {\n            return this.exceptions.get($error);\n        }\n        const registry = TypeRegistry.for($error[1]);\n        return registry.exceptions.get($error);\n    }\n    getBaseException() {\n        for (const exceptionKey of this.exceptions.keys()) {\n            if (Array.isArray(exceptionKey)) {\n                const [, ns, name] = exceptionKey;\n                const id = ns + \"#\" + name;\n                if (id.startsWith(\"smithy.ts.sdk.synthetic.\") && id.endsWith(\"ServiceException\")) {\n                    return exceptionKey;\n                }\n            }\n        }\n        return undefined;\n    }\n    find(predicate) {\n        for (const schema of this.schemas.values()) {\n            if (predicate(schema)) {\n                return schema;\n            }\n        }\n        return undefined;\n    }\n    clear() {\n        this.schemas.clear();\n        this.exceptions.clear();\n    }\n    normalizeShapeId(shapeId) {\n        if (shapeId.includes(\"#\")) {\n            return shapeId;\n        }\n        return this.namespace + \"#\" + shapeId;\n    }\n}\n","export const deref = (schemaRef) => {\n    if (typeof schemaRef === \"function\") {\n        return schemaRef();\n    }\n    return schemaRef;\n};\n","export const traitsCache = [];\nexport function translateTraits(indicator) {\n    if (typeof indicator === \"object\") {\n        return indicator;\n    }\n    indicator = indicator | 0;\n    if (traitsCache[indicator]) {\n        return traitsCache[indicator];\n    }\n    const traits = {};\n    let i = 0;\n    for (const trait of [\n        \"httpLabel\",\n        \"idempotent\",\n        \"idempotencyToken\",\n        \"sensitive\",\n        \"httpPayload\",\n        \"httpResponseCode\",\n        \"httpQueryParams\",\n    ]) {\n        if (((indicator >> i++) & 1) === 1) {\n            traits[trait] = 1;\n        }\n    }\n    return (traitsCache[indicator] = traits);\n}\n","import { deref } from \"../deref\";\nimport { translateTraits } from \"./translateTraits\";\nconst anno = {\n    it: Symbol.for(\"@smithy/nor-struct-it\"),\n    ns: Symbol.for(\"@smithy/ns\"),\n};\nexport const simpleSchemaCacheN = [];\nexport const simpleSchemaCacheS = {};\nexport class NormalizedSchema {\n    ref;\n    memberName;\n    static symbol = Symbol.for(\"@smithy/nor\");\n    symbol = NormalizedSchema.symbol;\n    name;\n    schema;\n    _isMemberSchema;\n    traits;\n    memberTraits;\n    normalizedTraits;\n    constructor(ref, memberName) {\n        this.ref = ref;\n        this.memberName = memberName;\n        const traitStack = [];\n        let _ref = ref;\n        let schema = ref;\n        this._isMemberSchema = false;\n        while (isMemberSchema(_ref)) {\n            traitStack.push(_ref[1]);\n            _ref = _ref[0];\n            schema = deref(_ref);\n            this._isMemberSchema = true;\n        }\n        if (traitStack.length > 0) {\n            this.memberTraits = {};\n            for (let i = traitStack.length - 1; i >= 0; --i) {\n                const traitSet = traitStack[i];\n                Object.assign(this.memberTraits, translateTraits(traitSet));\n            }\n        }\n        else {\n            this.memberTraits = 0;\n        }\n        if (schema instanceof NormalizedSchema) {\n            const computedMemberTraits = this.memberTraits;\n            Object.assign(this, schema);\n            this.memberTraits = Object.assign({}, computedMemberTraits, schema.getMemberTraits(), this.getMemberTraits());\n            this.normalizedTraits = void 0;\n            this.memberName = memberName ?? schema.memberName;\n            return;\n        }\n        this.schema = deref(schema);\n        if (isStaticSchema(this.schema)) {\n            this.name = `${this.schema[1]}#${this.schema[2]}`;\n            this.traits = this.schema[3];\n        }\n        else {\n            this.name = this.memberName ?? String(schema);\n            this.traits = 0;\n        }\n        if (this._isMemberSchema && !memberName) {\n            throw new Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(true)} missing member name.`);\n        }\n    }\n    static [Symbol.hasInstance](lhs) {\n        const isPrototype = this.prototype.isPrototypeOf(lhs);\n        if (!isPrototype && typeof lhs === \"object\" && lhs !== null) {\n            const ns = lhs;\n            return ns.symbol === this.symbol;\n        }\n        return isPrototype;\n    }\n    static of(ref) {\n        const keyAble = typeof ref === \"function\" || (typeof ref === \"object\" && ref !== null);\n        if (typeof ref === \"number\") {\n            if (simpleSchemaCacheN[ref]) {\n                return simpleSchemaCacheN[ref];\n            }\n        }\n        else if (typeof ref === \"string\") {\n            if (simpleSchemaCacheS[ref]) {\n                return simpleSchemaCacheS[ref];\n            }\n        }\n        else if (keyAble) {\n            if (ref[anno.ns]) {\n                return ref[anno.ns];\n            }\n        }\n        const sc = deref(ref);\n        if (sc instanceof NormalizedSchema) {\n            return sc;\n        }\n        if (isMemberSchema(sc)) {\n            const [ns, traits] = sc;\n            if (ns instanceof NormalizedSchema) {\n                Object.assign(ns.getMergedTraits(), translateTraits(traits));\n                return ns;\n            }\n            throw new Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(ref, null, 2)}.`);\n        }\n        const ns = new NormalizedSchema(sc);\n        if (keyAble) {\n            return (ref[anno.ns] = ns);\n        }\n        if (typeof sc === \"string\") {\n            return (simpleSchemaCacheS[sc] = ns);\n        }\n        if (typeof sc === \"number\") {\n            return (simpleSchemaCacheN[sc] = ns);\n        }\n        return ns;\n    }\n    getSchema() {\n        const sc = this.schema;\n        if (Array.isArray(sc) && sc[0] === 0) {\n            return sc[4];\n        }\n        return sc;\n    }\n    getName(withNamespace = false) {\n        const { name } = this;\n        const short = !withNamespace && name && name.includes(\"#\");\n        return short ? name.split(\"#\")[1] : name || undefined;\n    }\n    getMemberName() {\n        return this.memberName;\n    }\n    isMemberSchema() {\n        return this._isMemberSchema;\n    }\n    isListSchema() {\n        const sc = this.getSchema();\n        return typeof sc === \"number\"\n            ? sc >= 64 && sc < 128\n            : sc[0] === 1;\n    }\n    isMapSchema() {\n        const sc = this.getSchema();\n        return typeof sc === \"number\"\n            ? sc >= 128 && sc <= 0b1111_1111\n            : sc[0] === 2;\n    }\n    isStructSchema() {\n        const sc = this.getSchema();\n        if (typeof sc !== \"object\") {\n            return false;\n        }\n        const id = sc[0];\n        return (id === 3 ||\n            id === -3 ||\n            id === 4);\n    }\n    isUnionSchema() {\n        const sc = this.getSchema();\n        if (typeof sc !== \"object\") {\n            return false;\n        }\n        return sc[0] === 4;\n    }\n    isBlobSchema() {\n        const sc = this.getSchema();\n        return sc === 21 || sc === 42;\n    }\n    isTimestampSchema() {\n        const sc = this.getSchema();\n        return (typeof sc === \"number\" &&\n            sc >= 4 &&\n            sc <= 7);\n    }\n    isUnitSchema() {\n        return this.getSchema() === \"unit\";\n    }\n    isDocumentSchema() {\n        return this.getSchema() === 15;\n    }\n    isStringSchema() {\n        return this.getSchema() === 0;\n    }\n    isBooleanSchema() {\n        return this.getSchema() === 2;\n    }\n    isNumericSchema() {\n        return this.getSchema() === 1;\n    }\n    isBigIntegerSchema() {\n        return this.getSchema() === 17;\n    }\n    isBigDecimalSchema() {\n        return this.getSchema() === 19;\n    }\n    isStreaming() {\n        const { streaming } = this.getMergedTraits();\n        return !!streaming || this.getSchema() === 42;\n    }\n    isIdempotencyToken() {\n        return !!this.getMergedTraits().idempotencyToken;\n    }\n    getMergedTraits() {\n        return (this.normalizedTraits ??\n            (this.normalizedTraits = {\n                ...this.getOwnTraits(),\n                ...this.getMemberTraits(),\n            }));\n    }\n    getMemberTraits() {\n        return translateTraits(this.memberTraits);\n    }\n    getOwnTraits() {\n        return translateTraits(this.traits);\n    }\n    getKeySchema() {\n        const [isDoc, isMap] = [this.isDocumentSchema(), this.isMapSchema()];\n        if (!isDoc && !isMap) {\n            throw new Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(true)}`);\n        }\n        const schema = this.getSchema();\n        const memberSchema = isDoc\n            ? 15\n            : (schema[4] ?? 0);\n        return member([memberSchema, 0], \"key\");\n    }\n    getValueSchema() {\n        const sc = this.getSchema();\n        const [isDoc, isMap, isList] = [this.isDocumentSchema(), this.isMapSchema(), this.isListSchema()];\n        const memberSchema = typeof sc === \"number\"\n            ? 0b0011_1111 & sc\n            : sc && typeof sc === \"object\" && (isMap || isList)\n                ? sc[3 + sc[0]]\n                : isDoc\n                    ? 15\n                    : void 0;\n        if (memberSchema != null) {\n            return member([memberSchema, 0], isMap ? \"value\" : \"member\");\n        }\n        throw new Error(`@smithy/core/schema - ${this.getName(true)} has no value member.`);\n    }\n    getMemberSchema(memberName) {\n        const struct = this.getSchema();\n        if (this.isStructSchema() && struct[4].includes(memberName)) {\n            const i = struct[4].indexOf(memberName);\n            const memberSchema = struct[5][i];\n            return member(isMemberSchema(memberSchema) ? memberSchema : [memberSchema, 0], memberName);\n        }\n        if (this.isDocumentSchema()) {\n            return member([15, 0], memberName);\n        }\n        throw new Error(`@smithy/core/schema - ${this.getName(true)} has no member=${memberName}.`);\n    }\n    getMemberSchemas() {\n        const buffer = {};\n        try {\n            for (const [k, v] of this.structIterator()) {\n                buffer[k] = v;\n            }\n        }\n        catch (ignored) { }\n        return buffer;\n    }\n    getEventStreamMember() {\n        if (this.isStructSchema()) {\n            for (const [memberName, memberSchema] of this.structIterator()) {\n                if (memberSchema.isStreaming() && memberSchema.isStructSchema()) {\n                    return memberName;\n                }\n            }\n        }\n        return \"\";\n    }\n    *structIterator() {\n        if (this.isUnitSchema()) {\n            return;\n        }\n        if (!this.isStructSchema()) {\n            throw new Error(\"@smithy/core/schema - cannot iterate non-struct schema.\");\n        }\n        const struct = this.getSchema();\n        const z = struct[4].length;\n        let it = struct[anno.it];\n        if (it && z === it.length) {\n            yield* it;\n            return;\n        }\n        it = Array(z);\n        for (let i = 0; i < z; ++i) {\n            const k = struct[4][i];\n            const v = member([struct[5][i], 0], k);\n            yield (it[i] = [k, v]);\n        }\n        struct[anno.it] = it;\n    }\n}\nfunction member(memberSchema, memberName) {\n    if (memberSchema instanceof NormalizedSchema) {\n        return Object.assign(memberSchema, {\n            memberName,\n            _isMemberSchema: true,\n        });\n    }\n    const internalCtorAccess = NormalizedSchema;\n    return new internalCtorAccess(memberSchema, memberName);\n}\nconst isMemberSchema = (sc) => Array.isArray(sc) && sc.length === 2;\nexport const isStaticSchema = (sc) => Array.isArray(sc) && sc.length >= 5;\n","export const isArrayBuffer = (arg) => (typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer) ||\n    Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\";\n","import { isArrayBuffer } from \"../is-array-buffer/is-array-buffer\";\nexport const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => {\n    if (!isArrayBuffer(input)) {\n        throw new TypeError(`The \"input\" argument must be ArrayBuffer. Received type ${typeof input} (${input})`);\n    }\n    return Buffer.from(input, offset, length);\n};\nexport const fromString = (input, encoding) => {\n    if (typeof input !== \"string\") {\n        throw new TypeError(`The \"input\" argument must be of type string. Received type ${typeof input} (${input})`);\n    }\n    return encoding ? Buffer.from(input, encoding) : Buffer.from(input);\n};\n","import { fromString } from \"../util-buffer-from/buffer-from\";\nexport const fromUtf8 = (input) => {\n    const buf = fromString(input, \"utf8\");\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n};\n","import { fromArrayBuffer } from \"../util-buffer-from/buffer-from\";\nexport const toUtf8 = (input) => {\n    if (typeof input === \"string\") {\n        return input;\n    }\n    if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n        throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n    }\n    return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString(\"utf8\");\n};\n","const SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n    let encodedByte = i.toString(16).toLowerCase();\n    if (encodedByte.length === 1) {\n        encodedByte = `0${encodedByte}`;\n    }\n    SHORT_TO_HEX[i] = encodedByte;\n    HEX_TO_SHORT[encodedByte] = i;\n}\nexport function fromHex(encoded) {\n    if (encoded.length % 2 !== 0) {\n        throw new Error(\"Hex encoded strings must have an even number length\");\n    }\n    const out = new Uint8Array(encoded.length / 2);\n    for (let i = 0; i < encoded.length; i += 2) {\n        const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n        if (encodedByte in HEX_TO_SHORT) {\n            out[i / 2] = HEX_TO_SHORT[encodedByte];\n        }\n        else {\n            throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n        }\n    }\n    return out;\n}\nexport function toHex(bytes) {\n    let out = \"\";\n    for (let i = 0; i < bytes.byteLength; i++) {\n        out += SHORT_TO_HEX[bytes[i]];\n    }\n    return out;\n}\n","import { getRandomValues } from \"node:crypto\";\nimport { fromBase64 } from \"./util-base64/fromBase64\";\nimport { toBase64 } from \"./util-base64/toBase64\";\nimport { bindUint8ArrayBlobAdapter } from \"./util-stream/blob/Uint8ArrayBlobAdapter\";\nimport { fromUtf8 } from \"./util-utf8/fromUtf8\";\nimport { toUtf8 } from \"./util-utf8/toUtf8\";\nimport { bindV4 } from \"./uuid/v4\";\nexport { copyDocumentWithTransform } from \"./copyDocumentWithTransform\";\nexport { dateToUtcString, parseRfc3339DateTime, parseRfc3339DateTimeWithOffset, parseRfc7231DateTime, parseEpochTimestamp, } from \"./date-utils\";\nexport { LazyJsonString } from \"./lazy-json\";\nexport { logger, parseBoolean, expectBoolean, expectNumber, expectFloat32, expectInt, expectInt32, expectShort, expectByte, expectNonNull, expectObject, expectString, expectUnion, expectLong, strictParseDouble, strictParseFloat, strictParseFloat32, strictParseLong, strictParseInt, strictParseInt32, strictParseShort, strictParseByte, limitedParseDouble, handleFloat, limitedParseFloat, limitedParseFloat32, } from \"./parse-utils\";\nexport { quoteHeader } from \"./quote-header\";\nexport { _parseEpochTimestamp, _parseRfc3339DateTimeWithOffset, _parseRfc7231DateTime, } from \"./schema-serde-lib/schema-date-utils\";\nexport { splitEvery } from \"./split-every\";\nexport { splitHeader } from \"./split-header\";\nexport { NumericValue, nv } from \"./value/NumericValue\";\nexport { fromHex, toHex } from \"./util-hex-encoding/hex-encoding\";\nexport { toBase64, fromBase64 };\nexport { calculateBodyLength } from \"./util-body-length/calculateBodyLength\";\nexport { toUint8Array } from \"./util-utf8/toUint8Array\";\nexport { toUtf8, fromUtf8 };\nexport { concatBytes } from \"./concatBytes\";\nexport { fromArrayBuffer, fromString } from \"./util-buffer-from/buffer-from\";\nexport { isArrayBuffer } from \"./is-array-buffer/is-array-buffer\";\nexport { deserializerMiddleware } from \"./middleware-serde/deserializerMiddleware\";\nexport { deserializerMiddlewareOption, serializerMiddlewareOption, getSerdePlugin, } from \"./middleware-serde/serdePlugin\";\nexport { serializerMiddleware } from \"./middleware-serde/serializerMiddleware\";\nexport { Hash } from \"./hash-node/hash-node\";\nexport class Uint8ArrayBlobAdapter extends bindUint8ArrayBlobAdapter(toUtf8, fromUtf8, toBase64, fromBase64) {\n}\nexport { ChecksumStream } from \"./util-stream/checksum/ChecksumStream\";\nexport { createChecksumStream } from \"./util-stream/checksum/createChecksumStream\";\nexport { createBufferedReadable } from \"./util-stream/createBufferedReadable\";\nexport { getAwsChunkedEncodingStream } from \"./util-stream/getAwsChunkedEncodingStream\";\nexport { headStream } from \"./util-stream/headStream\";\nexport { sdkStreamMixin } from \"./util-stream/sdk-stream-mixin\";\nexport { splitStream } from \"./util-stream/splitStream\";\nexport { isReadableStream, isBlob } from \"./util-stream/stream-type-check\";\nexport { streamCollector } from \"./util-stream/stream-collector\";\nconst _getRandomValues = getRandomValues;\nexport const v4 = bindV4(_getRandomValues);\nexport const generateIdempotencyToken = v4;\n","import { fromString } from \"../util-buffer-from/buffer-from\";\nconst BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/;\nexport const fromBase64 = (input) => {\n    if ((input.length * 3) % 4 !== 0) {\n        throw new TypeError(`Incorrect padding on base64 string.`);\n    }\n    if (!BASE64_REGEX.exec(input)) {\n        throw new TypeError(`Invalid base64 string.`);\n    }\n    const buffer = fromString(input, \"base64\");\n    return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n};\n","import { fromArrayBuffer } from \"../util-buffer-from/buffer-from\";\nimport { fromUtf8 } from \"../util-utf8/fromUtf8\";\nexport const toBase64 = (_input) => {\n    let input;\n    if (typeof _input === \"string\") {\n        input = fromUtf8(_input);\n    }\n    else {\n        input = _input;\n    }\n    if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n        throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n    }\n    return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString(\"base64\");\n};\n","export function bindUint8ArrayBlobAdapter(toUtf8, fromUtf8, toBase64, fromBase64) {\n    return class Uint8ArrayBlobAdapter extends Uint8Array {\n        static fromString(source, encoding = \"utf-8\") {\n            if (typeof source === \"string\") {\n                if (encoding === \"base64\") {\n                    return Uint8ArrayBlobAdapter.mutate(fromBase64(source));\n                }\n                return Uint8ArrayBlobAdapter.mutate(fromUtf8(source));\n            }\n            throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);\n        }\n        static mutate(source) {\n            Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype);\n            return source;\n        }\n        transformToString(encoding = \"utf-8\") {\n            if (encoding === \"base64\") {\n                return toBase64(this);\n            }\n            return toUtf8(this);\n        }\n    };\n}\n","const decimalToHex = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\nexport function bindV4(getRandomValues) {\n    if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n        return () => crypto.randomUUID();\n    }\n    return () => {\n        const rnds = new Uint8Array(16);\n        getRandomValues(rnds);\n        rnds[6] = (rnds[6] & 0x0f) | 0x40;\n        rnds[8] = (rnds[8] & 0x3f) | 0x80;\n        return (decimalToHex[rnds[0]] +\n            decimalToHex[rnds[1]] +\n            decimalToHex[rnds[2]] +\n            decimalToHex[rnds[3]] +\n            \"-\" +\n            decimalToHex[rnds[4]] +\n            decimalToHex[rnds[5]] +\n            \"-\" +\n            decimalToHex[rnds[6]] +\n            decimalToHex[rnds[7]] +\n            \"-\" +\n            decimalToHex[rnds[8]] +\n            decimalToHex[rnds[9]] +\n            \"-\" +\n            decimalToHex[rnds[10]] +\n            decimalToHex[rnds[11]] +\n            decimalToHex[rnds[12]] +\n            decimalToHex[rnds[13]] +\n            decimalToHex[rnds[14]] +\n            decimalToHex[rnds[15]]);\n    };\n}\n","export const parseBoolean = (value) => {\n    switch (value) {\n        case \"true\":\n            return true;\n        case \"false\":\n            return false;\n        default:\n            throw new Error(`Unable to parse boolean value \"${value}\"`);\n    }\n};\nexport const expectBoolean = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (typeof value === \"number\") {\n        if (value === 0 || value === 1) {\n            logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n        }\n        if (value === 0) {\n            return false;\n        }\n        if (value === 1) {\n            return true;\n        }\n    }\n    if (typeof value === \"string\") {\n        const lower = value.toLowerCase();\n        if (lower === \"false\" || lower === \"true\") {\n            logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n        }\n        if (lower === \"false\") {\n            return false;\n        }\n        if (lower === \"true\") {\n            return true;\n        }\n    }\n    if (typeof value === \"boolean\") {\n        return value;\n    }\n    throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n};\nexport const expectNumber = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (typeof value === \"string\") {\n        const parsed = parseFloat(value);\n        if (!Number.isNaN(parsed)) {\n            if (String(parsed) !== String(value)) {\n                logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n            }\n            return parsed;\n        }\n    }\n    if (typeof value === \"number\") {\n        return value;\n    }\n    throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n};\nconst MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nexport const expectFloat32 = (value) => {\n    const expected = expectNumber(value);\n    if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n        if (Math.abs(expected) > MAX_FLOAT) {\n            throw new TypeError(`Expected 32-bit float, got ${value}`);\n        }\n    }\n    return expected;\n};\nexport const expectLong = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (Number.isInteger(value) && !Number.isNaN(value)) {\n        return value;\n    }\n    throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n};\nexport const expectInt = expectLong;\nexport const expectInt32 = (value) => expectSizedInt(value, 32);\nexport const expectShort = (value) => expectSizedInt(value, 16);\nexport const expectByte = (value) => expectSizedInt(value, 8);\nconst expectSizedInt = (value, size) => {\n    const expected = expectLong(value);\n    if (expected !== undefined && castInt(expected, size) !== expected) {\n        throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n    }\n    return expected;\n};\nconst castInt = (value, size) => {\n    switch (size) {\n        case 32:\n            return Int32Array.of(value)[0];\n        case 16:\n            return Int16Array.of(value)[0];\n        case 8:\n            return Int8Array.of(value)[0];\n    }\n};\nexport const expectNonNull = (value, location) => {\n    if (value === null || value === undefined) {\n        if (location) {\n            throw new TypeError(`Expected a non-null value for ${location}`);\n        }\n        throw new TypeError(\"Expected a non-null value\");\n    }\n    return value;\n};\nexport const expectObject = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (typeof value === \"object\" && !Array.isArray(value)) {\n        return value;\n    }\n    const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n    throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n};\nexport const expectString = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (typeof value === \"string\") {\n        return value;\n    }\n    if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n        logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n        return String(value);\n    }\n    throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n};\nexport const expectUnion = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    const asObject = expectObject(value);\n    const setKeys = [];\n    for (const k in asObject) {\n        if (asObject[k] != null) {\n            setKeys.push(k);\n        }\n    }\n    if (setKeys.length === 0) {\n        throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n    }\n    if (setKeys.length > 1) {\n        throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n    }\n    return asObject;\n};\nexport const strictParseDouble = (value) => {\n    if (typeof value == \"string\") {\n        return expectNumber(parseNumber(value));\n    }\n    return expectNumber(value);\n};\nexport const strictParseFloat = strictParseDouble;\nexport const strictParseFloat32 = (value) => {\n    if (typeof value == \"string\") {\n        return expectFloat32(parseNumber(value));\n    }\n    return expectFloat32(value);\n};\nconst NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nconst parseNumber = (value) => {\n    const matches = value.match(NUMBER_REGEX);\n    if (matches === null || matches[0].length !== value.length) {\n        throw new TypeError(`Expected real number, got implicit NaN`);\n    }\n    return parseFloat(value);\n};\nexport const limitedParseDouble = (value) => {\n    if (typeof value == \"string\") {\n        return parseFloatString(value);\n    }\n    return expectNumber(value);\n};\nexport const handleFloat = limitedParseDouble;\nexport const limitedParseFloat = limitedParseDouble;\nexport const limitedParseFloat32 = (value) => {\n    if (typeof value == \"string\") {\n        return parseFloatString(value);\n    }\n    return expectFloat32(value);\n};\nconst parseFloatString = (value) => {\n    switch (value) {\n        case \"NaN\":\n            return NaN;\n        case \"Infinity\":\n            return Infinity;\n        case \"-Infinity\":\n            return -Infinity;\n        default:\n            throw new Error(`Unable to parse float value: ${value}`);\n    }\n};\nexport const strictParseLong = (value) => {\n    if (typeof value === \"string\") {\n        return expectLong(parseNumber(value));\n    }\n    return expectLong(value);\n};\nexport const strictParseInt = strictParseLong;\nexport const strictParseInt32 = (value) => {\n    if (typeof value === \"string\") {\n        return expectInt32(parseNumber(value));\n    }\n    return expectInt32(value);\n};\nexport const strictParseShort = (value) => {\n    if (typeof value === \"string\") {\n        return expectShort(parseNumber(value));\n    }\n    return expectShort(value);\n};\nexport const strictParseByte = (value) => {\n    if (typeof value === \"string\") {\n        return expectByte(parseNumber(value));\n    }\n    return expectByte(value);\n};\nconst stackTraceWarning = (message) => {\n    return String(new TypeError(message).stack || message)\n        .split(\"\\n\")\n        .slice(0, 5)\n        .filter((s) => !s.includes(\"stackTraceWarning\"))\n        .join(\"\\n\");\n};\nexport const logger = {\n    warn: console.warn,\n};\n","import { strictParseByte, strictParseDouble, strictParseFloat32, strictParseShort } from \"./parse-utils\";\nconst DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nexport function dateToUtcString(date) {\n    const year = date.getUTCFullYear();\n    const month = date.getUTCMonth();\n    const dayOfWeek = date.getUTCDay();\n    const dayOfMonthInt = date.getUTCDate();\n    const hoursInt = date.getUTCHours();\n    const minutesInt = date.getUTCMinutes();\n    const secondsInt = date.getUTCSeconds();\n    const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n    const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n    const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n    const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n    return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\nconst RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nexport const parseRfc3339DateTime = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (typeof value !== \"string\") {\n        throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n    }\n    const match = RFC3339.exec(value);\n    if (!match) {\n        throw new TypeError(\"Invalid RFC-3339 date-time value\");\n    }\n    const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n    const year = strictParseShort(stripLeadingZeroes(yearStr));\n    const month = parseDateValue(monthStr, \"month\", 1, 12);\n    const day = parseDateValue(dayStr, \"day\", 1, 31);\n    return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n};\nconst RFC3339_WITH_OFFSET = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(([-+]\\d{2}:\\d{2})|[zZ])$/);\nexport const parseRfc3339DateTimeWithOffset = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (typeof value !== \"string\") {\n        throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n    }\n    const match = RFC3339_WITH_OFFSET.exec(value);\n    if (!match) {\n        throw new TypeError(\"Invalid RFC-3339 date-time value\");\n    }\n    const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;\n    const year = strictParseShort(stripLeadingZeroes(yearStr));\n    const month = parseDateValue(monthStr, \"month\", 1, 12);\n    const day = parseDateValue(dayStr, \"day\", 1, 31);\n    const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n    if (offsetStr.toUpperCase() != \"Z\") {\n        date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));\n    }\n    return date;\n};\nconst IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/);\nexport const parseRfc7231DateTime = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    if (typeof value !== \"string\") {\n        throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n    }\n    let match = IMF_FIXDATE.exec(value);\n    if (match) {\n        const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n        return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n    }\n    match = RFC_850_DATE.exec(value);\n    if (match) {\n        const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n        return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n            hours,\n            minutes,\n            seconds,\n            fractionalMilliseconds,\n        }));\n    }\n    match = ASC_TIME.exec(value);\n    if (match) {\n        const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n        return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n    }\n    throw new TypeError(\"Invalid RFC-7231 date-time value\");\n};\nexport const parseEpochTimestamp = (value) => {\n    if (value === null || value === undefined) {\n        return undefined;\n    }\n    let valueAsDouble;\n    if (typeof value === \"number\") {\n        valueAsDouble = value;\n    }\n    else if (typeof value === \"string\") {\n        valueAsDouble = strictParseDouble(value);\n    }\n    else if (typeof value === \"object\" && value.tag === 1) {\n        valueAsDouble = value.value;\n    }\n    else {\n        throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n    }\n    if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n        throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n    }\n    return new Date(Math.round(valueAsDouble * 1000));\n};\nconst buildDate = (year, month, day, time) => {\n    const adjustedMonth = month - 1;\n    validateDayOfMonth(year, adjustedMonth, day);\n    return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, \"hour\", 0, 23), parseDateValue(time.minutes, \"minute\", 0, 59), parseDateValue(time.seconds, \"seconds\", 0, 60), parseMilliseconds(time.fractionalMilliseconds)));\n};\nconst parseTwoDigitYear = (value) => {\n    const thisYear = new Date().getUTCFullYear();\n    const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));\n    if (valueInThisCentury < thisYear) {\n        return valueInThisCentury + 100;\n    }\n    return valueInThisCentury;\n};\nconst FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000;\nconst adjustRfc850Year = (input) => {\n    if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) {\n        return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds()));\n    }\n    return input;\n};\nconst parseMonthByShortName = (value) => {\n    const monthIdx = MONTHS.indexOf(value);\n    if (monthIdx < 0) {\n        throw new TypeError(`Invalid month: ${value}`);\n    }\n    return monthIdx + 1;\n};\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst validateDayOfMonth = (year, month, day) => {\n    let maxDays = DAYS_IN_MONTH[month];\n    if (month === 1 && isLeapYear(year)) {\n        maxDays = 29;\n    }\n    if (day > maxDays) {\n        throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n    }\n};\nconst isLeapYear = (year) => {\n    return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\nconst parseDateValue = (value, type, lower, upper) => {\n    const dateVal = strictParseByte(stripLeadingZeroes(value));\n    if (dateVal < lower || dateVal > upper) {\n        throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n    }\n    return dateVal;\n};\nconst parseMilliseconds = (value) => {\n    if (value === null || value === undefined) {\n        return 0;\n    }\n    return strictParseFloat32(\"0.\" + value) * 1000;\n};\nconst parseOffsetToMilliseconds = (value) => {\n    const directionStr = value[0];\n    let direction = 1;\n    if (directionStr == \"+\") {\n        direction = 1;\n    }\n    else if (directionStr == \"-\") {\n        direction = -1;\n    }\n    else {\n        throw new TypeError(`Offset direction, ${directionStr}, must be \"+\" or \"-\"`);\n    }\n    const hour = Number(value.substring(1, 3));\n    const minute = Number(value.substring(4, 6));\n    return direction * (hour * 60 + minute) * 60 * 1000;\n};\nconst stripLeadingZeroes = (value) => {\n    let idx = 0;\n    while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n        idx++;\n    }\n    if (idx === 0) {\n        return value;\n    }\n    return value.slice(idx);\n};\n","export const LazyJsonString = function LazyJsonString(val) {\n    const str = Object.assign(new String(val), {\n        deserializeJSON() {\n            return JSON.parse(String(val));\n        },\n        toString() {\n            return String(val);\n        },\n        toJSON() {\n            return String(val);\n        },\n    });\n    return str;\n};\nLazyJsonString.from = (object) => {\n    if (object && typeof object === \"object\" && (object instanceof LazyJsonString || \"deserializeJSON\" in object)) {\n        return object;\n    }\n    else if (typeof object === \"string\" || Object.getPrototypeOf(object) === String.prototype) {\n        return LazyJsonString(String(object));\n    }\n    return LazyJsonString(JSON.stringify(object));\n};\nLazyJsonString.fromObject = LazyJsonString.from;\n","export function quoteHeader(part) {\n    if (part.includes(\",\") || part.includes('\"')) {\n        part = `\"${part.replace(/\"/g, '\\\\\"')}\"`;\n    }\n    return part;\n}\n","const ddd = `(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?`;\nconst mmm = `(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`;\nconst time = `(\\\\d?\\\\d):(\\\\d{2}):(\\\\d{2})(?:\\\\.(\\\\d+))?`;\nconst date = `(\\\\d?\\\\d)`;\nconst year = `(\\\\d{4})`;\nconst RFC3339_WITH_OFFSET = new RegExp(/^(\\d{4})-(\\d\\d)-(\\d\\d)[tT](\\d\\d):(\\d\\d):(\\d\\d)(\\.(\\d+))?(([-+]\\d\\d:\\d\\d)|[zZ])$/);\nconst IMF_FIXDATE = new RegExp(`^${ddd}, ${date} ${mmm} ${year} ${time} GMT$`);\nconst RFC_850_DATE = new RegExp(`^${ddd}, ${date}-${mmm}-(\\\\d\\\\d) ${time} GMT$`);\nconst ASC_TIME = new RegExp(`^${ddd} ${mmm} ( [1-9]|\\\\d\\\\d) ${time} ${year}$`);\nconst months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nexport const _parseEpochTimestamp = (value) => {\n    if (value == null) {\n        return void 0;\n    }\n    let num = NaN;\n    if (typeof value === \"number\") {\n        num = value;\n    }\n    else if (typeof value === \"string\") {\n        if (!/^-?\\d*\\.?\\d+$/.test(value)) {\n            throw new TypeError(`parseEpochTimestamp - numeric string invalid.`);\n        }\n        num = Number.parseFloat(value);\n    }\n    else if (typeof value === \"object\" && value.tag === 1) {\n        num = value.value;\n    }\n    if (isNaN(num) || Math.abs(num) === Infinity) {\n        throw new TypeError(\"Epoch timestamps must be valid finite numbers.\");\n    }\n    return new Date(Math.round(num * 1000));\n};\nexport const _parseRfc3339DateTimeWithOffset = (value) => {\n    if (value == null) {\n        return void 0;\n    }\n    if (typeof value !== \"string\") {\n        throw new TypeError(\"RFC3339 timestamps must be strings\");\n    }\n    const matches = RFC3339_WITH_OFFSET.exec(value);\n    if (!matches) {\n        throw new TypeError(`Invalid RFC3339 timestamp format ${value}`);\n    }\n    const [, yearStr, monthStr, dayStr, hours, minutes, seconds, , ms, offsetStr] = matches;\n    range(monthStr, 1, 12);\n    range(dayStr, 1, 31);\n    range(hours, 0, 23);\n    range(minutes, 0, 59);\n    range(seconds, 0, 60);\n    const date = new Date(Date.UTC(Number(yearStr), Number(monthStr) - 1, Number(dayStr), Number(hours), Number(minutes), Number(seconds), Number(ms) ? Math.round(parseFloat(`0.${ms}`) * 1000) : 0));\n    date.setUTCFullYear(Number(yearStr));\n    if (offsetStr.toUpperCase() != \"Z\") {\n        const [, sign, offsetH, offsetM] = /([+-])(\\d\\d):(\\d\\d)/.exec(offsetStr) || [void 0, \"+\", 0, 0];\n        const scalar = sign === \"-\" ? 1 : -1;\n        date.setTime(date.getTime() + scalar * (Number(offsetH) * 60 * 60 * 1000 + Number(offsetM) * 60 * 1000));\n    }\n    return date;\n};\nexport const _parseRfc7231DateTime = (value) => {\n    if (value == null) {\n        return void 0;\n    }\n    if (typeof value !== \"string\") {\n        throw new TypeError(\"RFC7231 timestamps must be strings.\");\n    }\n    let day;\n    let month;\n    let year;\n    let hour;\n    let minute;\n    let second;\n    let fraction;\n    let matches;\n    if ((matches = IMF_FIXDATE.exec(value))) {\n        [, day, month, year, hour, minute, second, fraction] = matches;\n    }\n    else if ((matches = RFC_850_DATE.exec(value))) {\n        [, day, month, year, hour, minute, second, fraction] = matches;\n        year = (Number(year) + 1900).toString();\n    }\n    else if ((matches = ASC_TIME.exec(value))) {\n        [, month, day, hour, minute, second, fraction, year] = matches;\n    }\n    if (year && second) {\n        const timestamp = Date.UTC(Number(year), months.indexOf(month), Number(day), Number(hour), Number(minute), Number(second), fraction ? Math.round(parseFloat(`0.${fraction}`) * 1000) : 0);\n        range(day, 1, 31);\n        range(hour, 0, 23);\n        range(minute, 0, 59);\n        range(second, 0, 60);\n        const date = new Date(timestamp);\n        date.setUTCFullYear(Number(year));\n        return date;\n    }\n    throw new TypeError(`Invalid RFC7231 date-time value ${value}.`);\n};\nfunction range(v, min, max) {\n    const _v = Number(v);\n    if (_v < min || _v > max) {\n        throw new Error(`Value ${_v} out of range [${min}, ${max}]`);\n    }\n}\n","export function splitEvery(value, delimiter, numDelimiters) {\n    if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {\n        throw new Error(\"Invalid number of delimiters (\" + numDelimiters + \") for splitEvery.\");\n    }\n    const segments = value.split(delimiter);\n    if (numDelimiters === 1) {\n        return segments;\n    }\n    const compoundSegments = [];\n    let currentSegment = \"\";\n    for (let i = 0; i < segments.length; i++) {\n        if (currentSegment === \"\") {\n            currentSegment = segments[i];\n        }\n        else {\n            currentSegment += delimiter + segments[i];\n        }\n        if ((i + 1) % numDelimiters === 0) {\n            compoundSegments.push(currentSegment);\n            currentSegment = \"\";\n        }\n    }\n    if (currentSegment !== \"\") {\n        compoundSegments.push(currentSegment);\n    }\n    return compoundSegments;\n}\n","export const splitHeader = (value) => {\n    const z = value.length;\n    const values = [];\n    let withinQuotes = false;\n    let prevChar = undefined;\n    let anchor = 0;\n    for (let i = 0; i < z; ++i) {\n        const char = value[i];\n        switch (char) {\n            case `\"`:\n                if (prevChar !== \"\\\\\") {\n                    withinQuotes = !withinQuotes;\n                }\n                break;\n            case \",\":\n                if (!withinQuotes) {\n                    values.push(value.slice(anchor, i));\n                    anchor = i + 1;\n                }\n                break;\n            default:\n        }\n        prevChar = char;\n    }\n    values.push(value.slice(anchor));\n    return values.map((v) => {\n        v = v.trim();\n        const z = v.length;\n        if (z < 2) {\n            return v;\n        }\n        if (v[0] === `\"` && v[z - 1] === `\"`) {\n            v = v.slice(1, z - 1);\n        }\n        return v.replace(/\\\\\"/g, '\"');\n    });\n};\n","const format = /^-?((0|[1-9]\\d*)(\\.\\d+)?|\\.\\d+)([eE][+-]?\\d+)?$/;\nexport class NumericValue {\n    string;\n    type;\n    constructor(string, type) {\n        this.string = string;\n        this.type = type;\n        if (!format.test(string)) {\n            throw new Error(`@smithy/core/serde - NumericValue string must conform to the Smithy bigDecimal format. Received: \"${string}\"`);\n        }\n    }\n    toString() {\n        return this.string;\n    }\n    static [Symbol.hasInstance](object) {\n        if (!object || typeof object !== \"object\") {\n            return false;\n        }\n        const _nv = object;\n        return NumericValue.prototype.isPrototypeOf(object) || (_nv.type === \"bigDecimal\" && format.test(_nv.string));\n    }\n}\nexport function nv(input) {\n    return new NumericValue(String(input), \"bigDecimal\");\n}\n","import { ReadStream, fstatSync, lstatSync } from \"node:fs\";\nexport const calculateBodyLength = (body) => {\n    if (!body) {\n        return 0;\n    }\n    if (typeof body === \"string\") {\n        return Buffer.byteLength(body);\n    }\n    else if (typeof body.byteLength === \"number\") {\n        return body.byteLength;\n    }\n    else if (typeof body.size === \"number\") {\n        return body.size;\n    }\n    else if (typeof body.start === \"number\" && typeof body.end === \"number\") {\n        return body.end + 1 - body.start;\n    }\n    else if (body instanceof ReadStream) {\n        if (body.path != null) {\n            return lstatSync(body.path).size;\n        }\n        else if (typeof body.fd === \"number\") {\n            return fstatSync(body.fd).size;\n        }\n    }\n    throw new Error(`Body Length computation failed for ${body}`);\n};\n","import { fromUtf8 } from \"./fromUtf8\";\nexport const toUint8Array = (data) => {\n    if (data instanceof Uint8Array) {\n        return data;\n    }\n    if (typeof data === \"string\") {\n        return fromUtf8(data);\n    }\n    if (ArrayBuffer.isView(data)) {\n        return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n    }\n    return new Uint8Array(data);\n};\n","export function concatBytes(arrays, length) {\n    if (length === undefined) {\n        length = 0;\n        for (const bytes of arrays) {\n            length += bytes.byteLength;\n        }\n    }\n    const result = new Uint8Array(length);\n    let offset = 0;\n    for (const buf of arrays) {\n        result.set(buf, offset);\n        offset += buf.byteLength;\n    }\n    return result;\n}\n","export const isReadableStream = (stream) => typeof ReadableStream === \"function\" &&\n    (stream?.constructor?.name === ReadableStream.name || stream instanceof ReadableStream);\nexport const isBlob = (blob) => {\n    return typeof Blob === \"function\" && (blob?.constructor?.name === Blob.name || blob instanceof Blob);\n};\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","const chars = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;\nexport const alphabetByEncoding = Object.entries(chars).reduce((acc, [i, c]) => {\n    acc[c] = Number(i);\n    return acc;\n}, {});\nexport const alphabetByValue = chars.split(\"\");\nexport const bitsPerLetter = 6;\nexport const bitsPerByte = 8;\nexport const maxLetterValue = 0b111111;\n","import { fromUtf8 } from \"../util-utf8/fromUtf8.browser\";\nimport { alphabetByValue, bitsPerByte, bitsPerLetter, maxLetterValue } from \"./constants-for-browser\";\nexport function toBase64(_input) {\n    let input;\n    if (typeof _input === \"string\") {\n        input = fromUtf8(_input);\n    }\n    else {\n        input = _input;\n    }\n    const isArrayLike = typeof input === \"object\" && typeof input.length === \"number\";\n    const isUint8Array = typeof input === \"object\" &&\n        typeof input.byteOffset === \"number\" &&\n        typeof input.byteLength === \"number\";\n    if (!isArrayLike && !isUint8Array) {\n        throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n    }\n    let str = \"\";\n    for (let i = 0; i < input.length; i += 3) {\n        let bits = 0;\n        let bitLength = 0;\n        for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) {\n            bits |= input[j] << ((limit - j - 1) * bitsPerByte);\n            bitLength += bitsPerByte;\n        }\n        const bitClusterCount = Math.ceil(bitLength / bitsPerLetter);\n        bits <<= bitClusterCount * bitsPerLetter - bitLength;\n        for (let k = 1; k <= bitClusterCount; k++) {\n            const offset = (bitClusterCount - k) * bitsPerLetter;\n            str += alphabetByValue[(bits & (maxLetterValue << offset)) >> offset];\n        }\n        str += \"==\".slice(0, 4 - bitClusterCount);\n    }\n    return str;\n}\n","import { Readable } from \"node:stream\";\nimport { fromArrayBuffer } from \"../util-buffer-from/buffer-from\";\nimport { sdkStreamMixin as sdkStreamMixinReadableStream } from \"./sdk-stream-mixin.browser\";\nimport { streamCollector } from \"./stream-collector\";\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nexport const sdkStreamMixin = (stream) => {\n    if (!(stream instanceof Readable)) {\n        try {\n            return sdkStreamMixinReadableStream(stream);\n        }\n        catch (ignored) {\n            const name = stream?.__proto__?.constructor?.name || stream;\n            throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`);\n        }\n    }\n    let transformed = false;\n    const transformToByteArray = async () => {\n        if (transformed) {\n            throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n        }\n        transformed = true;\n        return await streamCollector(stream);\n    };\n    return Object.assign(stream, {\n        transformToByteArray,\n        transformToString: async (encoding) => {\n            const buf = await transformToByteArray();\n            if (encoding === undefined || Buffer.isEncoding(encoding)) {\n                return fromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding);\n            }\n            else {\n                const decoder = new TextDecoder(encoding);\n                return decoder.decode(buf);\n            }\n        },\n        transformToWebStream: () => {\n            if (transformed) {\n                throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n            }\n            if (stream.readableFlowing !== null) {\n                throw new Error(\"The stream has been consumed by other callbacks.\");\n            }\n            if (typeof Readable.toWeb !== \"function\") {\n                throw new Error(\"Readable.toWeb() is not supported. Please ensure a polyfill is available.\");\n            }\n            transformed = true;\n            return Readable.toWeb(stream);\n        },\n    });\n};\n","export const toUtf8 = (input) => {\n    if (typeof input === \"string\") {\n        return input;\n    }\n    if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n        throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n    }\n    return new TextDecoder(\"utf-8\").decode(input);\n};\n","import { concatBytes } from \"../concatBytes\";\nimport { isBlob } from \"./stream-type-check\";\nexport const streamCollector = async (stream) => {\n    if (isBlob(stream)) {\n        return collectBlob(stream);\n    }\n    return collectReadableStream(stream);\n};\nexport async function collectBlob(blob) {\n    return blob.arrayBuffer().then((ab) => new Uint8Array(ab));\n}\nexport async function collectReadableStream(stream) {\n    const chunks = [];\n    const reader = stream.getReader();\n    let length = 0;\n    while (true) {\n        const { done, value } = await reader.read();\n        if (value) {\n            chunks.push(value);\n            length += value.length;\n        }\n        if (done) {\n            break;\n        }\n    }\n    return concatBytes(chunks, length);\n}\n","import { toBase64 } from \"../util-base64/toBase64.browser\";\nimport { toHex } from \"../util-hex-encoding/hex-encoding\";\nimport { toUtf8 } from \"../util-utf8/toUtf8.browser\";\nimport { streamCollector } from \"./stream-collector.browser\";\nimport { isReadableStream } from \"./stream-type-check\";\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nexport const sdkStreamMixin = (stream) => {\n    if (!isBlobInstance(stream) && !isReadableStream(stream)) {\n        const name = stream?.__proto__?.constructor?.name || stream;\n        throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`);\n    }\n    let transformed = false;\n    const transformToByteArray = async () => {\n        if (transformed) {\n            throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n        }\n        transformed = true;\n        return await streamCollector(stream);\n    };\n    const blobToWebStream = (blob) => {\n        if (typeof blob.stream !== \"function\") {\n            throw new Error(\"Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\\n\" +\n                \"If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body\");\n        }\n        return blob.stream();\n    };\n    return Object.assign(stream, {\n        transformToByteArray: transformToByteArray,\n        transformToString: async (encoding) => {\n            const buf = await transformToByteArray();\n            if (encoding === \"base64\") {\n                return toBase64(buf);\n            }\n            else if (encoding === \"hex\") {\n                return toHex(buf);\n            }\n            else if (encoding === undefined || encoding === \"utf8\" || encoding === \"utf-8\") {\n                return toUtf8(buf);\n            }\n            else if (typeof TextDecoder === \"function\") {\n                return new TextDecoder(encoding).decode(buf);\n            }\n            else {\n                throw new Error(\"TextDecoder is not available, please make sure polyfill is provided.\");\n            }\n        },\n        transformToWebStream: () => {\n            if (transformed) {\n                throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n            }\n            transformed = true;\n            if (isBlobInstance(stream)) {\n                return blobToWebStream(stream);\n            }\n            else if (isReadableStream(stream)) {\n                return stream;\n            }\n            else {\n                throw new Error(`Cannot transform payload to web stream, got ${stream}`);\n            }\n        },\n    });\n};\nconst isBlobInstance = (stream) => typeof Blob === \"function\" && stream instanceof Blob;\n","import { Writable } from \"node:stream\";\nimport { concatBytes } from \"../concatBytes\";\nimport { collectBlob, collectReadableStream } from \"./stream-collector.browser\";\nimport { isBlob, isReadableStream } from \"./stream-type-check\";\nexport const streamCollector = (stream) => {\n    if (isBlob(stream)) {\n        return collectBlob(stream);\n    }\n    if (isReadableStream(stream)) {\n        return collectReadableStream(stream);\n    }\n    return new Promise((resolve, reject) => {\n        const collector = new Collector();\n        const nodeStream = stream;\n        nodeStream.pipe(collector);\n        nodeStream.on(\"error\", (err) => {\n            collector.end();\n            reject(err);\n        });\n        collector.on(\"error\", reject);\n        collector.on(\"finish\", function () {\n            const bytes = concatBytes(this.bufferedBytes);\n            resolve(bytes);\n        });\n    });\n};\nclass Collector extends Writable {\n    bufferedBytes = [];\n    _write(chunk, encoding, callback) {\n        this.bufferedBytes.push(chunk);\n        callback();\n    }\n}\n","export class ProviderError extends Error {\n    name = \"ProviderError\";\n    tryNextLink;\n    constructor(message, options = true) {\n        let logger;\n        let tryNextLink = true;\n        if (typeof options === \"boolean\") {\n            logger = undefined;\n            tryNextLink = options;\n        }\n        else if (options != null && typeof options === \"object\") {\n            logger = options.logger;\n            tryNextLink = options.tryNextLink ?? true;\n        }\n        super(message);\n        this.tryNextLink = tryNextLink;\n        Object.setPrototypeOf(this, ProviderError.prototype);\n        logger?.debug?.(`@smithy/property-provider ${tryNextLink ? \"->\" : \"(!)\"} ${message}`);\n    }\n    static from(error, options = true) {\n        return Object.assign(new this(error.message, options), error);\n    }\n}\n","import { ProviderError } from \"./ProviderError\";\nexport class CredentialsProviderError extends ProviderError {\n    name = \"CredentialsProviderError\";\n    constructor(message, options = true) {\n        super(message, options);\n        Object.setPrototypeOf(this, CredentialsProviderError.prototype);\n    }\n}\n","export const ENV_PROFILE = \"AWS_PROFILE\";\nexport const DEFAULT_PROFILE = \"default\";\nexport const getProfileName = (init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE;\n","import { join } from \"node:path\";\nimport { getHomeDir } from \"./getHomeDir\";\nexport const ENV_CONFIG_PATH = \"AWS_CONFIG_FILE\";\nexport const getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || join(getHomeDir(), \".aws\", \"config\");\n","import { homedir } from \"node:os\";\nimport { sep } from \"node:path\";\nconst homeDirCache = {};\nconst getHomeDirCacheKey = () => {\n    if (process && process.geteuid) {\n        return `${process.geteuid()}`;\n    }\n    return \"DEFAULT\";\n};\nexport const getHomeDir = () => {\n    const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${sep}` } = process.env;\n    if (HOME)\n        return HOME;\n    if (USERPROFILE)\n        return USERPROFILE;\n    if (HOMEPATH)\n        return `${HOMEDRIVE}${HOMEPATH}`;\n    const homeDirCacheKey = getHomeDirCacheKey();\n    if (!homeDirCache[homeDirCacheKey])\n        homeDirCache[homeDirCacheKey] = homedir();\n    return homeDirCache[homeDirCacheKey];\n};\n","import { join } from \"node:path\";\nimport { getConfigData } from \"./getConfigData\";\nimport { getConfigFilepath } from \"./getConfigFilepath\";\nimport { getCredentialsFilepath } from \"./getCredentialsFilepath\";\nimport { getHomeDir } from \"./getHomeDir\";\nimport { parseIni } from \"./parseIni\";\nimport { readFile } from \"./readFile\";\nconst swallowError = () => ({});\nexport { CONFIG_PREFIX_SEPARATOR } from \"./constants\";\nexport const loadSharedConfigFiles = async (init = {}) => {\n    const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init;\n    const homeDir = getHomeDir();\n    const relativeHomeDirPrefix = \"~/\";\n    let resolvedFilepath = filepath;\n    if (filepath.startsWith(relativeHomeDirPrefix)) {\n        resolvedFilepath = join(homeDir, filepath.slice(2));\n    }\n    let resolvedConfigFilepath = configFilepath;\n    if (configFilepath.startsWith(relativeHomeDirPrefix)) {\n        resolvedConfigFilepath = join(homeDir, configFilepath.slice(2));\n    }\n    const parsedFiles = await Promise.all([\n        readFile(resolvedConfigFilepath, {\n            ignoreCache: init.ignoreCache,\n        })\n            .then(parseIni)\n            .then(getConfigData)\n            .catch(swallowError),\n        readFile(resolvedFilepath, {\n            ignoreCache: init.ignoreCache,\n        })\n            .then(parseIni)\n            .catch(swallowError),\n    ]);\n    return {\n        configFile: parsedFiles[0],\n        credentialsFile: parsedFiles[1],\n    };\n};\n","export const CONFIG_PREFIX_SEPARATOR = \".\";\n","import { IniSectionType } from \"@smithy/types\";\nimport { CONFIG_PREFIX_SEPARATOR } from \"./constants\";\nexport const getConfigData = (data) => Object.entries(data)\n    .filter(([key]) => {\n    const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n    if (indexOfSeparator === -1) {\n        return false;\n    }\n    return Object.values(IniSectionType).includes(key.substring(0, indexOfSeparator));\n})\n    .reduce((acc, [key, value]) => {\n    const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n    const updatedKey = key.substring(0, indexOfSeparator) === IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key;\n    acc[updatedKey] = value;\n    return acc;\n}, {\n    ...(data.default && { default: data.default }),\n});\n","import { join } from \"node:path\";\nimport { getHomeDir } from \"./getHomeDir\";\nexport const ENV_CREDENTIALS_PATH = \"AWS_SHARED_CREDENTIALS_FILE\";\nexport const getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || join(getHomeDir(), \".aws\", \"credentials\");\n","import { IniSectionType } from \"@smithy/types\";\nimport { CONFIG_PREFIX_SEPARATOR } from \"./constants\";\nconst prefixKeyRegex = /^([\\w-]+)\\s([\"'])?([\\w-@+.%:/]+)\\2$/;\nconst profileNameBlockList = [\"__proto__\", \"profile __proto__\"];\nexport const parseIni = (iniData) => {\n    const map = {};\n    let currentSection;\n    let currentSubSection;\n    for (const iniLine of iniData.split(/\\r?\\n/)) {\n        const trimmedLine = iniLine.split(/(^|\\s)[;#]/)[0].trim();\n        const isSection = trimmedLine[0] === \"[\" && trimmedLine[trimmedLine.length - 1] === \"]\";\n        if (isSection) {\n            currentSection = undefined;\n            currentSubSection = undefined;\n            const sectionName = trimmedLine.substring(1, trimmedLine.length - 1);\n            const matches = prefixKeyRegex.exec(sectionName);\n            if (matches) {\n                const [, prefix, , name] = matches;\n                if (Object.values(IniSectionType).includes(prefix)) {\n                    currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR);\n                }\n            }\n            else {\n                currentSection = sectionName;\n            }\n            if (profileNameBlockList.includes(sectionName)) {\n                throw new Error(`Found invalid profile name \"${sectionName}\"`);\n            }\n        }\n        else if (currentSection) {\n            const indexOfEqualsSign = trimmedLine.indexOf(\"=\");\n            if (![0, -1].includes(indexOfEqualsSign)) {\n                const [name, value] = [\n                    trimmedLine.substring(0, indexOfEqualsSign).trim(),\n                    trimmedLine.substring(indexOfEqualsSign + 1).trim(),\n                ];\n                if (value === \"\") {\n                    currentSubSection = name;\n                }\n                else {\n                    if (currentSubSection && iniLine.trimStart() === iniLine) {\n                        currentSubSection = undefined;\n                    }\n                    map[currentSection] = map[currentSection] || {};\n                    const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name;\n                    map[currentSection][key] = value;\n                }\n            }\n        }\n    }\n    return map;\n};\n","import { readFile as fsReadFile } from \"node:fs/promises\";\nexport const filePromises = {};\nexport const fileIntercept = {};\nexport const readFile = (path, options) => {\n    if (fileIntercept[path] !== undefined) {\n        return fileIntercept[path];\n    }\n    if (!filePromises[path] || options?.ignoreCache) {\n        filePromises[path] = fsReadFile(path, \"utf8\");\n    }\n    return filePromises[path];\n};\n","import { IniSectionType } from \"@smithy/types\";\nimport { CONFIG_PREFIX_SEPARATOR } from \"./loadSharedConfigFiles\";\nexport const getSsoSessionData = (data) => Object.entries(data)\n    .filter(([key]) => key.startsWith(IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR))\n    .reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {});\n","import { getConfigFilepath } from \"./getConfigFilepath\";\nimport { getSsoSessionData } from \"./getSsoSessionData\";\nimport { parseIni } from \"./parseIni\";\nimport { readFile } from \"./readFile\";\nconst swallowError = () => ({});\nexport const loadSsoSessionData = async (init = {}) => readFile(init.configFilepath ?? getConfigFilepath())\n    .then(parseIni)\n    .then(getSsoSessionData)\n    .catch(swallowError);\n","export const mergeConfigFiles = (...files) => {\n    const merged = {};\n    for (const file of files) {\n        for (const [key, values] of Object.entries(file)) {\n            if (merged[key] !== undefined) {\n                Object.assign(merged[key], values);\n            }\n            else {\n                merged[key] = values;\n            }\n        }\n    }\n    return merged;\n};\n","import { loadSharedConfigFiles } from \"./loadSharedConfigFiles\";\nimport { mergeConfigFiles } from \"./mergeConfigFiles\";\nexport const parseKnownFiles = async (init) => {\n    const parsedFiles = await loadSharedConfigFiles(init);\n    return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile);\n};\n","import { readFile } from \"node:fs/promises\";\nimport { getSSOTokenFilepath } from \"./getSSOTokenFilepath\";\nexport const tokenIntercept = {};\nexport const getSSOTokenFromFile = async (id) => {\n    if (tokenIntercept[id]) {\n        return tokenIntercept[id];\n    }\n    const ssoTokenFilepath = getSSOTokenFilepath(id);\n    const ssoTokenText = await readFile(ssoTokenFilepath, \"utf8\");\n    return JSON.parse(ssoTokenText);\n};\n","import { createHash } from \"node:crypto\";\nimport { join } from \"node:path\";\nimport { getHomeDir } from \"./getHomeDir\";\nexport const getSSOTokenFilepath = (id) => {\n    const hasher = createHash(\"sha1\");\n    const cacheName = hasher.update(id).digest(\"hex\");\n    return join(getHomeDir(), \".aws\", \"sso\", \"cache\", `${cacheName}.json`);\n};\n","import { tokenIntercept } from \"./getSSOTokenFromFile\";\nimport { fileIntercept } from \"./readFile\";\nexport const externalDataInterceptor = {\n    getFileRecord() {\n        return fileIntercept;\n    },\n    interceptFile(path, contents) {\n        fileIntercept[path] = Promise.resolve(contents);\n    },\n    getTokenRecord() {\n        return tokenIntercept;\n    },\n    interceptToken(id, contents) {\n        tokenIntercept[id] = contents;\n    },\n};\n","import { ProviderError } from \"./ProviderError\";\nexport const chain = (...providers) => async () => {\n    if (providers.length === 0) {\n        throw new ProviderError(\"No providers in chain\");\n    }\n    let lastProviderError;\n    for (const provider of providers) {\n        try {\n            const credentials = await provider();\n            return credentials;\n        }\n        catch (err) {\n            lastProviderError = err;\n            if (err?.tryNextLink) {\n                continue;\n            }\n            throw err;\n        }\n    }\n    throw lastProviderError;\n};\n","export const memoize = (provider, isExpired, requiresRefresh) => {\n    let resolved;\n    let pending;\n    let hasResult;\n    let isConstant = false;\n    const coalesceProvider = async () => {\n        if (!pending) {\n            pending = provider();\n        }\n        try {\n            resolved = await pending;\n            hasResult = true;\n            isConstant = false;\n        }\n        finally {\n            pending = undefined;\n        }\n        return resolved;\n    };\n    if (isExpired === undefined) {\n        return async (options) => {\n            if (!hasResult || options?.forceRefresh) {\n                resolved = await coalesceProvider();\n            }\n            return resolved;\n        };\n    }\n    return async (options) => {\n        if (!hasResult || options?.forceRefresh) {\n            resolved = await coalesceProvider();\n        }\n        if (isConstant) {\n            return resolved;\n        }\n        if (requiresRefresh && !requiresRefresh(resolved)) {\n            isConstant = true;\n            return resolved;\n        }\n        if (isExpired(resolved)) {\n            await coalesceProvider();\n            return resolved;\n        }\n        return resolved;\n    };\n};\n","export function getSelectorName(functionString) {\n    try {\n        const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? []));\n        constants.delete(\"CONFIG\");\n        constants.delete(\"CONFIG_PREFIX_SEPARATOR\");\n        constants.delete(\"ENV\");\n        return [...constants].join(\", \");\n    }\n    catch (ignored) {\n        return functionString;\n    }\n}\n","import { CredentialsProviderError } from \"../property-provider/CredentialsProviderError\";\nimport { getSelectorName } from \"./getSelectorName\";\nexport const fromEnv = (envVarSelector, options) => async () => {\n    try {\n        const config = envVarSelector(process.env, options);\n        if (config === undefined) {\n            throw new Error();\n        }\n        return config;\n    }\n    catch (e) {\n        throw new CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger });\n    }\n};\n","import { CredentialsProviderError } from \"../property-provider/CredentialsProviderError\";\nimport { getProfileName } from \"../shared-ini-file-loader/getProfileName\";\nimport { loadSharedConfigFiles } from \"../shared-ini-file-loader/loadSharedConfigFiles\";\nimport { getSelectorName } from \"./getSelectorName\";\nexport const fromSharedConfigFiles = (configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n    const profile = getProfileName(init);\n    const { configFile, credentialsFile } = await loadSharedConfigFiles(init);\n    const profileFromCredentials = credentialsFile[profile] || {};\n    const profileFromConfig = configFile[profile] || {};\n    const mergedProfile = preferredFile === \"config\"\n        ? { ...profileFromCredentials, ...profileFromConfig }\n        : { ...profileFromConfig, ...profileFromCredentials };\n    try {\n        const cfgFile = preferredFile === \"config\" ? configFile : credentialsFile;\n        const configValue = configSelector(mergedProfile, cfgFile);\n        if (configValue === undefined) {\n            throw new Error();\n        }\n        return configValue;\n    }\n    catch (e) {\n        throw new CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger });\n    }\n};\n","export const fromValue = (staticValue) => () => Promise.resolve(staticValue);\n","import { fromValue } from \"../property-provider/fromValue\";\nconst isFunction = (func) => typeof func === \"function\";\nexport const fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : fromValue(defaultValue);\n","import { chain } from \"../property-provider/chain\";\nimport { memoize } from \"../property-provider/memoize\";\nimport { fromEnv } from \"./fromEnv\";\nimport { fromSharedConfigFiles } from \"./fromSharedConfigFiles\";\nimport { fromStatic } from \"./fromStatic\";\nexport const loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => {\n    const { signingName, logger } = configuration;\n    const envOptions = { signingName, logger };\n    return memoize(chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue)));\n};\n","import { isValidHostLabel } from \"@smithy/core/transport\";\nconst validRegions = new Set();\nexport const checkRegion = (region, check = isValidHostLabel) => {\n    if (!validRegions.has(region) && !check(region)) {\n        if (region === \"*\") {\n            console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of \"*\". See \"sigv4a\" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`);\n        }\n        else {\n            throw new Error(`Region not accepted: region=\"${region}\" is not a valid hostname component.`);\n        }\n    }\n    else {\n        validRegions.add(region);\n    }\n};\n","export const isFipsRegion = (region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\"));\n","import { isFipsRegion } from \"./isFipsRegion\";\nexport const getRealRegion = (region) => isFipsRegion(region)\n    ? [\"fips-aws-global\", \"aws-fips\"].includes(region)\n        ? \"us-east-1\"\n        : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\")\n    : region;\n","import { checkRegion } from \"./checkRegion\";\nimport { getRealRegion } from \"./getRealRegion\";\nimport { isFipsRegion } from \"./isFipsRegion\";\nexport const resolveRegionConfig = (input) => {\n    const { region, useFipsEndpoint } = input;\n    if (!region) {\n        throw new Error(\"Region is missing\");\n    }\n    return Object.assign(input, {\n        region: async () => {\n            const providedRegion = typeof region === \"function\" ? await region() : region;\n            const realRegion = getRealRegion(providedRegion);\n            checkRegion(realRegion);\n            return realRegion;\n        },\n        useFipsEndpoint: async () => {\n            const providedRegion = typeof region === \"string\" ? region : await region();\n            if (isFipsRegion(providedRegion)) {\n                return true;\n            }\n            return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n        },\n    });\n};\n","import { ProviderError } from \"./ProviderError\";\nexport class TokenProviderError extends ProviderError {\n    name = \"TokenProviderError\";\n    constructor(message, options = true) {\n        super(message, options);\n        Object.setPrototypeOf(this, TokenProviderError.prototype);\n    }\n}\n","export const booleanSelector = (obj, key, type) => {\n    if (!(key in obj))\n        return undefined;\n    if (obj[key] === \"true\")\n        return true;\n    if (obj[key] === \"false\")\n        return false;\n    throw new Error(`Cannot load ${type} \"${key}\". Expected \"true\" or \"false\", got ${obj[key]}.`);\n};\n","export var SelectorType;\n(function (SelectorType) {\n    SelectorType[\"ENV\"] = \"env\";\n    SelectorType[\"CONFIG\"] = \"shared config entry\";\n})(SelectorType || (SelectorType = {}));\n","import { booleanSelector } from \"../../util-config-provider/booleanSelector\";\nimport { SelectorType } from \"../../util-config-provider/types\";\nexport const ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nexport const CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nexport const DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nexport const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV),\n    configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),\n    default: false,\n};\nexport const nodeDualstackConfigSelectors = {\n    environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV),\n    configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),\n    default: undefined,\n};\n","import { booleanSelector } from \"../../util-config-provider/booleanSelector\";\nimport { SelectorType } from \"../../util-config-provider/types\";\nexport const ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nexport const CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nexport const DEFAULT_USE_FIPS_ENDPOINT = false;\nexport const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV),\n    configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),\n    default: false,\n};\nexport const nodeFipsConfigSelectors = {\n    environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV),\n    configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),\n    default: undefined,\n};\n","export const AWS_EXECUTION_ENV = \"AWS_EXECUTION_ENV\";\nexport const AWS_REGION_ENV = \"AWS_REGION\";\nexport const AWS_DEFAULT_REGION_ENV = \"AWS_DEFAULT_REGION\";\nexport const ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nexport const DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\nexport const IMDS_REGION_PATH = \"/latest/meta-data/placement/region\";\nexport const IMDS_TOKEN_PATH = \"/latest/api/token\";\nexport const X_AWS_EC2_METADATA_TOKEN = \"x-aws-ec2-metadata-token\";\nexport const X_AWS_EC2_METADATA_TOKEN_TTL = \"x-aws-ec2-metadata-token-ttl-seconds\";\n","import { ENV_IMDS_DISABLED, IMDS_REGION_PATH, IMDS_TOKEN_PATH, X_AWS_EC2_METADATA_TOKEN, X_AWS_EC2_METADATA_TOKEN_TTL, } from \"../../defaults-mode/constants\";\nconst TIMEOUT_MS = 1000;\nconst NEG_CACHE_TTL_MS = 60_000;\nlet negativeCacheUntil = 0;\nexport const getInstanceMetadataRegion = async () => {\n    if (process.env[ENV_IMDS_DISABLED]) {\n        return undefined;\n    }\n    if (Date.now() < negativeCacheUntil) {\n        return undefined;\n    }\n    try {\n        const endpoint = resolveImdsEndpoint();\n        const token = (await imdsRequest({\n            ...endpoint,\n            path: IMDS_TOKEN_PATH,\n            method: \"PUT\",\n            headers: {\n                [X_AWS_EC2_METADATA_TOKEN_TTL]: \"21600\",\n            },\n        })).toString();\n        const region = (await imdsRequest({\n            ...endpoint,\n            path: IMDS_REGION_PATH,\n            method: \"GET\",\n            headers: {\n                [X_AWS_EC2_METADATA_TOKEN]: token,\n            },\n        }))\n            .toString()\n            .trim();\n        return region || cacheNegativeAndReturnUndefined();\n    }\n    catch {\n        return cacheNegativeAndReturnUndefined();\n    }\n};\nconst cacheNegativeAndReturnUndefined = () => {\n    negativeCacheUntil = Date.now() + NEG_CACHE_TTL_MS;\n    return undefined;\n};\nconst resolveImdsEndpoint = () => {\n    const envEndpoint = process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT;\n    if (envEndpoint) {\n        const url = new URL(envEndpoint);\n        return {\n            hostname: url.hostname.replace(/^\\[(.+)]$/, \"$1\"),\n            port: url.port ? Number(url.port) : undefined,\n        };\n    }\n    if (process.env.AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE === \"IPv6\") {\n        return { hostname: \"fd00:ec2::254\" };\n    }\n    return { hostname: \"169.254.169.254\" };\n};\nconst imdsRequest = async (options) => {\n    const { request } = await import(\"node:http\");\n    return new Promise((resolve, reject) => {\n        const req = request({\n            hostname: options.hostname,\n            port: options.port,\n            path: options.path,\n            method: options.method,\n            headers: options.headers,\n            timeout: TIMEOUT_MS,\n            signal: AbortSignal.timeout(TIMEOUT_MS),\n        });\n        req.on(\"error\", (err) => {\n            reject(err);\n            req.destroy();\n        });\n        req.on(\"timeout\", () => {\n            reject(new Error(\"TimeoutError from instance metadata service\"));\n            req.destroy();\n        });\n        req.on(\"response\", (res) => {\n            const { statusCode = 400 } = res;\n            if (statusCode < 200 || statusCode >= 300) {\n                reject(Object.assign(new Error(\"Error response received from instance metadata service\"), { statusCode }));\n                req.destroy();\n                return;\n            }\n            const chunks = [];\n            res.on(\"data\", (chunk) => chunks.push(chunk));\n            res.on(\"end\", () => {\n                resolve(Buffer.concat(chunks));\n                req.destroy();\n            });\n        });\n        req.end();\n    });\n};\n","import { getInstanceMetadataRegion } from \"./getInstanceMetadataRegion\";\nexport const REGION_ENV_NAME = \"AWS_REGION\";\nexport const REGION_INI_NAME = \"region\";\nexport const NODE_REGION_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n    configFileSelector: (profile) => profile[REGION_INI_NAME],\n    default: async () => {\n        const region = await getInstanceMetadataRegion();\n        if (region) {\n            return region;\n        }\n        throw new Error(\"Region is missing\");\n    },\n};\nexport const NODE_REGION_CONFIG_FILE_OPTIONS = {\n    preferredFile: \"credentials\",\n};\n","const AWS_DEFAULTS_MODE_ENV = \"AWS_DEFAULTS_MODE\";\nconst AWS_DEFAULTS_MODE_CONFIG = \"defaults_mode\";\nexport const NODE_DEFAULTS_MODE_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => {\n        return env[AWS_DEFAULTS_MODE_ENV];\n    },\n    configFileSelector: (profile) => {\n        return profile[AWS_DEFAULTS_MODE_CONFIG];\n    },\n    default: \"legacy\",\n};\n","import { NODE_REGION_CONFIG_OPTIONS } from \"../config-resolver/regionConfig/config\";\nimport { getInstanceMetadataRegion } from \"../config-resolver/regionConfig/getInstanceMetadataRegion\";\nimport { loadConfig } from \"../node-config-provider/configLoader\";\nimport { memoize } from \"../property-provider/memoize\";\nimport { AWS_DEFAULT_REGION_ENV, AWS_EXECUTION_ENV, AWS_REGION_ENV, DEFAULTS_MODE_OPTIONS } from \"./constants\";\nimport { NODE_DEFAULTS_MODE_CONFIG_OPTIONS } from \"./defaultsModeConfig\";\nexport const resolveDefaultsModeConfig = ({ region = loadConfig(NODE_REGION_CONFIG_OPTIONS), defaultsMode = loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => memoize(async () => {\n    const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n    switch (mode?.toLowerCase()) {\n        case \"auto\":\n            return resolveNodeDefaultsModeAuto(region);\n        case \"in-region\":\n        case \"cross-region\":\n        case \"mobile\":\n        case \"standard\":\n        case \"legacy\":\n            return Promise.resolve(mode?.toLocaleLowerCase());\n        case undefined:\n            return Promise.resolve(\"legacy\");\n        default:\n            throw new Error(`Invalid parameter for \"defaultsMode\", expect ${DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`);\n    }\n});\nconst resolveNodeDefaultsModeAuto = async (clientRegion) => {\n    if (clientRegion) {\n        const resolvedRegion = typeof clientRegion === \"function\" ? await clientRegion() : clientRegion;\n        const inferredRegion = await inferPhysicalRegion();\n        if (!inferredRegion) {\n            return \"standard\";\n        }\n        if (resolvedRegion === inferredRegion) {\n            return \"in-region\";\n        }\n        else {\n            return \"cross-region\";\n        }\n    }\n    return \"standard\";\n};\nconst inferPhysicalRegion = async () => {\n    if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) {\n        return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV];\n    }\n    return getInstanceMetadataRegion();\n};\n","import { HttpRequest } from \"@smithy/core/transport\";\nconst CONTENT_LENGTH_HEADER = \"content-length\";\nexport function contentLengthMiddleware(bodyLengthChecker) {\n    return (next) => async (args) => {\n        const request = args.request;\n        if (HttpRequest.isInstance(request)) {\n            const { body, headers } = request;\n            if (body &&\n                Object.keys(headers)\n                    .map((str) => str.toLowerCase())\n                    .indexOf(CONTENT_LENGTH_HEADER) === -1) {\n                try {\n                    const length = bodyLengthChecker(body);\n                    request.headers = {\n                        ...request.headers,\n                        [CONTENT_LENGTH_HEADER]: String(length),\n                    };\n                }\n                catch (ignored) {\n                }\n            }\n        }\n        return next({\n            ...args,\n            request,\n        });\n    };\n}\nexport const contentLengthMiddlewareOptions = {\n    step: \"build\",\n    tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n    name: \"contentLengthMiddleware\",\n    override: true,\n};\nexport const getContentLengthPlugin = (options) => ({\n    applyToStack: (clientStack) => {\n        clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n    },\n});\n","import { Uint8ArrayBlobAdapter } from \"@smithy/core/serde\";\nexport const collectBody = async (streamBody = new Uint8Array(), context) => {\n    if (streamBody instanceof Uint8Array) {\n        return Uint8ArrayBlobAdapter.mutate(streamBody);\n    }\n    if (!streamBody) {\n        return Uint8ArrayBlobAdapter.mutate(new Uint8Array());\n    }\n    const fromContext = context.streamCollector(streamBody);\n    return Uint8ArrayBlobAdapter.mutate(await fromContext);\n};\n","export function extendedEncodeURIComponent(str) {\n    return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n        return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n    });\n}\n","export class SerdeContext {\n    serdeContext;\n    setSerdeContext(serdeContext) {\n        this.serdeContext = serdeContext;\n    }\n}\n","import { NormalizedSchema, TypeRegistry, translateTraits } from \"@smithy/core/schema\";\nimport { HttpRequest, HttpResponse, isValidHostname } from \"@smithy/core/transport\";\nimport { SerdeContext } from \"./SerdeContext\";\nexport class HttpProtocol extends SerdeContext {\n    options;\n    compositeErrorRegistry;\n    constructor(options) {\n        super();\n        this.options = options;\n        this.compositeErrorRegistry = TypeRegistry.for(options.defaultNamespace);\n        for (const etr of options.errorTypeRegistries ?? []) {\n            this.compositeErrorRegistry.copyFrom(etr);\n        }\n    }\n    getRequestType() {\n        return HttpRequest;\n    }\n    getResponseType() {\n        return HttpResponse;\n    }\n    setSerdeContext(serdeContext) {\n        this.serdeContext = serdeContext;\n        this.serializer.setSerdeContext(serdeContext);\n        this.deserializer.setSerdeContext(serdeContext);\n        if (this.getPayloadCodec()) {\n            this.getPayloadCodec().setSerdeContext(serdeContext);\n        }\n    }\n    updateServiceEndpoint(request, endpoint) {\n        if (\"url\" in endpoint) {\n            request.protocol = endpoint.url.protocol;\n            request.hostname = endpoint.url.hostname;\n            request.port = endpoint.url.port ? Number(endpoint.url.port) : undefined;\n            request.path = endpoint.url.pathname;\n            request.fragment = endpoint.url.hash || void 0;\n            request.username = endpoint.url.username || void 0;\n            request.password = endpoint.url.password || void 0;\n            if (!request.query) {\n                request.query = {};\n            }\n            for (const [k, v] of endpoint.url.searchParams.entries()) {\n                request.query[k] = v;\n            }\n            if (endpoint.headers) {\n                for (const name in endpoint.headers) {\n                    request.headers[name] = endpoint.headers[name].join(\", \");\n                }\n            }\n            return request;\n        }\n        else {\n            request.protocol = endpoint.protocol;\n            request.hostname = endpoint.hostname;\n            request.port = endpoint.port ? Number(endpoint.port) : undefined;\n            request.path = endpoint.path;\n            request.query = {\n                ...endpoint.query,\n            };\n            if (endpoint.headers) {\n                for (const name in endpoint.headers) {\n                    request.headers[name] = endpoint.headers[name];\n                }\n            }\n            return request;\n        }\n    }\n    setHostPrefix(request, operationSchema, input) {\n        if (this.serdeContext?.disableHostPrefix) {\n            return;\n        }\n        const inputNs = NormalizedSchema.of(operationSchema.input);\n        const opTraits = translateTraits(operationSchema.traits ?? {});\n        if (opTraits.endpoint) {\n            let hostPrefix = opTraits.endpoint?.[0];\n            if (typeof hostPrefix === \"string\") {\n                for (const [name, member] of inputNs.structIterator()) {\n                    if (!member.getMergedTraits().hostLabel) {\n                        continue;\n                    }\n                    const replacement = input[name];\n                    if (typeof replacement !== \"string\") {\n                        throw new Error(`@smithy/core/schema - ${name} in input must be a string as hostLabel.`);\n                    }\n                    hostPrefix = hostPrefix.replace(`{${name}}`, replacement);\n                }\n                request.hostname = hostPrefix + request.hostname;\n                if (!isValidHostname(request.hostname)) {\n                    throw new Error(`[${request.hostname}] is not a valid hostname.`);\n                }\n            }\n        }\n    }\n    deserializeMetadata(output) {\n        return {\n            httpStatusCode: output.statusCode,\n            requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n            extendedRequestId: output.headers[\"x-amz-id-2\"],\n            cfId: output.headers[\"x-amz-cf-id\"],\n        };\n    }\n    async serializeEventStream({ eventStream, requestSchema, initialRequest, }) {\n        const eventStreamSerde = await this.loadEventStreamCapability();\n        return eventStreamSerde.serializeEventStream({\n            eventStream,\n            requestSchema,\n            initialRequest,\n        });\n    }\n    async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) {\n        const eventStreamSerde = await this.loadEventStreamCapability();\n        return eventStreamSerde.deserializeEventStream({\n            response,\n            responseSchema,\n            initialResponseContainer,\n        });\n    }\n    async loadEventStreamCapability() {\n        const { EventStreamSerde, eventStreamSerdeProvider } = await import(\"@smithy/core/event-streams\");\n        const marshaller = this.resolveEventStreamMarshaller(eventStreamSerdeProvider);\n        return new EventStreamSerde({\n            marshaller,\n            serializer: this.serializer,\n            deserializer: this.deserializer,\n            serdeContext: this.serdeContext,\n            defaultContentType: this.getDefaultContentType(),\n            compositeErrorRegistry: this.compositeErrorRegistry,\n        });\n    }\n    resolveEventStreamMarshaller(importedProvider) {\n        const context = this.serdeContext;\n        if (context.eventStreamMarshaller) {\n            return context.eventStreamMarshaller;\n        }\n        return importedProvider(this.serdeContext);\n    }\n    getDefaultContentType() {\n        throw new Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`);\n    }\n    async deserializeHttpMessage(schema, context, response, arg4, arg5) {\n        void schema;\n        void context;\n        void response;\n        void arg4;\n        void arg5;\n        return [];\n    }\n    getEventStreamMarshaller() {\n        const context = this.serdeContext;\n        if (!context.eventStreamMarshaller) {\n            throw new Error(\"@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.\");\n        }\n        return context.eventStreamMarshaller;\n    }\n}\n","import { NormalizedSchema, translateTraits } from \"@smithy/core/schema\";\nimport { sdkStreamMixin, splitEvery, splitHeader } from \"@smithy/core/serde\";\nimport { HttpRequest } from \"@smithy/core/transport\";\nimport { HttpProtocol } from \"./HttpProtocol\";\nimport { collectBody } from \"./collect-stream-body\";\nimport { extendedEncodeURIComponent } from \"./extended-encode-uri-component\";\nexport class HttpBindingProtocol extends HttpProtocol {\n    async serializeRequest(operationSchema, _input, context) {\n        const input = _input && typeof _input === \"object\" ? _input : {};\n        const serializer = this.serializer;\n        const query = {};\n        const headers = {};\n        const endpoint = await context.endpoint();\n        const ns = NormalizedSchema.of(operationSchema?.input);\n        const payloadMemberNames = [];\n        const payloadMemberSchemas = [];\n        let hasNonHttpBindingMember = false;\n        let payload;\n        const request = new HttpRequest({\n            protocol: \"\",\n            hostname: \"\",\n            port: undefined,\n            path: \"\",\n            fragment: undefined,\n            query: query,\n            headers: headers,\n            body: undefined,\n        });\n        if (endpoint) {\n            this.updateServiceEndpoint(request, endpoint);\n            this.setHostPrefix(request, operationSchema, input);\n            const opTraits = translateTraits(operationSchema.traits);\n            if (opTraits.http) {\n                request.method = opTraits.http[0];\n                const [path, search] = opTraits.http[1].split(\"?\");\n                if (request.path == \"/\") {\n                    request.path = path;\n                }\n                else {\n                    request.path += path;\n                }\n                const traitSearchParams = new URLSearchParams(search ?? \"\");\n                for (const [key, value] of traitSearchParams) {\n                    query[key] = value;\n                }\n            }\n        }\n        for (const [memberName, memberNs] of ns.structIterator()) {\n            const memberTraits = memberNs.getMergedTraits() ?? {};\n            const inputMemberValue = input[memberName];\n            if (inputMemberValue == null && !memberNs.isIdempotencyToken()) {\n                if (memberTraits.httpLabel) {\n                    if (request.path.includes(`{${memberName}+}`) || request.path.includes(`{${memberName}}`)) {\n                        throw new Error(`No value provided for input HTTP label: ${memberName}.`);\n                    }\n                }\n                continue;\n            }\n            if (memberTraits.httpPayload) {\n                const isStreaming = memberNs.isStreaming();\n                if (isStreaming) {\n                    const isEventStream = memberNs.isStructSchema();\n                    if (isEventStream) {\n                        if (input[memberName]) {\n                            payload = await this.serializeEventStream({\n                                eventStream: input[memberName],\n                                requestSchema: ns,\n                            });\n                        }\n                    }\n                    else {\n                        payload = inputMemberValue;\n                    }\n                }\n                else {\n                    serializer.write(memberNs, inputMemberValue);\n                    payload = serializer.flush();\n                }\n            }\n            else if (memberTraits.httpLabel) {\n                serializer.write(memberNs, inputMemberValue);\n                const replacement = serializer.flush();\n                if (request.path.includes(`{${memberName}+}`)) {\n                    request.path = request.path.replace(`{${memberName}+}`, replacement.split(\"/\").map(extendedEncodeURIComponent).join(\"/\"));\n                }\n                else if (request.path.includes(`{${memberName}}`)) {\n                    request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement));\n                }\n            }\n            else if (memberTraits.httpHeader) {\n                serializer.write(memberNs, inputMemberValue);\n                headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush());\n            }\n            else if (typeof memberTraits.httpPrefixHeaders === \"string\") {\n                for (const key in inputMemberValue) {\n                    const val = inputMemberValue[key];\n                    const amalgam = memberTraits.httpPrefixHeaders + key;\n                    serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val);\n                    headers[amalgam.toLowerCase()] = serializer.flush();\n                }\n            }\n            else if (memberTraits.httpQuery || memberTraits.httpQueryParams) {\n                this.serializeQuery(memberNs, inputMemberValue, query);\n            }\n            else {\n                hasNonHttpBindingMember = true;\n                payloadMemberNames.push(memberName);\n                payloadMemberSchemas.push(memberNs);\n            }\n        }\n        if (hasNonHttpBindingMember && input) {\n            const [namespace, name] = (ns.getName(true) ?? \"#Unknown\").split(\"#\");\n            const requiredMembers = ns.getSchema()[6];\n            const payloadSchema = [\n                3,\n                namespace,\n                name,\n                ns.getMergedTraits(),\n                payloadMemberNames,\n                payloadMemberSchemas,\n                undefined,\n            ];\n            if (requiredMembers) {\n                payloadSchema[6] = requiredMembers;\n            }\n            else {\n                payloadSchema.pop();\n            }\n            serializer.write(payloadSchema, input);\n            payload = serializer.flush();\n        }\n        request.headers = headers;\n        request.query = query;\n        request.body = payload;\n        return request;\n    }\n    serializeQuery(ns, data, query) {\n        const serializer = this.serializer;\n        const traits = ns.getMergedTraits();\n        if (traits.httpQueryParams) {\n            for (const key in data) {\n                if (!(key in query)) {\n                    const val = data[key];\n                    const valueSchema = ns.getValueSchema();\n                    Object.assign(valueSchema.getMergedTraits(), {\n                        ...traits,\n                        httpQuery: key,\n                        httpQueryParams: undefined,\n                    });\n                    this.serializeQuery(valueSchema, val, query);\n                }\n            }\n            return;\n        }\n        if (ns.isListSchema()) {\n            const sparse = !!ns.getMergedTraits().sparse;\n            const buffer = [];\n            for (const item of data) {\n                serializer.write([ns.getValueSchema(), traits], item);\n                const serializable = serializer.flush();\n                if (sparse || serializable !== undefined) {\n                    buffer.push(serializable);\n                }\n            }\n            query[traits.httpQuery] = buffer;\n        }\n        else {\n            serializer.write([ns, traits], data);\n            query[traits.httpQuery] = serializer.flush();\n        }\n    }\n    async deserializeResponse(operationSchema, context, response) {\n        const deserializer = this.deserializer;\n        const ns = NormalizedSchema.of(operationSchema.output);\n        const dataObject = {};\n        if (response.statusCode >= 300) {\n            const bytes = await collectBody(response.body, context);\n            if (bytes.byteLength > 0) {\n                Object.assign(dataObject, await deserializer.read(15, bytes));\n            }\n            await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response));\n            throw new Error(\"@smithy/core/protocols - HTTP Protocol error handler failed to throw.\");\n        }\n        for (const header in response.headers) {\n            const value = response.headers[header];\n            delete response.headers[header];\n            response.headers[header.toLowerCase()] = value;\n        }\n        const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, dataObject);\n        if (nonHttpBindingMembers.length) {\n            const bytes = await collectBody(response.body, context);\n            if (bytes.byteLength > 0) {\n                const dataFromBody = await deserializer.read(ns, bytes);\n                for (const member of nonHttpBindingMembers) {\n                    if (dataFromBody[member] != null) {\n                        dataObject[member] = dataFromBody[member];\n                    }\n                }\n            }\n        }\n        else if (nonHttpBindingMembers.discardResponseBody) {\n            await collectBody(response.body, context);\n        }\n        dataObject.$metadata = this.deserializeMetadata(response);\n        return dataObject;\n    }\n    async deserializeHttpMessage(schema, context, response, arg4, arg5) {\n        let dataObject;\n        if (arg4 instanceof Set) {\n            dataObject = arg5;\n        }\n        else {\n            dataObject = arg4;\n        }\n        let discardResponseBody = true;\n        const deserializer = this.deserializer;\n        const ns = NormalizedSchema.of(schema);\n        const nonHttpBindingMembers = [];\n        for (const [memberName, memberSchema] of ns.structIterator()) {\n            const memberTraits = memberSchema.getMemberTraits();\n            if (memberTraits.httpPayload) {\n                discardResponseBody = false;\n                const isStreaming = memberSchema.isStreaming();\n                if (isStreaming) {\n                    const isEventStream = memberSchema.isStructSchema();\n                    if (isEventStream) {\n                        dataObject[memberName] = await this.deserializeEventStream({\n                            response,\n                            responseSchema: ns,\n                        });\n                    }\n                    else {\n                        dataObject[memberName] = sdkStreamMixin(response.body);\n                    }\n                }\n                else if (response.body) {\n                    const bytes = await collectBody(response.body, context);\n                    if (bytes.byteLength > 0) {\n                        dataObject[memberName] = await deserializer.read(memberSchema, bytes);\n                    }\n                }\n            }\n            else if (memberTraits.httpHeader) {\n                const key = String(memberTraits.httpHeader).toLowerCase();\n                const value = response.headers[key];\n                if (null != value) {\n                    if (memberSchema.isListSchema()) {\n                        const headerListValueSchema = memberSchema.getValueSchema();\n                        headerListValueSchema.getMergedTraits().httpHeader = key;\n                        let sections;\n                        if (headerListValueSchema.isTimestampSchema() &&\n                            headerListValueSchema.getSchema() === 4) {\n                            sections = splitEvery(value, \",\", 2);\n                        }\n                        else {\n                            sections = splitHeader(value);\n                        }\n                        const list = [];\n                        for (const section of sections) {\n                            list.push(await deserializer.read(headerListValueSchema, section.trim()));\n                        }\n                        dataObject[memberName] = list;\n                    }\n                    else {\n                        dataObject[memberName] = await deserializer.read(memberSchema, value);\n                    }\n                }\n            }\n            else if (memberTraits.httpPrefixHeaders !== undefined) {\n                dataObject[memberName] = {};\n                for (const header in response.headers) {\n                    if (header.startsWith(memberTraits.httpPrefixHeaders)) {\n                        const value = response.headers[header];\n                        const valueSchema = memberSchema.getValueSchema();\n                        valueSchema.getMergedTraits().httpHeader = header;\n                        dataObject[memberName][header.slice(memberTraits.httpPrefixHeaders.length)] = await deserializer.read(valueSchema, value);\n                    }\n                }\n            }\n            else if (memberTraits.httpResponseCode) {\n                dataObject[memberName] = response.statusCode;\n            }\n            else {\n                nonHttpBindingMembers.push(memberName);\n            }\n        }\n        nonHttpBindingMembers.discardResponseBody = discardResponseBody;\n        return nonHttpBindingMembers;\n    }\n}\n","import { NormalizedSchema } from \"@smithy/core/schema\";\nimport { HttpRequest } from \"@smithy/core/transport\";\nimport { HttpProtocol } from \"./HttpProtocol\";\nimport { collectBody } from \"./collect-stream-body\";\nexport class RpcProtocol extends HttpProtocol {\n    async serializeRequest(operationSchema, _input, context) {\n        const serializer = this.serializer;\n        const query = {};\n        const headers = {};\n        const endpoint = await context.endpoint();\n        const ns = NormalizedSchema.of(operationSchema?.input);\n        const schema = ns.getSchema();\n        let payload;\n        const input = _input && typeof _input === \"object\" ? _input : {};\n        const request = new HttpRequest({\n            protocol: \"\",\n            hostname: \"\",\n            port: undefined,\n            path: \"/\",\n            fragment: undefined,\n            query: query,\n            headers: headers,\n            body: undefined,\n        });\n        if (endpoint) {\n            this.updateServiceEndpoint(request, endpoint);\n            this.setHostPrefix(request, operationSchema, input);\n        }\n        if (input) {\n            const eventStreamMember = ns.getEventStreamMember();\n            if (eventStreamMember) {\n                if (input[eventStreamMember]) {\n                    const initialRequest = {};\n                    for (const [memberName, memberSchema] of ns.structIterator()) {\n                        if (memberName !== eventStreamMember && input[memberName]) {\n                            serializer.write(memberSchema, input[memberName]);\n                            initialRequest[memberName] = serializer.flush();\n                        }\n                    }\n                    payload = await this.serializeEventStream({\n                        eventStream: input[eventStreamMember],\n                        requestSchema: ns,\n                        initialRequest,\n                    });\n                }\n            }\n            else {\n                serializer.write(schema, input);\n                payload = serializer.flush();\n            }\n        }\n        request.headers = Object.assign(request.headers, headers);\n        request.query = query;\n        request.body = payload;\n        request.method = \"POST\";\n        return request;\n    }\n    async deserializeResponse(operationSchema, context, response) {\n        const deserializer = this.deserializer;\n        const ns = NormalizedSchema.of(operationSchema.output);\n        const dataObject = {};\n        if (response.statusCode >= 300) {\n            const bytes = await collectBody(response.body, context);\n            if (bytes.byteLength > 0) {\n                Object.assign(dataObject, await deserializer.read(15, bytes));\n            }\n            await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response));\n            throw new Error(\"@smithy/core/protocols - RPC Protocol error handler failed to throw.\");\n        }\n        for (const header in response.headers) {\n            const value = response.headers[header];\n            delete response.headers[header];\n            response.headers[header.toLowerCase()] = value;\n        }\n        const eventStreamMember = ns.getEventStreamMember();\n        if (eventStreamMember) {\n            dataObject[eventStreamMember] = await this.deserializeEventStream({\n                response,\n                responseSchema: ns,\n                initialResponseContainer: dataObject,\n            });\n        }\n        else {\n            const bytes = await collectBody(response.body, context);\n            if (bytes.byteLength > 0) {\n                Object.assign(dataObject, await deserializer.read(ns, bytes));\n            }\n        }\n        dataObject.$metadata = this.deserializeMetadata(response);\n        return dataObject;\n    }\n}\n","export function determineTimestampFormat(ns, settings) {\n    if (settings.timestampFormat.useTrait) {\n        if (ns.isTimestampSchema() &&\n            (ns.getSchema() === 5 ||\n                ns.getSchema() === 6 ||\n                ns.getSchema() === 7)) {\n            return ns.getSchema();\n        }\n    }\n    const { httpLabel, httpPrefixHeaders, httpHeader, httpQuery } = ns.getMergedTraits();\n    const bindingFormat = settings.httpBindings\n        ? typeof httpPrefixHeaders === \"string\" || Boolean(httpHeader)\n            ? 6\n            : Boolean(httpQuery) || Boolean(httpLabel)\n                ? 5\n                : undefined\n        : undefined;\n    return bindingFormat ?? settings.timestampFormat.default;\n}\n","import { NormalizedSchema } from \"@smithy/core/schema\";\nimport { LazyJsonString, NumericValue, _parseEpochTimestamp, _parseRfc3339DateTimeWithOffset, _parseRfc7231DateTime, fromBase64, splitHeader, toUtf8, } from \"@smithy/core/serde\";\nimport { SerdeContext } from \"../SerdeContext\";\nimport { determineTimestampFormat } from \"./determineTimestampFormat\";\nexport class FromStringShapeDeserializer extends SerdeContext {\n    settings;\n    constructor(settings) {\n        super();\n        this.settings = settings;\n    }\n    read(_schema, data) {\n        const ns = NormalizedSchema.of(_schema);\n        if (ns.isListSchema()) {\n            return splitHeader(data).map((item) => this.read(ns.getValueSchema(), item));\n        }\n        if (ns.isBlobSchema()) {\n            return (this.serdeContext?.base64Decoder ?? fromBase64)(data);\n        }\n        if (ns.isTimestampSchema()) {\n            const format = determineTimestampFormat(ns, this.settings);\n            switch (format) {\n                case 5:\n                    return _parseRfc3339DateTimeWithOffset(data);\n                case 6:\n                    return _parseRfc7231DateTime(data);\n                case 7:\n                    return _parseEpochTimestamp(data);\n                default:\n                    console.warn(\"Missing timestamp format, parsing value with Date constructor:\", data);\n                    return new Date(data);\n            }\n        }\n        if (ns.isStringSchema()) {\n            const mediaType = ns.getMergedTraits().mediaType;\n            let intermediateValue = data;\n            if (mediaType) {\n                if (ns.getMergedTraits().httpHeader) {\n                    intermediateValue = this.base64ToUtf8(intermediateValue);\n                }\n                const isJson = mediaType === \"application/json\" || mediaType.endsWith(\"+json\");\n                if (isJson) {\n                    intermediateValue = LazyJsonString.from(intermediateValue);\n                }\n                return intermediateValue;\n            }\n        }\n        if (ns.isNumericSchema()) {\n            return Number(data);\n        }\n        if (ns.isBigIntegerSchema()) {\n            return BigInt(data);\n        }\n        if (ns.isBigDecimalSchema()) {\n            return new NumericValue(data, \"bigDecimal\");\n        }\n        if (ns.isBooleanSchema()) {\n            return String(data).toLowerCase() === \"true\";\n        }\n        return data;\n    }\n    base64ToUtf8(base64String) {\n        return (this.serdeContext?.utf8Encoder ?? toUtf8)((this.serdeContext?.base64Decoder ?? fromBase64)(base64String));\n    }\n}\n","import { NormalizedSchema } from \"@smithy/core/schema\";\nimport { fromUtf8, toUtf8 } from \"@smithy/core/serde\";\nimport { SerdeContext } from \"../SerdeContext\";\nimport { FromStringShapeDeserializer } from \"./FromStringShapeDeserializer\";\nexport class HttpInterceptingShapeDeserializer extends SerdeContext {\n    codecDeserializer;\n    stringDeserializer;\n    constructor(codecDeserializer, codecSettings) {\n        super();\n        this.codecDeserializer = codecDeserializer;\n        this.stringDeserializer = new FromStringShapeDeserializer(codecSettings);\n    }\n    setSerdeContext(serdeContext) {\n        this.stringDeserializer.setSerdeContext(serdeContext);\n        this.codecDeserializer.setSerdeContext(serdeContext);\n        this.serdeContext = serdeContext;\n    }\n    read(schema, data) {\n        const ns = NormalizedSchema.of(schema);\n        const traits = ns.getMergedTraits();\n        const toString = this.serdeContext?.utf8Encoder ?? toUtf8;\n        if (traits.httpHeader || traits.httpResponseCode) {\n            return this.stringDeserializer.read(ns, toString(data));\n        }\n        if (traits.httpPayload) {\n            if (ns.isBlobSchema()) {\n                const toBytes = this.serdeContext?.utf8Decoder ?? fromUtf8;\n                if (typeof data === \"string\") {\n                    return toBytes(data);\n                }\n                return data;\n            }\n            else if (ns.isStringSchema()) {\n                if (\"byteLength\" in data) {\n                    return toString(data);\n                }\n                return data;\n            }\n        }\n        return this.codecDeserializer.read(ns, data);\n    }\n}\n","import { NormalizedSchema } from \"@smithy/core/schema\";\nimport { LazyJsonString, dateToUtcString, generateIdempotencyToken, quoteHeader, toBase64 } from \"@smithy/core/serde\";\nimport { SerdeContext } from \"../SerdeContext\";\nimport { determineTimestampFormat } from \"./determineTimestampFormat\";\nexport class ToStringShapeSerializer extends SerdeContext {\n    settings;\n    stringBuffer = \"\";\n    constructor(settings) {\n        super();\n        this.settings = settings;\n    }\n    write(schema, value) {\n        const ns = NormalizedSchema.of(schema);\n        switch (typeof value) {\n            case \"object\":\n                if (value === null) {\n                    this.stringBuffer = \"null\";\n                    return;\n                }\n                if (ns.isTimestampSchema()) {\n                    if (!(value instanceof Date)) {\n                        throw new Error(`@smithy/core/protocols - received non-Date value ${value} when schema expected Date in ${ns.getName(true)}`);\n                    }\n                    const format = determineTimestampFormat(ns, this.settings);\n                    switch (format) {\n                        case 5:\n                            this.stringBuffer = value.toISOString().replace(\".000Z\", \"Z\");\n                            break;\n                        case 6:\n                            this.stringBuffer = dateToUtcString(value);\n                            break;\n                        case 7:\n                            this.stringBuffer = String(value.getTime() / 1000);\n                            break;\n                        default:\n                            console.warn(\"Missing timestamp format, using epoch seconds\", value);\n                            this.stringBuffer = String(value.getTime() / 1000);\n                    }\n                    return;\n                }\n                if (ns.isBlobSchema() && \"byteLength\" in value) {\n                    this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(value);\n                    return;\n                }\n                if (ns.isListSchema() && Array.isArray(value)) {\n                    let buffer = \"\";\n                    for (const item of value) {\n                        this.write([ns.getValueSchema(), ns.getMergedTraits()], item);\n                        const headerItem = this.flush();\n                        const serialized = ns.getValueSchema().isTimestampSchema() ? headerItem : quoteHeader(headerItem);\n                        if (buffer !== \"\") {\n                            buffer += \", \";\n                        }\n                        buffer += serialized;\n                    }\n                    this.stringBuffer = buffer;\n                    return;\n                }\n                this.stringBuffer = JSON.stringify(value, null, 2);\n                break;\n            case \"string\":\n                const mediaType = ns.getMergedTraits().mediaType;\n                let intermediateValue = value;\n                if (mediaType) {\n                    const isJson = mediaType === \"application/json\" || mediaType.endsWith(\"+json\");\n                    if (isJson) {\n                        intermediateValue = LazyJsonString.from(intermediateValue);\n                    }\n                    if (ns.getMergedTraits().httpHeader) {\n                        this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(intermediateValue.toString());\n                        return;\n                    }\n                }\n                this.stringBuffer = value;\n                break;\n            default:\n                if (ns.isIdempotencyToken()) {\n                    this.stringBuffer = generateIdempotencyToken();\n                }\n                else {\n                    this.stringBuffer = String(value);\n                }\n        }\n    }\n    flush() {\n        const buffer = this.stringBuffer;\n        this.stringBuffer = \"\";\n        return buffer;\n    }\n}\n","import { NormalizedSchema } from \"@smithy/core/schema\";\nimport { ToStringShapeSerializer } from \"./ToStringShapeSerializer\";\nexport class HttpInterceptingShapeSerializer {\n    codecSerializer;\n    stringSerializer;\n    buffer;\n    constructor(codecSerializer, codecSettings, stringSerializer = new ToStringShapeSerializer(codecSettings)) {\n        this.codecSerializer = codecSerializer;\n        this.stringSerializer = stringSerializer;\n    }\n    setSerdeContext(serdeContext) {\n        this.codecSerializer.setSerdeContext(serdeContext);\n        this.stringSerializer.setSerdeContext(serdeContext);\n    }\n    write(schema, value) {\n        const ns = NormalizedSchema.of(schema);\n        const traits = ns.getMergedTraits();\n        if (traits.httpHeader || traits.httpLabel || traits.httpQuery) {\n            this.stringSerializer.write(ns, value);\n            this.buffer = this.stringSerializer.flush();\n            return;\n        }\n        return this.codecSerializer.write(ns, value);\n    }\n    flush() {\n        if (this.buffer !== undefined) {\n            const buffer = this.buffer;\n            this.buffer = undefined;\n            return buffer;\n        }\n        return this.codecSerializer.flush();\n    }\n}\n","export const getHttpHandlerExtensionConfiguration = (runtimeConfig) => {\n    return {\n        setHttpHandler(handler) {\n            runtimeConfig.httpHandler = handler;\n        },\n        httpHandler() {\n            return runtimeConfig.httpHandler;\n        },\n        updateHttpClientConfig(key, value) {\n            runtimeConfig.httpHandler?.updateHttpClientConfig(key, value);\n        },\n        httpHandlerConfigs() {\n            return runtimeConfig.httpHandler.httpHandlerConfigs();\n        },\n    };\n};\nexport const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => {\n    return {\n        httpHandler: httpHandlerExtensionConfiguration.httpHandler(),\n    };\n};\n","export const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","import { escapeUri } from \"../util-uri-escape/escape-uri\";\nexport function buildQueryString(query) {\n    const parts = [];\n    for (let key of Object.keys(query).sort()) {\n        const value = query[key];\n        key = escapeUri(key);\n        if (Array.isArray(value)) {\n            for (let i = 0, iLen = value.length; i < iLen; i++) {\n                parts.push(`${key}=${escapeUri(value[i])}`);\n            }\n        }\n        else {\n            let qsEntry = key;\n            if (value || typeof value === \"string\") {\n                qsEntry += `=${escapeUri(value)}`;\n            }\n            parts.push(qsEntry);\n        }\n    }\n    return parts.join(\"&\");\n}\n","const getAllAliases = (name, aliases) => {\n    const _aliases = [];\n    if (name) {\n        _aliases.push(name);\n    }\n    if (aliases) {\n        for (const alias of aliases) {\n            _aliases.push(alias);\n        }\n    }\n    return _aliases;\n};\nconst getMiddlewareNameWithAliases = (name, aliases) => {\n    return `${name || \"anonymous\"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(\",\")})` : \"\"}`;\n};\nexport const constructStack = () => {\n    let absoluteEntries = [];\n    let relativeEntries = [];\n    let identifyOnResolve = false;\n    const entriesNameSet = new Set();\n    const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] ||\n        priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]);\n    const removeByName = (toRemove) => {\n        let isRemoved = false;\n        const filterCb = (entry) => {\n            const aliases = getAllAliases(entry.name, entry.aliases);\n            if (aliases.includes(toRemove)) {\n                isRemoved = true;\n                for (const alias of aliases) {\n                    entriesNameSet.delete(alias);\n                }\n                return false;\n            }\n            return true;\n        };\n        absoluteEntries = absoluteEntries.filter(filterCb);\n        relativeEntries = relativeEntries.filter(filterCb);\n        return isRemoved;\n    };\n    const removeByReference = (toRemove) => {\n        let isRemoved = false;\n        const filterCb = (entry) => {\n            if (entry.middleware === toRemove) {\n                isRemoved = true;\n                for (const alias of getAllAliases(entry.name, entry.aliases)) {\n                    entriesNameSet.delete(alias);\n                }\n                return false;\n            }\n            return true;\n        };\n        absoluteEntries = absoluteEntries.filter(filterCb);\n        relativeEntries = relativeEntries.filter(filterCb);\n        return isRemoved;\n    };\n    const cloneTo = (toStack) => {\n        absoluteEntries.forEach((entry) => {\n            toStack.add(entry.middleware, { ...entry });\n        });\n        relativeEntries.forEach((entry) => {\n            toStack.addRelativeTo(entry.middleware, { ...entry });\n        });\n        toStack.identifyOnResolve?.(stack.identifyOnResolve());\n        return toStack;\n    };\n    const expandRelativeMiddlewareList = (from) => {\n        const expandedMiddlewareList = [];\n        from.before.forEach((entry) => {\n            if (entry.before.length === 0 && entry.after.length === 0) {\n                expandedMiddlewareList.push(entry);\n            }\n            else {\n                expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n            }\n        });\n        expandedMiddlewareList.push(from);\n        from.after.reverse().forEach((entry) => {\n            if (entry.before.length === 0 && entry.after.length === 0) {\n                expandedMiddlewareList.push(entry);\n            }\n            else {\n                expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n            }\n        });\n        return expandedMiddlewareList;\n    };\n    const getMiddlewareList = (debug = false) => {\n        const normalizedAbsoluteEntries = [];\n        const normalizedRelativeEntries = [];\n        const normalizedEntriesNameMap = {};\n        absoluteEntries.forEach((entry) => {\n            const normalizedEntry = {\n                ...entry,\n                before: [],\n                after: [],\n            };\n            for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n                normalizedEntriesNameMap[alias] = normalizedEntry;\n            }\n            normalizedAbsoluteEntries.push(normalizedEntry);\n        });\n        relativeEntries.forEach((entry) => {\n            const normalizedEntry = {\n                ...entry,\n                before: [],\n                after: [],\n            };\n            for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n                normalizedEntriesNameMap[alias] = normalizedEntry;\n            }\n            normalizedRelativeEntries.push(normalizedEntry);\n        });\n        normalizedRelativeEntries.forEach((entry) => {\n            if (entry.toMiddleware) {\n                const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n                if (toMiddleware === undefined) {\n                    if (debug) {\n                        return;\n                    }\n                    throw new Error(`${entry.toMiddleware} is not found when adding ` +\n                        `${getMiddlewareNameWithAliases(entry.name, entry.aliases)} ` +\n                        `middleware ${entry.relation} ${entry.toMiddleware}`);\n                }\n                if (entry.relation === \"after\") {\n                    toMiddleware.after.push(entry);\n                }\n                if (entry.relation === \"before\") {\n                    toMiddleware.before.push(entry);\n                }\n            }\n        });\n        const mainChain = sort(normalizedAbsoluteEntries)\n            .map(expandRelativeMiddlewareList)\n            .reduce((wholeList, expandedMiddlewareList) => {\n            wholeList.push(...expandedMiddlewareList);\n            return wholeList;\n        }, []);\n        return mainChain;\n    };\n    const stack = {\n        add: (middleware, options = {}) => {\n            const { name, override, aliases: _aliases } = options;\n            const entry = {\n                step: \"initialize\",\n                priority: \"normal\",\n                middleware,\n                ...options,\n            };\n            const aliases = getAllAliases(name, _aliases);\n            if (aliases.length > 0) {\n                if (aliases.some((alias) => entriesNameSet.has(alias))) {\n                    if (!override)\n                        throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n                    for (const alias of aliases) {\n                        const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias));\n                        if (toOverrideIndex === -1) {\n                            continue;\n                        }\n                        const toOverride = absoluteEntries[toOverrideIndex];\n                        if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) {\n                            throw new Error(`\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware with ` +\n                                `${toOverride.priority} priority in ${toOverride.step} step cannot ` +\n                                `be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware with ` +\n                                `${entry.priority} priority in ${entry.step} step.`);\n                        }\n                        absoluteEntries.splice(toOverrideIndex, 1);\n                    }\n                }\n                for (const alias of aliases) {\n                    entriesNameSet.add(alias);\n                }\n            }\n            absoluteEntries.push(entry);\n        },\n        addRelativeTo: (middleware, options) => {\n            const { name, override, aliases: _aliases } = options;\n            const entry = {\n                middleware,\n                ...options,\n            };\n            const aliases = getAllAliases(name, _aliases);\n            if (aliases.length > 0) {\n                if (aliases.some((alias) => entriesNameSet.has(alias))) {\n                    if (!override)\n                        throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n                    for (const alias of aliases) {\n                        const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias));\n                        if (toOverrideIndex === -1) {\n                            continue;\n                        }\n                        const toOverride = relativeEntries[toOverrideIndex];\n                        if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n                            throw new Error(`\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware ` +\n                                `${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden ` +\n                                `by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware ${entry.relation} ` +\n                                `\"${entry.toMiddleware}\" middleware.`);\n                        }\n                        relativeEntries.splice(toOverrideIndex, 1);\n                    }\n                }\n                for (const alias of aliases) {\n                    entriesNameSet.add(alias);\n                }\n            }\n            relativeEntries.push(entry);\n        },\n        clone: () => cloneTo(constructStack()),\n        use: (plugin) => {\n            plugin.applyToStack(stack);\n        },\n        remove: (toRemove) => {\n            if (typeof toRemove === \"string\")\n                return removeByName(toRemove);\n            else\n                return removeByReference(toRemove);\n        },\n        removeByTag: (toRemove) => {\n            let isRemoved = false;\n            const filterCb = (entry) => {\n                const { tags, name, aliases: _aliases } = entry;\n                if (tags && tags.includes(toRemove)) {\n                    const aliases = getAllAliases(name, _aliases);\n                    for (const alias of aliases) {\n                        entriesNameSet.delete(alias);\n                    }\n                    isRemoved = true;\n                    return false;\n                }\n                return true;\n            };\n            absoluteEntries = absoluteEntries.filter(filterCb);\n            relativeEntries = relativeEntries.filter(filterCb);\n            return isRemoved;\n        },\n        concat: (from) => {\n            const cloned = cloneTo(constructStack());\n            cloned.use(from);\n            cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false));\n            return cloned;\n        },\n        applyToStack: cloneTo,\n        identify: () => {\n            return getMiddlewareList(true).map((mw) => {\n                const step = mw.step ??\n                    mw.relation +\n                        \" \" +\n                        mw.toMiddleware;\n                return getMiddlewareNameWithAliases(mw.name, mw.aliases) + \" - \" + step;\n            });\n        },\n        identifyOnResolve(toggle) {\n            if (typeof toggle === \"boolean\")\n                identifyOnResolve = toggle;\n            return identifyOnResolve;\n        },\n        resolve: (handler, context) => {\n            for (const middleware of getMiddlewareList()\n                .map((entry) => entry.middleware)\n                .reverse()) {\n                handler = middleware(handler, context);\n            }\n            if (identifyOnResolve) {\n                console.log(stack.identify());\n            }\n            return handler;\n        },\n    };\n    return stack;\n};\nconst stepWeights = {\n    initialize: 5,\n    serialize: 4,\n    build: 3,\n    finalizeRequest: 2,\n    deserialize: 1,\n};\nconst priorityWeights = {\n    high: 3,\n    normal: 2,\n    low: 1,\n};\n","import { constructStack } from \"../middleware-stack/MiddlewareStack\";\nexport class Client {\n    config;\n    middlewareStack = constructStack();\n    initConfig;\n    handlers;\n    constructor(config) {\n        this.config = config;\n        const { protocol, protocolSettings } = config;\n        if (protocolSettings) {\n            if (typeof protocol === \"function\") {\n                config.protocol = new protocol(protocolSettings);\n            }\n        }\n    }\n    send(command, optionsOrCb, cb) {\n        const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : undefined;\n        const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n        const useHandlerCache = options === undefined && this.config.cacheMiddleware === true;\n        let handler;\n        if (useHandlerCache) {\n            if (!this.handlers) {\n                this.handlers = new WeakMap();\n            }\n            const handlers = this.handlers;\n            if (handlers.has(command.constructor)) {\n                handler = handlers.get(command.constructor);\n            }\n            else {\n                handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n                handlers.set(command.constructor, handler);\n            }\n        }\n        else {\n            delete this.handlers;\n            handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n        }\n        if (callback) {\n            handler(command)\n                .then((result) => callback(null, result.output), (err) => callback(err))\n                .catch(() => { });\n        }\n        else {\n            return handler(command).then((result) => result.output);\n        }\n    }\n    destroy() {\n        this.config?.requestHandler?.destroy?.();\n        delete this.handlers;\n    }\n}\n","import { NormalizedSchema } from \"@smithy/core/schema\";\nconst SENSITIVE_STRING = \"***SensitiveInformation***\";\nexport function schemaLogFilter(schema, data) {\n    if (data == null) {\n        return data;\n    }\n    const ns = NormalizedSchema.of(schema);\n    if (ns.getMergedTraits().sensitive) {\n        return SENSITIVE_STRING;\n    }\n    if (ns.isListSchema()) {\n        const isSensitive = !!ns.getValueSchema().getMergedTraits().sensitive;\n        if (isSensitive) {\n            return SENSITIVE_STRING;\n        }\n    }\n    else if (ns.isMapSchema()) {\n        const isSensitive = !!ns.getKeySchema().getMergedTraits().sensitive || !!ns.getValueSchema().getMergedTraits().sensitive;\n        if (isSensitive) {\n            return SENSITIVE_STRING;\n        }\n    }\n    else if (ns.isStructSchema() && typeof data === \"object\") {\n        const object = data;\n        const newObject = {};\n        for (const [member, memberNs] of ns.structIterator()) {\n            if (object[member] != null) {\n                newObject[member] = schemaLogFilter(memberNs, object[member]);\n            }\n        }\n        return newObject;\n    }\n    return data;\n}\n","import { SMITHY_CONTEXT_KEY, } from \"@smithy/types\";\nimport { constructStack } from \"../middleware-stack/MiddlewareStack\";\nimport { schemaLogFilter } from \"./schemaLogFilter\";\nexport class Command {\n    middlewareStack = constructStack();\n    schema;\n    static classBuilder() {\n        return new ClassBuilder();\n    }\n    resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) {\n        for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) {\n            this.middlewareStack.use(mw);\n        }\n        const stack = clientStack.concat(this.middlewareStack);\n        const { logger } = configuration;\n        const handlerExecutionContext = {\n            logger,\n            clientName,\n            commandName,\n            inputFilterSensitiveLog,\n            outputFilterSensitiveLog,\n            [SMITHY_CONTEXT_KEY]: {\n                commandInstance: this,\n                ...smithyContext,\n            },\n            ...additionalContext,\n        };\n        const { requestHandler } = configuration;\n        let requestOptions = options ?? {};\n        if (smithyContext.eventStream) {\n            requestOptions = {\n                isEventStream: true,\n                ...requestOptions,\n            };\n        }\n        return stack.resolve((request) => requestHandler.handle(request.request, requestOptions), handlerExecutionContext);\n    }\n}\nclass ClassBuilder {\n    _init = () => { };\n    _ep = {};\n    _middlewareFn = () => [];\n    _commandName = \"\";\n    _clientName = \"\";\n    _additionalContext = {};\n    _smithyContext = {};\n    _inputFilterSensitiveLog = undefined;\n    _outputFilterSensitiveLog = undefined;\n    _serializer = null;\n    _deserializer = null;\n    _operationSchema;\n    init(cb) {\n        this._init = cb;\n    }\n    ep(endpointParameterInstructions) {\n        this._ep = endpointParameterInstructions;\n        return this;\n    }\n    m(middlewareSupplier) {\n        this._middlewareFn = middlewareSupplier;\n        return this;\n    }\n    s(service, operation, smithyContext = {}) {\n        this._smithyContext = {\n            service,\n            operation,\n            ...smithyContext,\n        };\n        return this;\n    }\n    c(additionalContext = {}) {\n        this._additionalContext = additionalContext;\n        return this;\n    }\n    n(clientName, commandName) {\n        this._clientName = clientName;\n        this._commandName = commandName;\n        return this;\n    }\n    f(inputFilter = (_) => _, outputFilter = (_) => _) {\n        this._inputFilterSensitiveLog = inputFilter;\n        this._outputFilterSensitiveLog = outputFilter;\n        return this;\n    }\n    ser(serializer) {\n        this._serializer = serializer;\n        return this;\n    }\n    de(deserializer) {\n        this._deserializer = deserializer;\n        return this;\n    }\n    sc(operation) {\n        this._operationSchema = operation;\n        this._smithyContext.operationSchema = operation;\n        return this;\n    }\n    build() {\n        const closure = this;\n        let CommandRef;\n        return (CommandRef = class extends Command {\n            input;\n            static getEndpointParameterInstructions() {\n                return closure._ep;\n            }\n            constructor(...[input]) {\n                super();\n                this.input = input ?? {};\n                closure._init(this);\n                this.schema = closure._operationSchema;\n            }\n            resolveMiddleware(stack, configuration, options) {\n                const op = closure._operationSchema;\n                const input = op?.[4] ?? op?.input;\n                const output = op?.[5] ?? op?.output;\n                return this.resolveMiddlewareWithContext(stack, configuration, options, {\n                    CommandCtor: CommandRef,\n                    middlewareFn: closure._middlewareFn,\n                    clientName: closure._clientName,\n                    commandName: closure._commandName,\n                    inputFilterSensitiveLog: closure._inputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, input) : (_) => _),\n                    outputFilterSensitiveLog: closure._outputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, output) : (_) => _),\n                    smithyContext: closure._smithyContext,\n                    additionalContext: closure._additionalContext,\n                });\n            }\n            serialize = closure._serializer;\n            deserialize = closure._deserializer;\n        });\n    }\n}\n","export const createAggregatedClient = (commands, Client, options) => {\n    for (const [command, CommandCtor] of Object.entries(commands)) {\n        const methodImpl = async function (args, optionsOrCb, cb) {\n            const command = new CommandCtor(args);\n            if (typeof optionsOrCb === \"function\") {\n                this.send(command, optionsOrCb);\n            }\n            else if (typeof cb === \"function\") {\n                if (typeof optionsOrCb !== \"object\")\n                    throw new Error(`Expected http options but got ${typeof optionsOrCb}`);\n                this.send(command, optionsOrCb || {}, cb);\n            }\n            else {\n                return this.send(command, optionsOrCb);\n            }\n        };\n        const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, \"\");\n        Client.prototype[methodName] = methodImpl;\n    }\n    const { paginators = {}, waiters = {} } = options ?? {};\n    for (const [paginatorName, paginatorFn] of Object.entries(paginators)) {\n        if (Client.prototype[paginatorName] === void 0) {\n            Client.prototype[paginatorName] = function (commandInput = {}, paginationConfiguration, ...rest) {\n                return paginatorFn({\n                    ...paginationConfiguration,\n                    client: this,\n                }, commandInput, ...rest);\n            };\n        }\n    }\n    for (const [waiterName, waiterFn] of Object.entries(waiters)) {\n        if (Client.prototype[waiterName] === void 0) {\n            Client.prototype[waiterName] = async function (commandInput = {}, waiterConfiguration, ...rest) {\n                let config = waiterConfiguration;\n                if (typeof waiterConfiguration === \"number\") {\n                    config = {\n                        maxWaitTime: waiterConfiguration,\n                    };\n                }\n                return waiterFn({\n                    ...config,\n                    client: this,\n                }, commandInput, ...rest);\n            };\n        }\n    }\n};\n","export class ServiceException extends Error {\n    $fault;\n    $response;\n    $retryable;\n    $metadata;\n    constructor(options) {\n        super(options.message);\n        Object.setPrototypeOf(this, Object.getPrototypeOf(this).constructor.prototype);\n        this.name = options.name;\n        this.$fault = options.$fault;\n        this.$metadata = options.$metadata;\n    }\n    static isInstance(value) {\n        if (!value)\n            return false;\n        const candidate = value;\n        return (ServiceException.prototype.isPrototypeOf(candidate) ||\n            (Boolean(candidate.$fault) &&\n                Boolean(candidate.$metadata) &&\n                (candidate.$fault === \"client\" || candidate.$fault === \"server\")));\n    }\n    static [Symbol.hasInstance](instance) {\n        if (!instance)\n            return false;\n        const candidate = instance;\n        if (this === ServiceException) {\n            return ServiceException.isInstance(instance);\n        }\n        if (ServiceException.isInstance(instance)) {\n            if (candidate.name && this.name) {\n                return this.prototype.isPrototypeOf(instance) || candidate.name === this.name;\n            }\n            return this.prototype.isPrototypeOf(instance);\n        }\n        return false;\n    }\n}\nexport const decorateServiceException = (exception, additions = {}) => {\n    Object.entries(additions)\n        .filter(([, v]) => v !== undefined)\n        .forEach(([k, v]) => {\n        if (exception[k] == undefined || exception[k] === \"\") {\n            exception[k] = v;\n        }\n    });\n    const message = exception.message || exception.Message || \"UnknownError\";\n    exception.message = message;\n    delete exception.Message;\n    return exception;\n};\n","export const loadConfigsForDefaultMode = (mode) => {\n    switch (mode) {\n        case \"standard\":\n            return {\n                retryMode: \"standard\",\n                connectionTimeout: 3100,\n            };\n        case \"in-region\":\n            return {\n                retryMode: \"standard\",\n                connectionTimeout: 1100,\n            };\n        case \"cross-region\":\n            return {\n                retryMode: \"standard\",\n                connectionTimeout: 3100,\n            };\n        case \"mobile\":\n            return {\n                retryMode: \"standard\",\n                connectionTimeout: 30000,\n            };\n        default:\n            return {};\n    }\n};\n","let warningEmitted = false;\nexport const emitWarningIfUnsupportedVersion = (version) => {\n    if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 16) {\n        warningEmitted = true;\n    }\n};\n","import { AlgorithmId, } from \"@smithy/types\";\nexport { AlgorithmId };\nconst knownAlgorithms = Object.values(AlgorithmId);\nexport const getChecksumConfiguration = (runtimeConfig) => {\n    const checksumAlgorithms = [];\n    for (const id in AlgorithmId) {\n        const algorithmId = AlgorithmId[id];\n        if (runtimeConfig[algorithmId] === undefined) {\n            continue;\n        }\n        checksumAlgorithms.push({\n            algorithmId: () => algorithmId,\n            checksumConstructor: () => runtimeConfig[algorithmId],\n        });\n    }\n    for (const [id, ChecksumCtor] of Object.entries(runtimeConfig.checksumAlgorithms ?? {})) {\n        checksumAlgorithms.push({\n            algorithmId: () => id,\n            checksumConstructor: () => ChecksumCtor,\n        });\n    }\n    return {\n        addChecksumAlgorithm(algo) {\n            runtimeConfig.checksumAlgorithms = runtimeConfig.checksumAlgorithms ?? {};\n            const id = algo.algorithmId();\n            const ctor = algo.checksumConstructor();\n            if (knownAlgorithms.includes(id)) {\n                runtimeConfig.checksumAlgorithms[id.toUpperCase()] = ctor;\n            }\n            else {\n                runtimeConfig.checksumAlgorithms[id] = ctor;\n            }\n            checksumAlgorithms.push(algo);\n        },\n        checksumAlgorithms() {\n            return checksumAlgorithms;\n        },\n    };\n};\nexport const resolveChecksumRuntimeConfig = (clientConfig) => {\n    const runtimeConfig = {};\n    clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n        const id = checksumAlgorithm.algorithmId();\n        if (knownAlgorithms.includes(id)) {\n            runtimeConfig[id] = checksumAlgorithm.checksumConstructor();\n        }\n    });\n    return runtimeConfig;\n};\n","export const getRetryConfiguration = (runtimeConfig) => {\n    return {\n        setRetryStrategy(retryStrategy) {\n            runtimeConfig.retryStrategy = retryStrategy;\n        },\n        retryStrategy() {\n            return runtimeConfig.retryStrategy;\n        },\n    };\n};\nexport const resolveRetryRuntimeConfig = (retryStrategyConfiguration) => {\n    const runtimeConfig = {};\n    runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy();\n    return runtimeConfig;\n};\n","import { getChecksumConfiguration, resolveChecksumRuntimeConfig, } from \"./checksum\";\nimport { getRetryConfiguration, resolveRetryRuntimeConfig } from \"./retry\";\nexport const getDefaultExtensionConfiguration = (runtimeConfig) => {\n    return Object.assign(getChecksumConfiguration(runtimeConfig), getRetryConfiguration(runtimeConfig));\n};\nexport const getDefaultClientConfiguration = getDefaultExtensionConfiguration;\nexport const resolveDefaultRuntimeConfig = (config) => {\n    return Object.assign(resolveChecksumRuntimeConfig(config), resolveRetryRuntimeConfig(config));\n};\n","export const getValueFromTextNode = (obj) => {\n    const textNodeName = \"#text\";\n    for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key) && obj[key][textNodeName] !== undefined) {\n            obj[key] = obj[key][textNodeName];\n        }\n        else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n            obj[key] = getValueFromTextNode(obj[key]);\n        }\n    }\n    return obj;\n};\n","export class NoOpLogger {\n    trace() { }\n    debug() { }\n    info() { }\n    warn() { }\n    error() { }\n}\n","import { Command } from \"./command\";\nexport function makeBuilder(common, service, name, ep) {\n    return function makeCommand(added, plugins, op, $, smithyContext = {}) {\n        const epMerged = Object.assign({}, common, added);\n        return Command.classBuilder()\n            .ep(epMerged)\n            .m(function (CommandCtor, clientStack, config, options) {\n            const list = plugins.call(this, CommandCtor, clientStack, config, options);\n            list.unshift(ep(config, CommandCtor.getEndpointParameterInstructions()));\n            return list;\n        })\n            .s(service, op, smithyContext)\n            .n(name, op.charAt(0).toUpperCase() + op.slice(1) + \"Command\")\n            .sc($)\n            .build();\n    };\n}\n","export function setCredentialFeature(credentials, feature, value) {\n    if (!credentials.$source) {\n        credentials.$source = {};\n    }\n    credentials.$source[feature] = value;\n    return credentials;\n}\n","import { CONFIG_PREFIX_SEPARATOR } from \"@smithy/core/config\";\nexport const ENV_ENDPOINT_URL = \"AWS_ENDPOINT_URL\";\nexport const CONFIG_ENDPOINT_URL = \"endpoint_url\";\nexport const getEndpointUrlConfig = (serviceId) => ({\n    environmentVariableSelector: (env) => {\n        const serviceSuffixParts = serviceId.split(\" \").map((w) => w.toUpperCase());\n        const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join(\"_\")];\n        if (serviceEndpointUrl)\n            return serviceEndpointUrl;\n        const endpointUrl = env[ENV_ENDPOINT_URL];\n        if (endpointUrl)\n            return endpointUrl;\n        return undefined;\n    },\n    configFileSelector: (profile, config) => {\n        if (profile.services) {\n            const servicesSectionKey = [\"services\", profile.services].join(CONFIG_PREFIX_SEPARATOR);\n            if (!config || !config[servicesSectionKey]) {\n                throw new Error(`The services section \"${profile.services}\" specified in the profile is not present in the shared configuration file.`);\n            }\n            const servicesSection = config[servicesSectionKey];\n            const servicePrefixParts = serviceId.split(\" \").map((w) => w.toLowerCase());\n            const endpointUrl = servicesSection[[servicePrefixParts.join(\"_\"), CONFIG_ENDPOINT_URL].join(CONFIG_PREFIX_SEPARATOR)];\n            if (endpointUrl)\n                return endpointUrl;\n        }\n        const endpointUrl = profile[CONFIG_ENDPOINT_URL];\n        if (endpointUrl)\n            return endpointUrl;\n        return undefined;\n    },\n    default: undefined,\n});\n","import { booleanSelector, SelectorType } from \"@smithy/core/config\";\nexport const ENV_IGNORE_CONFIGURED_ENDPOINT_URLS = \"AWS_IGNORE_CONFIGURED_ENDPOINT_URLS\";\nexport const CONFIG_IGNORE_CONFIGURED_ENDPOINT_URLS = \"ignore_configured_endpoint_urls\";\nexport const ignoreConfiguredEndpointUrlsConfigSelectors = {\n    environmentVariableSelector: (env) => booleanSelector(env, ENV_IGNORE_CONFIGURED_ENDPOINT_URLS, SelectorType.ENV),\n    configFileSelector: (profile) => booleanSelector(profile, CONFIG_IGNORE_CONFIGURED_ENDPOINT_URLS, SelectorType.CONFIG),\n    default: false,\n};\n","import { loadConfig } from \"@smithy/core/config\";\nimport { getEndpointUrlConfig } from \"./getEndpointUrlConfig\";\nimport { ignoreConfiguredEndpointUrlsConfigSelectors } from \"./getIgnoreConfiguredEndpointUrls\";\nexport const getEndpointFromConfig = async (serviceId) => {\n    const ignore = await loadConfig(ignoreConfiguredEndpointUrlsConfigSelectors)();\n    if (ignore) {\n        return undefined;\n    }\n    return loadConfig(getEndpointUrlConfig(serviceId ?? \"\"))();\n};\n","export const resolveParamsForS3 = async (endpointParams) => {\n    const bucket = endpointParams?.Bucket || \"\";\n    if (typeof endpointParams.Bucket === \"string\") {\n        endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n    }\n    if (isArnBucketName(bucket)) {\n        if (endpointParams.ForcePathStyle === true) {\n            throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n        }\n    }\n    else if (!isDnsCompatibleBucketName(bucket) ||\n        (bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\")) ||\n        bucket.toLowerCase() !== bucket ||\n        bucket.length < 3) {\n        endpointParams.ForcePathStyle = true;\n    }\n    if (endpointParams.DisableMultiRegionAccessPoints) {\n        endpointParams.disableMultiRegionAccessPoints = true;\n        endpointParams.DisableMRAP = true;\n    }\n    return endpointParams;\n};\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\nexport const DOT_PATTERN = /\\./;\nexport const S3_HOSTNAME_PATTERN = /^(.+\\.)?s3(-fips)?(\\.dualstack)?[.-]([a-z0-9-]+)\\./;\nexport const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName);\nexport const isArnBucketName = (bucketName) => {\n    const [arn, partition, service, , , bucket] = bucketName.split(\":\");\n    const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n    const isValidArn = Boolean(isArn && partition && service && bucket);\n    if (isArn && !isValidArn) {\n        throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n    }\n    return isValidArn;\n};\n","export const createConfigValueProvider = (configKey, canonicalEndpointParamKey, config, isClientContextParam = false) => {\n    const configProvider = async () => {\n        let configValue;\n        if (isClientContextParam) {\n            const clientContextParams = config.clientContextParams;\n            const nestedValue = clientContextParams?.[configKey];\n            configValue = nestedValue ?? config[configKey] ?? config[canonicalEndpointParamKey];\n        }\n        else {\n            configValue = config[configKey] ?? config[canonicalEndpointParamKey];\n        }\n        if (typeof configValue === \"function\") {\n            return configValue();\n        }\n        return configValue;\n    };\n    if (configKey === \"credentialScope\" || canonicalEndpointParamKey === \"CredentialScope\") {\n        return async () => {\n            const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n            const configValue = credentials?.credentialScope ?? credentials?.CredentialScope;\n            return configValue;\n        };\n    }\n    if (configKey === \"accountId\" || canonicalEndpointParamKey === \"AccountId\") {\n        return async () => {\n            const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n            const configValue = credentials?.accountId ?? credentials?.AccountId;\n            return configValue;\n        };\n    }\n    if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n        return async () => {\n            if (config.isCustomEndpoint === false) {\n                return undefined;\n            }\n            const endpoint = await configProvider();\n            if (endpoint && typeof endpoint === \"object\") {\n                if (\"url\" in endpoint) {\n                    return endpoint.url.href;\n                }\n                if (\"hostname\" in endpoint) {\n                    const { protocol, hostname, port, path } = endpoint;\n                    return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n                }\n            }\n            return endpoint;\n        };\n    }\n    return configProvider;\n};\n","import { resolveParamsForS3 } from \"../service-customizations\";\nimport { createConfigValueProvider } from \"./createConfigValueProvider\";\nimport { toEndpointV1 } from \"./toEndpointV1\";\nexport function bindGetEndpointFromInstructions(getEndpointFromConfig) {\n    return async (commandInput, instructionsSupplier, clientConfig, context) => {\n        if (!clientConfig.isCustomEndpoint && !clientConfig.ignoreConfiguredEndpointUrls) {\n            let endpointFromConfig;\n            if (clientConfig.serviceConfiguredEndpoint) {\n                endpointFromConfig = await clientConfig.serviceConfiguredEndpoint();\n            }\n            else {\n                endpointFromConfig = await getEndpointFromConfig(clientConfig.serviceId);\n            }\n            if (endpointFromConfig) {\n                clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig));\n                clientConfig.isCustomEndpoint = true;\n                context?.logger?.debug?.(`@smithy/core/endpoints - resolved endpoint from config: ${endpointFromConfig}`);\n            }\n        }\n        const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig);\n        if (typeof clientConfig.endpointProvider !== \"function\") {\n            throw new Error(\"config.endpointProvider is not set.\");\n        }\n        const endpoint = clientConfig.endpointProvider(endpointParams, context);\n        if (clientConfig.isCustomEndpoint && clientConfig.endpoint) {\n            const customEndpoint = await clientConfig.endpoint();\n            if (customEndpoint?.headers) {\n                endpoint.headers ??= {};\n                for (const [name, value] of Object.entries(customEndpoint.headers)) {\n                    endpoint.headers[name] = Array.isArray(value) ? value : [value];\n                }\n            }\n        }\n        return endpoint;\n    };\n}\nexport const resolveParams = async (commandInput, instructionsSupplier, clientConfig) => {\n    const endpointParams = {};\n    const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {};\n    for (const [name, instruction] of Object.entries(instructions)) {\n        switch (instruction.type) {\n            case \"staticContextParams\":\n                endpointParams[name] = instruction.value;\n                break;\n            case \"contextParams\":\n                endpointParams[name] = commandInput[instruction.name];\n                break;\n            case \"clientContextParams\":\n            case \"builtInParams\":\n                endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig, instruction.type !== \"builtInParams\")();\n                break;\n            case \"operationContextParams\":\n                endpointParams[name] = instruction.get(commandInput);\n                break;\n            default:\n                throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n        }\n    }\n    if (Object.keys(instructions).length === 0) {\n        Object.assign(endpointParams, clientConfig);\n    }\n    if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n        await resolveParamsForS3(endpointParams);\n    }\n    return endpointParams;\n};\n","import { getSmithyContext } from \"@smithy/core/transport\";\nimport { bindGetEndpointFromInstructions } from \"./adaptors/getEndpointFromInstructions\";\nfunction setFeature(context, feature, value) {\n    if (!context.__smithy_context) {\n        context.__smithy_context = { features: {} };\n    }\n    else if (!context.__smithy_context.features) {\n        context.__smithy_context.features = {};\n    }\n    context.__smithy_context.features[feature] = value;\n}\nexport function bindEndpointMiddleware(getEndpointFromConfig) {\n    const getEndpointFromInstructions = bindGetEndpointFromInstructions(getEndpointFromConfig);\n    return ({ config, instructions, }) => {\n        return (next, context) => async (args) => {\n            if (config.isCustomEndpoint) {\n                setFeature(context, \"ENDPOINT_OVERRIDE\", \"N\");\n            }\n            const endpoint = await getEndpointFromInstructions(args.input, {\n                getEndpointParameterInstructions() {\n                    return instructions;\n                },\n            }, { ...config }, context);\n            context.endpointV2 = endpoint;\n            context.authSchemes = endpoint.properties?.authSchemes;\n            const authScheme = context.authSchemes?.[0];\n            if (authScheme) {\n                context[\"signing_region\"] = authScheme.signingRegion;\n                context[\"signing_service\"] = authScheme.signingName;\n                const smithyContext = getSmithyContext(context);\n                const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption;\n                if (httpAuthOption) {\n                    httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, {\n                        signing_region: authScheme.signingRegion,\n                        signingRegion: authScheme.signingRegion,\n                        signing_service: authScheme.signingName,\n                        signingName: authScheme.signingName,\n                        signingRegionSet: authScheme.signingRegionSet,\n                    }, authScheme.properties);\n                }\n            }\n            return next({\n                ...args,\n            });\n        };\n    };\n}\n","import { bindEndpointMiddleware } from \"./endpointMiddleware\";\nconst serializerMiddlewareOption = {\n    name: \"serializerMiddleware\",\n    step: \"serialize\",\n    tags: [\"SERIALIZER\"],\n    override: true,\n};\nexport const endpointMiddlewareOptions = {\n    step: \"serialize\",\n    tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n    name: \"endpointV2Middleware\",\n    override: true,\n    relation: \"before\",\n    toMiddleware: serializerMiddlewareOption.name,\n};\nexport function bindGetEndpointPlugin(getEndpointFromConfig) {\n    const endpointMiddleware = bindEndpointMiddleware(getEndpointFromConfig);\n    return (config, instructions) => ({\n        applyToStack: (clientStack) => {\n            clientStack.addRelativeTo(endpointMiddleware({\n                config,\n                instructions,\n            }), endpointMiddlewareOptions);\n        },\n    });\n}\n","import { normalizeProvider } from \"@smithy/core/transport\";\nimport { toEndpointV1 } from \"./adaptors/toEndpointV1\";\nexport function bindResolveEndpointConfig(getEndpointFromConfig) {\n    return (input) => {\n        const tls = input.tls ?? true;\n        const { endpoint, useDualstackEndpoint, useFipsEndpoint } = input;\n        const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await normalizeProvider(endpoint)()) : undefined;\n        const isCustomEndpoint = !!endpoint;\n        const resolvedConfig = Object.assign(input, {\n            endpoint: customEndpointProvider,\n            tls,\n            isCustomEndpoint,\n            useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false),\n            useFipsEndpoint: normalizeProvider(useFipsEndpoint ?? false),\n            ignoreConfiguredEndpointUrls: !!input.ignoreConfiguredEndpointUrls,\n        });\n        let configuredEndpointPromise = undefined;\n        resolvedConfig.serviceConfiguredEndpoint = async () => {\n            if (input.serviceId && !configuredEndpointPromise) {\n                configuredEndpointPromise = getEndpointFromConfig(input.serviceId);\n            }\n            return configuredEndpointPromise;\n        };\n        return resolvedConfig;\n    };\n}\n","export class BinaryDecisionDiagram {\n    nodes;\n    root;\n    conditions;\n    results;\n    constructor(bdd, root, conditions, results) {\n        this.nodes = bdd;\n        this.root = root;\n        this.conditions = conditions;\n        this.results = results;\n    }\n    static from(bdd, root, conditions, results) {\n        return new BinaryDecisionDiagram(bdd, root, conditions, results);\n    }\n}\n","export class EndpointCache {\n    capacity;\n    data = new Map();\n    parameters = [];\n    constructor({ size, params }) {\n        this.capacity = size ?? 50;\n        if (params) {\n            this.parameters = params;\n        }\n    }\n    get(endpointParams, resolver) {\n        const key = this.hash(endpointParams);\n        if (key === false) {\n            return resolver();\n        }\n        if (!this.data.has(key)) {\n            if (this.data.size > this.capacity + 10) {\n                const keys = this.data.keys();\n                let i = 0;\n                while (true) {\n                    const { value, done } = keys.next();\n                    this.data.delete(value);\n                    if (done || ++i > 10) {\n                        break;\n                    }\n                }\n            }\n            this.data.set(key, resolver());\n        }\n        return this.data.get(key);\n    }\n    size() {\n        return this.data.size;\n    }\n    hash(endpointParams) {\n        let buffer = \"\";\n        const { parameters } = this;\n        if (parameters.length === 0) {\n            return false;\n        }\n        for (const param of parameters) {\n            const val = String(endpointParams[param] ?? \"\");\n            if (val.includes(\"|;\")) {\n                return false;\n            }\n            buffer += val + \"|;\";\n        }\n        return buffer;\n    }\n}\n","export class EndpointError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"EndpointError\";\n    }\n}\n","export const debugId = \"endpoints\";\n","export function toDebugString(input) {\n    if (typeof input !== \"object\" || input == null) {\n        return input;\n    }\n    if (\"ref\" in input) {\n        return `$${toDebugString(input.ref)}`;\n    }\n    if (\"fn\" in input) {\n        return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n    }\n    return JSON.stringify(input, null, 2);\n}\n","export const customEndpointFunctions = {};\n","export const booleanEquals = (value1, value2) => value1 === value2;\n","export function coalesce(...args) {\n    for (const arg of args) {\n        if (arg != null) {\n            return arg;\n        }\n    }\n    return undefined;\n}\n","import { EndpointError } from \"../types\";\nexport const getAttrPathList = (path) => {\n    const parts = path.split(\".\");\n    const pathList = [];\n    for (const part of parts) {\n        const squareBracketIndex = part.indexOf(\"[\");\n        if (squareBracketIndex !== -1) {\n            if (part.indexOf(\"]\") !== part.length - 1) {\n                throw new EndpointError(`Path: '${path}' does not end with ']'`);\n            }\n            const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n            if (Number.isNaN(parseInt(arrayIndex))) {\n                throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n            }\n            if (squareBracketIndex !== 0) {\n                pathList.push(part.slice(0, squareBracketIndex));\n            }\n            pathList.push(arrayIndex);\n        }\n        else {\n            pathList.push(part);\n        }\n    }\n    return pathList;\n};\n","import { EndpointError } from \"../types\";\nimport { getAttrPathList } from \"./getAttrPathList\";\nexport const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => {\n    if (typeof acc !== \"object\") {\n        throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n    }\n    else if (Array.isArray(acc)) {\n        const i = parseInt(index);\n        return acc[i < 0 ? acc.length + i : i];\n    }\n    return acc[index];\n}, value);\n","export const isSet = (value) => value != null;\n","export function ite(condition, trueValue, falseValue) {\n    return condition ? trueValue : falseValue;\n}\n","export const not = (value) => !value;\n","const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`);\nexport const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith(\"[\") && value.endsWith(\"]\"));\n","import { EndpointURLScheme } from \"@smithy/types\";\nimport { isIpAddress } from \"./isIpAddress\";\nconst DEFAULT_PORTS = {\n    [EndpointURLScheme.HTTP]: 80,\n    [EndpointURLScheme.HTTPS]: 443,\n};\nexport const parseURL = (value) => {\n    const whatwgURL = (() => {\n        try {\n            if (value instanceof URL) {\n                return value;\n            }\n            if (typeof value === \"object\" && \"hostname\" in value) {\n                const { hostname, port, protocol = \"\", path = \"\", query = {} } = value;\n                const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : \"\"}${path}`);\n                url.search = Object.entries(query)\n                    .map(([k, v]) => `${k}=${v}`)\n                    .join(\"&\");\n                return url;\n            }\n            return new URL(value);\n        }\n        catch (ignored) {\n            return null;\n        }\n    })();\n    if (!whatwgURL) {\n        console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n        return null;\n    }\n    const urlString = whatwgURL.href;\n    const { host, hostname, pathname, protocol, search } = whatwgURL;\n    if (search) {\n        return null;\n    }\n    const scheme = protocol.slice(0, -1);\n    if (!Object.values(EndpointURLScheme).includes(scheme)) {\n        return null;\n    }\n    const isIp = isIpAddress(hostname);\n    const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) ||\n        (typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`));\n    const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n    return {\n        scheme,\n        authority,\n        path: pathname,\n        normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n        isIp,\n    };\n};\n","export function split(value, delimiter, limit) {\n    if (limit === 1) {\n        return [value];\n    }\n    if (value === \"\") {\n        return [\"\"];\n    }\n    const parts = value.split(delimiter);\n    if (limit === 0) {\n        return parts;\n    }\n    return parts.slice(0, limit - 1).concat(parts.slice(1).join(delimiter));\n}\n","export const stringEquals = (value1, value2) => value1 === value2;\n","export const substring = (input, start, stop, reverse) => {\n    if (input == null || start >= stop || input.length < stop || /[^\\u0000-\\u007f]/.test(input)) {\n        return null;\n    }\n    if (!reverse) {\n        return input.substring(start, stop);\n    }\n    return input.substring(input.length - stop, input.length - start);\n};\n","export const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n","import { booleanEquals, coalesce, getAttr, isSet, isValidHostLabel, ite, not, parseURL, split, stringEquals, substring, uriEncode, } from \"../lib\";\nexport const endpointFunctions = {\n    booleanEquals,\n    coalesce,\n    getAttr,\n    isSet,\n    isValidHostLabel,\n    ite,\n    not,\n    parseURL,\n    split,\n    stringEquals,\n    substring,\n    uriEncode,\n};\n","import { getAttr } from \"../lib\";\nexport const evaluateTemplate = (template, options) => {\n    const evaluatedTemplateArr = [];\n    const { referenceRecord, endpointParams } = options;\n    let currentIndex = 0;\n    while (currentIndex < template.length) {\n        const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n        if (openingBraceIndex === -1) {\n            evaluatedTemplateArr.push(template.slice(currentIndex));\n            break;\n        }\n        evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n        const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n        if (closingBraceIndex === -1) {\n            evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n            break;\n        }\n        if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n            evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n            currentIndex = closingBraceIndex + 2;\n        }\n        const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n        if (parameterName.includes(\"#\")) {\n            const [refName, attrName] = parameterName.split(\"#\");\n            evaluatedTemplateArr.push(getAttr((referenceRecord[refName] ?? endpointParams[refName]), attrName));\n        }\n        else {\n            evaluatedTemplateArr.push((referenceRecord[parameterName] ?? endpointParams[parameterName]));\n        }\n        currentIndex = closingBraceIndex + 1;\n    }\n    return evaluatedTemplateArr.join(\"\");\n};\n","export const getReferenceValue = ({ ref }, options) => {\n    return options.referenceRecord[ref] ?? options.endpointParams[ref];\n};\n","import { EndpointError, } from \"../types\";\nimport { customEndpointFunctions } from \"./customEndpointFunctions\";\nimport { endpointFunctions } from \"./endpointFunctions\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nimport { getReferenceValue } from \"./getReferenceValue\";\nexport const evaluateExpression = (obj, keyName, options) => {\n    if (typeof obj === \"string\") {\n        return evaluateTemplate(obj, options);\n    }\n    else if (obj[\"fn\"]) {\n        return group.callFunction(obj, options);\n    }\n    else if (obj[\"ref\"]) {\n        return getReferenceValue(obj, options);\n    }\n    throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n};\nexport const callFunction = ({ fn, argv }, options) => {\n    const evaluatedArgs = Array(argv.length);\n    for (let i = 0; i < evaluatedArgs.length; ++i) {\n        const arg = argv[i];\n        if (typeof arg === \"boolean\" || typeof arg === \"number\") {\n            evaluatedArgs[i] = arg;\n        }\n        else {\n            evaluatedArgs[i] = group.evaluateExpression(arg, \"arg\", options);\n        }\n    }\n    const namespaceSeparatorIndex = fn.indexOf(\".\");\n    if (namespaceSeparatorIndex !== -1) {\n        const namespaceFunctions = customEndpointFunctions[fn.slice(0, namespaceSeparatorIndex)];\n        const customFunction = namespaceFunctions?.[fn.slice(namespaceSeparatorIndex + 1)];\n        if (typeof customFunction === \"function\") {\n            return customFunction(...evaluatedArgs);\n        }\n    }\n    const callable = endpointFunctions[fn];\n    if (typeof callable === \"function\") {\n        return callable(...evaluatedArgs);\n    }\n    throw new Error(`function ${fn} not loaded in endpointFunctions.`);\n};\nexport const group = {\n    evaluateExpression,\n    callFunction,\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { EndpointError } from \"../types\";\nimport { callFunction } from \"./callFunction\";\nexport const evaluateCondition = (condition, options) => {\n    const { assign } = condition;\n    if (assign && assign in options.referenceRecord) {\n        throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n    }\n    const value = callFunction(condition, options);\n    options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(condition)} = ${toDebugString(value)}`);\n    const result = value === \"\" ? true : !!value;\n    if (assign != null) {\n        return { result, toAssign: { name: assign, value } };\n    }\n    return { result };\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointHeaders = (headers, options) => Object.entries(headers ?? {}).reduce((acc, [headerKey, headerVal]) => {\n    acc[headerKey] = headerVal.map((headerValEntry) => {\n        const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n        if (typeof processedExpr !== \"string\") {\n            throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n        }\n        return processedExpr;\n    });\n    return acc;\n}, {});\n","import { EndpointError } from \"../types\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nexport const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => {\n    acc[propertyKey] = group.getEndpointProperty(propertyVal, options);\n    return acc;\n}, {});\nexport const getEndpointProperty = (property, options) => {\n    if (Array.isArray(property)) {\n        return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n    }\n    switch (typeof property) {\n        case \"string\":\n            return evaluateTemplate(property, options);\n        case \"object\":\n            if (property === null) {\n                throw new EndpointError(`Unexpected endpoint property: ${property}`);\n            }\n            return group.getEndpointProperties(property, options);\n        case \"boolean\":\n            return property;\n        default:\n            throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n    }\n};\nexport const group = {\n    getEndpointProperty,\n    getEndpointProperties,\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointUrl = (endpointUrl, options) => {\n    const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n    if (typeof expression === \"string\") {\n        try {\n            return new URL(expression);\n        }\n        catch (error) {\n            console.error(`Failed to construct URL with ${expression}`, error);\n            throw error;\n        }\n    }\n    throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n};\n","import { EndpointError } from \"./types\";\nimport { evaluateCondition } from \"./utils/evaluateCondition\";\nimport { evaluateExpression } from \"./utils/evaluateExpression\";\nimport { getEndpointHeaders } from \"./utils/getEndpointHeaders\";\nimport { getEndpointProperties } from \"./utils/getEndpointProperties\";\nimport { getEndpointUrl } from \"./utils/getEndpointUrl\";\nconst RESULT = 100_000_000;\nexport const decideEndpoint = (bdd, options) => {\n    const { nodes, root, results, conditions } = bdd;\n    let ref = root;\n    const referenceRecord = {};\n    const closure = {\n        referenceRecord,\n        endpointParams: options.endpointParams,\n        logger: options.logger,\n    };\n    while (ref !== 1 && ref !== -1 && ref < RESULT) {\n        const node_i = 3 * (Math.abs(ref) - 1);\n        const [condition_i, highRef, lowRef] = [nodes[node_i], nodes[node_i + 1], nodes[node_i + 2]];\n        const [fn, argv, assign] = conditions[condition_i];\n        const evaluation = evaluateCondition({ fn, assign, argv }, closure);\n        if (evaluation.toAssign) {\n            const { name, value } = evaluation.toAssign;\n            referenceRecord[name] = value;\n        }\n        ref = ref >= 0 === evaluation.result ? highRef : lowRef;\n    }\n    if (ref >= RESULT) {\n        const result = results[ref - RESULT];\n        if (result[0] === -1) {\n            const [, errorExpression] = result;\n            throw new EndpointError(evaluateExpression(errorExpression, \"Error\", closure));\n        }\n        const [url, properties, headers] = result;\n        return {\n            url: getEndpointUrl(url, closure),\n            properties: getEndpointProperties(properties, closure),\n            headers: getEndpointHeaders(headers ?? {}, closure),\n        };\n    }\n    throw new EndpointError(`No matching endpoint.`);\n};\n","import { getEndpointFromConfig } from \"./middleware-endpoint/adaptors/getEndpointFromConfig\";\nimport { bindGetEndpointFromInstructions } from \"./middleware-endpoint/adaptors/getEndpointFromInstructions\";\nimport { bindEndpointMiddleware } from \"./middleware-endpoint/endpointMiddleware\";\nimport { bindGetEndpointPlugin } from \"./middleware-endpoint/getEndpointPlugin\";\nimport { bindResolveEndpointConfig } from \"./middleware-endpoint/resolveEndpointConfig\";\nexport { toEndpointV1 } from \"@smithy/core/transport\";\nexport { BinaryDecisionDiagram } from \"./util-endpoints/bdd/BinaryDecisionDiagram\";\nexport { EndpointCache } from \"./util-endpoints/cache/EndpointCache\";\nexport { decideEndpoint } from \"./util-endpoints/decideEndpoint\";\nexport { isIpAddress } from \"./util-endpoints/lib/isIpAddress\";\nexport { isValidHostLabel } from \"@smithy/core/transport\";\nexport { customEndpointFunctions } from \"./util-endpoints/utils/customEndpointFunctions\";\nexport { resolveEndpoint } from \"./util-endpoints/resolveEndpoint\";\nexport { EndpointError } from \"./util-endpoints/types\";\nexport const getEndpointFromInstructions = bindGetEndpointFromInstructions(getEndpointFromConfig);\nexport const resolveEndpointConfig = bindResolveEndpointConfig(getEndpointFromConfig);\nexport const endpointMiddleware = bindEndpointMiddleware(getEndpointFromConfig);\nexport const getEndpointPlugin = bindGetEndpointPlugin(getEndpointFromConfig);\nexport { resolveParams, } from \"./middleware-endpoint/adaptors/getEndpointFromInstructions\";\nexport { toEndpointV1 as middlewareEndpointToEndpointV1 } from \"./middleware-endpoint/adaptors/toEndpointV1\";\nexport { endpointMiddlewareOptions } from \"./middleware-endpoint/getEndpointPlugin\";\nexport { resolveEndpointRequiredConfig } from \"./middleware-endpoint/resolveEndpointRequiredConfig\";\n","export const CLOCK_SKEW_ERROR_CODES = [\n    \"AccessDeniedException\",\n    \"AuthFailure\",\n    \"InvalidSignatureException\",\n    \"RequestExpired\",\n    \"RequestInTheFuture\",\n    \"RequestTimeTooSkewed\",\n    \"SignatureDoesNotMatch\",\n];\nexport const THROTTLING_ERROR_CODES = [\n    \"BandwidthLimitExceeded\",\n    \"EC2ThrottledException\",\n    \"LimitExceededException\",\n    \"PriorRequestNotComplete\",\n    \"ProvisionedThroughputExceededException\",\n    \"RequestLimitExceeded\",\n    \"RequestThrottled\",\n    \"RequestThrottledException\",\n    \"SlowDown\",\n    \"ThrottledException\",\n    \"Throttling\",\n    \"ThrottlingException\",\n    \"TooManyRequestsException\",\n    \"TransactionInProgressException\",\n];\nexport const TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nexport const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nexport const NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\nexport const NODEJS_NETWORK_ERROR_CODES = [\"EHOSTUNREACH\", \"ENETUNREACH\", \"ENOTFOUND\", \"EAI_AGAIN\"];\n","import { CLOCK_SKEW_ERROR_CODES, NODEJS_NETWORK_ERROR_CODES, NODEJS_TIMEOUT_ERROR_CODES, THROTTLING_ERROR_CODES, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_STATUS_CODES, } from \"./constants\";\nexport const isRetryableByTrait = (error) => error?.$retryable !== undefined;\nexport const isClockSkewError = (error) => CLOCK_SKEW_ERROR_CODES.includes(error.name);\nexport const isClockSkewCorrectedError = (error) => error.$metadata?.clockSkewCorrected;\nexport const isBrowserNetworkError = (error) => {\n    const errorMessages = new Set([\n        \"Failed to fetch\",\n        \"NetworkError when attempting to fetch resource\",\n        \"The Internet connection appears to be offline\",\n        \"Load failed\",\n        \"Network request failed\",\n    ]);\n    const isValid = error && error instanceof TypeError;\n    if (!isValid) {\n        return false;\n    }\n    return errorMessages.has(error.message);\n};\nexport const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 ||\n    THROTTLING_ERROR_CODES.includes(error.name) ||\n    error.$retryable?.throttling == true;\nexport const isTransientError = (error, depth = 0) => isRetryableByTrait(error) ||\n    isClockSkewCorrectedError(error) ||\n    (error.name === \"InvalidSignatureException\" && error.message?.includes(\"Signature expired\")) ||\n    TRANSIENT_ERROR_CODES.includes(error.name) ||\n    NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || \"\") ||\n    NODEJS_NETWORK_ERROR_CODES.includes(error?.code || \"\") ||\n    TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) ||\n    isBrowserNetworkError(error) ||\n    isNodeJsHttp2TransientError(error) ||\n    (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1));\nexport const isServerError = (error) => {\n    if (error.$metadata?.httpStatusCode !== undefined) {\n        const statusCode = error.$metadata.httpStatusCode;\n        if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) {\n            return true;\n        }\n        return false;\n    }\n    return false;\n};\nexport function isNodeJsHttp2TransientError(error) {\n    return error.code === \"ERR_HTTP2_STREAM_ERROR\" && error.message.includes(\"NGHTTP2_REFUSED_STREAM\");\n}\n","import { isThrottlingError } from \"../service-error-classification/service-error-classification\";\nexport class DefaultRateLimiter {\n    static setTimeoutFn = (fn, delay) => setTimeout(fn, delay);\n    beta;\n    minCapacity;\n    minFillRate;\n    scaleConstant;\n    smooth;\n    enabled = false;\n    availableTokens = 0;\n    lastMaxRate = 0;\n    measuredTxRate = 0;\n    requestCount = 0;\n    fillRate;\n    lastThrottleTime;\n    lastTimestamp = 0;\n    lastTxRateBucket;\n    maxCapacity;\n    timeWindow = 0;\n    constructor(options) {\n        this.beta = options?.beta ?? 0.7;\n        this.minCapacity = options?.minCapacity ?? 1;\n        this.minFillRate = options?.minFillRate ?? 0.5;\n        this.scaleConstant = options?.scaleConstant ?? 0.4;\n        this.smooth = options?.smooth ?? 0.8;\n        this.lastThrottleTime = this.getCurrentTimeInSeconds();\n        this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n        this.fillRate = this.minFillRate;\n        this.maxCapacity = this.minCapacity;\n    }\n    async getSendToken() {\n        return this.acquireTokenBucket(1);\n    }\n    updateClientSendingRate(response) {\n        let calculatedRate;\n        this.updateMeasuredRate();\n        const retryErrorInfo = response;\n        const isThrottling = retryErrorInfo?.errorType === \"THROTTLING\" || isThrottlingError(retryErrorInfo?.error ?? response);\n        if (isThrottling) {\n            const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n            this.lastMaxRate = rateToUse;\n            this.calculateTimeWindow();\n            this.lastThrottleTime = this.getCurrentTimeInSeconds();\n            calculatedRate = this.cubicThrottle(rateToUse);\n            this.enableTokenBucket();\n        }\n        else {\n            this.calculateTimeWindow();\n            calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n        }\n        const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n        this.updateTokenBucketRate(newRate);\n    }\n    getCurrentTimeInSeconds() {\n        return Date.now() / 1000;\n    }\n    async acquireTokenBucket(amount) {\n        if (!this.enabled) {\n            return;\n        }\n        this.refillTokenBucket();\n        while (amount > this.availableTokens) {\n            const delay = ((amount - this.availableTokens) / this.fillRate) * 1000;\n            await new Promise((resolve) => DefaultRateLimiter.setTimeoutFn(resolve, delay));\n            this.refillTokenBucket();\n        }\n        this.availableTokens = this.availableTokens - amount;\n    }\n    refillTokenBucket() {\n        const timestamp = this.getCurrentTimeInSeconds();\n        if (!this.lastTimestamp) {\n            this.lastTimestamp = timestamp;\n            return;\n        }\n        const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n        this.availableTokens = Math.min(this.maxCapacity, this.availableTokens + fillAmount);\n        this.lastTimestamp = timestamp;\n    }\n    calculateTimeWindow() {\n        this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3));\n    }\n    cubicThrottle(rateToUse) {\n        return this.getPrecise(rateToUse * this.beta);\n    }\n    cubicSuccess(timestamp) {\n        return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate);\n    }\n    enableTokenBucket() {\n        this.enabled = true;\n    }\n    updateTokenBucketRate(newRate) {\n        this.refillTokenBucket();\n        this.fillRate = Math.max(newRate, this.minFillRate);\n        this.maxCapacity = Math.max(newRate, this.minCapacity);\n        this.availableTokens = Math.min(this.availableTokens, this.maxCapacity);\n    }\n    updateMeasuredRate() {\n        const t = this.getCurrentTimeInSeconds();\n        const timeBucket = Math.floor(t * 2) / 2;\n        this.requestCount++;\n        if (timeBucket > this.lastTxRateBucket) {\n            const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n            this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n            this.requestCount = 0;\n            this.lastTxRateBucket = timeBucket;\n        }\n    }\n    getPrecise(num) {\n        return parseFloat(num.toFixed(8));\n    }\n}\n","export const DEFAULT_RETRY_DELAY_BASE = 100;\nexport const MAXIMUM_RETRY_DELAY = 20 * 1000;\nexport const THROTTLING_RETRY_DELAY_BASE = 500;\nexport const INITIAL_RETRY_TOKENS = 500;\nexport const RETRY_COST = 5;\nexport const TIMEOUT_RETRY_COST = 10;\nexport const NO_RETRY_INCREMENT = 1;\nexport const INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nexport const REQUEST_HEADER = \"amz-sdk-request\";\n","export class Retry {\n    static v2026 = typeof process !== \"undefined\" && process.env?.SMITHY_NEW_RETRIES_2026 === \"true\";\n    static delay() {\n        return Retry.v2026 ? 50 : 100;\n    }\n    static throttlingDelay() {\n        return Retry.v2026 ? 1_000 : 500;\n    }\n    static cost() {\n        return Retry.v2026 ? 14 : 5;\n    }\n    static throttlingCost() {\n        return Retry.v2026 ? 5 : 10;\n    }\n    static modifiedCostType() {\n        return Retry.v2026 ? \"THROTTLING\" : \"TRANSIENT\";\n    }\n}\n","import { MAXIMUM_RETRY_DELAY } from \"./constants\";\nimport { Retry } from \"./retries-2026-config\";\nexport class DefaultRetryBackoffStrategy {\n    x = Retry.delay();\n    computeNextBackoffDelay(i) {\n        const b = Math.random();\n        const r = 2;\n        const t_i = b * Math.min(this.x * r ** i, MAXIMUM_RETRY_DELAY);\n        return Math.floor(t_i);\n    }\n    setDelayBase(delay) {\n        this.x = delay;\n    }\n}\n","import { MAXIMUM_RETRY_DELAY } from \"./constants\";\nexport class DefaultRetryToken {\n    delay;\n    count;\n    cost;\n    longPoll;\n    $retryLog = {\n        acquisitionDelay: 0,\n    };\n    constructor(delay, count, cost, longPoll) {\n        this.delay = delay;\n        this.count = count;\n        this.cost = cost;\n        this.longPoll = longPoll;\n    }\n    getRetryCount() {\n        return this.count;\n    }\n    getRetryDelay() {\n        return Math.min(MAXIMUM_RETRY_DELAY, this.delay);\n    }\n    getRetryCost() {\n        return this.cost;\n    }\n    isLongPoll() {\n        return this.longPoll;\n    }\n}\n","export var RETRY_MODES;\n(function (RETRY_MODES) {\n    RETRY_MODES[\"STANDARD\"] = \"standard\";\n    RETRY_MODES[\"ADAPTIVE\"] = \"adaptive\";\n})(RETRY_MODES || (RETRY_MODES = {}));\nexport const DEFAULT_MAX_ATTEMPTS = 3;\nexport const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD;\n","import { DefaultRetryBackoffStrategy } from \"./DefaultRetryBackoffStrategy\";\nimport { DefaultRetryToken } from \"./DefaultRetryToken\";\nimport { DEFAULT_MAX_ATTEMPTS, RETRY_MODES } from \"./config\";\nimport { INITIAL_RETRY_TOKENS, NO_RETRY_INCREMENT } from \"./constants\";\nimport { Retry } from \"./retries-2026-config\";\nconst refusal = {\n    incompatible: 1,\n    attempts: 2,\n    capacity: 3,\n};\nexport class StandardRetryStrategy {\n    mode = RETRY_MODES.STANDARD;\n    retryBackoffStrategy;\n    capacity = INITIAL_RETRY_TOKENS;\n    maxAttemptsProvider;\n    baseDelay;\n    constructor(arg1) {\n        if (typeof arg1 === \"number\") {\n            this.maxAttemptsProvider = async () => arg1;\n        }\n        else if (typeof arg1 === \"function\") {\n            this.maxAttemptsProvider = arg1;\n        }\n        else if (arg1 && typeof arg1 === \"object\") {\n            this.maxAttemptsProvider = async () => arg1.maxAttempts;\n            this.baseDelay = arg1.baseDelay;\n            this.retryBackoffStrategy = arg1.backoff;\n        }\n        this.maxAttemptsProvider ??= async () => DEFAULT_MAX_ATTEMPTS;\n        this.baseDelay ??= Retry.delay();\n        this.retryBackoffStrategy ??= new DefaultRetryBackoffStrategy();\n    }\n    async acquireInitialRetryToken(retryTokenScope) {\n        return new DefaultRetryToken(Retry.delay(), 0, undefined, Retry.v2026 && retryTokenScope.includes(\":longpoll\"));\n    }\n    async refreshRetryTokenForRetry(token, errorInfo) {\n        const maxAttempts = await this.getMaxAttempts();\n        const retryCode = this.retryCode(token, errorInfo, maxAttempts);\n        const shouldRetry = retryCode === 0;\n        const isLongPoll = token.isLongPoll?.();\n        if (shouldRetry || isLongPoll) {\n            const errorType = errorInfo.errorType;\n            this.retryBackoffStrategy.setDelayBase(errorType === \"THROTTLING\" ? Retry.throttlingDelay() : this.baseDelay);\n            const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount());\n            let retryDelay = delayFromErrorType;\n            if (errorInfo.retryAfterHint instanceof Date) {\n                retryDelay = Math.max(delayFromErrorType, Math.min(errorInfo.retryAfterHint.getTime() - Date.now(), delayFromErrorType + 5_000));\n            }\n            if (!shouldRetry) {\n                const longPollBackoff = Retry.v2026 && retryCode === refusal.capacity && isLongPoll ? retryDelay : 0;\n                if (longPollBackoff > 0) {\n                    await new Promise((r) => setTimeout(r, longPollBackoff));\n                }\n            }\n            else {\n                const capacityCost = this.getCapacityCost(errorType);\n                this.capacity -= capacityCost;\n                const nextToken = new DefaultRetryToken(0, token.getRetryCount() + 1, capacityCost, token.isLongPoll?.() ?? false);\n                await new Promise((r) => setTimeout(r, retryDelay));\n                nextToken.$retryLog.acquisitionDelay = retryDelay;\n                return nextToken;\n            }\n        }\n        throw new Error(\"No retry token available\");\n    }\n    recordSuccess(token) {\n        this.capacity = Math.min(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT));\n    }\n    getCapacity() {\n        return this.capacity;\n    }\n    async maxAttempts() {\n        return this.maxAttemptsProvider();\n    }\n    async getMaxAttempts() {\n        try {\n            return await this.maxAttemptsProvider();\n        }\n        catch (ignored) {\n            console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`);\n            return DEFAULT_MAX_ATTEMPTS;\n        }\n    }\n    retryCode(tokenToRenew, errorInfo, maxAttempts) {\n        const attempts = tokenToRenew.getRetryCount() + 1;\n        const retryableStatus = this.isRetryableError(errorInfo.errorType) ? 0 : refusal.incompatible;\n        const attemptStatus = attempts < maxAttempts ? 0 : refusal.attempts;\n        const capacityStatus = this.capacity >= this.getCapacityCost(errorInfo.errorType) ? 0 : refusal.capacity;\n        return retryableStatus || attemptStatus || capacityStatus;\n    }\n    getCapacityCost(errorType) {\n        return errorType === Retry.modifiedCostType() ? Retry.throttlingCost() : Retry.cost();\n    }\n    isRetryableError(errorType) {\n        return errorType === \"THROTTLING\" || errorType === \"TRANSIENT\";\n    }\n}\n","import { DefaultRateLimiter } from \"./DefaultRateLimiter\";\nimport { StandardRetryStrategy } from \"./StandardRetryStrategy\";\nimport { RETRY_MODES } from \"./config\";\nexport class AdaptiveRetryStrategy {\n    mode = RETRY_MODES.ADAPTIVE;\n    rateLimiter;\n    standardRetryStrategy;\n    constructor(maxAttemptsProvider, options) {\n        const { rateLimiter } = options ?? {};\n        this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();\n        this.standardRetryStrategy = options\n            ? new StandardRetryStrategy({\n                maxAttempts: typeof maxAttemptsProvider === \"number\" ? maxAttemptsProvider : 3,\n                ...options,\n            })\n            : new StandardRetryStrategy(maxAttemptsProvider);\n    }\n    async acquireInitialRetryToken(retryTokenScope) {\n        const token = await this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);\n        await this.rateLimiter.getSendToken();\n        return token;\n    }\n    async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n        this.rateLimiter.updateClientSendingRate(errorInfo);\n        const token = await this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n        await this.rateLimiter.getSendToken();\n        return token;\n    }\n    recordSuccess(token) {\n        this.rateLimiter.updateClientSendingRate({});\n        this.standardRetryStrategy.recordSuccess(token);\n    }\n    async maxAttemptsProvider() {\n        return this.standardRetryStrategy.maxAttempts();\n    }\n}\n","import { normalizeProvider } from \"@smithy/core/client\";\nimport { AdaptiveRetryStrategy } from \"../util-retry/AdaptiveRetryStrategy\";\nimport { StandardRetryStrategy } from \"../util-retry/StandardRetryStrategy\";\nimport { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, RETRY_MODES } from \"../util-retry/config\";\nimport { Retry } from \"../util-retry/retries-2026-config\";\nexport const ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nexport const CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nexport const NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => {\n        const value = env[ENV_MAX_ATTEMPTS];\n        if (!value)\n            return undefined;\n        const maxAttempt = parseInt(value);\n        if (Number.isNaN(maxAttempt)) {\n            throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n        }\n        return maxAttempt;\n    },\n    configFileSelector: (profile) => {\n        const value = profile[CONFIG_MAX_ATTEMPTS];\n        if (!value)\n            return undefined;\n        const maxAttempt = parseInt(value);\n        if (Number.isNaN(maxAttempt)) {\n            throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n        }\n        return maxAttempt;\n    },\n    default: DEFAULT_MAX_ATTEMPTS,\n};\nexport const resolveRetryConfig = (input, defaults) => {\n    const { retryStrategy, retryMode } = input;\n    const { defaultMaxAttempts = DEFAULT_MAX_ATTEMPTS, defaultBaseDelay = Retry.delay() } = defaults ?? {};\n    const maxAttemptsProvider = normalizeProvider(input.maxAttempts ?? defaultMaxAttempts);\n    let controller = retryStrategy\n        ? Promise.resolve(retryStrategy)\n        : undefined;\n    const getDefault = async () => {\n        const maxAttempts = await maxAttemptsProvider();\n        const adaptive = (await normalizeProvider(retryMode)()) === RETRY_MODES.ADAPTIVE;\n        if (adaptive) {\n            return new AdaptiveRetryStrategy(maxAttemptsProvider, {\n                maxAttempts,\n                baseDelay: defaultBaseDelay,\n            });\n        }\n        return new StandardRetryStrategy({\n            maxAttempts,\n            baseDelay: defaultBaseDelay,\n        });\n    };\n    return Object.assign(input, {\n        maxAttempts: maxAttemptsProvider,\n        retryStrategy: () => (controller ??= getDefault()),\n    });\n};\nexport const ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nexport const CONFIG_RETRY_MODE = \"retry_mode\";\nexport const NODE_RETRY_MODE_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n    configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n    default: DEFAULT_RETRY_MODE,\n};\n","import { Readable } from \"node:stream\";\nexport const isStreamingPayload = (request) => request?.body instanceof Readable ||\n    (typeof ReadableStream !== \"undefined\" && request?.body instanceof ReadableStream);\n","import { HttpResponse } from \"@smithy/core/protocols\";\nimport { parseRfc7231DateTime } from \"@smithy/core/serde\";\nexport function parseRetryAfterHeader(response, logger) {\n    if (!HttpResponse.isInstance(response)) {\n        return;\n    }\n    for (const header of Object.keys(response.headers)) {\n        const h = header.toLowerCase();\n        if (h === \"retry-after\") {\n            const retryAfter = response.headers[header];\n            let retryAfterSeconds = NaN;\n            if (retryAfter.endsWith(\"GMT\")) {\n                try {\n                    const date = parseRfc7231DateTime(retryAfter);\n                    retryAfterSeconds = (date.getTime() - Date.now()) / 1000;\n                }\n                catch (e) {\n                    logger?.trace?.(\"Failed to parse retry-after header\");\n                    logger?.trace?.(e);\n                }\n            }\n            else if (retryAfter.match(/ GMT, ((\\d+)|(\\d+\\.\\d+))$/)) {\n                retryAfterSeconds = Number(retryAfter.match(/ GMT, ([\\d.]+)$/)?.[1]);\n            }\n            else if (retryAfter.match(/^((\\d+)|(\\d+\\.\\d+))$/)) {\n                retryAfterSeconds = Number(retryAfter);\n            }\n            else if (Date.parse(retryAfter) >= Date.now()) {\n                retryAfterSeconds = (Date.parse(retryAfter) - Date.now()) / 1000;\n            }\n            if (isNaN(retryAfterSeconds)) {\n                return;\n            }\n            return new Date(Date.now() + retryAfterSeconds * 1000);\n        }\n        else if (h === \"x-amz-retry-after\") {\n            const v = response.headers[header];\n            const backoffMilliseconds = Number(v);\n            if (isNaN(backoffMilliseconds)) {\n                logger?.trace?.(`Failed to parse x-amz-retry-after=${v}`);\n                return;\n            }\n            return new Date(Date.now() + backoffMilliseconds);\n        }\n    }\n}\nexport function getRetryAfterHint(response, logger) {\n    return parseRetryAfterHeader(response, logger);\n}\n","export const asSdkError = (error) => {\n    if (error instanceof Error)\n        return error;\n    if (error instanceof Object)\n        return Object.assign(new Error(), error);\n    if (typeof error === \"string\")\n        return new Error(error);\n    return new Error(`AWS SDK error wrapper for ${error}`);\n};\n","import { NoOpLogger } from \"@smithy/core/client\";\nimport { HttpRequest } from \"@smithy/core/protocols\";\nimport { v4 } from \"@smithy/core/serde\";\nimport { isServerError, isThrottlingError, isTransientError, } from \"../service-error-classification/service-error-classification\";\nimport { INVOCATION_ID_HEADER, REQUEST_HEADER } from \"../util-retry/constants\";\nimport { parseRetryAfterHeader } from \"./parseRetryAfterHeader\";\nimport { asSdkError } from \"./util\";\nexport function bindRetryMiddleware(isStreamingPayload) {\n    return (options) => (next, context) => async (args) => {\n        let retryStrategy = await options.retryStrategy();\n        const maxAttempts = await options.maxAttempts();\n        if (isRetryStrategyV2(retryStrategy)) {\n            retryStrategy = retryStrategy;\n            let retryToken = await retryStrategy.acquireInitialRetryToken((context[\"partition_id\"] ?? \"\") + (context.__retryLongPoll ? \":longpoll\" : \"\"));\n            let lastError = new Error();\n            let attempts = 0;\n            let totalRetryDelay = 0;\n            const { request } = args;\n            const isRequest = HttpRequest.isInstance(request);\n            if (isRequest) {\n                request.headers[INVOCATION_ID_HEADER] = v4();\n            }\n            while (true) {\n                try {\n                    if (isRequest) {\n                        request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n                    }\n                    const { response, output } = await next(args);\n                    retryStrategy.recordSuccess(retryToken);\n                    output.$metadata.attempts = attempts + 1;\n                    output.$metadata.totalRetryDelay = totalRetryDelay;\n                    return { response, output };\n                }\n                catch (e) {\n                    const retryErrorInfo = getRetryErrorInfo(e, options.logger);\n                    lastError = asSdkError(e);\n                    if (isRequest && isStreamingPayload(request)) {\n                        (context.logger instanceof NoOpLogger ? console : context.logger)?.warn(\"An error was encountered in a non-retryable streaming request.\");\n                        throw lastError;\n                    }\n                    try {\n                        retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo);\n                    }\n                    catch (ignoredRefreshError) {\n                        if (!lastError.$metadata) {\n                            lastError.$metadata = {};\n                        }\n                        lastError.$metadata.attempts = attempts + 1;\n                        lastError.$metadata.totalRetryDelay = totalRetryDelay;\n                        throw lastError;\n                    }\n                    attempts = retryToken.getRetryCount();\n                    const delay = retryToken.getRetryDelay();\n                    totalRetryDelay += (retryToken?.$retryLog?.acquisitionDelay ?? 0) + delay;\n                    if (delay > 0) {\n                        await cooldown(delay);\n                    }\n                }\n            }\n        }\n        else {\n            retryStrategy = retryStrategy;\n            if (retryStrategy?.mode) {\n                context.userAgent = [...(context.userAgent || []), [\"cfg/retry-mode\", retryStrategy.mode]];\n            }\n            return retryStrategy.retry(next, args);\n        }\n    };\n}\nconst cooldown = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== \"undefined\" &&\n    typeof retryStrategy.refreshRetryTokenForRetry !== \"undefined\" &&\n    typeof retryStrategy.recordSuccess !== \"undefined\";\nconst getRetryErrorInfo = (error, logger) => {\n    const errorInfo = {\n        error,\n        errorType: getRetryErrorType(error),\n    };\n    const retryAfterHint = parseRetryAfterHeader(error.$response, logger);\n    if (retryAfterHint) {\n        errorInfo.retryAfterHint = retryAfterHint;\n    }\n    return errorInfo;\n};\nconst getRetryErrorType = (error) => {\n    if (isThrottlingError(error))\n        return \"THROTTLING\";\n    if (isTransientError(error))\n        return \"TRANSIENT\";\n    if (isServerError(error))\n        return \"SERVER_ERROR\";\n    return \"CLIENT_ERROR\";\n};\nexport const retryMiddlewareOptions = {\n    name: \"retryMiddleware\",\n    tags: [\"RETRY\"],\n    step: \"finalizeRequest\",\n    priority: \"high\",\n    override: true,\n};\nexport function bindGetRetryPlugin(isStreamingPayload) {\n    const retryMiddleware = bindRetryMiddleware(isStreamingPayload);\n    return (options) => ({\n        applyToStack: (clientStack) => {\n            clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n        },\n    });\n}\n","import { isStreamingPayload } from \"./middleware-retry/isStreamingPayload/isStreamingPayload\";\nimport { bindGetRetryPlugin, bindRetryMiddleware } from \"./middleware-retry/retryMiddleware\";\nexport { isRetryableByTrait, isClockSkewError, isClockSkewCorrectedError, isBrowserNetworkError, isThrottlingError, isTransientError, isServerError, isNodeJsHttp2TransientError, } from \"./service-error-classification/service-error-classification\";\nexport { AdaptiveRetryStrategy } from \"./util-retry/AdaptiveRetryStrategy\";\nexport { ConfiguredRetryStrategy } from \"./util-retry/ConfiguredRetryStrategy\";\nexport { DefaultRateLimiter } from \"./util-retry/DefaultRateLimiter\";\nexport { StandardRetryStrategy } from \"./util-retry/StandardRetryStrategy\";\nexport { RETRY_MODES, DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from \"./util-retry/config\";\nexport { DEFAULT_RETRY_DELAY_BASE, MAXIMUM_RETRY_DELAY, THROTTLING_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, RETRY_COST, TIMEOUT_RETRY_COST, NO_RETRY_INCREMENT, INVOCATION_ID_HEADER, REQUEST_HEADER, } from \"./util-retry/constants\";\nexport { Retry } from \"./util-retry/retries-2026-config\";\nexport { AdaptiveRetryStrategy as DeprecatedAdaptiveRetryStrategy, } from \"./middleware-retry/retry-pre-sra-deprecated/AdaptiveRetryStrategy\";\nexport { StandardRetryStrategy as DeprecatedStandardRetryStrategy, } from \"./middleware-retry/retry-pre-sra-deprecated/StandardRetryStrategy\";\nexport { defaultDelayDecider } from \"./middleware-retry/retry-pre-sra-deprecated/delayDecider\";\nexport { defaultRetryDecider } from \"./middleware-retry/retry-pre-sra-deprecated/retryDecider\";\nexport { ENV_MAX_ATTEMPTS, CONFIG_MAX_ATTEMPTS, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, ENV_RETRY_MODE, CONFIG_RETRY_MODE, NODE_RETRY_MODE_CONFIG_OPTIONS, resolveRetryConfig, } from \"./middleware-retry/configurations\";\nexport { omitRetryHeadersMiddleware, omitRetryHeadersMiddlewareOptions, getOmitRetryHeadersPlugin, } from \"./middleware-retry/omitRetryHeadersMiddleware\";\nexport { retryMiddlewareOptions } from \"./middleware-retry/retryMiddleware\";\nexport { getRetryAfterHint } from \"./middleware-retry/parseRetryAfterHeader\";\nexport const retryMiddleware = bindRetryMiddleware(isStreamingPayload);\nexport const getRetryPlugin = bindGetRetryPlugin(isStreamingPayload);\n","import { HttpRequest } from \"@smithy/core/protocols\";\nexport function resolveHostHeaderConfig(input) {\n    return input;\n}\nexport const hostHeaderMiddleware = (options) => (next) => async (args) => {\n    if (!HttpRequest.isInstance(args.request))\n        return next(args);\n    const { request } = args;\n    const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n    if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n        delete request.headers[\"host\"];\n        request.headers[\":authority\"] = request.hostname + (request.port ? \":\" + request.port : \"\");\n    }\n    else if (!request.headers[\"host\"]) {\n        let host = request.hostname;\n        if (request.port != null)\n            host += `:${request.port}`;\n        request.headers[\"host\"] = host;\n    }\n    return next(args);\n};\nexport const hostHeaderMiddlewareOptions = {\n    name: \"hostHeaderMiddleware\",\n    step: \"build\",\n    priority: \"low\",\n    tags: [\"HOST\"],\n    override: true,\n};\nexport const getHostHeaderPlugin = (options) => ({\n    applyToStack: (clientStack) => {\n        clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n    },\n});\n","export const loggerMiddleware = () => (next, context) => async (args) => {\n    try {\n        const response = await next(args);\n        const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n        const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n        const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n        const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;\n        const { $metadata, ...outputWithoutMetadata } = response.output;\n        logger?.info?.({\n            clientName,\n            commandName,\n            input: inputFilterSensitiveLog(args.input),\n            output: outputFilterSensitiveLog(outputWithoutMetadata),\n            metadata: $metadata,\n        });\n        return response;\n    }\n    catch (error) {\n        const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n        const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n        const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n        logger?.error?.({\n            clientName,\n            commandName,\n            input: inputFilterSensitiveLog(args.input),\n            error,\n            metadata: error.$metadata,\n        });\n        throw error;\n    }\n};\nexport const loggerMiddlewareOptions = {\n    name: \"loggerMiddleware\",\n    tags: [\"LOGGER\"],\n    step: \"initialize\",\n    override: true,\n};\nexport const getLoggerPlugin = (options) => ({\n    applyToStack: (clientStack) => {\n        clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n    },\n});\n","export const recursionDetectionMiddlewareOptions = {\n    step: \"build\",\n    tags: [\"RECURSION_DETECTION\", \"TRACE_CONTEXT_PROPAGATION\"],\n    name: \"recursionDetectionMiddleware\",\n    override: true,\n    priority: \"low\",\n};\n","const PROTECTED_KEYS = {\n    REQUEST_ID: Symbol.for(\"_AWS_LAMBDA_REQUEST_ID\"),\n    X_RAY_TRACE_ID: Symbol.for(\"_AWS_LAMBDA_X_RAY_TRACE_ID\"),\n    TENANT_ID: Symbol.for(\"_AWS_LAMBDA_TENANT_ID\"),\n    TRACEPARENT: Symbol.for(\"_AWS_LAMBDA_TRACEPARENT\"),\n    TRACESTATE: Symbol.for(\"_AWS_LAMBDA_TRACESTATE\"),\n    BAGGAGE: Symbol.for(\"_AWS_LAMBDA_BAGGAGE\"),\n};\nconst NO_GLOBAL_AWS_LAMBDA = [\"true\", \"1\"].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA ?? \"\");\nif (!NO_GLOBAL_AWS_LAMBDA) {\n    globalThis.awslambda = globalThis.awslambda || {};\n}\nclass InvokeStoreBase {\n    static PROTECTED_KEYS = PROTECTED_KEYS;\n    isProtectedKey(key) {\n        return Object.values(PROTECTED_KEYS).includes(key);\n    }\n    getRequestId() {\n        return this.get(PROTECTED_KEYS.REQUEST_ID) ?? \"-\";\n    }\n    getXRayTraceId() {\n        return this.get(PROTECTED_KEYS.X_RAY_TRACE_ID);\n    }\n    getTenantId() {\n        return this.get(PROTECTED_KEYS.TENANT_ID);\n    }\n    getTraceparent() {\n        return this.get(PROTECTED_KEYS.TRACEPARENT);\n    }\n    getTracestate() {\n        return this.get(PROTECTED_KEYS.TRACESTATE);\n    }\n    getBaggage() {\n        return this.get(PROTECTED_KEYS.BAGGAGE);\n    }\n}\nclass InvokeStoreSingle extends InvokeStoreBase {\n    currentContext;\n    getContext() {\n        return this.currentContext;\n    }\n    hasContext() {\n        return this.currentContext !== undefined;\n    }\n    get(key) {\n        return this.currentContext?.[key];\n    }\n    set(key, value) {\n        if (this.isProtectedKey(key)) {\n            throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`);\n        }\n        this.currentContext = this.currentContext || {};\n        this.currentContext[key] = value;\n    }\n    run(context, fn) {\n        this.currentContext = context;\n        return fn();\n    }\n}\nclass InvokeStoreMulti extends InvokeStoreBase {\n    als;\n    static async create() {\n        const instance = new InvokeStoreMulti();\n        const asyncHooks = await import('node:async_hooks');\n        instance.als = new asyncHooks.AsyncLocalStorage();\n        return instance;\n    }\n    getContext() {\n        return this.als.getStore();\n    }\n    hasContext() {\n        return this.als.getStore() !== undefined;\n    }\n    get(key) {\n        return this.als.getStore()?.[key];\n    }\n    set(key, value) {\n        if (this.isProtectedKey(key)) {\n            throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`);\n        }\n        const store = this.als.getStore();\n        if (!store) {\n            throw new Error(\"No context available\");\n        }\n        store[key] = value;\n    }\n    run(context, fn) {\n        return this.als.run(context, fn);\n    }\n}\nvar InvokeStore;\n(function (InvokeStore) {\n    let instance = null;\n    async function getInstanceAsync(forceInvokeStoreMulti) {\n        if (!instance) {\n            instance = (async () => {\n                const isMulti = forceInvokeStoreMulti === true || \"AWS_LAMBDA_MAX_CONCURRENCY\" in process.env;\n                const newInstance = isMulti\n                    ? await InvokeStoreMulti.create()\n                    : new InvokeStoreSingle();\n                if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda?.InvokeStore) {\n                    return globalThis.awslambda.InvokeStore;\n                }\n                else if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda) {\n                    globalThis.awslambda.InvokeStore = newInstance;\n                    return newInstance;\n                }\n                else {\n                    return newInstance;\n                }\n            })();\n        }\n        return instance;\n    }\n    InvokeStore.getInstanceAsync = getInstanceAsync;\n    InvokeStore._testing = process.env.AWS_LAMBDA_BENCHMARK_MODE === \"1\"\n        ? {\n            reset: () => {\n                instance = null;\n                if (globalThis.awslambda?.InvokeStore) {\n                    delete globalThis.awslambda.InvokeStore;\n                }\n                globalThis.awslambda = { InvokeStore: undefined };\n            },\n        }\n        : undefined;\n})(InvokeStore || (InvokeStore = {}));\n\nexport { InvokeStore, InvokeStoreBase };\n","import { InvokeStore } from \"@aws/lambda-invoke-store\";\nimport { HttpRequest } from \"@smithy/core/protocols\";\nconst AWS_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nconst _X_AMZN_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nconst X_AMZN_TRACE_ID = \"X-Amzn-Trace-Id\";\nconst TRACEPARENT = \"traceparent\";\nconst TRACESTATE = \"tracestate\";\nconst BAGGAGE = \"baggage\";\nexport const recursionDetectionMiddleware = () => (next) => async (args) => {\n    const { request } = args;\n    if (!HttpRequest.isInstance(request)) {\n        return next(args);\n    }\n    let invokeStore;\n    {\n        const traceIdHeader = Object.keys(request.headers ?? {}).find((h) => h.toLowerCase() === X_AMZN_TRACE_ID.toLowerCase()) ??\n            X_AMZN_TRACE_ID;\n        if (!request.headers.hasOwnProperty(traceIdHeader)) {\n            const functionName = process.env[AWS_LAMBDA_FUNCTION_NAME];\n            const traceIdFromEnv = process.env[_X_AMZN_TRACE_ID];\n            invokeStore ??= await InvokeStore.getInstanceAsync();\n            const traceIdFromInvokeStore = invokeStore?.getXRayTraceId();\n            const traceId = traceIdFromInvokeStore ?? traceIdFromEnv;\n            const nonEmptyString = (str) => typeof str === \"string\" && str.length > 0;\n            if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n                request.headers[X_AMZN_TRACE_ID] = traceId;\n            }\n        }\n    }\n    {\n        sanitizeTraceHeaders(request.headers);\n        const existingTraceparent = request.headers[TRACEPARENT];\n        if (!existingTraceparent) {\n            const traceparent = (invokeStore ??= await InvokeStore.getInstanceAsync())?.getTraceparent?.();\n            if (traceparent) {\n                request.headers[TRACEPARENT] = traceparent;\n                const tracestate = invokeStore?.getTracestate?.();\n                if (tracestate) {\n                    request.headers[TRACESTATE] = tracestate;\n                }\n                const baggage = invokeStore?.getBaggage?.();\n                if (baggage) {\n                    request.headers[BAGGAGE] = baggage;\n                }\n            }\n        }\n    }\n    return next(args);\n};\nfunction sanitizeTraceHeaders(headers) {\n    for (const header of Object.keys(headers)) {\n        const lower = header.toLowerCase();\n        if (header !== lower && (lower === TRACEPARENT || lower === TRACESTATE || lower === BAGGAGE)) {\n            headers[lower] = headers[header];\n            delete headers[header];\n        }\n    }\n}\n","import { recursionDetectionMiddlewareOptions } from \"./configuration\";\nimport { recursionDetectionMiddleware } from \"./recursionDetectionMiddleware\";\nexport const getRecursionDetectionPlugin = (options) => ({\n    applyToStack: (clientStack) => {\n        clientStack.add(recursionDetectionMiddleware(), recursionDetectionMiddlewareOptions);\n    },\n});\n","export const resolveAuthOptions = (candidateAuthOptions, authSchemePreference) => {\n    if (!authSchemePreference || authSchemePreference.length === 0) {\n        return candidateAuthOptions;\n    }\n    const preferredAuthOptions = [];\n    for (const preferredSchemeName of authSchemePreference) {\n        for (const candidateAuthOption of candidateAuthOptions) {\n            const candidateAuthSchemeName = candidateAuthOption.schemeId.split(\"#\")[1];\n            if (candidateAuthSchemeName === preferredSchemeName) {\n                preferredAuthOptions.push(candidateAuthOption);\n            }\n        }\n    }\n    for (const candidateAuthOption of candidateAuthOptions) {\n        if (!preferredAuthOptions.find(({ schemeId }) => schemeId === candidateAuthOption.schemeId)) {\n            preferredAuthOptions.push(candidateAuthOption);\n        }\n    }\n    return preferredAuthOptions;\n};\n","import { getSmithyContext } from \"@smithy/core/transport\";\nimport { resolveAuthOptions } from \"./resolveAuthOptions\";\nfunction convertHttpAuthSchemesToMap(httpAuthSchemes) {\n    const map = new Map();\n    for (const scheme of httpAuthSchemes) {\n        map.set(scheme.schemeId, scheme);\n    }\n    return map;\n}\nexport const httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => {\n    const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input));\n    const authSchemePreference = config.authSchemePreference ? await config.authSchemePreference() : [];\n    const resolvedOptions = resolveAuthOptions(options, authSchemePreference);\n    const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes);\n    const smithyContext = getSmithyContext(context);\n    const failureReasons = [];\n    for (const option of resolvedOptions) {\n        const scheme = authSchemes.get(option.schemeId);\n        if (!scheme) {\n            failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` was not enabled for this service.`);\n            continue;\n        }\n        const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));\n        if (!identityProvider) {\n            failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` did not have an IdentityProvider configured.`);\n            continue;\n        }\n        const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {};\n        option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties);\n        option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties);\n        smithyContext.selectedHttpAuthScheme = {\n            httpAuthOption: option,\n            identity: await identityProvider(option.identityProperties),\n            signer: scheme.signer,\n        };\n        break;\n    }\n    if (!smithyContext.selectedHttpAuthScheme) {\n        throw new Error(failureReasons.join(\"\\n\"));\n    }\n    return next(args);\n};\n","import { httpAuthSchemeMiddleware } from \"./httpAuthSchemeMiddleware\";\nexport const httpAuthSchemeEndpointRuleSetMiddlewareOptions = {\n    step: \"serialize\",\n    tags: [\"HTTP_AUTH_SCHEME\"],\n    name: \"httpAuthSchemeMiddleware\",\n    override: true,\n    relation: \"before\",\n    toMiddleware: \"endpointV2Middleware\",\n};\nexport const getHttpAuthSchemeEndpointRuleSetPlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({\n    applyToStack: (clientStack) => {\n        clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, {\n            httpAuthSchemeParametersProvider,\n            identityProviderConfigProvider,\n        }), httpAuthSchemeEndpointRuleSetMiddlewareOptions);\n    },\n});\n","import { HttpRequest } from \"@smithy/core/protocols\";\nimport { getSmithyContext } from \"@smithy/core/transport\";\nconst defaultErrorHandler = (signingProperties) => (error) => {\n    throw error;\n};\nconst defaultSuccessHandler = (httpResponse, signingProperties) => { };\nexport const httpSigningMiddleware = (config) => (next, context) => async (args) => {\n    if (!HttpRequest.isInstance(args.request)) {\n        return next(args);\n    }\n    const smithyContext = getSmithyContext(context);\n    const scheme = smithyContext.selectedHttpAuthScheme;\n    if (!scheme) {\n        throw new Error(`No HttpAuthScheme was selected: unable to sign request`);\n    }\n    const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme;\n    const output = await next({\n        ...args,\n        request: await signer.sign(args.request, identity, signingProperties),\n    }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties));\n    (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties);\n    return output;\n};\n","import { httpSigningMiddleware } from \"./httpSigningMiddleware\";\nexport const httpSigningMiddlewareOptions = {\n    step: \"finalizeRequest\",\n    tags: [\"HTTP_SIGNING\"],\n    name: \"httpSigningMiddleware\",\n    aliases: [\"apiKeyMiddleware\", \"tokenMiddleware\", \"awsAuthMiddleware\"],\n    override: true,\n    relation: \"after\",\n    toMiddleware: \"retryMiddleware\",\n};\nexport const getHttpSigningPlugin = (config) => ({\n    applyToStack: (clientStack) => {\n        clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions);\n    },\n});\n","export class DefaultIdentityProviderConfig {\n    authSchemes = new Map();\n    constructor(config) {\n        for (const key in config) {\n            const value = config[key];\n            if (value !== undefined) {\n                this.authSchemes.set(key, value);\n            }\n        }\n    }\n    getIdentityProvider(schemeId) {\n        return this.authSchemes.get(schemeId);\n    }\n}\n","export class NoAuthSigner {\n    async sign(httpRequest, identity, signingProperties) {\n        return httpRequest;\n    }\n}\n","export const createIsIdentityExpiredFunction = (expirationMs) => function isIdentityExpired(identity) {\n    return doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs;\n};\nexport const EXPIRATION_MS = 300_000;\nexport const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS);\nexport const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined;\nexport const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => {\n    if (provider === undefined) {\n        return undefined;\n    }\n    const normalizedProvider = typeof provider !== \"function\" ? async () => Promise.resolve(provider) : provider;\n    let resolved;\n    let pending;\n    let hasResult;\n    let isConstant = false;\n    const coalesceProvider = async (options) => {\n        if (!pending) {\n            pending = normalizedProvider(options);\n        }\n        try {\n            resolved = await pending;\n            hasResult = true;\n            isConstant = false;\n        }\n        finally {\n            pending = undefined;\n        }\n        return resolved;\n    };\n    if (isExpired === undefined) {\n        return async (options) => {\n            if (!hasResult || options?.forceRefresh) {\n                resolved = await coalesceProvider(options);\n            }\n            return resolved;\n        };\n    }\n    return async (options) => {\n        if (!hasResult || options?.forceRefresh) {\n            resolved = await coalesceProvider(options);\n        }\n        if (isConstant) {\n            return resolved;\n        }\n        if (!requiresRefresh(resolved)) {\n            isConstant = true;\n            return resolved;\n        }\n        if (isExpired(resolved)) {\n            await coalesceProvider(options);\n            return resolved;\n        }\n        return resolved;\n    };\n};\n","export const normalizeProvider = (input) => {\n    if (typeof input === \"function\")\n        return input;\n    const promisified = Promise.resolve(input);\n    return () => promisified;\n};\n","import { normalizeProvider } from \"@smithy/core\";\nexport const DEFAULT_UA_APP_ID = undefined;\nfunction isValidUserAgentAppId(appId) {\n    if (appId === undefined) {\n        return true;\n    }\n    return typeof appId === \"string\" && appId.length <= 50;\n}\nexport function resolveUserAgentConfig(input) {\n    const normalizedAppIdProvider = normalizeProvider(input.userAgentAppId ?? DEFAULT_UA_APP_ID);\n    const { customUserAgent } = input;\n    return Object.assign(input, {\n        customUserAgent: typeof customUserAgent === \"string\" ? [[customUserAgent]] : customUserAgent,\n        userAgentAppId: async () => {\n            const appId = await normalizedAppIdProvider();\n            if (!isValidUserAgentAppId(appId)) {\n                const logger = input.logger?.constructor?.name === \"NoOpLogger\" || !input.logger ? console : input.logger;\n                if (typeof appId !== \"string\") {\n                    logger?.warn(\"userAgentAppId must be a string or undefined.\");\n                }\n                else if (appId.length > 50) {\n                    logger?.warn(\"The provided userAgentAppId exceeds the maximum length of 50 characters.\");\n                }\n            }\n            return appId;\n        },\n    });\n}\n","export const partitionsInfo = {\n    \"partitions\": [\n        {\n            \"id\": \"aws\",\n            \"outputs\": {\n                \"dnsSuffix\": \"amazonaws.com\",\n                \"dualStackDnsSuffix\": \"api.aws\",\n                \"implicitGlobalRegion\": \"us-east-1\",\n                \"name\": \"aws\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^(us|eu|ap|sa|ca|me|af|il|mx)\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"af-south-1\": {\n                    \"description\": \"Africa (Cape Town)\"\n                },\n                \"ap-east-1\": {\n                    \"description\": \"Asia Pacific (Hong Kong)\"\n                },\n                \"ap-east-2\": {\n                    \"description\": \"Asia Pacific (Taipei)\"\n                },\n                \"ap-northeast-1\": {\n                    \"description\": \"Asia Pacific (Tokyo)\"\n                },\n                \"ap-northeast-2\": {\n                    \"description\": \"Asia Pacific (Seoul)\"\n                },\n                \"ap-northeast-3\": {\n                    \"description\": \"Asia Pacific (Osaka)\"\n                },\n                \"ap-south-1\": {\n                    \"description\": \"Asia Pacific (Mumbai)\"\n                },\n                \"ap-south-2\": {\n                    \"description\": \"Asia Pacific (Hyderabad)\"\n                },\n                \"ap-southeast-1\": {\n                    \"description\": \"Asia Pacific (Singapore)\"\n                },\n                \"ap-southeast-2\": {\n                    \"description\": \"Asia Pacific (Sydney)\"\n                },\n                \"ap-southeast-3\": {\n                    \"description\": \"Asia Pacific (Jakarta)\"\n                },\n                \"ap-southeast-4\": {\n                    \"description\": \"Asia Pacific (Melbourne)\"\n                },\n                \"ap-southeast-5\": {\n                    \"description\": \"Asia Pacific (Malaysia)\"\n                },\n                \"ap-southeast-6\": {\n                    \"description\": \"Asia Pacific (New Zealand)\"\n                },\n                \"ap-southeast-7\": {\n                    \"description\": \"Asia Pacific (Thailand)\"\n                },\n                \"aws-global\": {\n                    \"description\": \"aws global region\"\n                },\n                \"ca-central-1\": {\n                    \"description\": \"Canada (Central)\"\n                },\n                \"ca-west-1\": {\n                    \"description\": \"Canada West (Calgary)\"\n                },\n                \"eu-central-1\": {\n                    \"description\": \"Europe (Frankfurt)\"\n                },\n                \"eu-central-2\": {\n                    \"description\": \"Europe (Zurich)\"\n                },\n                \"eu-north-1\": {\n                    \"description\": \"Europe (Stockholm)\"\n                },\n                \"eu-south-1\": {\n                    \"description\": \"Europe (Milan)\"\n                },\n                \"eu-south-2\": {\n                    \"description\": \"Europe (Spain)\"\n                },\n                \"eu-west-1\": {\n                    \"description\": \"Europe (Ireland)\"\n                },\n                \"eu-west-2\": {\n                    \"description\": \"Europe (London)\"\n                },\n                \"eu-west-3\": {\n                    \"description\": \"Europe (Paris)\"\n                },\n                \"il-central-1\": {\n                    \"description\": \"Israel (Tel Aviv)\"\n                },\n                \"me-central-1\": {\n                    \"description\": \"Middle East (UAE)\"\n                },\n                \"me-south-1\": {\n                    \"description\": \"Middle East (Bahrain)\"\n                },\n                \"mx-central-1\": {\n                    \"description\": \"Mexico (Central)\"\n                },\n                \"sa-east-1\": {\n                    \"description\": \"South America (Sao Paulo)\"\n                },\n                \"us-east-1\": {\n                    \"description\": \"US East (N. Virginia)\"\n                },\n                \"us-east-2\": {\n                    \"description\": \"US East (Ohio)\"\n                },\n                \"us-west-1\": {\n                    \"description\": \"US West (N. California)\"\n                },\n                \"us-west-2\": {\n                    \"description\": \"US West (Oregon)\"\n                }\n            }\n        },\n        {\n            \"id\": \"aws-cn\",\n            \"outputs\": {\n                \"dnsSuffix\": \"amazonaws.com.cn\",\n                \"dualStackDnsSuffix\": \"api.amazonwebservices.com.cn\",\n                \"implicitGlobalRegion\": \"cn-northwest-1\",\n                \"name\": \"aws-cn\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^cn\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"aws-cn-global\": {\n                    \"description\": \"aws-cn global region\"\n                },\n                \"cn-north-1\": {\n                    \"description\": \"China (Beijing)\"\n                },\n                \"cn-northwest-1\": {\n                    \"description\": \"China (Ningxia)\"\n                }\n            }\n        },\n        {\n            \"id\": \"aws-eusc\",\n            \"outputs\": {\n                \"dnsSuffix\": \"amazonaws.eu\",\n                \"dualStackDnsSuffix\": \"api.amazonwebservices.eu\",\n                \"implicitGlobalRegion\": \"eusc-de-east-1\",\n                \"name\": \"aws-eusc\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^eusc\\\\-(de)\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"eusc-de-east-1\": {\n                    \"description\": \"AWS European Sovereign Cloud (Germany)\"\n                }\n            }\n        },\n        {\n            \"id\": \"aws-iso\",\n            \"outputs\": {\n                \"dnsSuffix\": \"c2s.ic.gov\",\n                \"dualStackDnsSuffix\": \"api.aws.ic.gov\",\n                \"implicitGlobalRegion\": \"us-iso-east-1\",\n                \"name\": \"aws-iso\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"aws-iso-global\": {\n                    \"description\": \"aws-iso global region\"\n                },\n                \"us-iso-east-1\": {\n                    \"description\": \"US ISO East\"\n                },\n                \"us-iso-west-1\": {\n                    \"description\": \"US ISO WEST\"\n                }\n            }\n        },\n        {\n            \"id\": \"aws-iso-b\",\n            \"outputs\": {\n                \"dnsSuffix\": \"sc2s.sgov.gov\",\n                \"dualStackDnsSuffix\": \"api.aws.scloud\",\n                \"implicitGlobalRegion\": \"us-isob-east-1\",\n                \"name\": \"aws-iso-b\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"aws-iso-b-global\": {\n                    \"description\": \"aws-iso-b global region\"\n                },\n                \"us-isob-east-1\": {\n                    \"description\": \"US ISOB East (Ohio)\"\n                },\n                \"us-isob-west-1\": {\n                    \"description\": \"US ISOB West\"\n                }\n            }\n        },\n        {\n            \"id\": \"aws-iso-e\",\n            \"outputs\": {\n                \"dnsSuffix\": \"cloud.adc-e.uk\",\n                \"dualStackDnsSuffix\": \"api.cloud-aws.adc-e.uk\",\n                \"implicitGlobalRegion\": \"eu-isoe-west-1\",\n                \"name\": \"aws-iso-e\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"aws-iso-e-global\": {\n                    \"description\": \"aws-iso-e global region\"\n                },\n                \"eu-isoe-west-1\": {\n                    \"description\": \"EU ISOE West\"\n                }\n            }\n        },\n        {\n            \"id\": \"aws-iso-f\",\n            \"outputs\": {\n                \"dnsSuffix\": \"csp.hci.ic.gov\",\n                \"dualStackDnsSuffix\": \"api.aws.hci.ic.gov\",\n                \"implicitGlobalRegion\": \"us-isof-south-1\",\n                \"name\": \"aws-iso-f\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"aws-iso-f-global\": {\n                    \"description\": \"aws-iso-f global region\"\n                },\n                \"us-isof-east-1\": {\n                    \"description\": \"US ISOF EAST\"\n                },\n                \"us-isof-south-1\": {\n                    \"description\": \"US ISOF SOUTH\"\n                }\n            }\n        },\n        {\n            \"id\": \"aws-us-gov\",\n            \"outputs\": {\n                \"dnsSuffix\": \"amazonaws.com\",\n                \"dualStackDnsSuffix\": \"api.aws\",\n                \"implicitGlobalRegion\": \"us-gov-west-1\",\n                \"name\": \"aws-us-gov\",\n                \"supportsDualStack\": true,\n                \"supportsFIPS\": true\n            },\n            \"regionRegex\": \"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$\",\n            \"regions\": {\n                \"aws-us-gov-global\": {\n                    \"description\": \"aws-us-gov global region\"\n                },\n                \"us-gov-east-1\": {\n                    \"description\": \"AWS GovCloud (US-East)\"\n                },\n                \"us-gov-west-1\": {\n                    \"description\": \"AWS GovCloud (US-West)\"\n                }\n            }\n        }\n    ],\n    \"version\": \"1.1\"\n};\n","import { partitionsInfo } from \"./partitions\";\nlet selectedPartitionsInfo = partitionsInfo;\nlet selectedUserAgentPrefix = \"\";\nexport const partition = (value) => {\n    const { partitions } = selectedPartitionsInfo;\n    for (const partition of partitions) {\n        const { regions, outputs } = partition;\n        for (const [region, regionData] of Object.entries(regions)) {\n            if (region === value) {\n                return {\n                    ...outputs,\n                    ...regionData,\n                };\n            }\n        }\n    }\n    for (const partition of partitions) {\n        const { regionRegex, outputs } = partition;\n        if (new RegExp(regionRegex).test(value)) {\n            return {\n                ...outputs,\n            };\n        }\n    }\n    const DEFAULT_PARTITION = partitions.find((partition) => partition.id === \"aws\");\n    if (!DEFAULT_PARTITION) {\n        throw new Error(\"Provided region was not found in the partition array or regex,\" +\n            \" and default partition with id 'aws' doesn't exist.\");\n    }\n    return {\n        ...DEFAULT_PARTITION.outputs,\n    };\n};\nexport const setPartitionInfo = (partitionsInfo, userAgentPrefix = \"\") => {\n    selectedPartitionsInfo = partitionsInfo;\n    selectedUserAgentPrefix = userAgentPrefix;\n};\nexport const useDefaultPartitionInfo = () => {\n    setPartitionInfo(partitionsInfo, \"\");\n};\nexport const getUserAgentPrefix = () => selectedUserAgentPrefix;\n","import { Retry } from \"@smithy/core/retry\";\nRetry.v2026 ||= typeof process === \"object\" && process.env?.AWS_NEW_RETRIES_2026 === \"true\";\nexport function setFeature(context, feature, value) {\n    if (!context.__aws_sdk_context) {\n        context.__aws_sdk_context = {\n            features: {},\n        };\n    }\n    else if (!context.__aws_sdk_context.features) {\n        context.__aws_sdk_context.features = {};\n    }\n    context.__aws_sdk_context.features[feature] = value;\n}\n","import { RETRY_MODES } from \"@smithy/core/retry\";\nimport { setFeature } from \"../setFeature\";\nconst ACCOUNT_ID_ENDPOINT_REGEX = /\\d{12}\\.ddb/;\nexport async function checkFeatures(context, config, args) {\n    const request = args.request;\n    if (request?.headers?.[\"smithy-protocol\"] === \"rpc-v2-cbor\") {\n        setFeature(context, \"PROTOCOL_RPC_V2_CBOR\", \"M\");\n    }\n    if (typeof config.retryStrategy === \"function\") {\n        const retryStrategy = await config.retryStrategy();\n        if (typeof retryStrategy.mode === \"string\") {\n            switch (retryStrategy.mode) {\n                case RETRY_MODES.ADAPTIVE:\n                    setFeature(context, \"RETRY_MODE_ADAPTIVE\", \"F\");\n                    break;\n                case RETRY_MODES.STANDARD:\n                    setFeature(context, \"RETRY_MODE_STANDARD\", \"E\");\n                    break;\n            }\n        }\n    }\n    if (typeof config.accountIdEndpointMode === \"function\") {\n        const endpointV2 = context.endpointV2;\n        if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) {\n            setFeature(context, \"ACCOUNT_ID_ENDPOINT\", \"O\");\n        }\n        switch (await config.accountIdEndpointMode?.()) {\n            case \"disabled\":\n                setFeature(context, \"ACCOUNT_ID_MODE_DISABLED\", \"Q\");\n                break;\n            case \"preferred\":\n                setFeature(context, \"ACCOUNT_ID_MODE_PREFERRED\", \"P\");\n                break;\n            case \"required\":\n                setFeature(context, \"ACCOUNT_ID_MODE_REQUIRED\", \"R\");\n                break;\n        }\n    }\n    const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity;\n    if (identity?.$source) {\n        const credentials = identity;\n        if (credentials.accountId) {\n            setFeature(context, \"RESOLVED_ACCOUNT_ID\", \"T\");\n        }\n        for (const [key, value] of Object.entries(credentials.$source ?? {})) {\n            setFeature(context, key, value);\n        }\n    }\n}\n","export const USER_AGENT = \"user-agent\";\nexport const X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nexport const SPACE = \" \";\nexport const UA_NAME_SEPARATOR = \"/\";\nexport const UA_NAME_ESCAPE_REGEX = /[^!$%&'*+\\-.^_`|~\\w]/g;\nexport const UA_VALUE_ESCAPE_REGEX = /[^!$%&'*+\\-.^_`|~\\w#]/g;\nexport const UA_ESCAPE_CHAR = \"-\";\n","const BYTE_LIMIT = 1024;\nexport function encodeFeatures(features) {\n    let buffer = \"\";\n    for (const key in features) {\n        const val = features[key];\n        if (buffer.length + val.length + 1 <= BYTE_LIMIT) {\n            if (buffer.length) {\n                buffer += \",\" + val;\n            }\n            else {\n                buffer += val;\n            }\n            continue;\n        }\n        break;\n    }\n    return buffer;\n}\n","import { HttpRequest } from \"@smithy/core/protocols\";\nimport { getUserAgentPrefix } from \"../util-endpoints/lib/aws/partition\";\nimport { checkFeatures } from \"./check-features\";\nimport { SPACE, UA_ESCAPE_CHAR, UA_NAME_ESCAPE_REGEX, UA_NAME_SEPARATOR, UA_VALUE_ESCAPE_REGEX, USER_AGENT, X_AMZ_USER_AGENT, } from \"./constants\";\nimport { encodeFeatures } from \"./encode-features\";\nexport const userAgentMiddleware = (options) => (next, context) => async (args) => {\n    const { request } = args;\n    if (!HttpRequest.isInstance(request)) {\n        return next(args);\n    }\n    const { headers } = request;\n    const userAgent = context?.userAgent?.map(escapeUserAgent) || [];\n    const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n    await checkFeatures(context, options, args);\n    const awsContext = context;\n    defaultUserAgent.push(`m/${encodeFeatures(Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features))}`);\n    const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || [];\n    const appId = await options.userAgentAppId();\n    if (appId) {\n        defaultUserAgent.push(escapeUserAgent([`app`, `${appId}`]));\n    }\n    const prefix = getUserAgentPrefix();\n    const sdkUserAgentValue = (prefix ? [prefix] : [])\n        .concat([...defaultUserAgent, ...userAgent, ...customUserAgent])\n        .join(SPACE);\n    const normalUAValue = [\n        ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n        ...customUserAgent,\n    ].join(SPACE);\n    if (options.runtime !== \"browser\") {\n        if (normalUAValue) {\n            headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT]\n                ? `${headers[USER_AGENT]} ${normalUAValue}`\n                : normalUAValue;\n        }\n        headers[USER_AGENT] = sdkUserAgentValue;\n    }\n    else {\n        headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;\n    }\n    return next({\n        ...args,\n        request,\n    });\n};\nconst escapeUserAgent = (userAgentPair) => {\n    const name = userAgentPair[0]\n        .split(UA_NAME_SEPARATOR)\n        .map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR))\n        .join(UA_NAME_SEPARATOR);\n    const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);\n    const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);\n    const prefix = name.substring(0, prefixSeparatorIndex);\n    let uaName = name.substring(prefixSeparatorIndex + 1);\n    if (prefix === \"api\") {\n        uaName = uaName.toLowerCase();\n    }\n    return [prefix, uaName, version]\n        .filter((item) => item && item.length > 0)\n        .reduce((acc, item, index) => {\n        switch (index) {\n            case 0:\n                return item;\n            case 1:\n                return `${acc}/${item}`;\n            default:\n                return `${acc}#${item}`;\n        }\n    }, \"\");\n};\nexport const getUserAgentMiddlewareOptions = {\n    name: \"getUserAgentMiddleware\",\n    step: \"build\",\n    priority: \"low\",\n    tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n    override: true,\n};\nexport const getUserAgentPlugin = (config) => ({\n    applyToStack: (clientStack) => {\n        clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n    },\n});\n","export const state = {\n    warningEmitted: false,\n};\nexport const emitWarningIfUnsupportedVersion = (version) => {\n    if (version && !state.warningEmitted) {\n        if (process.env.AWS_SDK_JS_NODE_VERSION_SUPPORT_WARNING_DISABLED === \"true\") {\n            state.warningEmitted = true;\n            return;\n        }\n        const userMajorVersion = parseInt(version.substring(1, version.indexOf(\".\")));\n        const vv = 22;\n        if (userMajorVersion < vv) {\n            state.warningEmitted = true;\n            process.emitWarning(`NodeVersionSupportWarning: The AWS SDK for JavaScript (v3)\nversions published after the first week of January 2027\nwill require node >=${vv}. You are running node ${version}.\n\nTo continue receiving updates to AWS services, bug fixes,\nand security updates please upgrade to node >=${vv}.\n\nMore information can be found at: https://a.co/c895JFp`);\n        }\n    }\n};\n","import { platform, release } from \"node:os\";\nimport { env } from \"node:process\";\nimport { getRuntimeUserAgentPair } from \"./getRuntimeUserAgentPair\";\nimport { isCrtAvailable } from \"./is-crt-available\";\nexport { crtAvailability } from \"./crt-availability\";\nexport const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => {\n    const runtimeUserAgentPair = getRuntimeUserAgentPair();\n    return async (config) => {\n        const sections = [\n            [\"aws-sdk-js\", clientVersion],\n            [\"ua\", \"2.1\"],\n            [`os/${platform()}`, release()],\n            [\"lang/js\"],\n            runtimeUserAgentPair,\n        ];\n        const crtAvailable = isCrtAvailable();\n        if (crtAvailable) {\n            sections.push(crtAvailable);\n        }\n        if (serviceId) {\n            sections.push([`api/${serviceId}`, clientVersion]);\n        }\n        if (env.AWS_EXECUTION_ENV) {\n            sections.push([`exec-env/${env.AWS_EXECUTION_ENV}`]);\n        }\n        const appId = await config?.userAgentAppId?.();\n        const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections];\n        return resolvedUserAgent;\n    };\n};\nexport const defaultUserAgent = createDefaultUserAgentProvider;\n","import { versions } from \"node:process\";\nexport const getRuntimeUserAgentPair = () => {\n    const runtimesToCheck = [\"deno\", \"bun\", \"llrt\"];\n    for (const runtime of runtimesToCheck) {\n        if (versions[runtime]) {\n            return [`md/${runtime}`, versions[runtime]];\n        }\n    }\n    return [\"md/nodejs\", versions.node];\n};\n","export const crtAvailability = {\n    isCrtAvailable: false,\n};\n","import { crtAvailability } from \"./crt-availability\";\nexport const isCrtAvailable = () => {\n    if (crtAvailability.isCrtAvailable) {\n        return [\"md/crt-avail\"];\n    }\n    return null;\n};\n","import { DEFAULT_UA_APP_ID } from \"../middleware-user-agent/configurations\";\nexport const UA_APP_ID_ENV_NAME = \"AWS_SDK_UA_APP_ID\";\nexport const UA_APP_ID_INI_NAME = \"sdk_ua_app_id\";\nconst UA_APP_ID_INI_NAME_DEPRECATED = \"sdk-ua-app-id\";\nexport const NODE_APP_ID_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => env[UA_APP_ID_ENV_NAME],\n    configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME] ?? profile[UA_APP_ID_INI_NAME_DEPRECATED],\n    default: DEFAULT_UA_APP_ID,\n};\n","import { isValidHostLabel } from \"@smithy/core/endpoints\";\nimport { isIpAddress } from \"../isIpAddress\";\nexport const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => {\n    if (allowSubDomains) {\n        for (const label of value.split(\".\")) {\n            if (!isVirtualHostableS3Bucket(label)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    if (!isValidHostLabel(value)) {\n        return false;\n    }\n    if (value.length < 3 || value.length > 63) {\n        return false;\n    }\n    if (value !== value.toLowerCase()) {\n        return false;\n    }\n    if (isIpAddress(value)) {\n        return false;\n    }\n    return true;\n};\n","const ARN_DELIMITER = \":\";\nconst RESOURCE_DELIMITER = \"/\";\nexport const parseArn = (value) => {\n    const segments = value.split(ARN_DELIMITER);\n    if (segments.length < 6)\n        return null;\n    const [arn, partition, service, region, accountId, ...resourcePath] = segments;\n    if (arn !== \"arn\" || partition === \"\" || service === \"\" || resourcePath.join(ARN_DELIMITER) === \"\")\n        return null;\n    const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat();\n    return {\n        partition,\n        service,\n        region,\n        accountId,\n        resourceId,\n    };\n};\n","import { customEndpointFunctions } from \"@smithy/core/endpoints\";\nimport { isVirtualHostableS3Bucket } from \"./lib/aws/isVirtualHostableS3Bucket\";\nimport { parseArn } from \"./lib/aws/parseArn\";\nimport { partition } from \"./lib/aws/partition\";\nexport const awsEndpointFunctions = {\n    isVirtualHostableS3Bucket: isVirtualHostableS3Bucket,\n    parseArn: parseArn,\n    partition: partition,\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n","import { loadConfig, NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, } from \"@smithy/core/config\";\nexport function stsRegionDefaultResolver(loaderConfig = {}) {\n    return loadConfig({\n        ...NODE_REGION_CONFIG_OPTIONS,\n        async default() {\n            if (!warning.silence) {\n                console.warn(\"@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly.\");\n            }\n            return \"us-east-1\";\n        },\n    }, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig });\n}\nexport const warning = {\n    silence: false,\n};\n","export const getAwsRegionExtensionConfiguration = (runtimeConfig) => {\n    return {\n        setRegion(region) {\n            runtimeConfig.region = region;\n        },\n        region() {\n            return runtimeConfig.region;\n        },\n    };\n};\nexport const resolveAwsRegionExtensionConfiguration = (awsRegionExtensionConfiguration) => {\n    return {\n        region: awsRegionExtensionConfiguration.region(),\n    };\n};\n","import { HttpResponse } from \"@smithy/core/protocols\";\nexport const getDateHeader = (response) => HttpResponse.isInstance(response) ? (response.headers?.date ?? response.headers?.Date) : undefined;\nexport const getAgeHeader = (response) => HttpResponse.isInstance(response) ? (response.headers?.age ?? response.headers?.Age) : undefined;\n","export const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset);\n","export const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset, timeRequestSent, ageHeader) => {\n    if (ageHeader !== undefined) {\n        return currentSystemClockOffset;\n    }\n    const serverTime = Date.parse(clockTime);\n    const timeResponseReceived = Date.now();\n    if (timeRequestSent !== undefined && timeResponseReceived - timeRequestSent > 900_000) {\n        return currentSystemClockOffset;\n    }\n    const candidateSkew = timeRequestSent !== undefined\n        ? serverTime - (timeRequestSent + timeResponseReceived) / 2\n        : serverTime - timeResponseReceived;\n    return candidateSkew;\n};\n","import { HttpRequest } from \"@smithy/core/protocols\";\nimport { getAgeHeader, getDateHeader, getSkewCorrectedDate, getUpdatedSystemClockOffset } from \"../utils\";\nconst throwSigningPropertyError = (name, property) => {\n    if (!property) {\n        throw new Error(`Property \\`${name}\\` is not resolved for AWS SDK SigV4Auth`);\n    }\n    return property;\n};\nexport const validateSigningProperties = async (signingProperties) => {\n    const context = throwSigningPropertyError(\"context\", signingProperties.context);\n    const config = throwSigningPropertyError(\"config\", signingProperties.config);\n    const authScheme = context.endpointV2?.properties?.authSchemes?.[0];\n    const signerFunction = throwSigningPropertyError(\"signer\", config.signer);\n    const signer = await signerFunction(authScheme);\n    const signingRegion = signingProperties?.signingRegion;\n    const signingRegionSet = signingProperties?.signingRegionSet;\n    const signingName = signingProperties?.signingName;\n    return {\n        config,\n        signer,\n        signingRegion,\n        signingRegionSet,\n        signingName,\n    };\n};\nexport class AwsSdkSigV4Signer {\n    async sign(httpRequest, identity, signingProperties) {\n        if (!HttpRequest.isInstance(httpRequest)) {\n            throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n        }\n        const validatedProps = await validateSigningProperties(signingProperties);\n        const { config, signer } = validatedProps;\n        let { signingRegion, signingName } = validatedProps;\n        const handlerExecutionContext = signingProperties.context;\n        if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) {\n            const [first, second] = handlerExecutionContext.authSchemes;\n            if (first?.name === \"sigv4a\" && second?.name === \"sigv4\") {\n                signingRegion = second?.signingRegion ?? signingRegion;\n                signingName = second?.signingName ?? signingName;\n            }\n        }\n        const noSkewCorrection = (await config.disableClockSkewCorrection?.()) === true;\n        signingProperties._disableClockSkewCorrection = noSkewCorrection;\n        if (!noSkewCorrection) {\n            signingProperties._preRequestSystemClockOffset = config.systemClockOffset;\n            signingProperties._requestSentAt = Date.now();\n        }\n        const signedRequest = await signer.sign(httpRequest, {\n            signingDate: noSkewCorrection ? new Date() : getSkewCorrectedDate(config.systemClockOffset),\n            signingRegion: signingRegion,\n            signingService: signingName,\n        });\n        return signedRequest;\n    }\n    errorHandler(signingProperties) {\n        return (error) => {\n            const errorException = error;\n            if (!signingProperties._disableClockSkewCorrection) {\n                const serverTime = errorException.ServerTime ?? getDateHeader(errorException.$response);\n                if (serverTime) {\n                    const config = throwSigningPropertyError(\"config\", signingProperties.config);\n                    const preRequestOffset = signingProperties._preRequestSystemClockOffset;\n                    const timeRequestSent = signingProperties._requestSentAt;\n                    const ageHeader = getAgeHeader(errorException.$response);\n                    const newOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset, timeRequestSent, ageHeader);\n                    config.systemClockOffset = newOffset;\n                    const skewExceedsThreshold = Math.abs(newOffset) >= 240_000;\n                    const isLocalCorrection = newOffset !== preRequestOffset;\n                    const isConcurrentCorrection = preRequestOffset !== undefined && preRequestOffset !== newOffset;\n                    if (skewExceedsThreshold && (isLocalCorrection || isConcurrentCorrection) && errorException.$metadata) {\n                        errorException.$metadata.clockSkewCorrected = true;\n                    }\n                }\n            }\n            throw error;\n        };\n    }\n    successHandler(httpResponse, signingProperties) {\n        if (signingProperties._disableClockSkewCorrection) {\n            return;\n        }\n        const dateHeader = getDateHeader(httpResponse);\n        if (dateHeader) {\n            const config = throwSigningPropertyError(\"config\", signingProperties.config);\n            const timeRequestSent = signingProperties._requestSentAt;\n            const ageHeader = getAgeHeader(httpResponse);\n            config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset, timeRequestSent, ageHeader);\n        }\n    }\n}\nexport const AWSSDKSigV4Signer = AwsSdkSigV4Signer;\n","import { HttpRequest } from \"@smithy/core/protocols\";\nimport { getSkewCorrectedDate } from \"../utils\";\nimport { AwsSdkSigV4Signer, validateSigningProperties } from \"./AwsSdkSigV4Signer\";\nexport class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer {\n    async sign(httpRequest, identity, signingProperties) {\n        if (!HttpRequest.isInstance(httpRequest)) {\n            throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n        }\n        const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties);\n        const configResolvedSigningRegionSet = await config.sigv4aSigningRegionSet?.();\n        const multiRegionOverride = (configResolvedSigningRegionSet ??\n            signingRegionSet ?? [signingRegion]).join(\",\");\n        const noSkewCorrection = (await config.disableClockSkewCorrection?.()) === true;\n        signingProperties._disableClockSkewCorrection = noSkewCorrection;\n        if (!noSkewCorrection) {\n            signingProperties._preRequestSystemClockOffset = config.systemClockOffset;\n            signingProperties._requestSentAt = Date.now();\n        }\n        const signedRequest = await signer.sign(httpRequest, {\n            signingDate: noSkewCorrection ? new Date() : getSkewCorrectedDate(config.systemClockOffset),\n            signingRegion: multiRegionOverride,\n            signingService: signingName,\n        });\n        return signedRequest;\n    }\n}\n","export const getArrayForCommaSeparatedString = (str) => typeof str === \"string\" && str.length > 0 ? str.split(\",\").map((item) => item.trim()) : [];\n","export const getBearerTokenEnvKey = (signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\\s-]/g, \"_\").toUpperCase()}`;\n","import { getArrayForCommaSeparatedString } from \"../utils/getArrayForCommaSeparatedString\";\nimport { getBearerTokenEnvKey } from \"../utils/getBearerTokenEnvKey\";\nconst NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = \"AWS_AUTH_SCHEME_PREFERENCE\";\nconst NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = \"auth_scheme_preference\";\nexport const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = {\n    environmentVariableSelector: (env, options) => {\n        if (options?.signingName) {\n            const bearerTokenKey = getBearerTokenEnvKey(options.signingName);\n            if (bearerTokenKey in env)\n                return [\"httpBearerAuth\"];\n        }\n        if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env))\n            return undefined;\n        return getArrayForCommaSeparatedString(env[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]);\n    },\n    configFileSelector: (profile) => {\n        if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile))\n            return undefined;\n        return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]);\n    },\n    default: [],\n};\n","import { normalizeProvider } from \"@smithy/core\";\nimport { ProviderError } from \"@smithy/core/config\";\nexport const resolveAwsSdkSigV4AConfig = (config) => {\n    config.sigv4aSigningRegionSet = normalizeProvider(config.sigv4aSigningRegionSet);\n    return config;\n};\nexport const NODE_SIGV4A_CONFIG_OPTIONS = {\n    environmentVariableSelector(env) {\n        if (env.AWS_SIGV4A_SIGNING_REGION_SET) {\n            return env.AWS_SIGV4A_SIGNING_REGION_SET.split(\",\").map((_) => _.trim());\n        }\n        throw new ProviderError(\"AWS_SIGV4A_SIGNING_REGION_SET not set in env.\", {\n            tryNextLink: true,\n        });\n    },\n    configFileSelector(profile) {\n        if (profile.sigv4a_signing_region_set) {\n            return (profile.sigv4a_signing_region_set ?? \"\").split(\",\").map((_) => _.trim());\n        }\n        throw new ProviderError(\"sigv4a_signing_region_set not set in profile.\", {\n            tryNextLink: true,\n        });\n    },\n    default: undefined,\n};\n","import { fromHex, fromUtf8, toHex } from \"@smithy/core/serde\";\nexport class HeaderFormatter {\n    format(headers) {\n        const chunks = [];\n        for (const headerName of Object.keys(headers)) {\n            const bytes = fromUtf8(headerName);\n            chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n        }\n        const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n        let position = 0;\n        for (const chunk of chunks) {\n            out.set(chunk, position);\n            position += chunk.byteLength;\n        }\n        return out;\n    }\n    formatHeaderValue(header) {\n        switch (header.type) {\n            case \"boolean\":\n                return Uint8Array.from([header.value ? HEADER_VALUE_TYPE.boolTrue : HEADER_VALUE_TYPE.boolFalse]);\n            case \"byte\":\n                return Uint8Array.from([HEADER_VALUE_TYPE.byte, header.value]);\n            case \"short\":\n                const shortView = new DataView(new ArrayBuffer(3));\n                shortView.setUint8(0, HEADER_VALUE_TYPE.short);\n                shortView.setInt16(1, header.value, false);\n                return new Uint8Array(shortView.buffer);\n            case \"integer\":\n                const intView = new DataView(new ArrayBuffer(5));\n                intView.setUint8(0, HEADER_VALUE_TYPE.integer);\n                intView.setInt32(1, header.value, false);\n                return new Uint8Array(intView.buffer);\n            case \"long\":\n                const longBytes = new Uint8Array(9);\n                longBytes[0] = HEADER_VALUE_TYPE.long;\n                longBytes.set(header.value.bytes, 1);\n                return longBytes;\n            case \"binary\":\n                const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n                binView.setUint8(0, HEADER_VALUE_TYPE.byteArray);\n                binView.setUint16(1, header.value.byteLength, false);\n                const binBytes = new Uint8Array(binView.buffer);\n                binBytes.set(header.value, 3);\n                return binBytes;\n            case \"string\":\n                const utf8Bytes = fromUtf8(header.value);\n                const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n                strView.setUint8(0, HEADER_VALUE_TYPE.string);\n                strView.setUint16(1, utf8Bytes.byteLength, false);\n                const strBytes = new Uint8Array(strView.buffer);\n                strBytes.set(utf8Bytes, 3);\n                return strBytes;\n            case \"timestamp\":\n                const tsBytes = new Uint8Array(9);\n                tsBytes[0] = HEADER_VALUE_TYPE.timestamp;\n                tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n                return tsBytes;\n            case \"uuid\":\n                if (!UUID_PATTERN.test(header.value)) {\n                    throw new Error(`Invalid UUID received: ${header.value}`);\n                }\n                const uuidBytes = new Uint8Array(17);\n                uuidBytes[0] = HEADER_VALUE_TYPE.uuid;\n                uuidBytes.set(fromHex(header.value.replace(/-/g, \"\")), 1);\n                return uuidBytes;\n        }\n    }\n}\nvar HEADER_VALUE_TYPE;\n(function (HEADER_VALUE_TYPE) {\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolTrue\"] = 0] = \"boolTrue\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolFalse\"] = 1] = \"boolFalse\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byte\"] = 2] = \"byte\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"short\"] = 3] = \"short\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"integer\"] = 4] = \"integer\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"long\"] = 5] = \"long\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byteArray\"] = 6] = \"byteArray\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"string\"] = 7] = \"string\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"timestamp\"] = 8] = \"timestamp\";\n    HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"uuid\"] = 9] = \"uuid\";\n})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {}));\nconst UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\nexport class Int64 {\n    bytes;\n    constructor(bytes) {\n        this.bytes = bytes;\n        if (bytes.byteLength !== 8) {\n            throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n        }\n    }\n    static fromNumber(number) {\n        if (number > 9_223_372_036_854_775_807 || number < -9_223_372_036_854_775_808) {\n            throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n        }\n        const bytes = new Uint8Array(8);\n        for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n            bytes[i] = remaining;\n        }\n        if (number < 0) {\n            negate(bytes);\n        }\n        return new Int64(bytes);\n    }\n    valueOf() {\n        const bytes = this.bytes.slice(0);\n        const negative = bytes[0] & 0b10000000;\n        if (negative) {\n            negate(bytes);\n        }\n        return parseInt(toHex(bytes), 16) * (negative ? -1 : 1);\n    }\n    toString() {\n        return String(this.valueOf());\n    }\n}\nfunction negate(bytes) {\n    for (let i = 0; i < 8; i++) {\n        bytes[i] ^= 0xff;\n    }\n    for (let i = 7; i > -1; i--) {\n        bytes[i]++;\n        if (bytes[i] !== 0)\n            break;\n    }\n}\n","export const ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexport const CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexport const AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexport const SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexport const EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexport const SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nexport const TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nexport const REGION_SET_PARAM = \"X-Amz-Region-Set\";\nexport const AUTH_HEADER = \"authorization\";\nexport const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport const DATE_HEADER = \"date\";\nexport const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nexport const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nexport const SHA256_HEADER = \"x-amz-content-sha256\";\nexport const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nexport const HOST_HEADER = \"host\";\nexport const ALWAYS_UNSIGNABLE_HEADERS = {\n    authorization: true,\n    \"cache-control\": true,\n    connection: true,\n    expect: true,\n    from: true,\n    \"keep-alive\": true,\n    \"max-forwards\": true,\n    pragma: true,\n    referer: true,\n    te: true,\n    trailer: true,\n    \"transfer-encoding\": true,\n    upgrade: true,\n    \"user-agent\": true,\n    \"x-amzn-trace-id\": true,\n};\nexport const PROXY_HEADER_PATTERN = /^proxy-/;\nexport const SEC_HEADER_PATTERN = /^sec-/;\nexport const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];\nexport const ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nexport const ALGORITHM_IDENTIFIER_V4A = \"AWS4-ECDSA-P256-SHA256\";\nexport const EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nexport const UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nexport const MAX_CACHE_SIZE = 50;\nexport const KEY_TYPE_IDENTIFIER = \"aws4_request\";\nexport const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n","import { escapeUri } from \"@smithy/core/protocols\";\nimport { SIGNATURE_HEADER } from \"./constants\";\nexport const getCanonicalQuery = ({ query = {} }) => {\n    const keys = [];\n    const serialized = {};\n    for (const key of Object.keys(query)) {\n        if (key.toLowerCase() === SIGNATURE_HEADER) {\n            continue;\n        }\n        const encodedKey = escapeUri(key);\n        keys.push(encodedKey);\n        const value = query[key];\n        if (typeof value === \"string\") {\n            serialized[encodedKey] = `${encodedKey}=${escapeUri(value)}`;\n        }\n        else if (Array.isArray(value)) {\n            serialized[encodedKey] = value\n                .slice(0)\n                .reduce((encoded, value) => encoded.concat([`${encodedKey}=${escapeUri(value)}`]), [])\n                .sort()\n                .join(\"&\");\n        }\n    }\n    return keys\n        .sort()\n        .map((key) => serialized[key])\n        .filter((serialized) => serialized)\n        .join(\"&\");\n};\n","export const iso8601 = (time) => toDate(time)\n    .toISOString()\n    .replace(/\\.\\d{3}Z$/, \"Z\");\nexport const toDate = (time) => {\n    if (typeof time === \"number\") {\n        return new Date(time * 1000);\n    }\n    if (typeof time === \"string\") {\n        if (Number(time)) {\n            return new Date(Number(time) * 1000);\n        }\n        return new Date(time);\n    }\n    return time;\n};\n","import { normalizeProvider } from \"@smithy/core/client\";\nimport { escapeUri } from \"@smithy/core/protocols\";\nimport { toHex, toUint8Array } from \"@smithy/core/serde\";\nimport { getCanonicalQuery } from \"./getCanonicalQuery\";\nimport { iso8601 } from \"./utilDate\";\nexport class SignatureV4Base {\n    service;\n    regionProvider;\n    credentialProvider;\n    sha256;\n    uriEscapePath;\n    applyChecksum;\n    constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) {\n        this.service = service;\n        this.sha256 = sha256;\n        this.uriEscapePath = uriEscapePath;\n        this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n        this.regionProvider = normalizeProvider(region);\n        this.credentialProvider = normalizeProvider(credentials);\n    }\n    createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n        const sortedHeaders = Object.keys(canonicalHeaders).sort();\n        return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n    }\n    async createStringToSign(longDate, credentialScope, canonicalRequest, algorithmIdentifier) {\n        const hash = new this.sha256();\n        hash.update(toUint8Array(canonicalRequest));\n        const hashedRequest = await hash.digest();\n        return `${algorithmIdentifier}\n${longDate}\n${credentialScope}\n${toHex(hashedRequest)}`;\n    }\n    getCanonicalPath({ path }) {\n        if (this.uriEscapePath) {\n            const normalizedPathSegments = [];\n            for (const pathSegment of path.split(\"/\")) {\n                if (pathSegment?.length === 0)\n                    continue;\n                if (pathSegment === \".\")\n                    continue;\n                if (pathSegment === \"..\") {\n                    normalizedPathSegments.pop();\n                }\n                else {\n                    normalizedPathSegments.push(pathSegment);\n                }\n            }\n            const normalizedPath = `${path?.startsWith(\"/\") ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && path?.endsWith(\"/\") ? \"/\" : \"\"}`;\n            const doubleEncoded = escapeUri(normalizedPath);\n            return doubleEncoded.replace(/%2F/g, \"/\");\n        }\n        return path;\n    }\n    validateResolvedCredentials(credentials) {\n        if (typeof credentials !== \"object\" ||\n            typeof credentials.accessKeyId !== \"string\" ||\n            typeof credentials.secretAccessKey !== \"string\") {\n            throw new Error(\"Resolved credential object is not valid\");\n        }\n    }\n    formatDate(now) {\n        const longDate = iso8601(now).replace(/[-:]/g, \"\");\n        return {\n            longDate,\n            shortDate: longDate.slice(0, 8),\n        };\n    }\n    getCanonicalHeaderList(headers) {\n        return Object.keys(headers).sort().join(\";\");\n    }\n}\n","import { toHex, toUint8Array } from \"@smithy/core/serde\";\nimport { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from \"./constants\";\nconst signingKeyCache = {};\nconst cacheQueue = [];\nexport const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\nexport const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => {\n    const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n    const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`;\n    if (cacheKey in signingKeyCache) {\n        return signingKeyCache[cacheKey];\n    }\n    cacheQueue.push(cacheKey);\n    while (cacheQueue.length > MAX_CACHE_SIZE) {\n        delete signingKeyCache[cacheQueue.shift()];\n    }\n    let key = `AWS4${credentials.secretAccessKey}`;\n    for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n        key = await hmac(sha256Constructor, key, signable);\n    }\n    return (signingKeyCache[cacheKey] = key);\n};\nexport const clearCredentialCache = () => {\n    cacheQueue.length = 0;\n    Object.keys(signingKeyCache).forEach((cacheKey) => {\n        delete signingKeyCache[cacheKey];\n    });\n};\nconst hmac = (ctor, secret, data) => {\n    const hash = new ctor(secret);\n    hash.update(toUint8Array(data));\n    return hash.digest();\n};\n","import { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from \"./constants\";\nexport const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => {\n    const canonical = {};\n    for (const headerName of Object.keys(headers).sort()) {\n        if (headers[headerName] == undefined) {\n            continue;\n        }\n        const canonicalHeaderName = headerName.toLowerCase();\n        if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS ||\n            unsignableHeaders?.has(canonicalHeaderName) ||\n            PROXY_HEADER_PATTERN.test(canonicalHeaderName) ||\n            SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n            if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) {\n                continue;\n            }\n        }\n        canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n    }\n    return canonical;\n};\n","import { isArrayBuffer, toHex, toUint8Array } from \"@smithy/core/serde\";\nimport { SHA256_HEADER, UNSIGNED_PAYLOAD } from \"./constants\";\nexport const getPayloadHash = async ({ headers, body }, hashConstructor) => {\n    for (const headerName of Object.keys(headers)) {\n        if (headerName.toLowerCase() === SHA256_HEADER) {\n            return headers[headerName];\n        }\n    }\n    if (body == undefined) {\n        return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n    }\n    else if (typeof body === \"string\" || ArrayBuffer.isView(body) || isArrayBuffer(body)) {\n        const hashCtor = new hashConstructor();\n        hashCtor.update(toUint8Array(body));\n        return toHex(await hashCtor.digest());\n    }\n    return UNSIGNED_PAYLOAD;\n};\n","export const hasHeader = (soughtHeader, headers) => {\n    soughtHeader = soughtHeader.toLowerCase();\n    for (const headerName of Object.keys(headers)) {\n        if (soughtHeader === headerName.toLowerCase()) {\n            return true;\n        }\n    }\n    return false;\n};\nexport const getHeaderValue = (soughtHeader, headers) => {\n    soughtHeader = soughtHeader.toLowerCase();\n    for (const headerName of Object.keys(headers)) {\n        if (soughtHeader === headerName.toLowerCase()) {\n            return headers[headerName];\n        }\n    }\n    return undefined;\n};\nexport const deleteHeader = (soughtHeader, headers) => {\n    soughtHeader = soughtHeader.toLowerCase();\n    for (const headerName of Object.keys(headers)) {\n        if (soughtHeader === headerName.toLowerCase()) {\n            delete headers[headerName];\n        }\n    }\n};\n","import { HttpRequest } from \"@smithy/core/protocols\";\nexport const moveHeadersToQuery = (request, options = {}) => {\n    const { headers, query = {} } = HttpRequest.clone(request);\n    for (const name of Object.keys(headers)) {\n        const lname = name.toLowerCase();\n        if ((lname.slice(0, 6) === \"x-amz-\" && !options.unhoistableHeaders?.has(lname)) ||\n            options.hoistableHeaders?.has(lname)) {\n            query[name] = headers[name];\n            delete headers[name];\n        }\n    }\n    return {\n        ...request,\n        headers,\n        query,\n    };\n};\n","import { HttpRequest } from \"@smithy/core/protocols\";\nimport { GENERATED_HEADERS } from \"./constants\";\nexport const prepareRequest = (request) => {\n    request = HttpRequest.clone(request);\n    for (const headerName of Object.keys(request.headers)) {\n        if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n            delete request.headers[headerName];\n        }\n    }\n    return request;\n};\n","import { toHex, toUint8Array } from \"@smithy/core/serde\";\nimport { HeaderFormatter } from \"./HeaderFormatter\";\nimport { SignatureV4Base } from \"./SignatureV4Base\";\nimport { ALGORITHM_IDENTIFIER, ALGORITHM_QUERY_PARAM, AMZ_DATE_HEADER, AMZ_DATE_QUERY_PARAM, AUTH_HEADER, CREDENTIAL_QUERY_PARAM, EVENT_ALGORITHM_IDENTIFIER, EXPIRES_QUERY_PARAM, MAX_PRESIGNED_TTL, SHA256_HEADER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_HEADER, TOKEN_QUERY_PARAM, } from \"./constants\";\nimport { createScope, getSigningKey } from \"./credentialDerivation\";\nimport { getCanonicalHeaders } from \"./getCanonicalHeaders\";\nimport { getPayloadHash } from \"./getPayloadHash\";\nimport { hasHeader } from \"./headerUtil\";\nimport { moveHeadersToQuery } from \"./moveHeadersToQuery\";\nimport { prepareRequest } from \"./prepareRequest\";\nexport class SignatureV4 extends SignatureV4Base {\n    headerFormatter = new HeaderFormatter();\n    constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) {\n        super({\n            applyChecksum,\n            credentials,\n            region,\n            service,\n            sha256,\n            uriEscapePath,\n        });\n    }\n    async presign(originalRequest, options = {}) {\n        const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, hoistableHeaders, signingRegion, signingService, } = options;\n        const credentials = await this.credentialProvider();\n        this.validateResolvedCredentials(credentials);\n        const region = signingRegion ?? (await this.regionProvider());\n        const { longDate, shortDate } = this.formatDate(signingDate);\n        if (expiresIn > MAX_PRESIGNED_TTL) {\n            return Promise.reject(\"Signature version 4 presigned URLs\" + \" must have an expiration date less than one week in\" + \" the future\");\n        }\n        const scope = createScope(shortDate, region, signingService ?? this.service);\n        const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders });\n        if (credentials.sessionToken) {\n            request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n        }\n        request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n        request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n        request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n        request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n        const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n        request.query[SIGNED_HEADERS_QUERY_PARAM] = this.getCanonicalHeaderList(canonicalHeaders);\n        request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256)));\n        return request;\n    }\n    async sign(toSign, options) {\n        if (typeof toSign === \"string\") {\n            return this.signString(toSign, options);\n        }\n        else if (toSign.headers && toSign.payload) {\n            return this.signEvent(toSign, options);\n        }\n        else if (toSign.message) {\n            return this.signMessage(toSign, options);\n        }\n        else {\n            return this.signRequest(toSign, options);\n        }\n    }\n    async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService, eventStreamCredentials, }) {\n        const region = signingRegion ?? (await this.regionProvider());\n        const { shortDate, longDate } = this.formatDate(signingDate);\n        const scope = createScope(shortDate, region, signingService ?? this.service);\n        const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n        const hash = new this.sha256();\n        hash.update(headers);\n        const hashedHeaders = toHex(await hash.digest());\n        const stringToSign = [\n            EVENT_ALGORITHM_IDENTIFIER,\n            longDate,\n            scope,\n            priorSignature,\n            hashedHeaders,\n            hashedPayload,\n        ].join(\"\\n\");\n        return this.signString(stringToSign, {\n            signingDate,\n            signingRegion: region,\n            signingService,\n            eventStreamCredentials,\n        });\n    }\n    async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService, eventStreamCredentials }) {\n        const promise = this.signEvent({\n            headers: this.headerFormatter.format(signableMessage.message.headers),\n            payload: signableMessage.message.body,\n        }, {\n            signingDate,\n            signingRegion,\n            signingService,\n            priorSignature: signableMessage.priorSignature,\n            eventStreamCredentials,\n        });\n        return promise.then((signature) => {\n            return { message: signableMessage.message, signature };\n        });\n    }\n    async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService, eventStreamCredentials, } = {}) {\n        const credentials = eventStreamCredentials ?? (await this.credentialProvider());\n        this.validateResolvedCredentials(credentials);\n        const region = signingRegion ?? (await this.regionProvider());\n        const { shortDate } = this.formatDate(signingDate);\n        const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n        hash.update(toUint8Array(stringToSign));\n        return toHex(await hash.digest());\n    }\n    async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) {\n        const credentials = await this.credentialProvider();\n        this.validateResolvedCredentials(credentials);\n        const region = signingRegion ?? (await this.regionProvider());\n        const request = prepareRequest(requestToSign);\n        const { longDate, shortDate } = this.formatDate(signingDate);\n        const scope = createScope(shortDate, region, signingService ?? this.service);\n        request.headers[AMZ_DATE_HEADER] = longDate;\n        if (credentials.sessionToken) {\n            request.headers[TOKEN_HEADER] = credentials.sessionToken;\n        }\n        const payloadHash = await getPayloadHash(request, this.sha256);\n        if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n            request.headers[SHA256_HEADER] = payloadHash;\n        }\n        const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n        const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash));\n        request.headers[AUTH_HEADER] =\n            `${ALGORITHM_IDENTIFIER} ` +\n                `Credential=${credentials.accessKeyId}/${scope}, ` +\n                `SignedHeaders=${this.getCanonicalHeaderList(canonicalHeaders)}, ` +\n                `Signature=${signature}`;\n        return request;\n    }\n    async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n        const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest, ALGORITHM_IDENTIFIER);\n        const hash = new this.sha256(await keyPromise);\n        hash.update(toUint8Array(stringToSign));\n        return toHex(await hash.digest());\n    }\n    getSigningKey(credentials, region, shortDate, service) {\n        return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n    }\n}\n","export const signatureV4aContainer = {\n    SignatureV4a: null,\n};\n","import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { doesIdentityRequireRefresh, isIdentityExpired, memoizeIdentityProvider, normalizeProvider, } from \"@smithy/core\";\nimport { SignatureV4 } from \"@smithy/signature-v4\";\nexport const bindResolveAwsSdkSigV4Config = (defaultDisableClockSkewCorrection) => (config) => {\n    let inputCredentials = config.credentials;\n    let isUserSupplied = !!config.credentials;\n    let resolvedCredentials = undefined;\n    Object.defineProperty(config, \"credentials\", {\n        set(credentials) {\n            if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) {\n                isUserSupplied = true;\n            }\n            inputCredentials = credentials;\n            const memoizedProvider = normalizeCredentialProvider(config, {\n                credentials: inputCredentials,\n                credentialDefaultProvider: config.credentialDefaultProvider,\n            });\n            const boundProvider = bindCallerConfig(config, memoizedProvider);\n            if (isUserSupplied && !boundProvider.attributed) {\n                const isCredentialObject = typeof inputCredentials === \"object\" && inputCredentials !== null;\n                resolvedCredentials = async (options) => {\n                    const creds = await boundProvider(options);\n                    const attributedCreds = creds;\n                    if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) {\n                        return setCredentialFeature(attributedCreds, \"CREDENTIALS_CODE\", \"e\");\n                    }\n                    return attributedCreds;\n                };\n                resolvedCredentials.memoized = boundProvider.memoized;\n                resolvedCredentials.configBound = boundProvider.configBound;\n                resolvedCredentials.attributed = true;\n            }\n            else {\n                resolvedCredentials = boundProvider;\n            }\n        },\n        get() {\n            return resolvedCredentials;\n        },\n        enumerable: true,\n        configurable: true,\n    });\n    config.credentials = inputCredentials;\n    const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config;\n    let signer;\n    if (config.signer) {\n        signer = normalizeProvider(config.signer);\n    }\n    else if (config.regionInfoProvider) {\n        signer = () => normalizeProvider(config.region)()\n            .then(async (region) => [\n            (await config.regionInfoProvider(region, {\n                useFipsEndpoint: await config.useFipsEndpoint(),\n                useDualstackEndpoint: await config.useDualstackEndpoint(),\n            })) || {},\n            region,\n        ])\n            .then(([regionInfo, region]) => {\n            const { signingRegion, signingService } = regionInfo;\n            config.signingRegion = config.signingRegion || signingRegion || region;\n            config.signingName = config.signingName || signingService || config.serviceId;\n            const params = {\n                ...config,\n                credentials: config.credentials,\n                region: config.signingRegion,\n                service: config.signingName,\n                sha256,\n                uriEscapePath: signingEscapePath,\n            };\n            const SignerCtor = config.signerConstructor || SignatureV4;\n            return new SignerCtor(params);\n        });\n    }\n    else {\n        signer = async (authScheme) => {\n            authScheme = Object.assign({}, {\n                name: \"sigv4\",\n                signingName: config.signingName || config.defaultSigningName,\n                signingRegion: await normalizeProvider(config.region)(),\n                properties: {},\n            }, authScheme);\n            const signingRegion = authScheme.signingRegion;\n            const signingService = authScheme.signingName;\n            config.signingRegion = config.signingRegion || signingRegion;\n            config.signingName = config.signingName || signingService || config.serviceId;\n            const params = {\n                ...config,\n                credentials: config.credentials,\n                region: config.signingRegion,\n                service: config.signingName,\n                sha256,\n                uriEscapePath: signingEscapePath,\n            };\n            const SignerCtor = config.signerConstructor || SignatureV4;\n            return new SignerCtor(params);\n        };\n    }\n    const resolvedConfig = Object.assign(config, {\n        systemClockOffset,\n        signingEscapePath,\n        signer,\n        disableClockSkewCorrection: normalizeProvider(config.disableClockSkewCorrection ?? defaultDisableClockSkewCorrection),\n    });\n    return resolvedConfig;\n};\nfunction normalizeCredentialProvider(config, { credentials, credentialDefaultProvider }) {\n    let credentialsProvider;\n    if (credentials) {\n        if (!credentials?.memoized) {\n            credentialsProvider = memoizeIdentityProvider(credentials, isIdentityExpired, doesIdentityRequireRefresh);\n        }\n        else {\n            credentialsProvider = credentials;\n        }\n    }\n    else {\n        if (credentialDefaultProvider) {\n            credentialsProvider = normalizeProvider(credentialDefaultProvider(Object.assign({}, config, {\n                parentClientConfig: config,\n            })));\n        }\n        else {\n            credentialsProvider = async () => {\n                throw new Error(\"@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured.\");\n            };\n        }\n    }\n    credentialsProvider.memoized = true;\n    return credentialsProvider;\n}\nfunction bindCallerConfig(config, credentialsProvider) {\n    if (credentialsProvider.configBound) {\n        return credentialsProvider;\n    }\n    const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config });\n    fn.memoized = credentialsProvider.memoized;\n    fn.configBound = true;\n    return fn;\n}\n","import { booleanSelector, SelectorType } from \"@smithy/core/config\";\nexport const ENV_DISABLE_CLOCK_SKEW_CORRECTION = \"AWS_DISABLE_CLOCK_SKEW_CORRECTION\";\nexport const CONFIG_DISABLE_CLOCK_SKEW_CORRECTION = \"disable_clock_skew_correction\";\nexport const NODE_DISABLE_CLOCK_SKEW_CORRECTION_CONFIG_OPTIONS = {\n    environmentVariableSelector: (env) => booleanSelector(env, ENV_DISABLE_CLOCK_SKEW_CORRECTION, SelectorType.ENV),\n    configFileSelector: (profile) => booleanSelector(profile, CONFIG_DISABLE_CLOCK_SKEW_CORRECTION, SelectorType.CONFIG),\n    default: false,\n};\n","import { loadConfig } from \"@smithy/core/config\";\nimport { NODE_DISABLE_CLOCK_SKEW_CORRECTION_CONFIG_OPTIONS } from \"./clock-skew-node-config\";\nexport const DEFAULT_DISABLE_CLOCK_SKEW_CORRECTION = loadConfig(NODE_DISABLE_CLOCK_SKEW_CORRECTION_CONFIG_OPTIONS);\n","export { AwsSdkSigV4Signer, AWSSDKSigV4Signer, validateSigningProperties, AwsSdkSigV4ASigner, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, resolveAwsSdkSigV4AConfig, NODE_SIGV4A_CONFIG_OPTIONS, } from \"./aws_sdk\";\nexport { getBearerTokenEnvKey } from \"./utils/getBearerTokenEnvKey\";\nimport { bindResolveAwsSdkSigV4Config } from \"./aws_sdk\";\nimport { DEFAULT_DISABLE_CLOCK_SKEW_CORRECTION } from \"./aws_sdk/clock-skew-defaults\";\nexport const resolveAwsSdkSigV4Config = bindResolveAwsSdkSigV4Config(DEFAULT_DISABLE_CLOCK_SKEW_CORRECTION);\nexport const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config;\n","import { decorateServiceException } from \"@smithy/core/client\";\nimport { NormalizedSchema, TypeRegistry } from \"@smithy/core/schema\";\nexport class ProtocolLib {\n    queryCompat;\n    errorRegistry;\n    constructor(queryCompat = false) {\n        this.queryCompat = queryCompat;\n    }\n    resolveRestContentType(defaultContentType, inputSchema) {\n        const members = inputSchema.getMemberSchemas();\n        const httpPayloadMember = Object.values(members).find((m) => {\n            return !!m.getMergedTraits().httpPayload;\n        });\n        if (httpPayloadMember) {\n            const mediaType = httpPayloadMember.getMergedTraits().mediaType;\n            if (mediaType) {\n                return mediaType;\n            }\n            else if (httpPayloadMember.isStringSchema()) {\n                return \"text/plain\";\n            }\n            else if (httpPayloadMember.isBlobSchema()) {\n                return \"application/octet-stream\";\n            }\n            else {\n                return defaultContentType;\n            }\n        }\n        else if (!inputSchema.isUnitSchema()) {\n            const hasBody = Object.values(members).find((m) => {\n                const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m.getMergedTraits();\n                const noPrefixHeaders = httpPrefixHeaders === void 0;\n                return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders;\n            });\n            if (hasBody) {\n                return defaultContentType;\n            }\n        }\n    }\n    async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) {\n        let errorName = errorIdentifier;\n        if (errorIdentifier.includes(\"#\")) {\n            [, errorName] = errorIdentifier.split(\"#\");\n        }\n        const errorMetadata = {\n            $metadata: metadata,\n            $fault: response.statusCode < 500 ? \"client\" : \"server\",\n        };\n        if (!this.errorRegistry) {\n            throw new Error(\"@aws-sdk/core/protocols - error handler not initialized.\");\n        }\n        try {\n            const errorSchema = getErrorSchema?.(this.errorRegistry, errorName) ??\n                this.errorRegistry.getSchema(errorIdentifier);\n            return { errorSchema, errorMetadata };\n        }\n        catch (e) {\n            dataObject.message = dataObject.message ?? dataObject.Message ?? \"UnknownError\";\n            const synthetic = this.errorRegistry;\n            const baseExceptionSchema = synthetic.getBaseException();\n            if (baseExceptionSchema) {\n                const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error;\n                throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject);\n            }\n            const d = dataObject;\n            const message = d?.message ?? d?.Message ?? d?.Error?.Message ?? d?.Error?.message;\n            throw this.decorateServiceException(Object.assign(new Error(message), {\n                name: errorName,\n            }, errorMetadata), dataObject);\n        }\n    }\n    compose(composite, errorIdentifier, defaultNamespace) {\n        let namespace = defaultNamespace;\n        if (errorIdentifier.includes(\"#\")) {\n            [namespace] = errorIdentifier.split(\"#\");\n        }\n        const staticRegistry = TypeRegistry.for(namespace);\n        const defaultSyntheticRegistry = TypeRegistry.for(\"smithy.ts.sdk.synthetic.\" + defaultNamespace);\n        composite.copyFrom(staticRegistry);\n        composite.copyFrom(defaultSyntheticRegistry);\n        this.errorRegistry = composite;\n    }\n    decorateServiceException(exception, additions = {}) {\n        if (this.queryCompat) {\n            const msg = exception.Message ?? additions.Message;\n            const error = decorateServiceException(exception, additions);\n            if (msg) {\n                error.message = msg;\n            }\n            const errorObj = error.Error ?? {};\n            errorObj.Type = error.Error?.Type;\n            errorObj.Code = error.Error?.Code;\n            errorObj.Message = error.Error?.message ?? error.Error?.Message ?? msg;\n            error.Error = errorObj;\n            const reqId = error.$metadata.requestId;\n            if (reqId) {\n                error.RequestId = reqId;\n            }\n            return error;\n        }\n        return decorateServiceException(exception, additions);\n    }\n    setQueryCompatError(output, response) {\n        const queryErrorHeader = response.headers?.[\"x-amzn-query-error\"];\n        if (output !== undefined && queryErrorHeader != null) {\n            const [Code, Type] = queryErrorHeader.split(\";\");\n            const keys = Object.keys(output);\n            const Error = {\n                Code,\n                Type,\n            };\n            output.Code = Code;\n            output.Type = Type;\n            for (let i = 0; i < keys.length; i++) {\n                const k = keys[i];\n                Error[k === \"message\" ? \"Message\" : k] = output[k];\n            }\n            delete Error.__type;\n            output.Error = Error;\n        }\n    }\n    queryCompatOutput(queryCompatErrorData, errorData) {\n        if (queryCompatErrorData.Error) {\n            errorData.Error = queryCompatErrorData.Error;\n        }\n        if (queryCompatErrorData.Type) {\n            errorData.Type = queryCompatErrorData.Type;\n        }\n        if (queryCompatErrorData.Code) {\n            errorData.Code = queryCompatErrorData.Code;\n        }\n    }\n    findQueryCompatibleError(registry, errorName) {\n        try {\n            return registry.getSchema(errorName);\n        }\n        catch (e) {\n            return registry.find((schema) => NormalizedSchema.of(schema).getMergedTraits().awsQueryError?.[0] === errorName);\n        }\n    }\n}\n","export class SerdeContextConfig {\n    serdeContext;\n    setSerdeContext(serdeContext) {\n        this.serdeContext = serdeContext;\n    }\n}\n","export class UnionSerde {\n    from;\n    to;\n    keys;\n    constructor(from, to) {\n        this.from = from;\n        this.to = to;\n        const keys = Object.keys(this.from);\n        const set = new Set(keys);\n        set.delete(\"__type\");\n        this.keys = set;\n    }\n    mark(key) {\n        this.keys.delete(key);\n    }\n    hasUnknown() {\n        return this.keys.size === 1 && Object.keys(this.to).length === 0;\n    }\n    writeUnknown() {\n        if (this.hasUnknown()) {\n            const k = this.keys.values().next().value;\n            const v = this.from[k];\n            this.to.$unknown = [k, v];\n        }\n    }\n}\n","import { NumericValue } from \"@smithy/core/serde\";\nexport function jsonReviver(key, value, context) {\n    if (context?.source) {\n        const numericString = context.source;\n        if (typeof value === \"number\") {\n            const inSafeRange = value <= Number.MAX_SAFE_INTEGER && value >= Number.MIN_SAFE_INTEGER;\n            if (!inSafeRange || numericString !== String(value)) {\n                if (inSafeRange && /[eE]/.test(numericString) && String(Number(numericString)) === String(value)) {\n                    return value;\n                }\n                if (isFractionalNumeric(numericString)) {\n                    return new NumericValue(numericString, \"bigDecimal\");\n                }\n                else {\n                    if (/[eE]/.test(numericString)) {\n                        return BigInt(Number(numericString));\n                    }\n                    return BigInt(numericString);\n                }\n            }\n        }\n    }\n    return value;\n}\nfunction isFractionalNumeric(s) {\n    const dotIndex = s.indexOf(\".\");\n    if (dotIndex === -1) {\n        return false;\n    }\n    const eIndex = s.search(/[eE]/);\n    if (eIndex === -1) {\n        return true;\n    }\n    const fracDigits = eIndex - dotIndex - 1;\n    const exp = parseInt(s.slice(eIndex + 1), 10);\n    return exp < fracDigits;\n}\n","import { NormalizedSchema } from \"@smithy/core/schema\";\nconst REVIVER_SYMBOL = Symbol.for(\"@aws-sdk/reviver\");\nexport function needsReviver(schema) {\n    const ns = NormalizedSchema.of(schema);\n    const raw = ns.getSchema();\n    if (Array.isArray(raw) && ns.isStructSchema()) {\n        if (REVIVER_SYMBOL in raw) {\n            return raw[REVIVER_SYMBOL];\n        }\n        const result = _check(ns, new Set());\n        raw[REVIVER_SYMBOL] = result;\n        return result;\n    }\n    return _check(ns, new Set());\n}\nfunction _check(ns, seen) {\n    const raw = ns.getSchema();\n    if (seen.has(raw)) {\n        return false;\n    }\n    seen.add(raw);\n    if (ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) {\n        return true;\n    }\n    if (ns.isStructSchema()) {\n        for (const [, memberSchema] of ns.structIterator()) {\n            if (_check(memberSchema, seen)) {\n                return true;\n            }\n        }\n    }\n    else if (ns.isListSchema() || ns.isMapSchema()) {\n        if (_check(ns.getValueSchema(), seen)) {\n            return true;\n        }\n    }\n    else if (ns.isDocumentSchema()) {\n        return true;\n    }\n    return false;\n}\n","import { collectBody } from \"@smithy/core/protocols\";\nimport { toUtf8 } from \"@smithy/core/serde\";\nexport const collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? toUtf8)(body));\n","let canParseBuffer;\nexport function detectBufferParsing() {\n    if (canParseBuffer === undefined) {\n        try {\n            if (typeof Buffer !== \"function\") {\n                canParseBuffer = false;\n            }\n            else {\n                const result = JSON.parse(Buffer.from([0x7b, 0x7d]));\n                canParseBuffer = result !== null && typeof result === \"object\";\n            }\n        }\n        catch {\n            canParseBuffer = false;\n        }\n    }\n    return canParseBuffer;\n}\n","import { collectBody } from \"@smithy/core/protocols\";\nimport { collectBodyString } from \"../common\";\nimport { detectBufferParsing } from \"./detectBufferParsing\";\nimport { jsonReviver } from \"./jsonReviver\";\nimport { needsReviver } from \"./needsReviver\";\nexport async function parseJsonBody(streamBody, context, schema) {\n    let parsingInput;\n    if (detectBufferParsing() && typeof streamBody?.[Symbol.asyncIterator] === \"function\") {\n        const buffer = await collectBody(streamBody, context);\n        if (typeof Buffer === \"function\") {\n            if (Buffer.isBuffer(buffer)) {\n                parsingInput = buffer;\n            }\n            else {\n                parsingInput = Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n            }\n        }\n    }\n    if (!parsingInput) {\n        parsingInput = await collectBodyString(streamBody, context);\n    }\n    if (parsingInput.length === 0) {\n        return {};\n    }\n    const reviver = schema && needsReviver(schema) ? jsonReviver : undefined;\n    try {\n        return JSON.parse(parsingInput, reviver);\n    }\n    catch (e) {\n        if (e?.name === \"SyntaxError\") {\n            Object.defineProperty(e, \"$responseBodyText\", {\n                value: typeof parsingInput === \"string\" ? parsingInput : parsingInput.toString(\"utf8\"),\n            });\n        }\n        throw e;\n    }\n}\nexport const parseJsonErrorBody = async (errorBody, context) => {\n    const value = await parseJsonBody(errorBody, context);\n    value.message = value.message ?? value.Message;\n    return value;\n};\nconst findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());\nconst sanitizeErrorCode = (rawValue) => {\n    let cleanValue = rawValue;\n    if (typeof cleanValue === \"number\") {\n        cleanValue = cleanValue.toString();\n    }\n    if (cleanValue.indexOf(\",\") >= 0) {\n        cleanValue = cleanValue.split(\",\")[0];\n    }\n    if (cleanValue.indexOf(\":\") >= 0) {\n        cleanValue = cleanValue.split(\":\")[0];\n    }\n    if (cleanValue.indexOf(\"#\") >= 0) {\n        cleanValue = cleanValue.split(\"#\")[1];\n    }\n    return cleanValue;\n};\nexport const loadRestJsonErrorCode = (output, data) => {\n    return loadErrorCode(output, data, [\"header\", \"code\", \"type\"]);\n};\nexport const loadJsonRpcErrorCode = (output, data, queryCompat = false) => {\n    return loadErrorCode(output, data, queryCompat ? [\"code\", \"header\", \"type\"] : [\"type\", \"code\", \"header\"]);\n};\nconst loadErrorCode = ({ headers }, data, order) => {\n    while (order.length > 0) {\n        const location = order.shift();\n        switch (location) {\n            case \"header\":\n                const headerKey = findKey(headers ?? {}, \"x-amzn-errortype\");\n                if (headerKey !== undefined) {\n                    return sanitizeErrorCode(headers[headerKey]);\n                }\n                break;\n            case \"code\":\n                const codeKey = findKey(data ?? {}, \"code\");\n                if (codeKey && data[codeKey] !== undefined) {\n                    return sanitizeErrorCode(data[codeKey]);\n                }\n                break;\n            case \"type\":\n                if (data?.__type !== undefined) {\n                    return sanitizeErrorCode(data.__type);\n                }\n                break;\n        }\n    }\n};\n","export function writeKey(obj) {\n    Object.defineProperty(obj, \"__proto__\", { value: undefined, writable: true, enumerable: true, configurable: true });\n}\n","import { determineTimestampFormat } from \"@smithy/core/protocols\";\nimport { NormalizedSchema } from \"@smithy/core/schema\";\nimport { LazyJsonString, NumericValue, parseEpochTimestamp, parseRfc3339DateTimeWithOffset, parseRfc7231DateTime, } from \"@smithy/core/serde\";\nimport { fromBase64 } from \"@smithy/core/serde\";\nimport { SerdeContextConfig } from \"../ConfigurableSerdeContext\";\nimport { UnionSerde } from \"../UnionSerde\";\nimport { jsonReviver } from \"./jsonReviver\";\nimport { needsReviver } from \"./needsReviver\";\nimport { parseJsonBody } from \"./parseJsonBody\";\nimport { writeKey } from \"../writeKey\";\nexport class JsonShapeDeserializer extends SerdeContextConfig {\n    settings;\n    constructor(settings) {\n        super();\n        this.settings = settings;\n    }\n    async read(schema, data) {\n        const reviver = needsReviver(schema) ? jsonReviver : undefined;\n        return this._read(schema, typeof data === \"string\" ? JSON.parse(data, reviver) : await parseJsonBody(data, this.serdeContext, schema));\n    }\n    readObject(schema, data) {\n        return this._read(schema, data);\n    }\n    _read(schema, value) {\n        const isObject = value !== null && typeof value === \"object\";\n        const ns = NormalizedSchema.of(schema);\n        if (isObject) {\n            if (ns.isStructSchema()) {\n                const record = value;\n                const union = ns.isUnionSchema();\n                const out = {};\n                let nameMap = void 0;\n                const { jsonName } = this.settings;\n                if (jsonName) {\n                    nameMap = {};\n                }\n                let unionSerde;\n                if (union) {\n                    unionSerde = new UnionSerde(record, out);\n                }\n                for (const [memberName, memberSchema] of ns.structIterator()) {\n                    let fromKey = memberName;\n                    if (jsonName) {\n                        fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey;\n                        nameMap[fromKey] = memberName;\n                    }\n                    if (union) {\n                        unionSerde.mark(fromKey);\n                    }\n                    if (record[fromKey] != null) {\n                        out[memberName] = this._read(memberSchema, record[fromKey]);\n                    }\n                }\n                if (union) {\n                    unionSerde.writeUnknown();\n                }\n                else if (typeof record.__type === \"string\") {\n                    for (const k in record) {\n                        const v = record[k];\n                        const t = jsonName ? (nameMap[k] ?? k) : k;\n                        if (!(t in out)) {\n                            out[t] = v;\n                        }\n                    }\n                }\n                return out;\n            }\n            if (Array.isArray(value) && ns.isListSchema()) {\n                const listMember = ns.getValueSchema();\n                const out = [];\n                for (const item of value) {\n                    out.push(this._read(listMember, item));\n                }\n                return out;\n            }\n            if (ns.isMapSchema()) {\n                const mapMember = ns.getValueSchema();\n                const out = {};\n                for (const _k in value) {\n                    if (_k === \"__proto__\") {\n                        writeKey(out);\n                    }\n                    out[_k] = this._read(mapMember, value[_k]);\n                }\n                return out;\n            }\n        }\n        if (ns.isBlobSchema() && typeof value === \"string\") {\n            return fromBase64(value);\n        }\n        const mediaType = ns.getMergedTraits().mediaType;\n        if (ns.isStringSchema() && typeof value === \"string\" && mediaType) {\n            const isJson = mediaType === \"application/json\" || mediaType.endsWith(\"+json\");\n            if (isJson) {\n                return LazyJsonString.from(value);\n            }\n            return value;\n        }\n        if (ns.isTimestampSchema() && value != null) {\n            const format = determineTimestampFormat(ns, this.settings);\n            switch (format) {\n                case 5:\n                    return parseRfc3339DateTimeWithOffset(value);\n                case 6:\n                    return parseRfc7231DateTime(value);\n                case 7:\n                    return parseEpochTimestamp(value);\n                default:\n                    console.warn(\"Missing timestamp format, parsing value with Date constructor:\", value);\n                    return new Date(value);\n            }\n        }\n        if (ns.isBigIntegerSchema() && (typeof value === \"number\" || typeof value === \"string\")) {\n            return BigInt(value);\n        }\n        if (ns.isBigDecimalSchema() && value != undefined) {\n            if (value instanceof NumericValue) {\n                return value;\n            }\n            const untyped = value;\n            if (untyped.type === \"bigDecimal\" && \"string\" in untyped) {\n                return new NumericValue(untyped.string, untyped.type);\n            }\n            return new NumericValue(String(value), \"bigDecimal\");\n        }\n        if (ns.isNumericSchema() && typeof value === \"string\") {\n            switch (value) {\n                case \"Infinity\":\n                    return Infinity;\n                case \"-Infinity\":\n                    return -Infinity;\n                case \"NaN\":\n                    return NaN;\n            }\n            return value;\n        }\n        if (ns.isDocumentSchema()) {\n            if (isObject) {\n                const out = Array.isArray(value) ? [] : {};\n                for (const k in value) {\n                    if (k === \"__proto__\") {\n                        writeKey(out);\n                    }\n                    const v = value[k];\n                    if (v instanceof NumericValue) {\n                        out[k] = v;\n                    }\n                    else {\n                        out[k] = this._read(ns, v);\n                    }\n                }\n                return out;\n            }\n            else {\n                return structuredClone(value);\n            }\n        }\n        return value;\n    }\n}\n","import { NumericValue } from \"@smithy/core/serde\";\nconst NUMERIC_CONTROL_CHAR = String.fromCharCode(925);\nexport class JsonReplacer {\n    values = new Map();\n    counter = 0;\n    stage = 0;\n    createReplacer() {\n        if (this.stage === 1) {\n            throw new Error(\"@aws-sdk/core/protocols - JsonReplacer already created.\");\n        }\n        if (this.stage === 2) {\n            throw new Error(\"@aws-sdk/core/protocols - JsonReplacer exhausted.\");\n        }\n        this.stage = 1;\n        return (key, value) => {\n            if (value instanceof NumericValue) {\n                const v = `${NUMERIC_CONTROL_CHAR + \"nv\" + this.counter++}_` + value.string;\n                this.values.set(`\"${v}\"`, value.string);\n                return v;\n            }\n            if (typeof value === \"bigint\") {\n                const s = value.toString();\n                const v = `${NUMERIC_CONTROL_CHAR + \"b\" + this.counter++}_` + s;\n                this.values.set(`\"${v}\"`, s);\n                return v;\n            }\n            return value;\n        };\n    }\n    replaceInJson(json) {\n        if (this.stage === 0) {\n            throw new Error(\"@aws-sdk/core/protocols - JsonReplacer not created yet.\");\n        }\n        if (this.stage === 2) {\n            throw new Error(\"@aws-sdk/core/protocols - JsonReplacer exhausted.\");\n        }\n        this.stage = 2;\n        if (this.counter === 0) {\n            return json;\n        }\n        for (const [key, value] of this.values) {\n            json = json.replace(key, value);\n        }\n        return json;\n    }\n}\n","import { determineTimestampFormat } from \"@smithy/core/protocols\";\nimport { NormalizedSchema } from \"@smithy/core/schema\";\nimport { dateToUtcString, generateIdempotencyToken, LazyJsonString, NumericValue, toBase64 } from \"@smithy/core/serde\";\nimport { SerdeContextConfig } from \"../ConfigurableSerdeContext\";\nimport { JsonReplacer } from \"./jsonReplacer\";\nimport { writeKey } from \"../writeKey\";\nexport class JsonShapeSerializer extends SerdeContextConfig {\n    settings;\n    buffer;\n    useReplacer = false;\n    rootSchema;\n    constructor(settings) {\n        super();\n        this.settings = settings;\n    }\n    write(schema, value) {\n        this.rootSchema = NormalizedSchema.of(schema);\n        this.buffer = this._write(this.rootSchema, value);\n    }\n    flush() {\n        const { rootSchema, useReplacer } = this;\n        this.rootSchema = undefined;\n        this.useReplacer = false;\n        if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) {\n            if (!useReplacer) {\n                return JSON.stringify(this.buffer);\n            }\n            const replacer = new JsonReplacer();\n            return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0));\n        }\n        return this.buffer;\n    }\n    writeDiscriminatedDocument(schema, value) {\n        this.write(schema, value);\n        if (typeof this.buffer === \"object\") {\n            this.buffer.__type = NormalizedSchema.of(schema).getName(true);\n        }\n    }\n    _write(schema, value, container) {\n        const isObject = value !== null && typeof value === \"object\";\n        const ns = NormalizedSchema.of(schema);\n        if (isObject) {\n            if (ns.isStructSchema()) {\n                const record = value;\n                const out = {};\n                const { jsonName } = this.settings;\n                let nameMap = void 0;\n                if (jsonName) {\n                    nameMap = {};\n                }\n                let outCount = 0;\n                for (const [memberName, memberSchema] of ns.structIterator()) {\n                    const serializableValue = this._write(memberSchema, record[memberName], ns);\n                    if (serializableValue !== undefined) {\n                        let targetKey = memberName;\n                        if (jsonName) {\n                            targetKey = memberSchema.getMergedTraits().jsonName ?? memberName;\n                            nameMap[memberName] = targetKey;\n                        }\n                        out[targetKey] = serializableValue;\n                        outCount++;\n                    }\n                }\n                if (ns.isUnionSchema() && outCount === 0) {\n                    const { $unknown } = record;\n                    if (Array.isArray($unknown)) {\n                        const [k, v] = $unknown;\n                        if (k === \"__proto__\") {\n                            writeKey(out);\n                        }\n                        out[k] = this._write(15, v);\n                    }\n                }\n                else if (typeof record.__type === \"string\") {\n                    for (const k in record) {\n                        const v = record[k];\n                        const targetKey = jsonName ? (nameMap[k] ?? k) : k;\n                        if (!(targetKey in out)) {\n                            out[targetKey] = this._write(15, v);\n                        }\n                    }\n                }\n                return out;\n            }\n            if (Array.isArray(value) && ns.isListSchema()) {\n                const listMember = ns.getValueSchema();\n                const out = [];\n                const sparse = !!ns.getMergedTraits().sparse;\n                for (const item of value) {\n                    if (sparse || item != null) {\n                        out.push(this._write(listMember, item));\n                    }\n                }\n                return out;\n            }\n            if (ns.isMapSchema()) {\n                const mapMember = ns.getValueSchema();\n                const out = {};\n                const sparse = !!ns.getMergedTraits().sparse;\n                for (const _k in value) {\n                    const _v = value[_k];\n                    if (sparse || _v != null) {\n                        if (_k === \"__proto__\") {\n                            writeKey(out);\n                        }\n                        out[_k] = this._write(mapMember, _v);\n                    }\n                }\n                return out;\n            }\n            if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) {\n                if (ns === this.rootSchema) {\n                    return value;\n                }\n                return (this.serdeContext?.base64Encoder ?? toBase64)(value);\n            }\n            if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) {\n                const format = determineTimestampFormat(ns, this.settings);\n                switch (format) {\n                    case 5:\n                        return value.toISOString().replace(\".000Z\", \"Z\");\n                    case 6:\n                        return dateToUtcString(value);\n                    case 7:\n                        return value.getTime() / 1000;\n                    default:\n                        console.warn(\"Missing timestamp format, using epoch seconds\", value);\n                        return value.getTime() / 1000;\n                }\n            }\n            if (value instanceof NumericValue) {\n                this.useReplacer = true;\n            }\n        }\n        if (value === null && container?.isStructSchema()) {\n            return void 0;\n        }\n        if (ns.isStringSchema()) {\n            if (typeof value === \"undefined\" && ns.isIdempotencyToken()) {\n                return generateIdempotencyToken();\n            }\n            const mediaType = ns.getMergedTraits().mediaType;\n            if (value != null && mediaType) {\n                const isJson = mediaType === \"application/json\" || mediaType.endsWith(\"+json\");\n                if (isJson) {\n                    return LazyJsonString.from(value);\n                }\n            }\n            return value;\n        }\n        if (typeof value === \"number\" && ns.isNumericSchema()) {\n            if (Math.abs(value) === Infinity || isNaN(value)) {\n                return String(value);\n            }\n            return value;\n        }\n        if (typeof value === \"string\" && ns.isBlobSchema()) {\n            if (ns === this.rootSchema) {\n                return value;\n            }\n            return (this.serdeContext?.base64Encoder ?? toBase64)(value);\n        }\n        if (typeof value === \"bigint\") {\n            this.useReplacer = true;\n        }\n        if (ns.isDocumentSchema()) {\n            if (isObject) {\n                const out = Array.isArray(value) ? [] : {};\n                for (const k in value) {\n                    const v = value[k];\n                    if (k === \"__proto__\") {\n                        writeKey(out);\n                    }\n                    if (v instanceof NumericValue) {\n                        this.useReplacer = true;\n                        out[k] = v;\n                    }\n                    else {\n                        out[k] = this._write(ns, v);\n                    }\n                }\n                return out;\n            }\n            else {\n                return structuredClone(value);\n            }\n        }\n        return value;\n    }\n}\n","import { SerdeContextConfig } from \"../ConfigurableSerdeContext\";\nimport { JsonShapeDeserializer } from \"./JsonShapeDeserializer\";\nimport { JsonShapeSerializer } from \"./JsonShapeSerializer\";\nexport class JsonCodec extends SerdeContextConfig {\n    settings;\n    constructor(settings) {\n        super();\n        this.settings = settings;\n    }\n    createSerializer() {\n        const serializer = new JsonShapeSerializer(this.settings);\n        serializer.setSerdeContext(this.serdeContext);\n        return serializer;\n    }\n    createDeserializer() {\n        const deserializer = new JsonShapeDeserializer(this.settings);\n        deserializer.setSerdeContext(this.serdeContext);\n        return deserializer;\n    }\n}\n","import { HttpBindingProtocol, HttpInterceptingShapeDeserializer, HttpInterceptingShapeSerializer, } from \"@smithy/core/protocols\";\nimport { NormalizedSchema } from \"@smithy/core/schema\";\nimport { ProtocolLib } from \"../ProtocolLib\";\nimport { JsonCodec } from \"./JsonCodec\";\nimport { loadRestJsonErrorCode } from \"./parseJsonBody\";\nexport class AwsRestJsonProtocol extends HttpBindingProtocol {\n    serializer;\n    deserializer;\n    codec;\n    mixin = new ProtocolLib();\n    constructor({ defaultNamespace, errorTypeRegistries, }) {\n        super({\n            defaultNamespace,\n            errorTypeRegistries,\n        });\n        const settings = {\n            timestampFormat: {\n                useTrait: true,\n                default: 7,\n            },\n            httpBindings: true,\n            jsonName: true,\n        };\n        this.codec = new JsonCodec(settings);\n        this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings);\n        this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings);\n    }\n    getShapeId() {\n        return \"aws.protocols#restJson1\";\n    }\n    getPayloadCodec() {\n        return this.codec;\n    }\n    setSerdeContext(serdeContext) {\n        this.codec.setSerdeContext(serdeContext);\n        super.setSerdeContext(serdeContext);\n    }\n    async serializeRequest(operationSchema, input, context) {\n        const request = await super.serializeRequest(operationSchema, input, context);\n        const inputSchema = NormalizedSchema.of(operationSchema.input);\n        if (!request.headers[\"content-type\"]) {\n            const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema);\n            if (contentType) {\n                request.headers[\"content-type\"] = contentType;\n            }\n        }\n        if (request.body == null && request.headers[\"content-type\"] === this.getDefaultContentType()) {\n            request.body = \"{}\";\n        }\n        return request;\n    }\n    async deserializeResponse(operationSchema, context, response) {\n        const output = await super.deserializeResponse(operationSchema, context, response);\n        const outputSchema = NormalizedSchema.of(operationSchema.output);\n        for (const [name, member] of outputSchema.structIterator()) {\n            if (member.getMemberTraits().httpPayload && !(name in output)) {\n                output[name] = null;\n            }\n        }\n        return output;\n    }\n    async handleError(operationSchema, context, response, dataObject, metadata) {\n        const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? \"Unknown\";\n        this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace);\n        const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata);\n        const ns = NormalizedSchema.of(errorSchema);\n        const message = dataObject.message ?? dataObject.Message ?? \"UnknownError\";\n        const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error;\n        const exception = new ErrorCtor({});\n        await this.deserializeHttpMessage(errorSchema, context, response, dataObject);\n        const output = {};\n        const errorDeserializer = this.codec.createDeserializer();\n        for (const [name, member] of ns.structIterator()) {\n            const target = member.getMergedTraits().jsonName ?? name;\n            output[name] = errorDeserializer.readObject(member, dataObject[target]);\n        }\n        throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, {\n            $fault: ns.getMergedTraits().error,\n            message,\n        }, output), dataObject);\n    }\n    getDefaultContentType() {\n        return \"application/json\";\n    }\n}\n","function writeKey(obj) {\n    Object.defineProperty(obj, \"__proto__\", { value: undefined, writable: true, enumerable: true, configurable: true });\n}\nexport function parseXML(xml) {\n    const state = new AwsXmlParser(xml);\n    return state.parse();\n}\nclass AwsXmlParser {\n    x;\n    i = 0;\n    z;\n    constructor(x) {\n        this.x = x;\n        this.x = x.replace(/\\r\\n?/g, \"\\n\");\n        this.z = this.x.length;\n    }\n    parse() {\n        const p = this;\n        const { z } = p;\n        while (p.i < z) {\n            p.trim();\n            if (p.i >= z) {\n                break;\n            }\n            if (p.isNext(\"<?\")) {\n                p.readTo(\"?>\");\n                p.trim();\n            }\n            else if (p.isNext(\"<!--\")) {\n                p.readTo(\"-->\");\n                p.trim();\n            }\n            else if (p.isNext(\"<!DOCTYPE\", false)) {\n                p.skipDoctype();\n                p.trim();\n            }\n            else if (p.x[p.i] === \"<\") {\n                const root = p.parseTag();\n                return { [root.tag]: root.value };\n            }\n            else {\n                throw new Error(\"@aws-sdk XML parse error: unexpected content.\");\n            }\n        }\n        throw new Error(\"@aws-sdk XML parse error: no root element.\");\n    }\n    isNext(s, caseSensitive = true) {\n        const p = this;\n        if (caseSensitive) {\n            return p.x.startsWith(s, p.i);\n        }\n        return p.x.toLowerCase().startsWith(s.toLowerCase(), p.i);\n    }\n    readTo(stop) {\n        const p = this;\n        const _i = p.x.indexOf(stop, p.i);\n        if (_i === -1) {\n            throw new Error(`@aws-sdk XML parse error: expected \"${stop}\" not found.`);\n        }\n        const result = p.x.slice(p.i, _i);\n        p.i = _i + stop.length;\n        return result;\n    }\n    trim() {\n        const p = this;\n        while (p.i < p.z && \" \\t\\r\\n\".includes(p.x[p.i])) {\n            ++p.i;\n        }\n    }\n    readAttrValue() {\n        const p = this;\n        const quote = p.x[p.i];\n        ++p.i;\n        let value = \"\";\n        while (p.i < p.z && p.x[p.i] !== quote) {\n            value += p.x[p.i++];\n        }\n        ++p.i;\n        return p.decodeEntities(value);\n    }\n    parseTag() {\n        const p = this;\n        ++p.i;\n        let tag = \"\";\n        while (p.i < p.z && !\" \\t\\r\\n>/\".includes(p.x[p.i])) {\n            tag += p.x[p.i++];\n        }\n        let hasAttrs = false;\n        const attrs = {};\n        while (p.i < p.z) {\n            p.trim();\n            if (\">/\".includes(p.x[p.i])) {\n                break;\n            }\n            let name = \"\";\n            while (p.i < p.z && !\"= \\t\\r\\n>/?\".includes(p.x[p.i])) {\n                name += p.x[p.i++];\n            }\n            p.trim();\n            if (p.x[p.i] !== \"=\") {\n                break;\n            }\n            ++p.i;\n            p.trim();\n            if (name === \"__proto__\") {\n                writeKey(attrs);\n            }\n            attrs[name] = p.readAttrValue();\n            hasAttrs = true;\n        }\n        if (p.i >= p.z) {\n            throw new Error(\"@aws-sdk XML parse error: unexpected end of input.\");\n        }\n        if (p.x[p.i] === \"/\") {\n            ++p.i;\n            if (p.i >= p.z || p.x[p.i] !== \">\") {\n                throw new Error(\"@aws-sdk XML parse error: expected > at the end of self-closing tag.\");\n            }\n            ++p.i;\n            return { tag, value: hasAttrs ? attrs : \"\" };\n        }\n        if (p.x[p.i] !== \">\") {\n            throw new Error(\"@aws-sdk XML parse error: expected > at the end of opening tag.\");\n        }\n        ++p.i;\n        const textParts = [];\n        const childTags = [];\n        let hasElementChild = false;\n        while (p.i < p.z) {\n            if (p.isNext(\"</\")) {\n                break;\n            }\n            if (p.x[p.i] === \"<\") {\n                if (p.isNext(\"<!--\")) {\n                    p.readTo(\"-->\");\n                }\n                else if (p.isNext(\"<![CDATA[\")) {\n                    p.i += 9;\n                    textParts.push(p.readTo(\"]]>\"));\n                }\n                else if (p.isNext(\"<?\")) {\n                    p.readTo(\"?>\");\n                }\n                else {\n                    hasElementChild = true;\n                    childTags.push(p.parseTag());\n                }\n            }\n            else {\n                let text = \"\";\n                while (p.i < p.z && p.x[p.i] !== \"<\") {\n                    text += p.x[p.i++];\n                }\n                textParts.push(p.decodeEntities(text));\n            }\n        }\n        if (!p.isNext(\"</\")) {\n            throw new Error(`@aws-sdk XML parse error: missing closing tag </${tag}>.`);\n        }\n        p.i += 2;\n        const closeTag = p.readTo(\">\").trim();\n        if (closeTag !== tag) {\n            throw new Error(`@aws-sdk XML parse error: mismatched tags <${tag}> and </${closeTag}>.`);\n        }\n        if (!hasAttrs && textParts.length === 0 && !hasElementChild) {\n            return { tag, value: \"\" };\n        }\n        if (!hasAttrs && !hasElementChild) {\n            const text = textParts.length === 1 ? textParts[0] : textParts.join(\"\");\n            if (text.trim() === \"\" && text.includes(\"\\n\")) {\n                return { tag, value: \"\" };\n            }\n            return { tag, value: text };\n        }\n        const obj = {};\n        for (const text of textParts) {\n            if (text.trim() === \"\" && text.includes(\"\\n\")) {\n                continue;\n            }\n            obj[\"#text\"] = \"#text\" in obj ? obj[\"#text\"] + text : text;\n        }\n        for (const child of childTags) {\n            if (child.tag === \"__proto__\") {\n                writeKey(obj);\n            }\n            if (child.tag in obj) {\n                if (Array.isArray(obj[child.tag])) {\n                    obj[child.tag].push(child.value);\n                }\n                else {\n                    obj[child.tag] = [obj[child.tag], child.value];\n                }\n            }\n            else {\n                obj[child.tag] = child.value;\n            }\n        }\n        for (const [k, v] of Object.entries(attrs)) {\n            if (k === \"__proto__\") {\n                writeKey(obj);\n            }\n            obj[k] = v;\n        }\n        return { tag, value: obj };\n    }\n    static ENTITIES = {\n        amp: \"&\",\n        lt: \"<\",\n        gt: \">\",\n        quot: '\"',\n        apos: \"'\",\n    };\n    skipDoctype() {\n        const p = this;\n        p.i += 9;\n        let depth = 0;\n        while (p.i < p.z) {\n            const c = p.x[p.i];\n            if (c === \"[\") {\n                ++depth;\n            }\n            else if (c === \"]\") {\n                --depth;\n            }\n            else if (c === \">\" && depth === 0) {\n                ++p.i;\n                return;\n            }\n            ++p.i;\n        }\n        throw new Error(\"@aws-sdk XML parse error: unclosed DOCTYPE.\");\n    }\n    decodeEntities(s) {\n        return s.replace(/&(?:#x([0-9a-fA-F]{1,6})|#(\\d{1,7})|([a-zA-Z][a-zA-Z0-9]{0,30}));/g, (_, hex, dec, named) => {\n            if (hex) {\n                return String.fromCharCode(parseInt(hex, 16));\n            }\n            if (dec) {\n                return String.fromCharCode(parseInt(dec, 10));\n            }\n            return AwsXmlParser.ENTITIES[named] ?? \"\";\n        });\n    }\n}\n","import { parseXML } from \"@aws-sdk/xml-builder\";\nimport { getValueFromTextNode } from \"@smithy/core/client\";\nimport { FromStringShapeDeserializer } from \"@smithy/core/protocols\";\nimport { NormalizedSchema } from \"@smithy/core/schema\";\nimport { toUtf8 } from \"@smithy/core/serde\";\nimport { SerdeContextConfig } from \"../ConfigurableSerdeContext\";\nimport { UnionSerde } from \"../UnionSerde\";\nimport { writeKey } from \"../writeKey\";\nexport class XmlShapeDeserializer extends SerdeContextConfig {\n    settings;\n    stringDeserializer;\n    constructor(settings) {\n        super();\n        this.settings = settings;\n        this.stringDeserializer = new FromStringShapeDeserializer(settings);\n    }\n    setSerdeContext(serdeContext) {\n        this.serdeContext = serdeContext;\n        this.stringDeserializer.setSerdeContext(serdeContext);\n    }\n    read(schema, bytes, key) {\n        const ns = NormalizedSchema.of(schema);\n        const memberSchemas = ns.getMemberSchemas();\n        const isEventPayload = ns.isStructSchema() &&\n            ns.isMemberSchema() &&\n            !!Object.values(memberSchemas).find((memberNs) => {\n                return !!memberNs.getMemberTraits().eventPayload;\n            });\n        if (isEventPayload) {\n            const output = {};\n            const memberName = Object.keys(memberSchemas)[0];\n            const eventMemberSchema = memberSchemas[memberName];\n            if (eventMemberSchema.isBlobSchema()) {\n                output[memberName] = bytes;\n            }\n            else {\n                output[memberName] = this.read(memberSchemas[memberName], bytes);\n            }\n            return output;\n        }\n        const xmlString = (this.serdeContext?.utf8Encoder ?? toUtf8)(bytes);\n        const parsedObject = this.parseXml(xmlString);\n        return this.readSchema(schema, key ? parsedObject[key] : parsedObject);\n    }\n    readSchema(_schema, value) {\n        const ns = NormalizedSchema.of(_schema);\n        if (ns.isUnitSchema()) {\n            return;\n        }\n        const traits = ns.getMergedTraits();\n        if (ns.isListSchema() && !Array.isArray(value)) {\n            return this.readSchema(ns, [value]);\n        }\n        if (value == null) {\n            return value;\n        }\n        if (typeof value === \"object\") {\n            const flat = !!traits.xmlFlattened;\n            if (ns.isListSchema()) {\n                const listValue = ns.getValueSchema();\n                const buffer = [];\n                const sourceKey = listValue.getMergedTraits().xmlName ?? \"member\";\n                const source = flat ? value : (value[0] ?? value)[sourceKey];\n                if (source == null) {\n                    return buffer;\n                }\n                const sourceArray = Array.isArray(source) ? source : [source];\n                for (const v of sourceArray) {\n                    buffer.push(this.readSchema(listValue, v));\n                }\n                return buffer;\n            }\n            const buffer = {};\n            if (ns.isMapSchema()) {\n                const keyNs = ns.getKeySchema();\n                const memberNs = ns.getValueSchema();\n                let entries;\n                if (flat) {\n                    entries = Array.isArray(value) ? value : [value];\n                }\n                else {\n                    entries = Array.isArray(value.entry) ? value.entry : [value.entry];\n                }\n                const keyProperty = keyNs.getMergedTraits().xmlName ?? \"key\";\n                const valueProperty = memberNs.getMergedTraits().xmlName ?? \"value\";\n                for (const entry of entries) {\n                    const key = entry[keyProperty];\n                    const value = entry[valueProperty];\n                    if (key === \"__proto__\") {\n                        writeKey(buffer);\n                    }\n                    buffer[key] = this.readSchema(memberNs, value);\n                }\n                return buffer;\n            }\n            if (ns.isStructSchema()) {\n                const union = ns.isUnionSchema();\n                let unionSerde;\n                if (union) {\n                    unionSerde = new UnionSerde(value, buffer);\n                }\n                for (const [memberName, memberSchema] of ns.structIterator()) {\n                    const memberTraits = memberSchema.getMergedTraits();\n                    const xmlObjectKey = !memberTraits.httpPayload\n                        ? (memberSchema.getMemberTraits().xmlName ?? memberName)\n                        : (memberTraits.xmlName ?? memberSchema.getName());\n                    if (union) {\n                        unionSerde.mark(xmlObjectKey);\n                    }\n                    if (value[xmlObjectKey] != null) {\n                        buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]);\n                    }\n                }\n                if (union) {\n                    unionSerde.writeUnknown();\n                }\n                return buffer;\n            }\n            if (ns.isDocumentSchema()) {\n                return value;\n            }\n            throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`);\n        }\n        if (ns.isListSchema()) {\n            return [];\n        }\n        if (ns.isMapSchema() || ns.isStructSchema()) {\n            return {};\n        }\n        return this.stringDeserializer.read(ns, value);\n    }\n    parseXml(xml) {\n        if (xml.length) {\n            let parsedObj;\n            try {\n                parsedObj = parseXML(xml);\n            }\n            catch (e) {\n                if (e && typeof e === \"object\") {\n                    Object.defineProperty(e, \"$responseBodyText\", {\n                        value: xml,\n                    });\n                }\n                throw e;\n            }\n            const textNodeName = \"#text\";\n            const key = Object.keys(parsedObj)[0];\n            const parsedObjToReturn = parsedObj[key];\n            if (parsedObjToReturn[textNodeName]) {\n                parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n                delete parsedObjToReturn[textNodeName];\n            }\n            return getValueFromTextNode(parsedObjToReturn);\n        }\n        return {};\n    }\n}\n","import { determineTimestampFormat, extendedEncodeURIComponent } from \"@smithy/core/protocols\";\nimport { NormalizedSchema } from \"@smithy/core/schema\";\nimport { dateToUtcString } from \"@smithy/core/serde\";\nimport { generateIdempotencyToken, NumericValue, toBase64 } from \"@smithy/core/serde\";\nimport { SerdeContextConfig } from \"../ConfigurableSerdeContext\";\nexport class QueryShapeSerializer extends SerdeContextConfig {\n    settings;\n    buffer;\n    constructor(settings) {\n        super();\n        this.settings = settings;\n    }\n    write(schema, value, prefix = \"\") {\n        if (this.buffer === undefined) {\n            this.buffer = \"\";\n        }\n        const ns = NormalizedSchema.of(schema);\n        if (prefix && !prefix.endsWith(\".\")) {\n            prefix += \".\";\n        }\n        if (ns.isBlobSchema()) {\n            if (typeof value === \"string\" || value instanceof Uint8Array) {\n                this.writeKey(prefix);\n                this.writeValue((this.serdeContext?.base64Encoder ?? toBase64)(value));\n            }\n        }\n        else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) {\n            if (value != null) {\n                this.writeKey(prefix);\n                this.writeValue(String(value));\n            }\n            else if (ns.isIdempotencyToken()) {\n                this.writeKey(prefix);\n                this.writeValue(generateIdempotencyToken());\n            }\n        }\n        else if (ns.isBigIntegerSchema()) {\n            if (value != null) {\n                this.writeKey(prefix);\n                this.writeValue(String(value));\n            }\n        }\n        else if (ns.isBigDecimalSchema()) {\n            if (value != null) {\n                this.writeKey(prefix);\n                this.writeValue(value instanceof NumericValue ? value.string : String(value));\n            }\n        }\n        else if (ns.isTimestampSchema()) {\n            if (value instanceof Date) {\n                this.writeKey(prefix);\n                const format = determineTimestampFormat(ns, this.settings);\n                switch (format) {\n                    case 5:\n                        this.writeValue(value.toISOString().replace(\".000Z\", \"Z\"));\n                        break;\n                    case 6:\n                        this.writeValue(dateToUtcString(value));\n                        break;\n                    case 7:\n                        this.writeValue(String(value.getTime() / 1000));\n                        break;\n                }\n            }\n        }\n        else if (ns.isDocumentSchema()) {\n            if (Array.isArray(value)) {\n                this.write(64 | 15, value, prefix);\n            }\n            else if (value instanceof Date) {\n                this.write(4, value, prefix);\n            }\n            else if (value instanceof Uint8Array) {\n                this.write(21, value, prefix);\n            }\n            else if (value && typeof value === \"object\") {\n                this.write(128 | 15, value, prefix);\n            }\n            else {\n                this.writeKey(prefix);\n                this.writeValue(String(value));\n            }\n        }\n        else if (ns.isListSchema()) {\n            if (Array.isArray(value)) {\n                if (value.length === 0) {\n                    if (this.settings.serializeEmptyLists) {\n                        this.writeKey(prefix);\n                        this.writeValue(\"\");\n                    }\n                }\n                else {\n                    const member = ns.getValueSchema();\n                    const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened;\n                    let i = 1;\n                    for (const item of value) {\n                        if (item == null) {\n                            continue;\n                        }\n                        const traits = member.getMergedTraits();\n                        const suffix = this.getKey(\"member\", traits.xmlName, traits.ec2QueryName);\n                        const key = flat ? `${prefix}${i}` : `${prefix}${suffix}.${i}`;\n                        this.write(member, item, key);\n                        ++i;\n                    }\n                }\n            }\n        }\n        else if (ns.isMapSchema()) {\n            if (value && typeof value === \"object\") {\n                const keySchema = ns.getKeySchema();\n                const memberSchema = ns.getValueSchema();\n                const flat = ns.getMergedTraits().xmlFlattened;\n                let i = 1;\n                for (const k in value) {\n                    const v = value[k];\n                    if (v == null) {\n                        continue;\n                    }\n                    const keyTraits = keySchema.getMergedTraits();\n                    const keySuffix = this.getKey(\"key\", keyTraits.xmlName, keyTraits.ec2QueryName);\n                    const key = flat ? `${prefix}${i}.${keySuffix}` : `${prefix}entry.${i}.${keySuffix}`;\n                    const valTraits = memberSchema.getMergedTraits();\n                    const valueSuffix = this.getKey(\"value\", valTraits.xmlName, valTraits.ec2QueryName);\n                    const valueKey = flat ? `${prefix}${i}.${valueSuffix}` : `${prefix}entry.${i}.${valueSuffix}`;\n                    this.write(keySchema, k, key);\n                    this.write(memberSchema, v, valueKey);\n                    ++i;\n                }\n            }\n        }\n        else if (ns.isStructSchema()) {\n            if (value && typeof value === \"object\") {\n                let didWriteMember = false;\n                for (const [memberName, member] of ns.structIterator()) {\n                    if (value[memberName] == null && !member.isIdempotencyToken()) {\n                        continue;\n                    }\n                    const traits = member.getMergedTraits();\n                    const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, \"struct\");\n                    const key = `${prefix}${suffix}`;\n                    this.write(member, value[memberName], key);\n                    didWriteMember = true;\n                }\n                if (!didWriteMember && ns.isUnionSchema()) {\n                    const { $unknown } = value;\n                    if (Array.isArray($unknown)) {\n                        const [k, v] = $unknown;\n                        const key = `${prefix}${k}`;\n                        this.write(15, v, key);\n                    }\n                }\n            }\n        }\n        else if (ns.isUnitSchema()) {\n        }\n        else {\n            throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`);\n        }\n    }\n    flush() {\n        if (this.buffer === undefined) {\n            throw new Error(\"@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer.\");\n        }\n        const str = this.buffer;\n        delete this.buffer;\n        return str;\n    }\n    getKey(memberName, xmlName, ec2QueryName, keySource) {\n        const { ec2, capitalizeKeys } = this.settings;\n        if (ec2 && ec2QueryName) {\n            return ec2QueryName;\n        }\n        const key = xmlName ?? memberName;\n        if (capitalizeKeys && keySource === \"struct\") {\n            return key[0].toUpperCase() + key.slice(1);\n        }\n        return key;\n    }\n    writeKey(key) {\n        if (key.endsWith(\".\")) {\n            key = key.slice(0, key.length - 1);\n        }\n        this.buffer += `&${extendedEncodeURIComponent(key)}=`;\n    }\n    writeValue(value) {\n        this.buffer += extendedEncodeURIComponent(value);\n    }\n}\n","import { collectBody, RpcProtocol } from \"@smithy/core/protocols\";\nimport { deref, NormalizedSchema } from \"@smithy/core/schema\";\nimport { ProtocolLib } from \"../ProtocolLib\";\nimport { XmlShapeDeserializer } from \"../xml/XmlShapeDeserializer\";\nimport { QueryShapeSerializer } from \"./QueryShapeSerializer\";\nexport class AwsQueryProtocol extends RpcProtocol {\n    options;\n    serializer;\n    deserializer;\n    mixin = new ProtocolLib();\n    constructor(options) {\n        super({\n            defaultNamespace: options.defaultNamespace,\n            errorTypeRegistries: options.errorTypeRegistries,\n        });\n        this.options = options;\n        const settings = {\n            timestampFormat: {\n                useTrait: true,\n                default: 5,\n            },\n            httpBindings: false,\n            xmlNamespace: options.xmlNamespace,\n            serviceNamespace: options.defaultNamespace,\n            serializeEmptyLists: true,\n        };\n        this.serializer = new QueryShapeSerializer(settings);\n        this.deserializer = new XmlShapeDeserializer(settings);\n    }\n    getShapeId() {\n        return \"aws.protocols#awsQuery\";\n    }\n    setSerdeContext(serdeContext) {\n        this.serializer.setSerdeContext(serdeContext);\n        this.deserializer.setSerdeContext(serdeContext);\n    }\n    getPayloadCodec() {\n        throw new Error(\"AWSQuery protocol has no payload codec.\");\n    }\n    async serializeRequest(operationSchema, input, context) {\n        const request = await super.serializeRequest(operationSchema, input, context);\n        if (!request.path.endsWith(\"/\")) {\n            request.path += \"/\";\n        }\n        request.headers[\"content-type\"] = \"application/x-www-form-urlencoded\";\n        if (deref(operationSchema.input) === \"unit\" || !request.body) {\n            request.body = \"\";\n        }\n        const action = operationSchema.name.split(\"#\")[1] ?? operationSchema.name;\n        request.body = `Action=${action}&Version=${this.options.version}` + request.body;\n        if (request.body.endsWith(\"&\")) {\n            request.body = request.body.slice(-1);\n        }\n        return request;\n    }\n    async deserializeResponse(operationSchema, context, response) {\n        const deserializer = this.deserializer;\n        const ns = NormalizedSchema.of(operationSchema.output);\n        const dataObject = {};\n        if (response.statusCode >= 300) {\n            const bytes = await collectBody(response.body, context);\n            if (bytes.byteLength > 0) {\n                Object.assign(dataObject, await deserializer.read(15, bytes));\n            }\n            await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response));\n        }\n        for (const header in response.headers) {\n            const value = response.headers[header];\n            delete response.headers[header];\n            response.headers[header.toLowerCase()] = value;\n        }\n        const shortName = operationSchema.name.split(\"#\")[1] ?? operationSchema.name;\n        const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + \"Result\" : undefined;\n        const bytes = await collectBody(response.body, context);\n        if (bytes.byteLength > 0) {\n            Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey));\n        }\n        dataObject.$metadata = this.deserializeMetadata(response);\n        return dataObject;\n    }\n    useNestedResult() {\n        return true;\n    }\n    async handleError(operationSchema, context, response, dataObject, metadata) {\n        const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? \"Unknown\";\n        this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace);\n        const errorData = this.loadQueryError(dataObject) ?? {};\n        const message = this.loadQueryErrorMessage(dataObject);\n        errorData.message = message;\n        errorData.Error = {\n            Type: errorData.Type,\n            Code: errorData.Code,\n            Message: message,\n        };\n        const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError);\n        const ns = NormalizedSchema.of(errorSchema);\n        const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error;\n        const exception = new ErrorCtor({});\n        const output = {\n            Type: errorData.Error.Type,\n            Code: errorData.Error.Code,\n            Error: errorData.Error,\n        };\n        for (const [name, member] of ns.structIterator()) {\n            const target = member.getMergedTraits().xmlName ?? name;\n            const value = errorData[target] ?? dataObject[target];\n            output[name] = this.deserializer.readSchema(member, value);\n        }\n        throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, {\n            $fault: ns.getMergedTraits().error,\n            message,\n        }, output), dataObject);\n    }\n    loadQueryErrorCode(output, data) {\n        const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code;\n        if (code !== undefined) {\n            return code;\n        }\n        if (output.statusCode == 404) {\n            return \"NotFound\";\n        }\n    }\n    loadQueryError(data) {\n        return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error;\n    }\n    loadQueryErrorMessage(data) {\n        const errorData = this.loadQueryError(data);\n        return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? \"Unknown\";\n    }\n    getDefaultContentType() {\n        return \"application/x-www-form-urlencoded\";\n    }\n}\n","export const signatureV4CrtContainer = {\n    CrtSignerV4: null,\n};\n","import { SignatureV4 } from \"@smithy/signature-v4\";\nexport const SESSION_TOKEN_QUERY_PARAM = \"X-Amz-S3session-Token\";\nexport const SESSION_TOKEN_HEADER = SESSION_TOKEN_QUERY_PARAM.toLowerCase();\nexport class SignatureV4SignWithCredentials extends SignatureV4 {\n    async signWithCredentials(requestToSign, credentials, options) {\n        const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);\n        requestToSign.headers[SESSION_TOKEN_HEADER] = credentials.sessionToken;\n        const privateAccess = this;\n        setSingleOverride(privateAccess, credentialsWithoutSessionToken);\n        return privateAccess.signRequest(requestToSign, options ?? {});\n    }\n    async presignWithCredentials(requestToSign, credentials, options) {\n        const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);\n        delete requestToSign.headers[SESSION_TOKEN_HEADER];\n        requestToSign.headers[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;\n        requestToSign.query = requestToSign.query ?? {};\n        requestToSign.query[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;\n        const privateAccess = this;\n        setSingleOverride(privateAccess, credentialsWithoutSessionToken);\n        return this.presign(requestToSign, options);\n    }\n}\nfunction getCredentialsWithoutSessionToken(credentials) {\n    return {\n        accessKeyId: credentials.accessKeyId,\n        secretAccessKey: credentials.secretAccessKey,\n        expiration: credentials.expiration,\n    };\n}\nfunction setSingleOverride(privateAccess, credentialsWithoutSessionToken) {\n    const currentCredentialProvider = privateAccess.credentialProvider;\n    privateAccess.credentialProvider = () => {\n        privateAccess.credentialProvider = currentCredentialProvider;\n        return Promise.resolve(credentialsWithoutSessionToken);\n    };\n}\n","import { signatureV4aContainer } from \"@smithy/signature-v4\";\nimport { signatureV4CrtContainer } from \"./signature-v4-crt-container\";\nimport { SignatureV4SignWithCredentials } from \"./SignatureV4SignWithCredentials\";\nexport class SignatureV4MultiRegion {\n    sigv4aSigner;\n    sigv4Signer;\n    signerOptions;\n    static sigv4aDependency() {\n        if (typeof signatureV4CrtContainer.CrtSignerV4 === \"function\") {\n            return \"crt\";\n        }\n        else if (typeof signatureV4aContainer.SignatureV4a === \"function\") {\n            return \"js\";\n        }\n        return \"none\";\n    }\n    constructor(options) {\n        this.sigv4Signer = new SignatureV4SignWithCredentials(options);\n        this.signerOptions = options;\n    }\n    async sign(requestToSign, options = {}) {\n        if (options.signingRegion === \"*\") {\n            return this.getSigv4aSigner().sign(requestToSign, options);\n        }\n        return this.sigv4Signer.sign(requestToSign, options);\n    }\n    async signWithCredentials(requestToSign, credentials, options = {}) {\n        if (options.signingRegion === \"*\") {\n            const signer = this.getSigv4aSigner();\n            const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4;\n            if (CrtSignerV4 && signer instanceof CrtSignerV4) {\n                return signer.signWithCredentials(requestToSign, credentials, options);\n            }\n            else {\n                throw new Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` +\n                    `Please check whether you have installed the \"@aws-sdk/signature-v4-crt\" package explicitly. ` +\n                    `You must also register the package by calling [require(\"@aws-sdk/signature-v4-crt\");] ` +\n                    `or an ESM equivalent such as [import \"@aws-sdk/signature-v4-crt\";]. ` +\n                    `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`);\n            }\n        }\n        return this.sigv4Signer.signWithCredentials(requestToSign, credentials, options);\n    }\n    async presign(originalRequest, options = {}) {\n        if (options.signingRegion === \"*\") {\n            const signer = this.getSigv4aSigner();\n            const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4;\n            if (CrtSignerV4 && signer instanceof CrtSignerV4) {\n                return signer.presign(originalRequest, options);\n            }\n            else {\n                throw new Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` +\n                    `Please check whether you have installed the \"@aws-sdk/signature-v4-crt\" package explicitly. ` +\n                    `You must also register the package by calling [require(\"@aws-sdk/signature-v4-crt\");] ` +\n                    `or an ESM equivalent such as [import \"@aws-sdk/signature-v4-crt\";]. ` +\n                    `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`);\n            }\n        }\n        return this.sigv4Signer.presign(originalRequest, options);\n    }\n    async presignWithCredentials(originalRequest, credentials, options = {}) {\n        if (options.signingRegion === \"*\") {\n            throw new Error(\"Method presignWithCredentials is not supported for [signingRegion=*].\");\n        }\n        return this.sigv4Signer.presignWithCredentials(originalRequest, credentials, options);\n    }\n    getSigv4aSigner() {\n        if (!this.sigv4aSigner) {\n            const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4;\n            const JsSigV4aSigner = signatureV4aContainer.SignatureV4a;\n            if (this.signerOptions.runtime === \"node\") {\n                if (!CrtSignerV4 && !JsSigV4aSigner) {\n                    throw new Error(\"Neither CRT nor JS SigV4a implementation is available. \" +\n                        \"Please load either @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a. \" +\n                        \"For more information please go to \" +\n                        \"https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt\");\n                }\n                if (CrtSignerV4 && typeof CrtSignerV4 === \"function\") {\n                    this.sigv4aSigner = new CrtSignerV4({\n                        ...this.signerOptions,\n                        signingAlgorithm: 1,\n                    });\n                }\n                else if (JsSigV4aSigner && typeof JsSigV4aSigner === \"function\") {\n                    this.sigv4aSigner = new JsSigV4aSigner({\n                        ...this.signerOptions,\n                    });\n                }\n                else {\n                    throw new Error(\"Available SigV4a implementation is not a valid constructor. \" +\n                        \"Please ensure you've properly imported @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a.\" +\n                        \"For more information please go to \" +\n                        \"https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt\");\n                }\n            }\n            else {\n                if (!JsSigV4aSigner || typeof JsSigV4aSigner !== \"function\") {\n                    throw new Error(\"JS SigV4a implementation is not available or not a valid constructor. \" +\n                        \"Please check whether you have installed the @aws-sdk/signature-v4a package explicitly. The CRT implementation is not available for browsers. \" +\n                        \"You must also register the package by calling [require('@aws-sdk/signature-v4a');] \" +\n                        \"or an ESM equivalent such as [import '@aws-sdk/signature-v4a';]. \" +\n                        \"For more information please go to \" +\n                        \"https://github.com/aws/aws-sdk-js-v3#using-javascript-non-crt-implementation-of-sigv4a\");\n                }\n                this.sigv4aSigner = new JsSigV4aSigner({\n                    ...this.signerOptions,\n                });\n            }\n        }\n        return this.sigv4aSigner;\n    }\n}\n","import * as zlib from \"node:zlib\";\nimport { Crc32Js } from \"./Crc32Js\";\nconst zlibCrc32 = typeof zlib.crc32 === \"function\" ? zlib.crc32 : undefined;\nexport const Crc32Node = zlibCrc32 ? buildNativeClass(zlibCrc32) : Crc32Js;\nfunction buildNativeClass(nativeCrc32) {\n    return class Crc32Node {\n        digestLength = 4;\n        value = 0;\n        update(data) {\n            this.value = nativeCrc32(data, this.value);\n        }\n        digestSync() {\n            return this.value >>> 0;\n        }\n        async digest() {\n            const out = new Uint8Array(4);\n            new DataView(out.buffer).setUint32(0, this.digestSync(), false);\n            return out;\n        }\n        reset() {\n            this.value = 0;\n        }\n    };\n}\n","const CRC32_TABLE = new Uint32Array(256);\nfor (let i = 0; i < 256; ++i) {\n    let c = i;\n    for (let j = 0; j < 8; ++j) {\n        c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n    }\n    CRC32_TABLE[i] = c >>> 0;\n}\nconst ONES = 0xffff_ffff;\nexport class Crc32Js {\n    digestLength = 4;\n    checksum = ONES;\n    update(data) {\n        for (let i = 0; i < data.length; ++i) {\n            this.checksum = (this.checksum >>> 8) ^ CRC32_TABLE[(this.checksum ^ data[i]) & 0xff];\n        }\n    }\n    digestSync() {\n        return (this.checksum ^ ONES) >>> 0;\n    }\n    async digest() {\n        const value = this.digestSync();\n        const out = new Uint8Array(4);\n        new DataView(out.buffer).setUint32(0, value, false);\n        return out;\n    }\n    reset() {\n        this.checksum = ONES;\n    }\n}\n","import { toUint8Array } from \"@smithy/core/serde\";\nconst BLOCK = 64;\nconst DIGEST_LENGTH = 32;\nconst MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\nexport class Sha256Js {\n    digestLength = DIGEST_LENGTH;\n    state = Int32Array.from(INIT);\n    w;\n    buffer = new Uint8Array(64);\n    bufferLength = 0;\n    bytesHashed = 0;\n    finished = false;\n    inner;\n    outer;\n    constructor(secret) {\n        if (secret) {\n            const key = Sha256Js.normalizeKey(secret);\n            this.inner = new Sha256Js();\n            this.outer = new Sha256Js();\n            const { inner, outer } = this;\n            const pad = new Uint8Array(BLOCK * 2);\n            for (let i = 0; i < BLOCK; ++i) {\n                pad[i] = 0x36 ^ key[i];\n                pad[i + BLOCK] = 0x5c ^ key[i];\n            }\n            inner.update(pad.subarray(0, BLOCK));\n            outer.update(pad.subarray(BLOCK));\n        }\n    }\n    update(data) {\n        if (this.finished) {\n            throw new Error(\"Attempted to update an already finished HMAC.\");\n        }\n        if (this.inner) {\n            this.inner.update(data);\n            return;\n        }\n        const chunk = toUint8Array(data);\n        let position = 0;\n        let { byteLength } = chunk;\n        this.bytesHashed += byteLength;\n        if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n            throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n        }\n        while (byteLength > 0) {\n            this.buffer[this.bufferLength++] = chunk[position++];\n            byteLength--;\n            if (this.bufferLength === BLOCK) {\n                this.hashBuffer();\n                this.bufferLength = 0;\n            }\n        }\n    }\n    async digest() {\n        const { inner, outer } = this;\n        if (inner && outer) {\n            if (this.finished) {\n                throw new Error(\"Attempted to digest an already finished HMAC.\");\n            }\n            this.finished = true;\n            const innerDigest = inner.digestSync();\n            outer.update(innerDigest);\n            return outer.digestSync();\n        }\n        return this.digestSync();\n    }\n    reset() {\n        this.state = Int32Array.from(INIT);\n        this.buffer = new Uint8Array(64);\n        this.bufferLength = 0;\n        this.bytesHashed = 0;\n    }\n    digestSync() {\n        const state = this.state.slice();\n        const buffer = this.buffer.slice();\n        let bufferLength = this.bufferLength;\n        const bitsHashed = this.bytesHashed * 8;\n        const bufferView = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n        bufferView.setUint8(bufferLength++, 0x80);\n        if ((bufferLength - 1) % BLOCK >= BLOCK - 8) {\n            for (let i = bufferLength; i < BLOCK; ++i) {\n                bufferView.setUint8(i, 0);\n            }\n            this.hashBufferWith(state, buffer);\n            bufferLength = 0;\n        }\n        for (let i = bufferLength; i < BLOCK - 8; ++i) {\n            bufferView.setUint8(i, 0);\n        }\n        bufferView.setUint32(BLOCK - 8, Math.floor(bitsHashed / 0x100000000), false);\n        bufferView.setUint32(BLOCK - 4, bitsHashed, false);\n        this.hashBufferWith(state, buffer);\n        const out = new Uint8Array(DIGEST_LENGTH);\n        for (let i = 0; i < 8; ++i) {\n            out[i * 4] = (state[i] >>> 24) & 0xff;\n            out[i * 4 + 1] = (state[i] >>> 16) & 0xff;\n            out[i * 4 + 2] = (state[i] >>> 8) & 0xff;\n            out[i * 4 + 3] = (state[i] >>> 0) & 0xff;\n        }\n        return out;\n    }\n    static normalizeKey(secret) {\n        const key = toUint8Array(secret);\n        if (key.byteLength > BLOCK) {\n            const h = new Sha256Js();\n            h.update(key);\n            const out = h.digestSync();\n            const padded = new Uint8Array(BLOCK);\n            padded.set(out);\n            return padded;\n        }\n        if (key.byteLength < BLOCK) {\n            const padded = new Uint8Array(BLOCK);\n            padded.set(key);\n            return padded;\n        }\n        return key;\n    }\n    hashBuffer() {\n        this.hashBufferWith(this.state, this.buffer);\n    }\n    hashBufferWith(state, buffer) {\n        const w = (this.w ??= new Int32Array(64));\n        let s0 = state[0], s1 = state[1], s2 = state[2], s3 = state[3], s4 = state[4], s5 = state[5], s6 = state[6], s7 = state[7];\n        for (let i = 0; i < BLOCK; ++i) {\n            if (i < 16) {\n                w[i] =\n                    ((buffer[i * 4] & 0xff) << 24) |\n                        ((buffer[i * 4 + 1] & 0xff) << 16) |\n                        ((buffer[i * 4 + 2] & 0xff) << 8) |\n                        (buffer[i * 4 + 3] & 0xff);\n            }\n            else {\n                let u = w[i - 2];\n                const t1 = ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n                u = w[i - 15];\n                const t2 = ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n                w[i] = ((t1 + w[i - 7]) | 0) + ((t2 + w[i - 16]) | 0);\n            }\n            const t1 = ((((((s4 >>> 6) | (s4 << 26)) ^ ((s4 >>> 11) | (s4 << 21)) ^ ((s4 >>> 25) | (s4 << 7))) +\n                ((s4 & s5) ^ (~s4 & s6))) |\n                0) +\n                ((s7 + ((K[i] + w[i]) | 0)) | 0)) |\n                0;\n            const t2 = ((((s0 >>> 2) | (s0 << 30)) ^ ((s0 >>> 13) | (s0 << 19)) ^ ((s0 >>> 22) | (s0 << 10))) +\n                ((s0 & s1) ^ (s0 & s2) ^ (s1 & s2))) |\n                0;\n            s7 = s6;\n            s6 = s5;\n            s5 = s4;\n            s4 = (s3 + t1) | 0;\n            s3 = s2;\n            s2 = s1;\n            s1 = s0;\n            s0 = (t1 + t2) | 0;\n        }\n        state[0] += s0;\n        state[1] += s1;\n        state[2] += s2;\n        state[3] += s3;\n        state[4] += s4;\n        state[5] += s5;\n        state[6] += s6;\n        state[7] += s7;\n    }\n}\nconst INIT = new Int32Array([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\nconst K = new Int32Array([\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\n","import { createHash, createHmac } from \"node:crypto\";\nimport { Sha256Js } from \"./Sha256Js\";\nconst hasNativeCrypto = (() => {\n    try {\n        createHash(\"sha256\");\n        return true;\n    }\n    catch {\n        return false;\n    }\n})();\nexport const Sha256Node = hasNativeCrypto ? buildNativeClass() : Sha256Js;\nfunction buildNativeClass() {\n    return class Sha256Node {\n        digestLength = 32;\n        secret;\n        hash;\n        isHmac;\n        finished = false;\n        constructor(secret) {\n            this.secret = secret;\n            this.isHmac = !!secret;\n            this.hash = this.createHash();\n        }\n        update(data) {\n            if (this.finished) {\n                throw new Error(\"Attempted to update an already finished hash.\");\n            }\n            this.hash.update(data);\n        }\n        async digest() {\n            let buf;\n            if (this.isHmac) {\n                this.finished = true;\n                buf = this.hash.digest();\n            }\n            else {\n                buf = this.hash.copy().digest();\n            }\n            return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n        }\n        reset() {\n            this.hash = this.createHash();\n            this.finished = false;\n        }\n        createHash() {\n            return this.secret ? createHmac(\"sha256\", toBuffer(this.secret)) : createHash(\"sha256\");\n        }\n    };\n}\nfunction toBuffer(data) {\n    if (typeof data === \"string\") {\n        return data;\n    }\n    if (ArrayBuffer.isView(data)) {\n        return Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n    }\n    return Buffer.from(data);\n}\n","/**\n * @wraps.dev/pulumi - Pulumi component for deploying Wraps email infrastructure\n *\n * Following SST's pattern of composition over presets:\n * - Minimal required config - just provide what you need\n * - Sensible defaults for everything else\n * - Transform functions for resource customization\n * - `.nodes` exposure for underlying resource access\n *\n * @example\n * ```typescript\n * import { WrapsEmail } from \"@wraps.dev/pulumi\";\n *\n * // Minimal - just Vercel OIDC for sending\n * const email = new WrapsEmail(\"email\", {\n *   vercel: { teamSlug: \"my-team\", projectName: \"my-app\" },\n * });\n *\n * // With domain and event tracking\n * const email = new WrapsEmail(\"email\", {\n *   vercel: { teamSlug: \"my-team\", projectName: \"my-app\" },\n *   domain: \"example.com\",\n *   events: {\n *     types: [\"SEND\", \"DELIVERY\", \"BOUNCE\", \"COMPLAINT\", \"OPEN\", \"CLICK\"],\n *     storeHistory: true,\n *     retention: \"SIX_MONTHS\",\n *   },\n * });\n *\n * // Export outputs\n * export const roleArn = email.roleArn;\n * export const configSetName = email.configSetName;\n * export const envVars = email.envVars;\n * ```\n *\n * @packageDocumentation\n */\n\n// Main component\nexport { WrapsEmail } from \"./email.js\";\n// Resource functions (for advanced users who want to compose their own)\nexport {\n  convertToSMTPPassword,\n  // ACM\n  createACMCertificate,\n  // CloudFront\n  createCloudFrontTracking,\n  // SES\n  createConfigSet,\n  createConfigSetV2,\n  createCustomOIDCProvider,\n  createDomainIdentity,\n  createDomainIdentityV2,\n  createEventBridgeRule,\n  createEventDestination,\n  // Lambda\n  createEventProcessor,\n  createEventQueues,\n  createEventTracking,\n  // Events\n  createHistoryTable,\n  createHTTPSTracking,\n  // IAM\n  createIAMRole,\n  createMailFromAttributes,\n  // Mail Manager\n  createMailManagerArchive,\n  createSESResources,\n  // SMTP\n  createSMTPCredentials,\n  // OIDC\n  createVercelOIDCProvider,\n  resolveMatchingEventTypes,\n} from \"./resources/index.js\";\n// Types\nexport type {\n  ArchiveRetention,\n  ArchivingConfig,\n  EventsConfig,\n  OIDCConfig,\n  ResolvedConfig,\n  ResolvedTrackingConfig,\n  // Enum types\n  SESEventType,\n  SMTPConfig,\n  SuppressionListConfig,\n  SuppressionReason,\n  TrackingConfig,\n  TransformFunctions,\n  // Sub-config types\n  VercelOIDCConfig,\n  WebhookConfig,\n  // Args and config types\n  WrapsEmailArgs,\n  // Output types\n  WrapsEmailNodes,\n  WrapsEmailOutputs,\n} from \"./types.js\";\n","import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { DEFAULT_CONFIG_SET_NAME, retentionToDays } from \"@wraps/core\";\nimport { applyDefaults } from \"./defaults.js\";\nimport {\n  createCustomOIDCProvider,\n  createDNSRecords,\n  createEventProcessor,\n  createEventTracking,\n  createHTTPSTracking,\n  createIAMRole,\n  createMailManagerArchive,\n  createSESResources,\n  createSMTPCredentials,\n  createVercelOIDCProvider,\n} from \"./resources/index.js\";\nimport type { WrapsEmailArgs, WrapsEmailNodes } from \"./types.js\";\n\n/**\n * WrapsEmail - Pulumi component for deploying Wraps email infrastructure\n *\n * Following SST's pattern of composition over presets:\n * - Minimal required config - just provide what you need\n * - Sensible defaults for everything else\n * - Transform functions for resource customization\n * - `.nodes` exposure for underlying resource access\n *\n * @example\n * ```typescript\n * // Minimal - just Vercel OIDC for sending\n * const email = new WrapsEmail(\"email\", {\n *   vercel: { teamSlug: \"my-team\", projectName: \"my-app\" },\n * });\n *\n * // With domain and event tracking\n * const email = new WrapsEmail(\"email\", {\n *   vercel: { teamSlug: \"my-team\", projectName: \"my-app\" },\n *   domain: \"example.com\",\n *   events: {\n *     types: [\"SEND\", \"DELIVERY\", \"BOUNCE\", \"COMPLAINT\", \"OPEN\", \"CLICK\"],\n *     storeHistory: true,\n *     retention: \"SIX_MONTHS\",\n *   },\n * });\n *\n * // Access underlying resources\n * email.nodes.table?.arn; // For custom IAM policies\n * email.nodes.queue?.url; // For custom consumers\n * ```\n */\nexport class WrapsEmail extends pulumi.ComponentResource {\n  /**\n   * Underlying resources exposed for advanced use cases\n   */\n  public readonly nodes: WrapsEmailNodes;\n\n  // ============================================\n  // CORE OUTPUTS\n  // ============================================\n\n  /** IAM role ARN for SDK authentication */\n  public readonly roleArn: pulumi.Output<string>;\n\n  /** AWS region */\n  public readonly region: pulumi.Output<string>;\n\n  /** SES configuration set name */\n  public readonly configSetName: pulumi.Output<string>;\n\n  // ============================================\n  // DOMAIN OUTPUTS\n  // ============================================\n\n  /** Primary domain (if configured) */\n  public readonly domain: pulumi.Output<string | undefined>;\n\n  /** DKIM tokens for DNS configuration */\n  public readonly dkimTokens: pulumi.Output<string[]>;\n\n  /** MAIL FROM domain (if configured) */\n  public readonly mailFromDomain: pulumi.Output<string | undefined>;\n\n  // ============================================\n  // EVENT TRACKING OUTPUTS\n  // ============================================\n\n  /** DynamoDB table name for email history */\n  public readonly tableName: pulumi.Output<string | undefined>;\n\n  /** SQS queue URL for events */\n  public readonly queueUrl: pulumi.Output<string | undefined>;\n\n  /** SQS dead letter queue URL */\n  public readonly dlqUrl: pulumi.Output<string | undefined>;\n\n  /** Lambda function ARN */\n  public readonly lambdaArn: pulumi.Output<string | undefined>;\n\n  // ============================================\n  // TRACKING OUTPUTS\n  // ============================================\n\n  /** Custom tracking domain (if configured) */\n  public readonly customTrackingDomain: pulumi.Output<string | undefined>;\n\n  /** Whether HTTPS tracking is enabled */\n  public readonly httpsTrackingEnabled: pulumi.Output<boolean>;\n\n  /** CloudFront distribution domain (if HTTPS tracking enabled) */\n  public readonly cloudFrontDomain: pulumi.Output<string | undefined>;\n\n  /** ACM certificate validation records (if HTTPS tracking enabled) */\n  public readonly acmCertificateValidationRecords: pulumi.Output<\n    Array<{ name: string; type: string; value: string }> | undefined\n  >;\n\n  // ============================================\n  // ARCHIVING OUTPUTS\n  // ============================================\n\n  /** Mail Manager Archive ARN (if archiving enabled) */\n  public readonly archiveArn: pulumi.Output<string | undefined>;\n\n  /** Whether archiving is enabled */\n  public readonly archivingEnabled: pulumi.Output<boolean>;\n\n  // ============================================\n  // SMTP OUTPUTS\n  // ============================================\n\n  /** SMTP IAM user ARN (if SMTP enabled) */\n  public readonly smtpUserArn: pulumi.Output<string | undefined>;\n\n  /** SMTP username (IAM access key ID) - shown once! */\n  public readonly smtpUsername: pulumi.Output<string | undefined>;\n\n  /** SMTP password (derived from secret key) - shown once! */\n  public readonly smtpPassword: pulumi.Output<string | undefined>;\n\n  /** SMTP endpoint */\n  public readonly smtpEndpoint: pulumi.Output<string | undefined>;\n\n  // ============================================\n  // CONVENIENCE OUTPUTS\n  // ============================================\n\n  /** Environment variables to set in your application */\n  public readonly envVars: pulumi.Output<{\n    WRAPS_AWS_ROLE_ARN: string;\n    WRAPS_AWS_REGION: string;\n    WRAPS_CONFIG_SET?: string;\n  }>;\n\n  constructor(\n    name: string,\n    args: WrapsEmailArgs,\n    opts?: pulumi.ComponentResourceOptions\n  ) {\n    super(\"wraps:email:WrapsEmail\", name, args, opts);\n\n    // Apply defaults to configuration\n    const config = applyDefaults(args);\n    const tags = config.tags;\n\n    // Get current AWS region and account\n    const region = aws.getRegionOutput({}, { parent: this });\n    const identity = aws.getCallerIdentityOutput({}, { parent: this });\n\n    // Initialize nodes object\n    const nodes: Partial<WrapsEmailNodes> = {};\n\n    // ============================================\n    // 1. CREATE OIDC PROVIDER (if Vercel or custom OIDC)\n    // ============================================\n    let oidcProvider: aws.iam.OpenIdConnectProvider | undefined;\n\n    if (config.vercel) {\n      const oidcResult = createVercelOIDCProvider(\n        name,\n        config.vercel,\n        tags,\n        args.transform?.oidcProvider,\n        { parent: this }\n      );\n      oidcProvider = oidcResult.provider;\n      nodes.oidcProvider = oidcProvider;\n    } else if (config.oidc) {\n      const oidcResult = createCustomOIDCProvider(\n        name,\n        config.oidc,\n        tags,\n        args.transform?.oidcProvider,\n        { parent: this }\n      );\n      oidcProvider = oidcResult.provider;\n      nodes.oidcProvider = oidcProvider;\n    }\n\n    // ============================================\n    // 2. CREATE IAM ROLE\n    // ============================================\n    const iamResult = createIAMRole(\n      name,\n      {\n        vercel: config.vercel,\n        oidc: config.oidc,\n        oidcProvider,\n        config,\n      },\n      tags,\n      args.transform?.role,\n      { parent: this }\n    );\n    nodes.role = iamResult.role;\n\n    // ============================================\n    // 3. CREATE SES RESOURCES\n    // ============================================\n    const sesResult = createSESResources(name, config, tags, args.transform, {\n      parent: this,\n    });\n    nodes.configSet = sesResult.configSet;\n    nodes.domainIdentity = sesResult.domainIdentity;\n    nodes.domainDkim = sesResult.domainDkim;\n\n    // ============================================\n    // 3.5. CREATE DNS RECORDS (if DNS provider configured)\n    // ============================================\n    if (config.dns && config.domain) {\n      const mailFromDomain =\n        config.domain && config.mailFromSubdomain\n          ? `${config.mailFromSubdomain}.${config.domain}`\n          : undefined;\n\n      createDNSRecords(\n        name,\n        config.dns,\n        {\n          domain: config.domain,\n          dkimTokens: sesResult.dkimTokens,\n          mailFromDomain,\n          region: region.name,\n        },\n        tags,\n        { parent: this }\n      );\n    }\n\n    // ============================================\n    // 4. CREATE EVENT TRACKING (if configured)\n    // ============================================\n    let eventTrackingResult: ReturnType<typeof createEventTracking> | undefined;\n    let lambdaResult:\n      | Awaited<ReturnType<typeof createEventProcessor>>\n      | undefined;\n\n    if (config.events) {\n      eventTrackingResult = createEventTracking(\n        name,\n        config,\n        tags,\n        args.transform,\n        {\n          parent: this,\n        }\n      );\n      nodes.table = eventTrackingResult.table;\n      nodes.queue = eventTrackingResult.queue;\n      nodes.dlq = eventTrackingResult.dlq;\n      nodes.eventRule = eventTrackingResult.eventRule;\n\n      // Create Lambda if history storage is enabled\n      if (config.events.storeHistory && eventTrackingResult.table) {\n        const retentionDays = retentionToDays(\n          config.events.retention ?? \"90days\"\n        );\n        lambdaResult = createEventProcessor(\n          name,\n          eventTrackingResult.table.name,\n          eventTrackingResult.queue.arn,\n          identity.accountId,\n          retentionDays,\n          tags,\n          args.transform?.lambda,\n          { parent: this }\n        );\n        nodes.lambda = lambdaResult.lambda;\n      }\n    }\n\n    // ============================================\n    // 5. CREATE HTTPS TRACKING (if configured)\n    // ============================================\n    let httpsTrackingResult: ReturnType<typeof createHTTPSTracking> | undefined;\n\n    if (config.tracking.httpsEnabled && config.tracking.customRedirectDomain) {\n      httpsTrackingResult = createHTTPSTracking(\n        name,\n        {\n          customTrackingDomain: config.tracking.customRedirectDomain,\n          region: region.name,\n          hostedZoneId: undefined, // TODO: Add hostedZoneId config option\n          wafEnabled: config.tracking.wafEnabled ?? false,\n        },\n        tags,\n        args.transform,\n        { parent: this }\n      );\n      nodes.certificate = httpsTrackingResult.cloudfront.distribution\n        ? undefined\n        : undefined; // TODO: expose certificate\n      nodes.distribution = httpsTrackingResult.cloudfront.distribution;\n    }\n\n    // ============================================\n    // 6. CREATE SMTP CREDENTIALS (if configured)\n    // ============================================\n    let smtpResult: ReturnType<typeof createSMTPCredentials> | undefined;\n\n    if (config.smtp?.enabled) {\n      smtpResult = createSMTPCredentials(\n        name,\n        sesResult.configSet.name ?? DEFAULT_CONFIG_SET_NAME,\n        region.name,\n        tags,\n        { parent: this }\n      );\n      nodes.smtpUser = smtpResult.iamUser;\n      nodes.smtpAccessKey = smtpResult.accessKey;\n    }\n\n    // Store nodes\n    this.nodes = nodes as WrapsEmailNodes;\n\n    // ============================================\n    // SET OUTPUT VALUES\n    // ============================================\n\n    // Core outputs\n    this.roleArn = iamResult.role.arn;\n    this.region = region.name;\n    this.configSetName = pulumi.output(\n      sesResult.configSet.name ?? DEFAULT_CONFIG_SET_NAME\n    );\n\n    // Domain outputs\n    this.domain = pulumi.output(config.domain);\n    this.dkimTokens = sesResult.dkimTokens;\n    this.mailFromDomain = pulumi.output(\n      config.domain && config.mailFromSubdomain\n        ? `${config.mailFromSubdomain}.${config.domain}`\n        : undefined\n    );\n\n    // Event tracking outputs\n    this.tableName = eventTrackingResult?.table\n      ? eventTrackingResult.table.name\n      : pulumi.output(undefined);\n    this.queueUrl = eventTrackingResult\n      ? eventTrackingResult.queue.url\n      : pulumi.output(undefined);\n    this.dlqUrl = eventTrackingResult\n      ? eventTrackingResult.dlq.url\n      : pulumi.output(undefined);\n    this.lambdaArn = lambdaResult\n      ? lambdaResult.lambda.arn\n      : pulumi.output(undefined);\n\n    // Tracking outputs\n    this.customTrackingDomain = pulumi.output(\n      config.tracking.customRedirectDomain\n    );\n    this.httpsTrackingEnabled = pulumi.output(\n      config.tracking.httpsEnabled ?? false\n    );\n    this.cloudFrontDomain = httpsTrackingResult\n      ? httpsTrackingResult.cloudfront.domainName\n      : pulumi.output(undefined);\n    this.acmCertificateValidationRecords = httpsTrackingResult\n      ? httpsTrackingResult.acmValidationRecords.apply(\n          (records) => records || undefined\n        )\n      : pulumi.output(undefined);\n\n    // ============================================\n    // 7. CREATE MAIL MANAGER ARCHIVE (if configured)\n    // ============================================\n    let archiveResult: ReturnType<typeof createMailManagerArchive> | undefined;\n\n    if (config.archiving?.enabled) {\n      archiveResult = createMailManagerArchive(\n        name,\n        config,\n        sesResult.configSet.name ?? DEFAULT_CONFIG_SET_NAME,\n        region.name,\n        tags,\n        { parent: this }\n      );\n    }\n\n    // Archiving outputs\n    this.archiveArn = archiveResult\n      ? archiveResult.archiveArn\n      : pulumi.output(undefined);\n    this.archivingEnabled = pulumi.output(config.archiving?.enabled ?? false);\n\n    // SMTP outputs\n    this.smtpUserArn = smtpResult\n      ? smtpResult.iamUser.arn\n      : pulumi.output(undefined);\n    this.smtpUsername = smtpResult\n      ? smtpResult.smtpUsername\n      : pulumi.output(undefined);\n    this.smtpPassword = smtpResult\n      ? smtpResult.smtpPassword\n      : pulumi.output(undefined);\n    this.smtpEndpoint = smtpResult\n      ? smtpResult.smtpEndpoint\n      : pulumi.output(undefined);\n\n    // Convenience outputs\n    this.envVars = pulumi\n      .all([this.roleArn, this.region, this.configSetName])\n      .apply(([roleArn, region, configSetName]) => ({\n        WRAPS_AWS_ROLE_ARN: roleArn,\n        WRAPS_AWS_REGION: region,\n        WRAPS_CONFIG_SET: configSetName,\n      }));\n\n    // Register outputs\n    this.registerOutputs({\n      roleArn: this.roleArn,\n      region: this.region,\n      configSetName: this.configSetName,\n      domain: this.domain,\n      dkimTokens: this.dkimTokens,\n      tableName: this.tableName,\n      queueUrl: this.queueUrl,\n      envVars: this.envVars,\n    });\n  }\n}\n","/**\n * Agent enforcer contract — the deep module shared by the enforcement Lambda,\n * the Wraps API approval-execute service, and (copied verbatim) the wraps-js MCP\n * tools. Pure types plus DynamoDB key builders. No AWS SDK, no runtime clients.\n *\n * SOURCE OF TRUTH: any change here requires a matching change in the copied\n * wraps-js MCP contract (see Chunk 7).\n *\n * @packageDocumentation\n */\n\n/** What the caller wants the enforcer to do. */\nexport type EnforcerAction = \"send\" | \"execute\" | \"status\";\n\n/** The email an agent wants to send. Mirrors the Simple-content SES fields. */\nexport type AgentEmailPayload = {\n  from: string;\n  to: string;\n  subject: string;\n  html: string;\n  text: string;\n};\n\n/**\n * Invocation payload for the enforcer Lambda (RequestResponse).\n * - `send`: an agent asks to send `payload`.\n * - `execute`: the API replays an approved send by `approvalId` (+ `payload`).\n * - `status`: an agent polls the outcome of `approvalId`.\n */\nexport type EnforcerRequest = {\n  action: EnforcerAction;\n  agentId: string;\n  payload?: AgentEmailPayload;\n  approvalId?: string;\n};\n\n/** Terminal disposition of an enforcer invocation. */\nexport type EnforcerStatus =\n  | \"sent\"\n  | \"pending_approval\"\n  | \"blocked\"\n  | \"failed\"\n  | \"unknown\";\n\n/**\n * Enforcer verdict. Policy outcomes (`pending_approval`, `blocked`) are\n * successful responses — the caller reads the disposition, they are never\n * transport errors.\n */\nexport type EnforcerResponse = {\n  status: EnforcerStatus;\n  messageId?: string;\n  approvalId?: string;\n  reason?: string;\n};\n\n/** Send policy for an agent, mirrored from Neon into the CONFIG DynamoDB item. */\nexport type AgentPolicy = {\n  maxPerHour: number;\n  maxPerDay: number;\n  allowedRecipients: string[];\n  allowedRecipientDomains: string[];\n};\n\n/**\n * The `CONFIG#<agentId>` item written by the Wraps API on every policy change\n * or kill. The Lambda reads `killed` first (kill-switch supremacy), then pins\n * the sender to `emailAddress`, then applies `policy`.\n *\n * `emailAddress` is the agent's own verified sender identity. The enforcer\n * requires `payload.from` (case-insensitive) to equal it on both `send` and\n * `execute` — an agent can never send as another identity (SEC-3).\n */\nexport type AgentConfigItem = {\n  killed: boolean;\n  emailAddress: string;\n  policy: AgentPolicy;\n};\n\n/**\n * The `OUTCOME#<approvalId>` item written during execute/reject sync-back and\n * read by the agent's status poll.\n *\n * `agentId` scopes the record to its owning agent: `status` reads compare it to\n * the caller's bound identity and return `unknown` on any mismatch (SEC-9).\n */\nexport type OutcomeRecord = {\n  status: EnforcerStatus;\n  agentId: string;\n  messageId?: string;\n  reason?: string;\n};\n\n/** A DynamoDB primary key on the `wraps-email-agent-policy` table (pk + sk). */\nexport type ItemKey = {\n  pk: string;\n  sk: string;\n};\n\n/** Key of the single policy/kill config item for an agent. */\nexport function configItemKey(agentId: string): ItemKey {\n  return { pk: `CONFIG#${agentId}`, sk: \"CONFIG\" };\n}\n\n/** Key of the hourly send counter for an agent within a UTC hour window. */\nexport function hourCounterKey(\n  agentId: string,\n  isoHourWindow: string\n): ItemKey {\n  return { pk: `HOUR#${agentId}`, sk: isoHourWindow };\n}\n\n/** Key of the daily send counter for an agent within a UTC date window. */\nexport function dayCounterKey(agentId: string, isoDateWindow: string): ItemKey {\n  return { pk: `DAY#${agentId}`, sk: isoDateWindow };\n}\n\n/** Key of the approval-outcome item for agent status polling. */\nexport function outcomeItemKey(approvalId: string): ItemKey {\n  return { pk: `OUTCOME#${approvalId}`, sk: \"OUTCOME\" };\n}\n\n/** UTC hour window bucket, e.g. `2026-07-09T14`. Cap counters are per-hour. */\nexport function isoHourWindow(date: Date): string {\n  return date.toISOString().slice(0, 13);\n}\n\n/** UTC date window bucket, e.g. `2026-07-09`. Cap counters are per-day. */\nexport function isoDateWindow(date: Date): string {\n  return date.toISOString().slice(0, 10);\n}\n","import type { SESEventType, SuppressionReason } from \"./types.js\";\n\n/**\n * Default SES event types to track\n */\nexport const DEFAULT_EVENT_TYPES: SESEventType[] = [\n  \"SEND\",\n  \"DELIVERY\",\n  \"BOUNCE\",\n  \"COMPLAINT\",\n  \"OPEN\",\n  \"CLICK\",\n];\n\n/**\n * All available SES event types\n */\nexport const ALL_EVENT_TYPES: SESEventType[] = [\n  \"SEND\",\n  \"DELIVERY\",\n  \"OPEN\",\n  \"CLICK\",\n  \"BOUNCE\",\n  \"COMPLAINT\",\n  \"REJECT\",\n  \"RENDERING_FAILURE\",\n  \"DELIVERY_DELAY\",\n  \"SUBSCRIPTION\",\n];\n\n/**\n * Default suppression reasons\n */\nexport const DEFAULT_SUPPRESSION_REASONS: SuppressionReason[] = [\n  \"BOUNCE\",\n  \"COMPLAINT\",\n];\n\n/**\n * Default configuration set name\n */\nexport const DEFAULT_CONFIG_SET_NAME = \"wraps-email-tracking\";\n\n/**\n * Default MAIL FROM subdomain\n */\nexport const DEFAULT_MAIL_FROM_SUBDOMAIN = \"mail\";\n\n/**\n * Default retention period for email history\n */\nexport const DEFAULT_HISTORY_RETENTION = \"90days\";\n\n/**\n * Vercel OIDC provider URL\n */\nexport const VERCEL_OIDC_URL = \"https://oidc.vercel.com\";\n\n/**\n * Vercel OIDC thumbprint\n */\nexport const VERCEL_OIDC_THUMBPRINT =\n  \"a031c46782e6e6c662c2c87c76da9aa62ccabd8e\";\n\n/**\n * Resource naming prefix\n */\nexport const RESOURCE_PREFIX = \"wraps-email\";\n\n/**\n * Physical AWS resource names shared by both email-stack implementations\n * (`packages/cli/src/infrastructure/resources/` and `packages/pulumi/src/resources/`).\n * A customer using either must see the same names in their AWS account —\n * `wraps email status`, the dashboard's feature detection, and every IAM\n * policy scoped to `wraps-email-*` all key off these strings. Defined once\n * here so divergence between the two implementations is impossible for\n * these values; see plan 183.\n */\n\n/** EventBridge rule that routes all SES events to SQS */\nexport const EVENTBRIDGE_RULE_NAME = \"wraps-email-events-to-sqs\";\n\n/** SQS queue that buffers SES events for the event-processor Lambda */\nexport const EVENTS_QUEUE_NAME = \"wraps-email-events\";\n\n/** Dead letter queue for the events queue */\nexport const EVENTS_DLQ_NAME = \"wraps-email-events-dlq\";\n\n/** IAM role the customer's own app/SDK assumes to send via SES */\nexport const EMAIL_ROLE_NAME = \"wraps-email-role\";\n\n/** DynamoDB table storing email delivery history */\nexport const HISTORY_TABLE_NAME = \"wraps-email-history\";\n\n/** 30-day EventBridge archive of raw SES events, for outage replay */\nexport const EVENTS_ARCHIVE_NAME = \"wraps-email-events-archive\";\n\n/**\n * EventBridge rule pattern matching all SES events on the default bus. No\n * `detail-type` filter — SES emits different detail-types per event type,\n * and both implementations deliberately capture all of them rather than\n * filtering, so a customer's own pipeline sees the full stream.\n */\nexport const SES_EVENT_PATTERN = { source: [\"aws.ses\"] } as const;\n\n/**\n * Tags applied to all resources\n */\nexport const DEFAULT_TAGS = {\n  ManagedBy: \"wraps\",\n} as const;\n\n/**\n * Prefix for ExternalId values baked into customer IAM trust policies.\n * NEVER change this — existing customer roles depend on it for sts:AssumeRole.\n */\nexport const EXTERNAL_ID_PREFIX = \"wraps_\";\n\n/**\n * IAM role the Wraps platform assumes in a customer's AWS account for console\n * access (CloudWatch metrics, SES data). Trusts the Wraps platform account.\n * NEVER change this — every existing platform customer's deployed role uses it.\n */\nexport const CONSOLE_ACCESS_ROLE_NAME = \"wraps-console-access-role\";\n\n/**\n * IAM role a SELF-HOSTED control plane assumes in the same account. Deliberately\n * distinct from CONSOLE_ACCESS_ROLE_NAME: an IAM trust policy names one\n * principal, so sharing one role forces the platform and a self-hosted install\n * to overwrite each other's trust policy and break the loser's dashboard.\n *\n * Both the API (which stores the role ARN) and the CLI (which creates the role)\n * must agree on this string — hence a shared constant rather than two literals.\n */\nexport const SELFHOST_CONSOLE_ACCESS_ROLE_NAME =\n  \"wraps-selfhost-console-access-role\";\n","import { createHmac, randomBytes, timingSafeEqual } from \"node:crypto\";\n\nexport const REPLY_TOKEN_VERSION = 1;\nconst PAYLOAD_LEN = 22;\nconst HMAC_LEN = 16;\nconst TOKEN_LEN = PAYLOAD_LEN + HMAC_LEN;\n\nexport type ReplyTokenStatus =\n  | \"valid\"\n  | \"invalid-signature\"\n  | \"expired\"\n  | \"unsupported-version\"\n  | \"malformed\"\n  | \"unknown-domain\";\n\nexport type DecodedReplyToken = {\n  version: number;\n  kid: number;\n  convId: Buffer;\n  sendId: Buffer;\n  exp: number;\n  hmac: Buffer;\n  payload: Buffer;\n};\n\nexport type VerifiedReplyToken =\n  | {\n      status: \"valid\";\n      conversationId: string;\n      sendId: string;\n    }\n  | {\n      status: Exclude<ReplyTokenStatus, \"valid\">;\n      conversationId: null;\n      sendId: null;\n    };\n\nexport type EncodeReplyTokenInput = {\n  kid: number;\n  convId: Buffer;\n  sendId: Buffer;\n  exp: number;\n  secret: Buffer;\n};\n\nfunction hmac16(payload: Buffer, secret: Buffer): Buffer {\n  return createHmac(\"sha256\", secret)\n    .update(payload)\n    .digest()\n    .subarray(0, HMAC_LEN);\n}\n\nfunction toBase64Url(buf: Buffer): string {\n  return buf\n    .toString(\"base64\")\n    .replace(/\\+/g, \"-\")\n    .replace(/\\//g, \"_\")\n    .replace(/=+$/, \"\");\n}\n\nfunction fromBase64Url(s: string): Buffer {\n  const pad = s.length % 4 === 0 ? \"\" : \"=\".repeat(4 - (s.length % 4));\n  return Buffer.from(s.replace(/-/g, \"+\").replace(/_/g, \"/\") + pad, \"base64\");\n}\n\nexport function encodeReplyToken(input: EncodeReplyTokenInput): string {\n  if (input.convId.length !== 8) {\n    throw new Error(\"convId must be 8 bytes\");\n  }\n  if (input.sendId.length !== 8) {\n    throw new Error(\"sendId must be 8 bytes\");\n  }\n  const payload = Buffer.alloc(PAYLOAD_LEN);\n  payload.writeUInt8(REPLY_TOKEN_VERSION, 0);\n  // biome-ignore lint/suspicious/noBitwiseOperators: mask to u8 for binary wire format\n  payload.writeUInt8(input.kid & 0xff, 1);\n  input.convId.copy(payload, 2);\n  input.sendId.copy(payload, 10);\n  // biome-ignore lint/suspicious/noBitwiseOperators: mask to u32 for binary wire format\n  payload.writeUInt32BE(input.exp >>> 0, 18);\n\n  const mac = hmac16(payload, input.secret);\n  return toBase64Url(Buffer.concat([payload, mac]));\n}\n\nexport function decodeReplyToken(local: string): DecodedReplyToken | null {\n  if (typeof local !== \"string\" || local.length === 0) {\n    return null;\n  }\n  let raw: Buffer;\n  try {\n    raw = fromBase64Url(local);\n  } catch {\n    return null;\n  }\n  if (raw.length !== TOKEN_LEN) {\n    return null;\n  }\n  const payload = raw.subarray(0, PAYLOAD_LEN);\n  const hmac = raw.subarray(PAYLOAD_LEN);\n  return {\n    version: payload.readUInt8(0),\n    kid: payload.readUInt8(1),\n    convId: Buffer.from(payload.subarray(2, 10)),\n    sendId: Buffer.from(payload.subarray(10, 18)),\n    exp: payload.readUInt32BE(18),\n    hmac: Buffer.from(hmac),\n    payload: Buffer.from(payload),\n  };\n}\n\nexport function verifyReplyToken(\n  decoded: DecodedReplyToken | null,\n  secrets: Record<number, Buffer>,\n  nowSeconds: number\n): VerifiedReplyToken {\n  if (!decoded) {\n    return { status: \"malformed\", conversationId: null, sendId: null };\n  }\n  if (decoded.version !== REPLY_TOKEN_VERSION) {\n    return {\n      status: \"unsupported-version\",\n      conversationId: null,\n      sendId: null,\n    };\n  }\n  const secret = secrets[decoded.kid];\n  if (!secret) {\n    return {\n      status: \"invalid-signature\",\n      conversationId: null,\n      sendId: null,\n    };\n  }\n  const expected = hmac16(decoded.payload, secret);\n  if (expected.length !== decoded.hmac.length) {\n    return {\n      status: \"invalid-signature\",\n      conversationId: null,\n      sendId: null,\n    };\n  }\n  if (!timingSafeEqual(expected, decoded.hmac)) {\n    return {\n      status: \"invalid-signature\",\n      conversationId: null,\n      sendId: null,\n    };\n  }\n  if (decoded.exp !== 0 && decoded.exp < nowSeconds) {\n    return { status: \"expired\", conversationId: null, sendId: null };\n  }\n  return {\n    status: \"valid\",\n    conversationId: toBase64Url(decoded.convId),\n    sendId: toBase64Url(decoded.sendId),\n  };\n}\n\nexport function generateConversationId(): string {\n  return toBase64Url(randomBytes(8));\n}\n\nexport function generateSendId(): string {\n  return toBase64Url(randomBytes(8));\n}\n","import type { ArchiveRetention } from \"./types.js\";\n\n/**\n * Convert retention string to number of days\n */\nexport function retentionToDays(retention: ArchiveRetention): number {\n  switch (retention) {\n    case \"7days\":\n      return 7;\n    case \"30days\":\n      return 30;\n    case \"90days\":\n    case \"3months\":\n      return 90;\n    case \"6months\":\n      return 180;\n    case \"9months\":\n      return 270;\n    case \"1year\":\n      return 365;\n    case \"18months\":\n      return 548;\n    case \"2years\":\n      return 730;\n    case \"30months\":\n      return 913;\n    case \"3years\":\n      return 1095;\n    case \"4years\":\n      return 1460;\n    case \"5years\":\n      return 1825;\n    case \"6years\":\n      return 2190;\n    case \"7years\":\n      return 2555;\n    case \"8years\":\n      return 2920;\n    case \"9years\":\n      return 3285;\n    case \"10years\":\n      return 3650;\n    case \"indefinite\":\n    case \"permanent\":\n      return -1; // No TTL / permanent\n    default:\n      return 90;\n  }\n}\n\n/**\n * Convert retention to AWS Mail Manager RetentionPeriod enum value\n */\nexport function retentionToAWSPeriod(retention: ArchiveRetention): string {\n  switch (retention) {\n    case \"3months\":\n      return \"THREE_MONTHS\";\n    case \"6months\":\n      return \"SIX_MONTHS\";\n    case \"9months\":\n      return \"NINE_MONTHS\";\n    case \"1year\":\n      return \"ONE_YEAR\";\n    case \"18months\":\n      return \"EIGHTEEN_MONTHS\";\n    case \"2years\":\n      return \"TWO_YEARS\";\n    case \"30months\":\n      return \"THIRTY_MONTHS\";\n    case \"3years\":\n      return \"THREE_YEARS\";\n    case \"4years\":\n      return \"FOUR_YEARS\";\n    case \"5years\":\n      return \"FIVE_YEARS\";\n    case \"6years\":\n      return \"SIX_YEARS\";\n    case \"7years\":\n      return \"SEVEN_YEARS\";\n    case \"8years\":\n      return \"EIGHT_YEARS\";\n    case \"9years\":\n      return \"NINE_YEARS\";\n    case \"10years\":\n      return \"TEN_YEARS\";\n    case \"permanent\":\n    case \"indefinite\":\n      return \"PERMANENT\";\n    default:\n      return \"THREE_MONTHS\";\n  }\n}\n\n/**\n * Calculate TTL timestamp from retention days\n * @param retentionDays Number of days to retain (-1 for permanent)\n * @returns Unix timestamp in seconds, or undefined for permanent retention\n */\nexport function calculateTTL(retentionDays: number): number | undefined {\n  if (retentionDays < 0) {\n    return; // Permanent retention\n  }\n  return Math.floor(Date.now() / 1000) + retentionDays * 24 * 60 * 60;\n}\n","import { createHmac } from \"node:crypto\";\n\n/**\n * Convert AWS IAM secret access key to SES SMTP password.\n *\n * AWS SES uses a specific algorithm to derive SMTP passwords from IAM credentials.\n * @see https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html\n *\n * @param secretAccessKey - The IAM secret access key\n * @param region - The AWS region (e.g., \"us-east-1\")\n * @returns The derived SMTP password (base64 encoded)\n */\nexport function convertToSMTPPassword(\n  secretAccessKey: string,\n  region: string\n): string {\n  // AWS SMTP password derivation constants\n  const DATE = \"11111111\";\n  const SERVICE = \"ses\";\n  const MESSAGE = \"SendRawEmail\";\n  const TERMINAL = \"aws4_request\";\n  const VERSION = 0x04;\n\n  // Step 1: Create signing key using HMAC-SHA256 chain\n  const kDate = createHmac(\"sha256\", `AWS4${secretAccessKey}`)\n    .update(DATE)\n    .digest();\n  const kRegion = createHmac(\"sha256\", kDate).update(region).digest();\n  const kService = createHmac(\"sha256\", kRegion).update(SERVICE).digest();\n  const kTerminal = createHmac(\"sha256\", kService).update(TERMINAL).digest();\n  const kMessage = createHmac(\"sha256\", kTerminal).update(MESSAGE).digest();\n\n  // Step 2: Prepend version byte and base64 encode\n  const signatureWithVersion = Buffer.concat([\n    Buffer.from([VERSION]),\n    kMessage,\n  ]);\n  return signatureWithVersion.toString(\"base64\");\n}\n\n/**\n * Get the SMTP endpoint for a given AWS region\n *\n * @param region - The AWS region\n * @returns The SMTP endpoint URL\n */\nexport function getSMTPEndpoint(region: string): string {\n  return `email-smtp.${region}.amazonaws.com`;\n}\n\n/**\n * SMTP connection details\n */\nexport type SMTPConnectionDetails = {\n  host: string;\n  port: number;\n  secure: boolean;\n};\n\n/**\n * Get SMTP connection details for a region\n *\n * @param region - The AWS region\n * @returns SMTP connection configuration\n */\nexport function getSMTPConnectionDetails(\n  region: string\n): SMTPConnectionDetails {\n  return {\n    host: getSMTPEndpoint(region),\n    port: 587, // STARTTLS\n    secure: false, // Use STARTTLS\n  };\n}\n","/**\n * @wraps/core - Shared types, utilities, and Lambda code for Wraps IaC packages\n *\n * This package provides common functionality used by @wraps.dev/pulumi and @wraps.dev/cdk:\n * - Shared types (SESEventType, ArchiveRetention, config interfaces)\n * - Constants (default event types, resource naming)\n * - Utilities (SMTP password derivation, retention conversion)\n * - Lambda source code for event processing\n *\n * @packageDocumentation\n */\n\n// Agent enforcer contract (Lambda ↔ API ↔ MCP)\nexport {\n  type AgentConfigItem,\n  type AgentEmailPayload,\n  type AgentPolicy,\n  configItemKey,\n  dayCounterKey,\n  type EnforcerAction,\n  type EnforcerRequest,\n  type EnforcerResponse,\n  type EnforcerStatus,\n  hourCounterKey,\n  type ItemKey,\n  isoDateWindow,\n  isoHourWindow,\n  type OutcomeRecord,\n  outcomeItemKey,\n} from \"./agent-enforcer-contract.js\";\n// Constants\nexport {\n  ALL_EVENT_TYPES,\n  CONSOLE_ACCESS_ROLE_NAME,\n  DEFAULT_CONFIG_SET_NAME,\n  DEFAULT_EVENT_TYPES,\n  DEFAULT_HISTORY_RETENTION,\n  DEFAULT_MAIL_FROM_SUBDOMAIN,\n  DEFAULT_SUPPRESSION_REASONS,\n  DEFAULT_TAGS,\n  EMAIL_ROLE_NAME,\n  EVENTBRIDGE_RULE_NAME,\n  EVENTS_ARCHIVE_NAME,\n  EVENTS_DLQ_NAME,\n  EVENTS_QUEUE_NAME,\n  EXTERNAL_ID_PREFIX,\n  HISTORY_TABLE_NAME,\n  RESOURCE_PREFIX,\n  SELFHOST_CONSOLE_ACCESS_ROLE_NAME,\n  SES_EVENT_PATTERN,\n  VERCEL_OIDC_THUMBPRINT,\n  VERCEL_OIDC_URL,\n} from \"./constants.js\";\n// Reply-token codec\nexport {\n  type DecodedReplyToken,\n  decodeReplyToken,\n  type EncodeReplyTokenInput,\n  encodeReplyToken,\n  generateConversationId,\n  generateSendId,\n  REPLY_TOKEN_VERSION,\n  type ReplyTokenStatus,\n  type VerifiedReplyToken,\n  verifyReplyToken,\n} from \"./reply-token.js\";\n// Retention utilities\nexport {\n  calculateTTL,\n  retentionToAWSPeriod,\n  retentionToDays,\n} from \"./retention.js\";\n// SMTP utilities\nexport {\n  convertToSMTPPassword,\n  getSMTPConnectionDetails,\n  getSMTPEndpoint,\n  type SMTPConnectionDetails,\n} from \"./smtp.js\";\n// Types\nexport type {\n  ArchiveRetention,\n  ArchivingConfig,\n  // DNS provider types\n  CloudflareDNSConfig,\n  DNSConfig,\n  DNSProvider,\n  DNSRecord,\n  EventsConfig,\n  OIDCConfig,\n  // Resolved config types\n  ResolvedTrackingConfig,\n  Route53DNSConfig,\n  // Event types\n  SESEventType,\n  SMTPConfig,\n  SuppressionListConfig,\n  SuppressionReason,\n  // Feature config types\n  TrackingConfig,\n  VercelDNSConfig,\n  // OIDC config types\n  VercelOIDCConfig,\n  WebhookConfig,\n} from \"./types.js\";\n\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\n/**\n * Resolve a path relative to this package, compatible with both ESM and CJS.\n * In CJS (when bundled by tsup), __dirname is available.\n * In ESM, derive from import.meta.url.\n */\nfunction resolvePackagePath(relativePath: string): string {\n  const dir =\n    typeof __dirname !== \"undefined\"\n      ? __dirname\n      : dirname(fileURLToPath(import.meta.url));\n  return join(dir, \"..\", relativePath);\n}\n\n/**\n * Path to the pre-bundled email event processor Lambda code directory.\n * Use this when configuring Lambda functions in Pulumi or CDK.\n *\n * @example\n * ```typescript\n * import { LAMBDA_EVENT_PROCESSOR_PATH } from \"@wraps/core\";\n * import * as lambda from \"aws-cdk-lib/aws-lambda\";\n *\n * new lambda.Function(this, \"Processor\", {\n *   code: lambda.Code.fromAsset(LAMBDA_EVENT_PROCESSOR_PATH),\n *   // ...\n * });\n * ```\n */\nexport const LAMBDA_EVENT_PROCESSOR_PATH = resolvePackagePath(\n  \"lambda/event-processor\"\n);\n\n/**\n * Path to the pre-bundled SMS event processor Lambda code directory.\n * Use this when configuring Lambda functions in Pulumi or CDK.\n *\n * @example\n * ```typescript\n * import { LAMBDA_SMS_EVENT_PROCESSOR_PATH } from \"@wraps/core\";\n * import * as lambda from \"aws-cdk-lib/aws-lambda\";\n *\n * new lambda.Function(this, \"SMSProcessor\", {\n *   code: lambda.Code.fromAsset(LAMBDA_SMS_EVENT_PROCESSOR_PATH),\n *   // ...\n * });\n * ```\n */\nexport const LAMBDA_SMS_EVENT_PROCESSOR_PATH = resolvePackagePath(\n  \"lambda/sms-event-processor\"\n);\n\n// Auth email SES templates, and the publisher both self-hosted deploy paths use\nexport type { AuthSesTemplate } from \"./auth-templates.js\";\nexport { AUTH_SES_TEMPLATES } from \"./auth-templates.js\";\nexport type { ProvisionOutcome } from \"./provision-auth-templates.js\";\nexport {\n  describeProvisionOutcomes,\n  provisionAuthTemplates,\n} from \"./provision-auth-templates.js\";\n","/**\n * SES stored templates for the platform's own transactional auth email.\n *\n * These are the templates `sendTemplate()` names by string from\n * `src/emails/*.ts`. On the SaaS platform they were created by hand once; a\n * self-hosted install has no such history, so every signup died on\n * `Template email-verification does not exist` — the send path is fully wired\n * and still cannot deliver. `scripts/selfhost/templates.ts` publishes these on\n * deploy and upgrade.\n *\n * The variable names below are a contract with the senders, not decoration:\n * SES substitutes exactly the keys passed as `templateData`, and an unmatched\n * key renders as empty rather than failing. Change one side and you get a\n * silently blank email. Each sender is named above its template.\n *\n * Lives in @wraps/core rather than next to the senders in @wraps/email because\n * both self-hosted deploy paths have to publish it: `packages/cli` (the Pulumi\n * variant) already depends on core and cannot take a dependency on the email\n * package, whose entry pulls in the React Email renderer.\n */\n\nexport type AuthSesTemplate = {\n  templateName: string;\n  subject: string;\n  htmlPart: string;\n  textPart: string;\n  /**\n   * Representative values for TestRenderEmailTemplate at publish time. SES's\n   * Handlebars dialect is not handlebars.js, so a template that renders\n   * locally can still hard-fail in SES — this data is what proves it renders\n   * there before a real signup depends on it. Booleans drive `{{#if}}`\n   * branches, so the samples exercise the true case.\n   */\n  sampleData: Record<string, string>;\n};\n\nconst FONT_STACK =\n  \"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\";\n\n/**\n * Shared chrome, matching generateTopicConfirmationEmail: black masthead,\n * bordered white card, 600px column. Kept as a function rather than three\n * copies so the auth mail stays visually consistent as it changes.\n */\nfunction layout(options: {\n  heading: string;\n  body: string;\n  footer: string;\n}): string {\n  return `<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>${options.heading}</title>\n  </head>\n  <body style=\"font-family: ${FONT_STACK}; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; padding: 20px;\">\n    <div style=\"background: #000000; padding: 40px 20px; text-align: center; border-radius: 8px 8px 0 0;\">\n      <h1 style=\"color: white; margin: 0; font-size: 28px;\">${options.heading}</h1>\n    </div>\n\n    <div style=\"background: white; padding: 40px; border: 1px solid #e5e7eb; border-top: none; border-radius: 0 0 8px 8px;\">\n${options.body}\n    </div>\n\n    <div style=\"text-align: center; margin-top: 30px; color: #9ca3af; font-size: 14px;\">\n      <p>${options.footer}</p>\n    </div>\n  </body>\n</html>`;\n}\n\nfunction button(href: string, label: string): string {\n  return `      <div style=\"text-align: center; margin: 40px 0;\">\n        <a href=\"${href}\" style=\"display: inline-block; background: #000000; color: white; padding: 14px 32px; text-decoration: none; border-radius: 6px; font-weight: 600; font-size: 16px;\">\n          ${label}\n        </a>\n      </div>`;\n}\n\nfunction fallbackLink(href: string): string {\n  return `      <p style=\"font-size: 14px; color: #6b7280; margin-bottom: 20px;\">\n        Or copy and paste this link into your browser:\n      </p>\n      <p style=\"font-size: 14px; color: #333333; word-break: break-all; background: #f9fafb; padding: 12px; border-radius: 6px;\">\n        ${href}\n      </p>`;\n}\n\n/** Sender: src/emails/verification.ts — better-auth sendVerificationEmail. */\nconst EMAIL_VERIFICATION: AuthSesTemplate = {\n  templateName: \"email-verification\",\n  subject: \"Verify your email address\",\n  // `name` is sent as \"\" when better-auth has no display name, so the greeting\n  // has to branch — \"Hi ,\" is the alternative.\n  htmlPart: layout({\n    heading: \"Verify Your Email\",\n    body: `      <p style=\"font-size: 16px; margin-bottom: 20px;\">{{#if name}}Hi {{name}},{{else}}Hi there,{{/if}}</p>\n\n      <p style=\"font-size: 16px; margin-bottom: 20px;\">\n        Confirm this address to finish setting up your Wraps account.\n      </p>\n\n${button(\"{{verificationUrl}}\", \"Verify Email Address\")}\n\n${fallbackLink(\"{{verificationUrl}}\")}\n\n      <div style=\"background: #f9fafb; padding: 20px; border-radius: 6px; margin-top: 30px; border-left: 4px solid #000000;\">\n        <p style=\"margin: 0; font-size: 14px; color: #6b7280;\">\n          <strong>Note:</strong> If you didn't create a Wraps account, you can safely ignore this email.\n        </p>\n      </div>`,\n    footer: \"This email was sent by Wraps.\",\n  }),\n  textPart: `Verify Your Email\n\n{{#if name}}Hi {{name}},{{else}}Hi there,{{/if}}\n\nConfirm this address to finish setting up your Wraps account:\n{{verificationUrl}}\n\nIf you didn't create a Wraps account, you can safely ignore this email.\n\n---\nThis email was sent by Wraps.`,\n  sampleData: {\n    name: \"Ada\",\n    verificationUrl: \"https://example.com/verify?t=x\",\n  },\n};\n\n/** Sender: src/emails/mobile-rescue.ts — signup completed on a phone. */\nconst MOBILE_RESCUE: AuthSesTemplate = {\n  templateName: \"mobile-rescue\",\n  subject: \"Pick up where you left off in Wraps\",\n  htmlPart: layout({\n    heading: \"Continue on Desktop\",\n    body: `      <p style=\"font-size: 16px; margin-bottom: 20px;\">Hi there,</p>\n\n      <p style=\"font-size: 16px; margin-bottom: 20px;\">\n        You started setting up <strong>{{orgName}}</strong> on your phone. Deploying\n        infrastructure needs a terminal and your AWS credentials, so the rest of\n        setup is easier on a desktop.\n      </p>\n\n      <p style=\"font-size: 16px; margin-bottom: 20px;\">\n        This link opens your dashboard wherever you're signed in:\n      </p>\n\n${button(\"{{dashboardUrl}}\", \"Open Dashboard\")}\n\n${fallbackLink(\"{{dashboardUrl}}\")}`,\n    footer: \"This email was sent by Wraps.\",\n  }),\n  textPart: `Continue on Desktop\n\nHi there,\n\nYou started setting up {{orgName}} on your phone. Deploying infrastructure needs\na terminal and your AWS credentials, so the rest of setup is easier on a desktop.\n\nOpen your dashboard:\n{{dashboardUrl}}\n\n---\nThis email was sent by Wraps.`,\n  sampleData: {\n    orgName: \"Acme\",\n    dashboardUrl: \"https://example.com/dashboard\",\n  },\n};\n\n/** Sender: src/emails/invitation.ts — organization member invite. */\nconst TEAM_INVITATION: AuthSesTemplate = {\n  templateName: \"team-invitation\",\n  subject: \"{{inviterName}} invited you to join {{organizationName}} on Wraps\",\n  // workspaceItemsHtml arrives as pre-built <li> markup from\n  // buildWorkspaceItemsHtml, so it is interpolated raw with a triple stash.\n  // A double stash would escape the tags and print them as visible text.\n  htmlPart: layout({\n    heading: \"You're Invited\",\n    body: `      <p style=\"font-size: 16px; margin-bottom: 20px;\">Hi there,</p>\n\n      <p style=\"font-size: 16px; margin-bottom: 20px;\">\n        <strong>{{inviterName}}</strong> invited you to join\n        <strong>{{organizationName}}</strong> as {{roleArticle}} {{role}}.\n      </p>\n\n      {{#if workspaceItemsHtml}}\n      <div style=\"background: #f9fafb; padding: 20px; border-radius: 6px; margin-bottom: 20px;\">\n        <p style=\"margin: 0 0 8px; font-size: 14px; color: #6b7280;\"><strong>What's already set up:</strong></p>\n        <ul style=\"margin: 0; padding-left: 20px; font-size: 14px; color: #6b7280;\">{{{workspaceItemsHtml}}}</ul>\n      </div>\n      {{/if}}\n\n${button(\"{{inviteLink}}\", \"Accept Invitation\")}\n\n      {{#if showAwsWarning}}\n      <div style=\"background: #f9fafb; padding: 20px; border-radius: 6px; margin-top: 30px; border-left: 4px solid #f97316;\">\n        <p style=\"margin: 0; font-size: 14px; color: #6b7280;\">\n          <strong>Heads up:</strong> this workspace has no AWS account connected yet,\n          so there's no sending infrastructure until someone runs <code>wraps email init</code>.\n        </p>\n      </div>\n      {{/if}}\n\n      <p style=\"font-size: 14px; color: #6b7280; margin-top: 30px;\">\n        Not expecting this? <a href=\"{{declineLink}}\" style=\"color: #6b7280;\">Decline the invitation</a>.\n      </p>`,\n    footer: \"This email was sent by Wraps.\",\n  }),\n  textPart: `You're Invited\n\nHi there,\n\n{{inviterName}} invited you to join {{organizationName}} as {{roleArticle}} {{role}}.\n\nAccept the invitation:\n{{inviteLink}}\n\n{{#if showAwsWarning}}Heads up: this workspace has no AWS account connected yet, so\nthere's no sending infrastructure until someone runs \\`wraps email init\\`.\n\n{{/if}}Not expecting this? Decline here:\n{{declineLink}}\n\n---\nThis email was sent by Wraps.`,\n  sampleData: {\n    inviterName: \"Ada\",\n    organizationName: \"Acme\",\n    role: \"admin\",\n    roleArticle: \"an\",\n    inviteLink: \"https://example.com/invite/x\",\n    declineLink: \"https://example.com/invite/x/decline\",\n    workspaceItemsHtml: \"<li>3 email templates</li>\",\n    showAwsWarning: \"true\",\n  },\n};\n\n/**\n * Every template the platform's own auth email depends on. Order is stable so\n * deploy output reads the same way twice.\n */\nexport const AUTH_SES_TEMPLATES: readonly AuthSesTemplate[] = [\n  EMAIL_VERIFICATION,\n  MOBILE_RESCUE,\n  TEAM_INVITATION,\n];\n","import { BinaryDecisionDiagram } from \"@smithy/core/endpoints\";\nconst m = \"ref\";\nconst a = -1, b = true, c = \"isSet\", d = \"PartitionResult\", e = \"booleanEquals\", f = \"getAttr\", g = { [m]: \"EndpointId\" }, h = { [m]: \"Endpoint\" }, i = { [m]: d }, j = { \"authSchemes\": [{ \"name\": \"sigv4a\", \"signingName\": \"ses\", \"signingRegionSet\": [\"*\"] }] }, k = {}, l = [{ [m]: \"Region\" }];\nconst _data = {\n    conditions: [\n        [c, l],\n        [\"aws.partition\", l, d],\n        [c, [g]],\n        [\"isValidHostLabel\", [g, b]],\n        [c, [h]],\n        [e, [{ [m]: \"UseFIPS\" }, b]],\n        [e, [{ [m]: \"UseDualStack\" }, b]],\n        [e, [{ fn: f, argv: [i, \"supportsDualStack\"] }, b]],\n        [e, [{ fn: f, argv: [i, \"supportsFIPS\"] }, b]]\n    ],\n    results: [\n        [a],\n        [h, j],\n        [\"https://{EndpointId}.endpoints.email.global.{PartitionResult#dualStackDnsSuffix}\", j],\n        [a, \"DualStack is enabled but this partition does not support DualStack\"],\n        [\"https://{EndpointId}.endpoints.email.{PartitionResult#dnsSuffix}\", j],\n        [a, \"Invalid Configuration: FIPS is not supported with multi-region endpoints\"],\n        [a, \"EndpointId must be a valid host label\"],\n        [a, \"Invalid Configuration: FIPS and custom endpoint are not supported\"],\n        [a, \"Invalid Configuration: Dualstack and custom endpoint are not supported\"],\n        [h, k],\n        [\"https://email-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", k],\n        [a, \"FIPS and DualStack are enabled, but this partition does not support one or both\"],\n        [\"https://email-fips.{Region}.{PartitionResult#dnsSuffix}\", k],\n        [a, \"FIPS is enabled but this partition does not support FIPS\"],\n        [\"https://email.{Region}.{PartitionResult#dualStackDnsSuffix}\", k],\n        [\"https://email.{Region}.{PartitionResult#dnsSuffix}\", k],\n        [a, \"Invalid Configuration: Missing Region\"]\n    ]\n};\nconst root = 2;\nconst r = 100_000_000;\nconst nodes = new Int32Array([\n    -1, 1, -1,\n    0, 3, 4,\n    1, 5, 4,\n    4, 14, r + 16,\n    2, 16, 6,\n    4, 14, 7,\n    5, 10, 8,\n    6, 9, r + 15,\n    7, r + 14, r + 3,\n    6, 12, 11,\n    8, r + 12, r + 13,\n    7, 13, r + 11,\n    8, r + 10, r + 11,\n    5, r + 7, 15,\n    6, r + 8, r + 9,\n    3, 17, r + 6,\n    4, 21, 18,\n    5, r + 5, 19,\n    6, 20, r + 4,\n    7, r + 2, r + 3,\n    5, r + 5, r + 1,\n]);\nexport const bdd = BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);\n","import { awsEndpointFunctions } from \"@aws-sdk/core/client\";\nimport { customEndpointFunctions, decideEndpoint, EndpointCache } from \"@smithy/core/endpoints\";\nimport { bdd } from \"./bdd\";\nconst cache = new EndpointCache({\n    size: 50,\n    params: [\"Endpoint\", \"EndpointId\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nexport const defaultEndpointResolver = (endpointParams, context = {}) => {\n    return cache.get(endpointParams, () => decideEndpoint(bdd, {\n        endpointParams: endpointParams,\n        logger: context.logger,\n    }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n","import { resolveAwsSdkSigV4AConfig, resolveAwsSdkSigV4Config, } from \"@aws-sdk/core/httpAuthSchemes\";\nimport { SignatureV4MultiRegion } from \"@aws-sdk/signature-v4-multi-region\";\nimport { getSmithyContext, normalizeProvider } from \"@smithy/core/client\";\nimport { resolveParams } from \"@smithy/core/endpoints\";\nimport { defaultEndpointResolver } from \"../endpoint/endpointResolver\";\nconst createEndpointRuleSetHttpAuthSchemeParametersProvider = (defaultHttpAuthSchemeParametersProvider) => async (config, context, input) => {\n    if (!input) {\n        throw new Error(\"Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`\");\n    }\n    const defaultParameters = await defaultHttpAuthSchemeParametersProvider(config, context, input);\n    const instructionsFn = getSmithyContext(context)?.commandInstance?.constructor\n        ?.getEndpointParameterInstructions;\n    if (!instructionsFn) {\n        throw new Error(`getEndpointParameterInstructions() is not defined on '${context.commandName}'`);\n    }\n    const endpointParameters = await resolveParams(input, { getEndpointParameterInstructions: instructionsFn }, config);\n    return Object.assign(defaultParameters, endpointParameters);\n};\nconst _defaultSESv2HttpAuthSchemeParametersProvider = async (config, context, input) => {\n    return {\n        operation: getSmithyContext(context).operation,\n        region: await normalizeProvider(config.region)() || (() => {\n            throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n        })(),\n    };\n};\nexport const defaultSESv2HttpAuthSchemeParametersProvider = createEndpointRuleSetHttpAuthSchemeParametersProvider(_defaultSESv2HttpAuthSchemeParametersProvider);\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n    return {\n        schemeId: \"aws.auth#sigv4\",\n        signingProperties: {\n            name: \"ses\",\n            region: authParameters.region,\n        },\n        propertiesExtractor: (config, context) => ({\n            signingProperties: {\n                config,\n                context,\n            },\n        }),\n    };\n}\nfunction createAwsAuthSigv4aHttpAuthOption(authParameters) {\n    return {\n        schemeId: \"aws.auth#sigv4a\",\n        signingProperties: {\n            name: \"ses\",\n            region: authParameters.region,\n        },\n        propertiesExtractor: (config, context) => ({\n            signingProperties: {\n                config,\n                context,\n            },\n        }),\n    };\n}\nconst createEndpointRuleSetHttpAuthSchemeProvider = (defaultEndpointResolver, defaultHttpAuthSchemeResolver, createHttpAuthOptionFunctions) => {\n    const endpointRuleSetHttpAuthSchemeProvider = (authParameters) => {\n        const endpoint = defaultEndpointResolver(authParameters);\n        const authSchemes = endpoint.properties?.authSchemes;\n        if (!authSchemes) {\n            return defaultHttpAuthSchemeResolver(authParameters);\n        }\n        const options = [];\n        for (const scheme of authSchemes) {\n            const { name: resolvedName, properties = {}, ...rest } = scheme;\n            const name = resolvedName.toLowerCase();\n            if (resolvedName !== name) {\n                console.warn(`HttpAuthScheme has been normalized with lowercasing: '${resolvedName}' to '${name}'`);\n            }\n            let schemeId;\n            if (name === \"sigv4a\") {\n                schemeId = \"aws.auth#sigv4a\";\n                const sigv4Present = authSchemes.find((s) => {\n                    const name = s.name.toLowerCase();\n                    return name !== \"sigv4a\" && name.startsWith(\"sigv4\");\n                });\n                if (SignatureV4MultiRegion.sigv4aDependency() === \"none\" && sigv4Present) {\n                    continue;\n                }\n            }\n            else if (name.startsWith(\"sigv4\")) {\n                schemeId = \"aws.auth#sigv4\";\n            }\n            else {\n                throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${name}'`);\n            }\n            const createOption = createHttpAuthOptionFunctions[schemeId];\n            if (!createOption) {\n                throw new Error(`Could not find HttpAuthOption create function for '${schemeId}'`);\n            }\n            const option = createOption(authParameters);\n            option.schemeId = schemeId;\n            option.signingProperties = { ...(option.signingProperties || {}), ...rest, ...properties };\n            options.push(option);\n        }\n        return options;\n    };\n    return endpointRuleSetHttpAuthSchemeProvider;\n};\nconst _defaultSESv2HttpAuthSchemeProvider = (authParameters) => {\n    const options = [];\n    switch (authParameters.operation) {\n        default: {\n            options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n            options.push(createAwsAuthSigv4aHttpAuthOption(authParameters));\n        }\n    }\n    return options;\n};\nexport const defaultSESv2HttpAuthSchemeProvider = createEndpointRuleSetHttpAuthSchemeProvider(defaultEndpointResolver, _defaultSESv2HttpAuthSchemeProvider, {\n    \"aws.auth#sigv4\": createAwsAuthSigv4HttpAuthOption,\n    \"aws.auth#sigv4a\": createAwsAuthSigv4aHttpAuthOption,\n});\nexport const resolveHttpAuthSchemeConfig = (config) => {\n    const config_0 = resolveAwsSdkSigV4Config(config);\n    const config_1 = resolveAwsSdkSigV4AConfig(config_0);\n    return Object.assign(config_1, {\n        authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n    });\n};\n","export const resolveClientEndpointParameters = (options) => {\n    return Object.assign(options, {\n        useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n        useFipsEndpoint: options.useFipsEndpoint ?? false,\n        defaultSigningName: \"ses\",\n    });\n};\nexport const commonParams = {\n    UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n    Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n    Region: { type: \"builtInParams\", name: \"region\" },\n    UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n","{\n  \"name\": \"@aws-sdk/client-sesv2\",\n  \"version\": \"3.1091.0\",\n  \"description\": \"AWS SDK for JavaScript Sesv2 Client for Node.js, Browser and React Native\",\n  \"homepage\": \"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sesv2\",\n  \"license\": \"Apache-2.0\",\n  \"author\": {\n    \"name\": \"AWS SDK for JavaScript Team\",\n    \"url\": \"https://aws.amazon.com/sdk-for-javascript/\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/aws/aws-sdk-js-v3.git\",\n    \"directory\": \"clients/client-sesv2\"\n  },\n  \"files\": [\n    \"dist-*/**\"\n  ],\n  \"sideEffects\": false,\n  \"main\": \"./dist-cjs/index.js\",\n  \"module\": \"./dist-es/index.js\",\n  \"browser\": {\n    \"./dist-es/runtimeConfig\": \"./dist-es/runtimeConfig.browser\"\n  },\n  \"types\": \"./dist-types/index.d.ts\",\n  \"typesVersions\": {\n    \"<4.5\": {\n      \"dist-types/*\": [\n        \"dist-types/ts3.4/*\"\n      ]\n    }\n  },\n  \"react-native\": {\n    \"./dist-es/runtimeConfig\": \"./dist-es/runtimeConfig.native\"\n  },\n  \"scripts\": {\n    \"build\": \"concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs\",\n    \"build:cjs\": \"node ../../scripts/compilation/inline\",\n    \"build:es\": \"premove dist-es && tsc -p tsconfig.es.json\",\n    \"build:include:deps\": \"yarn g:turbo run build -F=\\\"$npm_package_name\\\"\",\n    \"build:types\": \"premove dist-types && tsc -p tsconfig.types.json\",\n    \"build:types:downlevel\": \"downlevel-dts dist-types dist-types/ts3.4\",\n    \"clean\": \"premove dist-cjs dist-es dist-types\",\n    \"extract:docs\": \"api-extractor run --local\",\n    \"generate:client\": \"node ../../scripts/generate-clients/single-service\",\n    \"test:index\": \"tsc --noEmit ./test/index-types.ts && node ./test/index-objects.spec.mjs\"\n  },\n  \"dependencies\": {\n    \"@aws-sdk/core\": \"^3.975.3\",\n    \"@aws-sdk/credential-provider-node\": \"^3.972.70\",\n    \"@aws-sdk/signature-v4-multi-region\": \"^3.996.41\",\n    \"@aws-sdk/types\": \"^3.974.2\",\n    \"@smithy/core\": \"^3.29.4\",\n    \"@smithy/fetch-http-handler\": \"^5.6.6\",\n    \"@smithy/node-http-handler\": \"^4.9.6\",\n    \"@smithy/types\": \"^4.16.1\",\n    \"tslib\": \"^2.6.2\"\n  },\n  \"devDependencies\": {\n    \"@tsconfig/node20\": \"20.1.8\",\n    \"@types/node\": \"^20.14.8\",\n    \"concurrently\": \"7.0.0\",\n    \"downlevel-dts\": \"0.10.1\",\n    \"premove\": \"4.0.0\",\n    \"typescript\": \"~5.8.3\"\n  },\n  \"engines\": {\n    \"node\": \">=20.0.0\"\n  }\n}\n","import { chain, CredentialsProviderError } from \"@smithy/core/config\";\nexport const ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nexport const remoteProvider = async (init) => {\n    const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import(\"@smithy/credential-provider-imds\");\n    if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n        init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata\");\n        const { fromHttp } = await import(\"@aws-sdk/credential-provider-http\");\n        return chain(fromHttp(init), fromContainerMetadata(init));\n    }\n    if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== \"false\") {\n        return async () => {\n            throw new CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\", { logger: init.logger });\n        };\n    }\n    init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata\");\n    return fromInstanceMetadata(init);\n};\n","export function memoizeChain(providers, treatAsExpired) {\n    const chain = internalCreateChain(providers);\n    let activeLock;\n    let passiveLock;\n    let credentials;\n    let forceRefreshLock;\n    const provider = async (options) => {\n        if (options?.forceRefresh) {\n            if (!forceRefreshLock) {\n                forceRefreshLock = chain(options)\n                    .then((c) => {\n                    credentials = c;\n                })\n                    .finally(() => {\n                    forceRefreshLock = undefined;\n                });\n            }\n            await forceRefreshLock;\n            return credentials;\n        }\n        if (credentials?.expiration) {\n            if (credentials?.expiration?.getTime() < Date.now()) {\n                credentials = undefined;\n            }\n        }\n        if (activeLock) {\n            await activeLock;\n        }\n        else if (!credentials || treatAsExpired?.(credentials)) {\n            if (credentials) {\n                if (!passiveLock) {\n                    passiveLock = chain(options)\n                        .then((c) => {\n                        credentials = c;\n                    })\n                        .finally(() => {\n                        passiveLock = undefined;\n                    });\n                }\n            }\n            else {\n                activeLock = chain(options)\n                    .then((c) => {\n                    credentials = c;\n                })\n                    .finally(() => {\n                    activeLock = undefined;\n                });\n                return provider(options);\n            }\n        }\n        return credentials;\n    };\n    return provider;\n}\nexport const internalCreateChain = (providers) => async (awsIdentityProperties) => {\n    let lastProviderError;\n    for (const provider of providers) {\n        try {\n            return await provider(awsIdentityProperties);\n        }\n        catch (err) {\n            lastProviderError = err;\n            if (err?.tryNextLink) {\n                continue;\n            }\n            throw err;\n        }\n    }\n    throw lastProviderError;\n};\n","import { ENV_KEY, ENV_SECRET, fromEnv } from \"@aws-sdk/credential-provider-env\";\nimport { CredentialsProviderError, ENV_PROFILE } from \"@smithy/core/config\";\nimport { remoteProvider } from \"./remoteProvider\";\nimport { memoizeChain } from \"./runtime/memoize-chain\";\nlet multipleCredentialSourceWarningEmitted = false;\nexport const defaultProvider = (init = {}) => memoizeChain([\n    async () => {\n        const profile = init.profile ?? process.env[ENV_PROFILE];\n        if (profile) {\n            const envStaticCredentialsAreSet = process.env[ENV_KEY] && process.env[ENV_SECRET];\n            if (envStaticCredentialsAreSet) {\n                if (!multipleCredentialSourceWarningEmitted) {\n                    const warnFn = init.logger?.warn && init.logger?.constructor?.name !== \"NoOpLogger\"\n                        ? init.logger.warn.bind(init.logger)\n                        : console.warn;\n                    warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:\n    Multiple credential sources detected: \n    Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.\n    This SDK will proceed with the AWS_PROFILE value.\n    \n    However, a future version may change this behavior to prefer the ENV static credentials.\n    Please ensure that your environment only sets either the AWS_PROFILE or the\n    AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.\n`);\n                    multipleCredentialSourceWarningEmitted = true;\n                }\n            }\n            throw new CredentialsProviderError(\"AWS_PROFILE is set, skipping fromEnv provider.\", {\n                logger: init.logger,\n                tryNextLink: true,\n            });\n        }\n        init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromEnv\");\n        return fromEnv(init)();\n    },\n    async (awsIdentityProperties) => {\n        init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromSSO\");\n        const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n        if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n            throw new CredentialsProviderError(\"Skipping SSO provider in default chain (inputs do not include SSO fields).\", { logger: init.logger });\n        }\n        const { fromSSO } = await import(\"@aws-sdk/credential-provider-sso\");\n        return fromSSO(init)(awsIdentityProperties);\n    },\n    async (awsIdentityProperties) => {\n        init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromIni\");\n        const { fromIni } = await import(\"@aws-sdk/credential-provider-ini\");\n        return fromIni(init)(awsIdentityProperties);\n    },\n    async (awsIdentityProperties) => {\n        init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromProcess\");\n        const { fromProcess } = await import(\"@aws-sdk/credential-provider-process\");\n        return fromProcess(init)(awsIdentityProperties);\n    },\n    async (awsIdentityProperties) => {\n        init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile\");\n        const { fromTokenFile } = await import(\"@aws-sdk/credential-provider-web-identity\");\n        return fromTokenFile(init)(awsIdentityProperties);\n    },\n    async () => {\n        init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::remoteProvider\");\n        return (await remoteProvider(init))();\n    },\n    async () => {\n        throw new CredentialsProviderError(\"Could not load credentials from any providers\", {\n            tryNextLink: false,\n            logger: init.logger,\n        });\n    },\n], credentialsTreatedAsExpired);\nexport const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined;\nexport const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000;\n","import { ServiceException as __ServiceException, } from \"@smithy/core/client\";\nexport { __ServiceException };\nexport class SESv2ServiceException extends __ServiceException {\n    constructor(options) {\n        super(options);\n        Object.setPrototypeOf(this, SESv2ServiceException.prototype);\n    }\n}\n","import { SESv2ServiceException as __BaseException } from \"./SESv2ServiceException\";\nexport class AccountSuspendedException extends __BaseException {\n    name = \"AccountSuspendedException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"AccountSuspendedException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, AccountSuspendedException.prototype);\n    }\n}\nexport class AlreadyExistsException extends __BaseException {\n    name = \"AlreadyExistsException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"AlreadyExistsException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, AlreadyExistsException.prototype);\n    }\n}\nexport class BadRequestException extends __BaseException {\n    name = \"BadRequestException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"BadRequestException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, BadRequestException.prototype);\n    }\n}\nexport class InternalServiceErrorException extends __BaseException {\n    name = \"InternalServiceErrorException\";\n    $fault = \"server\";\n    constructor(opts) {\n        super({\n            name: \"InternalServiceErrorException\",\n            $fault: \"server\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, InternalServiceErrorException.prototype);\n    }\n}\nexport class NotFoundException extends __BaseException {\n    name = \"NotFoundException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"NotFoundException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, NotFoundException.prototype);\n    }\n}\nexport class TooManyRequestsException extends __BaseException {\n    name = \"TooManyRequestsException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"TooManyRequestsException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, TooManyRequestsException.prototype);\n    }\n}\nexport class ConcurrentModificationException extends __BaseException {\n    name = \"ConcurrentModificationException\";\n    $fault = \"server\";\n    constructor(opts) {\n        super({\n            name: \"ConcurrentModificationException\",\n            $fault: \"server\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, ConcurrentModificationException.prototype);\n    }\n}\nexport class ConflictException extends __BaseException {\n    name = \"ConflictException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"ConflictException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, ConflictException.prototype);\n    }\n}\nexport class LimitExceededException extends __BaseException {\n    name = \"LimitExceededException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"LimitExceededException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, LimitExceededException.prototype);\n    }\n}\nexport class MailFromDomainNotVerifiedException extends __BaseException {\n    name = \"MailFromDomainNotVerifiedException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"MailFromDomainNotVerifiedException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, MailFromDomainNotVerifiedException.prototype);\n    }\n}\nexport class MessageRejected extends __BaseException {\n    name = \"MessageRejected\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"MessageRejected\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, MessageRejected.prototype);\n    }\n}\nexport class SendingPausedException extends __BaseException {\n    name = \"SendingPausedException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"SendingPausedException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, SendingPausedException.prototype);\n    }\n}\nexport class InvalidNextTokenException extends __BaseException {\n    name = \"InvalidNextTokenException\";\n    $fault = \"client\";\n    constructor(opts) {\n        super({\n            name: \"InvalidNextTokenException\",\n            $fault: \"client\",\n            ...opts,\n        });\n        Object.setPrototypeOf(this, InvalidNextTokenException.prototype);\n    }\n}\n","const _A = \"Attachment\";\nconst _AA = \"ArchiveArn\";\nconst _AAp = \"ApplicationArn\";\nconst _ACEA = \"AdditionalContactEmailAddress\";\nconst _ACEAd = \"AdditionalContactEmailAddresses\";\nconst _AD = \"AccountDetails\";\nconst _ADt = \"AttributesData\";\nconst _AE = \"AdminEmail\";\nconst _AEE = \"AlreadyExistsException\";\nconst _AL = \"AttachmentList\";\nconst _AO = \"ArchivingOptions\";\nconst _AS = \"AccountStatus\";\nconst _ASD = \"ActiveSubscribedDomains\";\nconst _ASE = \"AccountSuspendedException\";\nconst _ASMS = \"AwsSesManagedStatus\";\nconst _AT = \"AssociatedTimestamp\";\nconst _AWE = \"AutoWarmupEnabled\";\nconst _Ag = \"Aggregation\";\nconst _At = \"Attachments\";\nconst _Att = \"Attributes\";\nconst _B = \"Body\";\nconst _BA = \"BccAddresses\";\nconst _BE = \"BlacklistEntry\";\nconst _BEC = \"BulkEmailContent\";\nconst _BEE = \"BulkEmailEntry\";\nconst _BEEL = \"BulkEmailEntryList\";\nconst _BEER = \"BulkEmailEntryResult\";\nconst _BEERL = \"BulkEmailEntryResultList\";\nconst _BEERu = \"BulkEmailEntryResults\";\nconst _BEEu = \"BulkEmailEntries\";\nconst _BEl = \"BlacklistEntries\";\nconst _BGMD = \"BatchGetMetricData\";\nconst _BGMDQ = \"BatchGetMetricDataQuery\";\nconst _BGMDQa = \"BatchGetMetricDataQueries\";\nconst _BGMDR = \"BatchGetMetricDataRequest\";\nconst _BGMDRa = \"BatchGetMetricDataResponse\";\nconst _BIN = \"BlacklistItemNames\";\nconst _BOMF = \"BehaviorOnMxFailure\";\nconst _BR = \"BlacklistReport\";\nconst _BRE = \"BadRequestException\";\nconst _BST = \"BounceSubType\";\nconst _BT = \"BounceType\";\nconst _Bo = \"Bounce\";\nconst _C = \"Complaint\";\nconst _CA = \"CcAddresses\";\nconst _CC = \"CreateContact\";\nconst _CCL = \"CreateContactList\";\nconst _CCLR = \"CreateContactListRequest\";\nconst _CCLRr = \"CreateContactListResponse\";\nconst _CCR = \"CreateContactRequest\";\nconst _CCRr = \"CreateContactResponse\";\nconst _CCS = \"CreateConfigurationSet\";\nconst _CCSED = \"CreateConfigurationSetEventDestination\";\nconst _CCSEDR = \"CreateConfigurationSetEventDestinationRequest\";\nconst _CCSEDRr = \"CreateConfigurationSetEventDestinationResponse\";\nconst _CCSR = \"CreateConfigurationSetRequest\";\nconst _CCSRr = \"CreateConfigurationSetResponse\";\nconst _CCVET = \"CreateCustomVerificationEmailTemplate\";\nconst _CCVETR = \"CreateCustomVerificationEmailTemplateRequest\";\nconst _CCVETRr = \"CreateCustomVerificationEmailTemplateResponse\";\nconst _CD = \"ContentDisposition\";\nconst _CDIP = \"CreateDedicatedIpPool\";\nconst _CDIPR = \"CreateDedicatedIpPoolRequest\";\nconst _CDIPRr = \"CreateDedicatedIpPoolResponse\";\nconst _CDTR = \"CreateDeliverabilityTestReport\";\nconst _CDTRR = \"CreateDeliverabilityTestReportRequest\";\nconst _CDTRRr = \"CreateDeliverabilityTestReportResponse\";\nconst _CDo = \"ContentDescription\";\nconst _CDr = \"CreateDate\";\nconst _CE = \"ConflictException\";\nconst _CEI = \"CreateEmailIdentity\";\nconst _CEIP = \"CreateEmailIdentityPolicy\";\nconst _CEIPR = \"CreateEmailIdentityPolicyRequest\";\nconst _CEIPRr = \"CreateEmailIdentityPolicyResponse\";\nconst _CEIR = \"CreateEmailIdentityRequest\";\nconst _CEIRr = \"CreateEmailIdentityResponse\";\nconst _CEJ = \"CancelExportJob\";\nconst _CEJR = \"CancelExportJobRequest\";\nconst _CEJRa = \"CancelExportJobResponse\";\nconst _CEJRr = \"CreateExportJobRequest\";\nconst _CEJRre = \"CreateExportJobResponse\";\nconst _CEJr = \"CreateExportJob\";\nconst _CET = \"CreateEmailTemplate\";\nconst _CETR = \"CreateEmailTemplateRequest\";\nconst _CETRr = \"CreateEmailTemplateResponse\";\nconst _CFT = \"ComplaintFeedbackType\";\nconst _CI = \"ContentId\";\nconst _CIJ = \"CreateImportJob\";\nconst _CIJR = \"CreateImportJobRequest\";\nconst _CIJRr = \"CreateImportJobResponse\";\nconst _CIa = \"CampaignId\";\nconst _CIas = \"CaseId\";\nconst _CL = \"ContactLanguage\";\nconst _CLD = \"ContactListDestination\";\nconst _CLIA = \"ContactListImportAction\";\nconst _CLN = \"ContactListName\";\nconst _CLo = \"ContactList\";\nconst _CLon = \"ContactLists\";\nconst _CME = \"ConcurrentModificationException\";\nconst _CMRE = \"CreateMultiRegionEndpoint\";\nconst _CMRER = \"CreateMultiRegionEndpointRequest\";\nconst _CMRERr = \"CreateMultiRegionEndpointResponse\";\nconst _CMS = \"CustomerManagedStatus\";\nconst _CP = \"CurrentPlan\";\nconst _CRD = \"CustomRedirectDomain\";\nconst _CS = \"ConfigurationSets\";\nconst _CSKL = \"CurrentSigningKeyLength\";\nconst _CSN = \"ConfigurationSetName\";\nconst _CST = \"ComplaintSubType\";\nconst _CT = \"ContentType\";\nconst _CTE = \"ContentTransferEncoding\";\nconst _CTEo = \"ConditionThresholdEnabled\";\nconst _CTR = \"CreateTenantRequest\";\nconst _CTRA = \"CreateTenantResourceAssociation\";\nconst _CTRAR = \"CreateTenantResourceAssociationRequest\";\nconst _CTRARr = \"CreateTenantResourceAssociationResponse\";\nconst _CTRr = \"CreateTenantResponse\";\nconst _CTo = \"CompletedTimestamp\";\nconst _CTon = \"ConditionThreshold\";\nconst _CTr = \"CreatedTimestamp\";\nconst _CTre = \"CreateTenant\";\nconst _CV = \"ConfidenceVerdict\";\nconst _CVET = \"CustomVerificationEmailTemplates\";\nconst _CVETL = \"CustomVerificationEmailTemplatesList\";\nconst _CVETM = \"CustomVerificationEmailTemplateMetadata\";\nconst _CVT = \"ConfidenceVerdictThreshold\";\nconst _CWD = \"CloudWatchDestination\";\nconst _CWDC = \"CloudWatchDimensionConfiguration\";\nconst _CWDCl = \"CloudWatchDimensionConfigurations\";\nconst _Ca = \"Cause\";\nconst _Ch = \"Charset\";\nconst _Co = \"Contact\";\nconst _Cod = \"Code\";\nconst _Con = \"Content\";\nconst _Cont = \"Contacts\";\nconst _D = \"Dimensions\";\nconst _DA = \"DkimAttributes\";\nconst _DAa = \"DashboardAttributes\";\nconst _DC = \"DiagnosticCode\";\nconst _DCL = \"DeleteContactList\";\nconst _DCLR = \"DeleteContactListRequest\";\nconst _DCLRe = \"DeleteContactListResponse\";\nconst _DCR = \"DeleteContactRequest\";\nconst _DCRe = \"DeleteContactResponse\";\nconst _DCS = \"DeleteConfigurationSet\";\nconst _DCSED = \"DeleteConfigurationSetEventDestination\";\nconst _DCSEDR = \"DeleteConfigurationSetEventDestinationRequest\";\nconst _DCSEDRe = \"DeleteConfigurationSetEventDestinationResponse\";\nconst _DCSR = \"DeleteConfigurationSetRequest\";\nconst _DCSRe = \"DeleteConfigurationSetResponse\";\nconst _DCVET = \"DeleteCustomVerificationEmailTemplate\";\nconst _DCVETR = \"DeleteCustomVerificationEmailTemplateRequest\";\nconst _DCVETRe = \"DeleteCustomVerificationEmailTemplateResponse\";\nconst _DCe = \"DefaultContent\";\nconst _DCel = \"DeleteContact\";\nconst _DCi = \"DimensionConfigurations\";\nconst _DDC = \"DomainDeliverabilityCampaign\";\nconst _DDCL = \"DomainDeliverabilityCampaignList\";\nconst _DDCo = \"DomainDeliverabilityCampaigns\";\nconst _DDIP = \"DeleteDedicatedIpPool\";\nconst _DDIPR = \"DeleteDedicatedIpPoolRequest\";\nconst _DDIPRe = \"DeleteDedicatedIpPoolResponse\";\nconst _DDTO = \"DomainDeliverabilityTrackingOption\";\nconst _DDTOo = \"DomainDeliverabilityTrackingOptions\";\nconst _DDV = \"DefaultDimensionValue\";\nconst _DE = \"DashboardEnabled\";\nconst _DEI = \"DeleteEmailIdentity\";\nconst _DEIP = \"DeleteEmailIdentityPolicy\";\nconst _DEIPR = \"DeleteEmailIdentityPolicyRequest\";\nconst _DEIPRe = \"DeleteEmailIdentityPolicyResponse\";\nconst _DEIR = \"DeleteEmailIdentityRequest\";\nconst _DEIRe = \"DeleteEmailIdentityResponse\";\nconst _DET = \"DefaultEmailTags\";\nconst _DETR = \"DeleteEmailTemplateRequest\";\nconst _DETRe = \"DeleteEmailTemplateResponse\";\nconst _DETe = \"DeleteEmailTemplate\";\nconst _DF = \"DataFormat\";\nconst _DI = \"DedicatedIp\";\nconst _DIAWE = \"DedicatedIpAutoWarmupEnabled\";\nconst _DIL = \"DedicatedIpList\";\nconst _DIP = \"DomainIspPlacements\";\nconst _DIPe = \"DedicatedIpPool\";\nconst _DIPed = \"DedicatedIpPools\";\nconst _DIPo = \"DomainIspPlacement\";\nconst _DIe = \"DedicatedIps\";\nconst _DMRE = \"DeleteMultiRegionEndpoint\";\nconst _DMRER = \"DeleteMultiRegionEndpointRequest\";\nconst _DMRERe = \"DeleteMultiRegionEndpointResponse\";\nconst _DN = \"DimensionName\";\nconst _DNi = \"DisplayName\";\nconst _DO = \"DeliveryOptions\";\nconst _DOa = \"DashboardOptions\";\nconst _DP = \"DkimPercentage\";\nconst _DPN = \"DestinationPoolName\";\nconst _DR = \"DeleteRate\";\nconst _DS = \"DkimStatus\";\nconst _DSA = \"DkimSigningAttributes\";\nconst _DSAO = \"DomainSigningAttributesOrigin\";\nconst _DSAe = \"DeliveryStreamArn\";\nconst _DSD = \"DeleteSuppressedDestination\";\nconst _DSDR = \"DeleteSuppressedDestinationRequest\";\nconst _DSDRe = \"DeleteSuppressedDestinationResponse\";\nconst _DSPK = \"DomainSigningPrivateKey\";\nconst _DSS = \"DomainSigningSelector\";\nconst _DSSe = \"DefaultSubscriptionStatus\";\nconst _DT = \"DkimTokens\";\nconst _DTR = \"DeleteTenantRequest\";\nconst _DTRA = \"DeleteTenantResourceAssociation\";\nconst _DTRAR = \"DeleteTenantResourceAssociationRequest\";\nconst _DTRARe = \"DeleteTenantResourceAssociationResponse\";\nconst _DTRe = \"DeleteTenantResponse\";\nconst _DTRel = \"DeliverabilityTestReport\";\nconst _DTReli = \"DeliverabilityTestReports\";\nconst _DTS = \"DeliverabilityTestStatus\";\nconst _DTe = \"DeleteTenant\";\nconst _DV = \"DailyVolume\";\nconst _DVS = \"DimensionValueSource\";\nconst _DVa = \"DailyVolumes\";\nconst _Da = \"Data\";\nconst _De = \"Description\";\nconst _Des = \"Destination\";\nconst _Det = \"Details\";\nconst _Do = \"Domain\";\nconst _E = \"Errors\";\nconst _EA = \"EmailAddress\";\nconst _EAFL = \"EmailAddressFilterList\";\nconst _EAIME = \"EmailAddressInsightsMailboxEvaluations\";\nconst _EAIV = \"EmailAddressInsightsVerdict\";\nconst _EBA = \"EventBusArn\";\nconst _EBD = \"EventBridgeDestination\";\nconst _EC = \"EmailContent\";\nconst _ED = \"EndDate\";\nconst _EDD = \"EventDestinationDefinition\";\nconst _EDN = \"EventDestinationName\";\nconst _EDS = \"ExportDataSource\";\nconst _EDv = \"EventDestination\";\nconst _EDve = \"EventDetails\";\nconst _EDven = \"EventDestinations\";\nconst _EDx = \"ExportDestination\";\nconst _EDxp = \"ExportDimensions\";\nconst _EFE = \"EmailForwardingEnabled\";\nconst _EI = \"EmailIdentity\";\nconst _EIL = \"EmailInsightsList\";\nconst _EIm = \"EmailInsights\";\nconst _EIma = \"EmailIdentities\";\nconst _EIn = \"EndpointId\";\nconst _EJ = \"ExportJobs\";\nconst _EJS = \"ExportJobSummary\";\nconst _EJSL = \"ExportJobSummaryList\";\nconst _EM = \"EngagementMetrics\";\nconst _EMr = \"ErrorMessage\";\nconst _EMx = \"ExportMetric\";\nconst _EMxp = \"ExportMetrics\";\nconst _EN = \"EndpointName\";\nconst _ERC = \"ExportedRecordsCount\";\nconst _ES = \"EmailSubject\";\nconst _ESFL = \"EmailSubjectFilterList\";\nconst _EST = \"ExportSourceType\";\nconst _ESn = \"EnforcementStatus\";\nconst _ESx = \"ExportStatistics\";\nconst _ET = \"EmailTags\";\nconst _ETC = \"EmailTemplateContent\";\nconst _ETM = \"EmailTemplateMetadata\";\nconst _ETML = \"EmailTemplateMetadataList\";\nconst _ETr = \"ErrorType\";\nconst _En = \"Enabled\";\nconst _Er = \"Error\";\nconst _Es = \"Esps\";\nconst _Ev = \"Events\";\nconst _Eva = \"Evaluations\";\nconst _Ex = \"Exclude\";\nconst _F = \"Filter\";\nconst _FA = \"FromAddress\";\nconst _FEA = \"FromEmailAddress\";\nconst _FEAIA = \"FromEmailAddressIdentityArn\";\nconst _FFEA = \"FeedbackForwardingEmailAddress\";\nconst _FFEAIA = \"FeedbackForwardingEmailAddressIdentityArn\";\nconst _FFS = \"FeedbackForwardingStatus\";\nconst _FI = \"FailureInfo\";\nconst _FIe = \"FeedbackId\";\nconst _FN = \"FileName\";\nconst _FRC = \"FailedRecordsCount\";\nconst _FRSU = \"FailedRecordsS3Url\";\nconst _FRURL = \"FailureRedirectionURL\";\nconst _FS = \"FilteredStatus\";\nconst _FSDT = \"FirstSeenDateTime\";\nconst _G = \"Global\";\nconst _GA = \"GuardianAttributes\";\nconst _GAR = \"GetAccountRequest\";\nconst _GARe = \"GetAccountResponse\";\nconst _GAe = \"GetAccount\";\nconst _GBR = \"GetBlacklistReports\";\nconst _GBRR = \"GetBlacklistReportsRequest\";\nconst _GBRRe = \"GetBlacklistReportsResponse\";\nconst _GC = \"GetContact\";\nconst _GCL = \"GetContactList\";\nconst _GCLR = \"GetContactListRequest\";\nconst _GCLRe = \"GetContactListResponse\";\nconst _GCR = \"GetContactRequest\";\nconst _GCRe = \"GetContactResponse\";\nconst _GCS = \"GetConfigurationSet\";\nconst _GCSED = \"GetConfigurationSetEventDestinations\";\nconst _GCSEDR = \"GetConfigurationSetEventDestinationsRequest\";\nconst _GCSEDRe = \"GetConfigurationSetEventDestinationsResponse\";\nconst _GCSR = \"GetConfigurationSetRequest\";\nconst _GCSRe = \"GetConfigurationSetResponse\";\nconst _GCVET = \"GetCustomVerificationEmailTemplate\";\nconst _GCVETR = \"GetCustomVerificationEmailTemplateRequest\";\nconst _GCVETRe = \"GetCustomVerificationEmailTemplateResponse\";\nconst _GDDC = \"GetDomainDeliverabilityCampaign\";\nconst _GDDCR = \"GetDomainDeliverabilityCampaignRequest\";\nconst _GDDCRe = \"GetDomainDeliverabilityCampaignResponse\";\nconst _GDDO = \"GetDeliverabilityDashboardOptions\";\nconst _GDDOR = \"GetDeliverabilityDashboardOptionsRequest\";\nconst _GDDORe = \"GetDeliverabilityDashboardOptionsResponse\";\nconst _GDI = \"GetDedicatedIp\";\nconst _GDIP = \"GetDedicatedIpPool\";\nconst _GDIPR = \"GetDedicatedIpPoolRequest\";\nconst _GDIPRe = \"GetDedicatedIpPoolResponse\";\nconst _GDIR = \"GetDedicatedIpRequest\";\nconst _GDIRe = \"GetDedicatedIpResponse\";\nconst _GDIRet = \"GetDedicatedIpsRequest\";\nconst _GDIRete = \"GetDedicatedIpsResponse\";\nconst _GDIe = \"GetDedicatedIps\";\nconst _GDSR = \"GetDomainStatisticsReport\";\nconst _GDSRR = \"GetDomainStatisticsReportRequest\";\nconst _GDSRRe = \"GetDomainStatisticsReportResponse\";\nconst _GDTR = \"GetDeliverabilityTestReport\";\nconst _GDTRR = \"GetDeliverabilityTestReportRequest\";\nconst _GDTRRe = \"GetDeliverabilityTestReportResponse\";\nconst _GEAI = \"GetEmailAddressInsights\";\nconst _GEAIR = \"GetEmailAddressInsightsRequest\";\nconst _GEAIRe = \"GetEmailAddressInsightsResponse\";\nconst _GEI = \"GetEmailIdentity\";\nconst _GEIP = \"GetEmailIdentityPolicies\";\nconst _GEIPR = \"GetEmailIdentityPoliciesRequest\";\nconst _GEIPRe = \"GetEmailIdentityPoliciesResponse\";\nconst _GEIR = \"GetEmailIdentityRequest\";\nconst _GEIRe = \"GetEmailIdentityResponse\";\nconst _GEJ = \"GetExportJob\";\nconst _GEJR = \"GetExportJobRequest\";\nconst _GEJRe = \"GetExportJobResponse\";\nconst _GET = \"GetEmailTemplate\";\nconst _GETR = \"GetEmailTemplateRequest\";\nconst _GETRe = \"GetEmailTemplateResponse\";\nconst _GIJ = \"GetImportJob\";\nconst _GIJR = \"GetImportJobRequest\";\nconst _GIJRe = \"GetImportJobResponse\";\nconst _GMI = \"GetMessageInsights\";\nconst _GMIR = \"GetMessageInsightsRequest\";\nconst _GMIRe = \"GetMessageInsightsResponse\";\nconst _GMRE = \"GetMultiRegionEndpoint\";\nconst _GMRER = \"GetMultiRegionEndpointRequest\";\nconst _GMRERe = \"GetMultiRegionEndpointResponse\";\nconst _GO = \"GuardianOptions\";\nconst _GRE = \"GetReputationEntity\";\nconst _GRER = \"GetReputationEntityRequest\";\nconst _GRERe = \"GetReputationEntityResponse\";\nconst _GSD = \"GetSuppressedDestination\";\nconst _GSDR = \"GetSuppressedDestinationRequest\";\nconst _GSDRe = \"GetSuppressedDestinationResponse\";\nconst _GT = \"GetTenant\";\nconst _GTR = \"GetTenantRequest\";\nconst _GTRe = \"GetTenantResponse\";\nconst _H = \"Html\";\nconst _HP = \"HttpsPolicy\";\nconst _HVDR = \"HasValidDnsRecords\";\nconst _HVS = \"HasValidSyntax\";\nconst _He = \"Headers\";\nconst _I = \"Id\";\nconst _IC = \"InboxCount\";\nconst _ID = \"ImportDestination\";\nconst _IDS = \"ImportDataSource\";\nconst _IDT = \"ImportDestinationType\";\nconst _IDs = \"IsDisposable\";\nconst _IE = \"InsightsEvent\";\nconst _IEA = \"InsightsEmailAddress\";\nconst _IEn = \"InsightsEvents\";\nconst _II = \"IdentityInfo\";\nconst _IIL = \"IdentityInfoList\";\nconst _IJ = \"ImportJobs\";\nconst _IJS = \"ImportJobSummary\";\nconst _IJSL = \"ImportJobSummaryList\";\nconst _IN = \"IspName\";\nconst _INTE = \"InvalidNextTokenException\";\nconst _INd = \"IdentityName\";\nconst _IP = \"InboxPercentage\";\nconst _IPTO = \"InboxPlacementTrackingOption\";\nconst _IPs = \"IspPlacements\";\nconst _IPsp = \"IspPlacement\";\nconst _IRA = \"IsRoleAddress\";\nconst _IRAa = \"IamRoleArn\";\nconst _IRC = \"InboxRawCount\";\nconst _IRI = \"IsRandomInput\";\nconst _ISEE = \"InternalServiceErrorException\";\nconst _IT = \"IdentityType\";\nconst _IU = \"ImageUrl\";\nconst _IV = \"IsValid\";\nconst _Im = \"Impact\";\nconst _In = \"Insights\";\nconst _Inc = \"Include\";\nconst _Ip = \"Ip\";\nconst _Is = \"Isp\";\nconst _JI = \"JobId\";\nconst _JS = \"JobStatus\";\nconst _K = \"Key\";\nconst _KFD = \"KinesisFirehoseDestination\";\nconst _LC = \"ListContacts\";\nconst _LCF = \"ListContactsFilter\";\nconst _LCL = \"ListContactLists\";\nconst _LCLR = \"ListContactListsRequest\";\nconst _LCLRi = \"ListContactListsResponse\";\nconst _LCR = \"ListContactsRequest\";\nconst _LCRi = \"ListContactsResponse\";\nconst _LCS = \"ListConfigurationSets\";\nconst _LCSR = \"ListConfigurationSetsRequest\";\nconst _LCSRi = \"ListConfigurationSetsResponse\";\nconst _LCT = \"LastCheckedTimestamp\";\nconst _LCVET = \"ListCustomVerificationEmailTemplates\";\nconst _LCVETR = \"ListCustomVerificationEmailTemplatesRequest\";\nconst _LCVETRi = \"ListCustomVerificationEmailTemplatesResponse\";\nconst _LDDC = \"ListDomainDeliverabilityCampaigns\";\nconst _LDDCR = \"ListDomainDeliverabilityCampaignsRequest\";\nconst _LDDCRi = \"ListDomainDeliverabilityCampaignsResponse\";\nconst _LDE = \"LastDeliveryEvent\";\nconst _LDIP = \"ListDedicatedIpPools\";\nconst _LDIPR = \"ListDedicatedIpPoolsRequest\";\nconst _LDIPRi = \"ListDedicatedIpPoolsResponse\";\nconst _LDTR = \"ListDeliverabilityTestReports\";\nconst _LDTRR = \"ListDeliverabilityTestReportsRequest\";\nconst _LDTRRi = \"ListDeliverabilityTestReportsResponse\";\nconst _LEE = \"LimitExceededException\";\nconst _LEEa = \"LastEngagementEvent\";\nconst _LEI = \"ListEmailIdentities\";\nconst _LEIR = \"ListEmailIdentitiesRequest\";\nconst _LEIRi = \"ListEmailIdentitiesResponse\";\nconst _LEJ = \"ListExportJobs\";\nconst _LEJR = \"ListExportJobsRequest\";\nconst _LEJRi = \"ListExportJobsResponse\";\nconst _LET = \"ListEmailTemplates\";\nconst _LETR = \"ListEmailTemplatesRequest\";\nconst _LETRi = \"ListEmailTemplatesResponse\";\nconst _LFS = \"LastFreshStart\";\nconst _LIJ = \"ListImportJobs\";\nconst _LIJR = \"ListImportJobsRequest\";\nconst _LIJRi = \"ListImportJobsResponse\";\nconst _LKGT = \"LastKeyGenerationTimestamp\";\nconst _LMO = \"ListManagementOptions\";\nconst _LMRE = \"ListMultiRegionEndpoints\";\nconst _LMRER = \"ListMultiRegionEndpointsRequest\";\nconst _LMRERi = \"ListMultiRegionEndpointsResponse\";\nconst _LOC = \"ListOfContacts\";\nconst _LOCL = \"ListOfContactLists\";\nconst _LR = \"ListRecommendations\";\nconst _LRE = \"ListReputationEntities\";\nconst _LRER = \"ListReputationEntitiesRequest\";\nconst _LRERi = \"ListReputationEntitiesResponse\";\nconst _LRR = \"ListRecommendationsRequest\";\nconst _LRRi = \"ListRecommendationsResponse\";\nconst _LRT = \"ListResourceTenants\";\nconst _LRTR = \"ListResourceTenantsRequest\";\nconst _LRTRi = \"ListResourceTenantsResponse\";\nconst _LSD = \"ListSuppressedDestinations\";\nconst _LSDR = \"ListSuppressedDestinationsRequest\";\nconst _LSDRi = \"ListSuppressedDestinationsResponse\";\nconst _LSDT = \"LastSeenDateTime\";\nconst _LST = \"LastSuccessTimestamp\";\nconst _LT = \"ListingTime\";\nconst _LTFR = \"ListTagsForResource\";\nconst _LTFRR = \"ListTagsForResourceRequest\";\nconst _LTFRRi = \"ListTagsForResourceResponse\";\nconst _LTR = \"ListTenantsRequest\";\nconst _LTRR = \"ListTenantResourcesRequest\";\nconst _LTRRi = \"ListTenantResourcesResponse\";\nconst _LTRi = \"ListTenantsResponse\";\nconst _LTRis = \"ListTenantResources\";\nconst _LTi = \"ListTenants\";\nconst _LUT = \"LastUpdatedTimestamp\";\nconst _LUTa = \"LastUpdateTime\";\nconst _M = \"Metric\";\nconst _MDE = \"MetricDataError\";\nconst _MDEL = \"MetricDataErrorList\";\nconst _MDR = \"MetricDataResult\";\nconst _MDRL = \"MetricDataResultList\";\nconst _MDS = \"MaxDeliverySeconds\";\nconst _MDSe = \"MetricsDataSource\";\nconst _ME = \"MailboxExists\";\nconst _MET = \"MatchingEventTypes\";\nconst _MFA = \"MailFromAttributes\";\nconst _MFD = \"MailFromDomain\";\nconst _MFDNVE = \"MailFromDomainNotVerifiedException\";\nconst _MFDS = \"MailFromDomainStatus\";\nconst _MH = \"MessageHeader\";\nconst _MHL = \"MessageHeaderList\";\nconst _MHS = \"Max24HourSend\";\nconst _MI = \"MessageId\";\nconst _MIDS = \"MessageInsightsDataSource\";\nconst _MIF = \"MessageInsightsFilters\";\nconst _MP = \"MissingPercentage\";\nconst _MR = \"MessageRejected\";\nconst _MRE = \"MultiRegionEndpoints\";\nconst _MREu = \"MultiRegionEndpoint\";\nconst _MRa = \"MaxResults\";\nconst _MSR = \"MaxSendRate\";\nconst _MT = \"MailType\";\nconst _MTL = \"MessageTagList\";\nconst _MTe = \"MessageTag\";\nconst _MV = \"MailboxValidation\";\nconst _Me = \"Message\";\nconst _Met = \"Metrics\";\nconst _N = \"Namespace\";\nconst _NFE = \"NotFoundException\";\nconst _NP = \"NextPlan\";\nconst _NSKL = \"NextSigningKeyLength\";\nconst _NT = \"NextToken\";\nconst _Na = \"Name\";\nconst _OCT = \"OverallConfidenceThreshold\";\nconst _OP = \"OverallPlacement\";\nconst _OSD = \"OptimizedSharedDelivery\";\nconst _OV = \"OverallVolume\";\nconst _P = \"Policy\";\nconst _PA = \"PricingAttributes\";\nconst _PAD = \"PutAccountDetails\";\nconst _PADIWA = \"PutAccountDedicatedIpWarmupAttributes\";\nconst _PADIWAR = \"PutAccountDedicatedIpWarmupAttributesRequest\";\nconst _PADIWARu = \"PutAccountDedicatedIpWarmupAttributesResponse\";\nconst _PADR = \"PutAccountDetailsRequest\";\nconst _PADRu = \"PutAccountDetailsResponse\";\nconst _PAE = \"ProductionAccessEnabled\";\nconst _PAPA = \"PutAccountPricingAttributes\";\nconst _PAPAR = \"PutAccountPricingAttributesRequest\";\nconst _PAPARu = \"PutAccountPricingAttributesResponse\";\nconst _PASA = \"PutAccountSendingAttributes\";\nconst _PASAR = \"PutAccountSendingAttributesRequest\";\nconst _PASARu = \"PutAccountSendingAttributesResponse\";\nconst _PASARut = \"PutAccountSuppressionAttributesRequest\";\nconst _PASARutc = \"PutAccountSuppressionAttributesResponse\";\nconst _PASAu = \"PutAccountSuppressionAttributes\";\nconst _PAVA = \"PutAccountVdmAttributes\";\nconst _PAVAR = \"PutAccountVdmAttributesRequest\";\nconst _PAVARu = \"PutAccountVdmAttributesResponse\";\nconst _PCSAO = \"PutConfigurationSetArchivingOptions\";\nconst _PCSAOR = \"PutConfigurationSetArchivingOptionsRequest\";\nconst _PCSAORu = \"PutConfigurationSetArchivingOptionsResponse\";\nconst _PCSDO = \"PutConfigurationSetDeliveryOptions\";\nconst _PCSDOR = \"PutConfigurationSetDeliveryOptionsRequest\";\nconst _PCSDORu = \"PutConfigurationSetDeliveryOptionsResponse\";\nconst _PCSRO = \"PutConfigurationSetReputationOptions\";\nconst _PCSROR = \"PutConfigurationSetReputationOptionsRequest\";\nconst _PCSRORu = \"PutConfigurationSetReputationOptionsResponse\";\nconst _PCSSO = \"PutConfigurationSetSendingOptions\";\nconst _PCSSOR = \"PutConfigurationSetSendingOptionsRequest\";\nconst _PCSSORu = \"PutConfigurationSetSendingOptionsResponse\";\nconst _PCSSORut = \"PutConfigurationSetSuppressionOptionsRequest\";\nconst _PCSSORuto = \"PutConfigurationSetSuppressionOptionsResponse\";\nconst _PCSSOu = \"PutConfigurationSetSuppressionOptions\";\nconst _PCSTO = \"PutConfigurationSetTrackingOptions\";\nconst _PCSTOR = \"PutConfigurationSetTrackingOptionsRequest\";\nconst _PCSTORu = \"PutConfigurationSetTrackingOptionsResponse\";\nconst _PCSVO = \"PutConfigurationSetVdmOptions\";\nconst _PCSVOR = \"PutConfigurationSetVdmOptionsRequest\";\nconst _PCSVORu = \"PutConfigurationSetVdmOptionsResponse\";\nconst _PD = \"PinpointDestination\";\nconst _PDDO = \"PutDeliverabilityDashboardOption\";\nconst _PDDOR = \"PutDeliverabilityDashboardOptionRequest\";\nconst _PDDORu = \"PutDeliverabilityDashboardOptionResponse\";\nconst _PDIIP = \"PutDedicatedIpInPool\";\nconst _PDIIPR = \"PutDedicatedIpInPoolRequest\";\nconst _PDIIPRu = \"PutDedicatedIpInPoolResponse\";\nconst _PDIPSA = \"PutDedicatedIpPoolScalingAttributes\";\nconst _PDIPSAR = \"PutDedicatedIpPoolScalingAttributesRequest\";\nconst _PDIPSARu = \"PutDedicatedIpPoolScalingAttributesResponse\";\nconst _PDIWA = \"PutDedicatedIpWarmupAttributes\";\nconst _PDIWAR = \"PutDedicatedIpWarmupAttributesRequest\";\nconst _PDIWARu = \"PutDedicatedIpWarmupAttributesResponse\";\nconst _PEICSA = \"PutEmailIdentityConfigurationSetAttributes\";\nconst _PEICSAR = \"PutEmailIdentityConfigurationSetAttributesRequest\";\nconst _PEICSARu = \"PutEmailIdentityConfigurationSetAttributesResponse\";\nconst _PEIDA = \"PutEmailIdentityDkimAttributes\";\nconst _PEIDAR = \"PutEmailIdentityDkimAttributesRequest\";\nconst _PEIDARu = \"PutEmailIdentityDkimAttributesResponse\";\nconst _PEIDSA = \"PutEmailIdentityDkimSigningAttributes\";\nconst _PEIDSAR = \"PutEmailIdentityDkimSigningAttributesRequest\";\nconst _PEIDSARu = \"PutEmailIdentityDkimSigningAttributesResponse\";\nconst _PEIFA = \"PutEmailIdentityFeedbackAttributes\";\nconst _PEIFAR = \"PutEmailIdentityFeedbackAttributesRequest\";\nconst _PEIFARu = \"PutEmailIdentityFeedbackAttributesResponse\";\nconst _PEIMFA = \"PutEmailIdentityMailFromAttributes\";\nconst _PEIMFAR = \"PutEmailIdentityMailFromAttributesRequest\";\nconst _PEIMFARu = \"PutEmailIdentityMailFromAttributesResponse\";\nconst _PESD = \"PendingExpirationSubscribedDomains\";\nconst _PI = \"ProjectedInbox\";\nconst _PK = \"PrivateKey\";\nconst _PN = \"PoolName\";\nconst _PNS = \"PrimaryNameServer\";\nconst _PNo = \"PolicyName\";\nconst _PRC = \"ProcessedRecordsCount\";\nconst _PS = \"PageSize\";\nconst _PSD = \"PutSuppressedDestination\";\nconst _PSDR = \"PutSuppressedDestinationRequest\";\nconst _PSDRu = \"PutSuppressedDestinationResponse\";\nconst _PSl = \"PlacementStatistics\";\nconst _PSr = \"ProjectedSpam\";\nconst _PTSA = \"PutTenantSuppressionAttributes\";\nconst _PTSAR = \"PutTenantSuppressionAttributesRequest\";\nconst _PTSARu = \"PutTenantSuppressionAttributesResponse\";\nconst _PV = \"ProjectedVolume\";\nconst _Pl = \"Plan\";\nconst _Po = \"Policies\";\nconst _Q = \"Queries\";\nconst _R = \"Results\";\nconst _RA = \"ResourceArn\";\nconst _RC = \"RawContent\";\nconst _RD = \"ReviewDetails\";\nconst _RDR = \"ReadDeleteRate\";\nconst _RDo = \"RoutesDetails\";\nconst _RDou = \"RouteDetails\";\nconst _RE = \"ReputationEntity\";\nconst _REC = \"ReplacementEmailContent\";\nconst _REL = \"ReputationEntitiesList\";\nconst _REP = \"ReputationEntityPolicy\";\nconst _RER = \"ReputationEntityReference\";\nconst _RET = \"ReputationEntityType\";\nconst _REe = \"ReputationEntities\";\nconst _RH = \"ReplacementHeaders\";\nconst _RI = \"ReportId\";\nconst _RIe = \"ReputationImpact\";\nconst _RL = \"RecommendationsList\";\nconst _RM = \"RawMessage\";\nconst _RME = \"ReputationMetricsEnabled\";\nconst _RMP = \"ReputationManagementPolicy\";\nconst _RN = \"RblName\";\nconst _RNe = \"ReportName\";\nconst _RO = \"ReputationOptions\";\nconst _RR = \"ReadRate\";\nconst _RRP = \"ReadRatePercent\";\nconst _RT = \"ReplacementTags\";\nconst _RTA = \"ReplyToAddresses\";\nconst _RTD = \"ReplacementTemplateData\";\nconst _RTM = \"ResourceTenantMetadata\";\nconst _RTML = \"ResourceTenantMetadataList\";\nconst _RTe = \"ResourceTenants\";\nconst _RTen = \"RenderedTemplate\";\nconst _RTep = \"ReplacementTemplate\";\nconst _RTes = \"ResourceType\";\nconst _Ra = \"Raw\";\nconst _Re = \"Recommendations\";\nconst _Rea = \"Reasons\";\nconst _Reas = \"Reason\";\nconst _Rec = \"Recommendation\";\nconst _Reg = \"Regions\";\nconst _Regi = \"Region\";\nconst _Ro = \"Routes\";\nconst _Rou = \"Route\";\nconst _S = \"Status\";\nconst _SA = \"SuppressionAttributes\";\nconst _SAO = \"SigningAttributesOrigin\";\nconst _SAi = \"SigningAttributes\";\nconst _SBE = \"SendBulkEmail\";\nconst _SBER = \"SendBulkEmailRequest\";\nconst _SBERe = \"SendBulkEmailResponse\";\nconst _SC = \"SpamCount\";\nconst _SCT = \"SuppressionConditionThreshold\";\nconst _SCTu = \"SuppressionConfidenceThreshold\";\nconst _SCVE = \"SendCustomVerificationEmail\";\nconst _SCVER = \"SendCustomVerificationEmailRequest\";\nconst _SCVERe = \"SendCustomVerificationEmailResponse\";\nconst _SD = \"StartDate\";\nconst _SDA = \"SuppressedDestinationAttributes\";\nconst _SDS = \"SuppressedDestinationSummaries\";\nconst _SDSu = \"SuppressedDestinationSummary\";\nconst _SDn = \"SnsDestination\";\nconst _SDu = \"SuppressedDestination\";\nconst _SDub = \"SubscribedDomain\";\nconst _SDubs = \"SubscribedDomains\";\nconst _SE = \"SigningEnabled\";\nconst _SED = \"SubscriptionExpiryDate\";\nconst _SER = \"SendEmailRequest\";\nconst _SERe = \"SendEmailResponse\";\nconst _SEe = \"SendingEnabled\";\nconst _SEen = \"SendEmail\";\nconst _SHZ = \"SigningHostedZone\";\nconst _SI = \"SendingIps\";\nconst _SLD = \"SuppressionListDestination\";\nconst _SLH = \"SentLast24Hours\";\nconst _SLIA = \"SuppressionListImportAction\";\nconst _SM = \"ScalingMode\";\nconst _SN = \"SerialNumber\";\nconst _SO = \"SendingOptions\";\nconst _SOAR = \"SOARecord\";\nconst _SOu = \"SuppressionOptions\";\nconst _SP = \"SpamPercentage\";\nconst _SPE = \"SendingPausedException\";\nconst _SPN = \"SendingPoolName\";\nconst _SPp = \"SpfPercentage\";\nconst _SQ = \"SendQuota\";\nconst _SR = \"SuppressedReasons\";\nconst _SRC = \"SpamRawCount\";\nconst _SRURL = \"SuccessRedirectionURL\";\nconst _SRt = \"StatusRecord\";\nconst _SS = \"SendingStatus\";\nconst _SSA = \"SendingStatusAggregate\";\nconst _SSD = \"SubscriptionStartDate\";\nconst _SSu = \"SuppressionScope\";\nconst _SSub = \"SubscriptionStatus\";\nconst _SU = \"S3Url\";\nconst _SVA = \"SuppressionValidationAttributes\";\nconst _SVO = \"SuppressionValidationOptions\";\nconst _Si = \"Simple\";\nconst _St = \"Statistics\";\nconst _Su = \"Subject\";\nconst _T = \"Text\";\nconst _TA = \"TenantArn\";\nconst _TAe = \"TemplateArn\";\nconst _TAo = \"ToAddresses\";\nconst _TAop = \"TopicArn\";\nconst _TC = \"TemplateContent\";\nconst _TD = \"TemplateData\";\nconst _TDP = \"TopicDefaultPreferences\";\nconst _TF = \"TopicFilter\";\nconst _TI = \"TenantId\";\nconst _TIL = \"TenantInfoList\";\nconst _TIe = \"TenantInfo\";\nconst _TIr = \"TrackedIsps\";\nconst _TK = \"TagKeys\";\nconst _TL = \"TagList\";\nconst _TM = \"TemplatesMetadata\";\nconst _TMRE = \"TooManyRequestsException\";\nconst _TN = \"TemplateName\";\nconst _TNe = \"TenantName\";\nconst _TNo = \"TopicName\";\nconst _TO = \"TrackingOptions\";\nconst _TP = \"TopicPreferences\";\nconst _TPL = \"TopicPreferenceList\";\nconst _TPl = \"TlsPolicy\";\nconst _TPo = \"TopicPreference\";\nconst _TR = \"TenantResources\";\nconst _TRET = \"TestRenderEmailTemplate\";\nconst _TRETR = \"TestRenderEmailTemplateRequest\";\nconst _TRETRe = \"TestRenderEmailTemplateResponse\";\nconst _TRL = \"TenantResourceList\";\nconst _TRR = \"TagResourceRequest\";\nconst _TRRa = \"TagResourceResponse\";\nconst _TRa = \"TagResource\";\nconst _TRe = \"TenantResource\";\nconst _TS = \"TemplateSubject\";\nconst _TSA = \"TenantSuppressionAttributes\";\nconst _Ta = \"Tags\";\nconst _Tag = \"Tag\";\nconst _Te = \"Template\";\nconst _Ten = \"Tenant\";\nconst _Tena = \"Tenants\";\nconst _Ti = \"Timestamp\";\nconst _Tim = \"Timestamps\";\nconst _To = \"Topics\";\nconst _Tok = \"Tokens\";\nconst _Top = \"Topic\";\nconst _Ty = \"Type\";\nconst _UA = \"UnsubscribeAll\";\nconst _UC = \"UpdateContact\";\nconst _UCD = \"UseCaseDescription\";\nconst _UCL = \"UpdateContactList\";\nconst _UCLR = \"UpdateContactListRequest\";\nconst _UCLRp = \"UpdateContactListResponse\";\nconst _UCR = \"UpdateContactRequest\";\nconst _UCRp = \"UpdateContactResponse\";\nconst _UCSED = \"UpdateConfigurationSetEventDestination\";\nconst _UCSEDR = \"UpdateConfigurationSetEventDestinationRequest\";\nconst _UCSEDRp = \"UpdateConfigurationSetEventDestinationResponse\";\nconst _UCVET = \"UpdateCustomVerificationEmailTemplate\";\nconst _UCVETR = \"UpdateCustomVerificationEmailTemplateRequest\";\nconst _UCVETRp = \"UpdateCustomVerificationEmailTemplateResponse\";\nconst _UDIPU = \"UseDefaultIfPreferenceUnavailable\";\nconst _UEIP = \"UpdateEmailIdentityPolicy\";\nconst _UEIPR = \"UpdateEmailIdentityPolicyRequest\";\nconst _UEIPRp = \"UpdateEmailIdentityPolicyResponse\";\nconst _UET = \"UpdateEmailTemplate\";\nconst _UETR = \"UpdateEmailTemplateRequest\";\nconst _UETRp = \"UpdateEmailTemplateResponse\";\nconst _UR = \"UntagResource\";\nconst _URECMS = \"UpdateReputationEntityCustomerManagedStatus\";\nconst _URECMSR = \"UpdateReputationEntityCustomerManagedStatusRequest\";\nconst _URECMSRp = \"UpdateReputationEntityCustomerManagedStatusResponse\";\nconst _UREP = \"UpdateReputationEntityPolicy\";\nconst _UREPR = \"UpdateReputationEntityPolicyRequest\";\nconst _UREPRp = \"UpdateReputationEntityPolicyResponse\";\nconst _URR = \"UntagResourceRequest\";\nconst _URRn = \"UntagResourceResponse\";\nconst _V = \"Value\";\nconst _VA = \"VdmAttributes\";\nconst _VAa = \"ValidationAttributes\";\nconst _VE = \"VdmEnabled\";\nconst _VFSS = \"VerifiedForSendingStatus\";\nconst _VI = \"VerificationInfo\";\nconst _VO = \"VdmOptions\";\nconst _VOa = \"ValidationOptions\";\nconst _VS = \"VolumeStatistics\";\nconst _VSe = \"VerificationStatus\";\nconst _Va = \"Values\";\nconst _WP = \"WarmupPercentage\";\nconst _WS = \"WarmupStatus\";\nconst _WURL = \"WebsiteURL\";\nconst _c = \"client\";\nconst _e = \"error\";\nconst _h = \"http\";\nconst _hE = \"httpError\";\nconst _hQ = \"httpQuery\";\nconst _m = \"message\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.sesv2\";\nconst _se = \"server\";\nconst n0 = \"com.amazonaws.sesv2\";\nimport { TypeRegistry } from \"@smithy/core/schema\";\nimport { AccountSuspendedException, AlreadyExistsException, BadRequestException, ConcurrentModificationException, ConflictException, InternalServiceErrorException, InvalidNextTokenException, LimitExceededException, MailFromDomainNotVerifiedException, MessageRejected, NotFoundException, SendingPausedException, TooManyRequestsException, } from \"../models/errors\";\nimport { SESv2ServiceException } from \"../models/SESv2ServiceException\";\nconst _s_registry = TypeRegistry.for(_s);\nexport var SESv2ServiceException$ = [-3, _s, \"SESv2ServiceException\", 0, [], []];\n_s_registry.registerError(SESv2ServiceException$, SESv2ServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nexport var AccountSuspendedException$ = [-3, n0, _ASE,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(AccountSuspendedException$, AccountSuspendedException);\nexport var AlreadyExistsException$ = [-3, n0, _AEE,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(AlreadyExistsException$, AlreadyExistsException);\nexport var BadRequestException$ = [-3, n0, _BRE,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(BadRequestException$, BadRequestException);\nexport var ConcurrentModificationException$ = [-3, n0, _CME,\n    { [_e]: _se, [_hE]: 500 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(ConcurrentModificationException$, ConcurrentModificationException);\nexport var ConflictException$ = [-3, n0, _CE,\n    { [_e]: _c, [_hE]: 409 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(ConflictException$, ConflictException);\nexport var InternalServiceErrorException$ = [-3, n0, _ISEE,\n    { [_e]: _se, [_hE]: 500 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(InternalServiceErrorException$, InternalServiceErrorException);\nexport var InvalidNextTokenException$ = [-3, n0, _INTE,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(InvalidNextTokenException$, InvalidNextTokenException);\nexport var LimitExceededException$ = [-3, n0, _LEE,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(LimitExceededException$, LimitExceededException);\nexport var MailFromDomainNotVerifiedException$ = [-3, n0, _MFDNVE,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(MailFromDomainNotVerifiedException$, MailFromDomainNotVerifiedException);\nexport var MessageRejected$ = [-3, n0, _MR,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(MessageRejected$, MessageRejected);\nexport var NotFoundException$ = [-3, n0, _NFE,\n    { [_e]: _c, [_hE]: 404 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(NotFoundException$, NotFoundException);\nexport var SendingPausedException$ = [-3, n0, _SPE,\n    { [_e]: _c, [_hE]: 400 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(SendingPausedException$, SendingPausedException);\nexport var TooManyRequestsException$ = [-3, n0, _TMRE,\n    { [_e]: _c, [_hE]: 429 },\n    [_m],\n    [0]\n];\nn0_registry.registerError(TooManyRequestsException$, TooManyRequestsException);\nexport const errorTypeRegistries = [\n    _s_registry,\n    n0_registry,\n];\nvar AdditionalContactEmailAddress = [0, n0, _ACEA, 8, 0];\nvar EmailSubject = [0, n0, _ES, 8, 0];\nvar InsightsEmailAddress = [0, n0, _IEA, 8, 0];\nvar PrivateKey = [0, n0, _PK, 8, 0];\nvar UseCaseDescription = [0, n0, _UCD, 8, 0];\nvar WebsiteURL = [0, n0, _WURL, 8, 0];\nexport var AccountDetails$ = [3, n0, _AD,\n    0,\n    [_MT, _WURL, _CL, _UCD, _ACEAd, _RD],\n    [0, [() => WebsiteURL, 0], 0, [() => UseCaseDescription, 0], [() => AdditionalContactEmailAddresses, 0], () => ReviewDetails$]\n];\nexport var ArchivingOptions$ = [3, n0, _AO,\n    0,\n    [_AA],\n    [0]\n];\nexport var Attachment$ = [3, n0, _A,\n    0,\n    [_RC, _FN, _CD, _CDo, _CI, _CTE, _CT],\n    [21, 0, 0, 0, 0, 0, 0], 2\n];\nexport var BatchGetMetricDataQuery$ = [3, n0, _BGMDQ,\n    0,\n    [_I, _N, _M, _SD, _ED, _D],\n    [0, 0, 0, 4, 4, 128 | 0], 5\n];\nexport var BatchGetMetricDataRequest$ = [3, n0, _BGMDR,\n    0,\n    [_Q],\n    [() => BatchGetMetricDataQueries], 1\n];\nexport var BatchGetMetricDataResponse$ = [3, n0, _BGMDRa,\n    0,\n    [_R, _E],\n    [() => MetricDataResultList, () => MetricDataErrorList]\n];\nexport var BlacklistEntry$ = [3, n0, _BE,\n    0,\n    [_RN, _LT, _De],\n    [0, 4, 0]\n];\nexport var Body$ = [3, n0, _B,\n    0,\n    [_T, _H],\n    [() => Content$, () => Content$]\n];\nexport var Bounce$ = [3, n0, _Bo,\n    0,\n    [_BT, _BST, _DC],\n    [0, 0, 0]\n];\nexport var BulkEmailContent$ = [3, n0, _BEC,\n    0,\n    [_Te],\n    [() => Template$]\n];\nexport var BulkEmailEntry$ = [3, n0, _BEE,\n    0,\n    [_Des, _RT, _REC, _RH],\n    [() => Destination$, () => MessageTagList, () => ReplacementEmailContent$, () => MessageHeaderList], 1\n];\nexport var BulkEmailEntryResult$ = [3, n0, _BEER,\n    0,\n    [_S, _Er, _MI],\n    [0, 0, 0]\n];\nexport var CancelExportJobRequest$ = [3, n0, _CEJR,\n    0,\n    [_JI],\n    [[0, 1]], 1\n];\nexport var CancelExportJobResponse$ = [3, n0, _CEJRa,\n    0,\n    [],\n    []\n];\nexport var CloudWatchDestination$ = [3, n0, _CWD,\n    0,\n    [_DCi],\n    [() => CloudWatchDimensionConfigurations], 1\n];\nexport var CloudWatchDimensionConfiguration$ = [3, n0, _CWDC,\n    0,\n    [_DN, _DVS, _DDV],\n    [0, 0, 0], 3\n];\nexport var Complaint$ = [3, n0, _C,\n    0,\n    [_CST, _CFT],\n    [0, 0]\n];\nexport var Contact$ = [3, n0, _Co,\n    0,\n    [_EA, _TP, _TDP, _UA, _LUT],\n    [0, () => TopicPreferenceList, () => TopicPreferenceList, 2, 4]\n];\nexport var ContactList$ = [3, n0, _CLo,\n    0,\n    [_CLN, _LUT],\n    [0, 4]\n];\nexport var ContactListDestination$ = [3, n0, _CLD,\n    0,\n    [_CLN, _CLIA],\n    [0, 0], 2\n];\nexport var Content$ = [3, n0, _Con,\n    0,\n    [_Da, _Ch],\n    [0, 0], 1\n];\nexport var CreateConfigurationSetEventDestinationRequest$ = [3, n0, _CCSEDR,\n    0,\n    [_CSN, _EDN, _EDv],\n    [[0, 1], 0, () => EventDestinationDefinition$], 3\n];\nexport var CreateConfigurationSetEventDestinationResponse$ = [3, n0, _CCSEDRr,\n    0,\n    [],\n    []\n];\nexport var CreateConfigurationSetRequest$ = [3, n0, _CCSR,\n    0,\n    [_CSN, _TO, _DO, _RO, _SO, _Ta, _SOu, _VO, _AO],\n    [0, () => TrackingOptions$, () => DeliveryOptions$, () => ReputationOptions$, () => SendingOptions$, () => TagList, () => SuppressionOptions$, () => VdmOptions$, () => ArchivingOptions$], 1\n];\nexport var CreateConfigurationSetResponse$ = [3, n0, _CCSRr,\n    0,\n    [],\n    []\n];\nexport var CreateContactListRequest$ = [3, n0, _CCLR,\n    0,\n    [_CLN, _To, _De, _Ta],\n    [0, () => Topics, 0, () => TagList], 1\n];\nexport var CreateContactListResponse$ = [3, n0, _CCLRr,\n    0,\n    [],\n    []\n];\nexport var CreateContactRequest$ = [3, n0, _CCR,\n    0,\n    [_CLN, _EA, _TP, _UA, _ADt],\n    [[0, 1], 0, () => TopicPreferenceList, 2, 0], 2\n];\nexport var CreateContactResponse$ = [3, n0, _CCRr,\n    0,\n    [],\n    []\n];\nexport var CreateCustomVerificationEmailTemplateRequest$ = [3, n0, _CCVETR,\n    0,\n    [_TN, _FEA, _TS, _TC, _SRURL, _FRURL, _Ta],\n    [0, 0, 0, 0, 0, 0, () => TagList], 6\n];\nexport var CreateCustomVerificationEmailTemplateResponse$ = [3, n0, _CCVETRr,\n    0,\n    [],\n    []\n];\nexport var CreateDedicatedIpPoolRequest$ = [3, n0, _CDIPR,\n    0,\n    [_PN, _Ta, _SM],\n    [0, () => TagList, 0], 1\n];\nexport var CreateDedicatedIpPoolResponse$ = [3, n0, _CDIPRr,\n    0,\n    [],\n    []\n];\nexport var CreateDeliverabilityTestReportRequest$ = [3, n0, _CDTRR,\n    0,\n    [_FEA, _Con, _RNe, _Ta],\n    [0, () => EmailContent$, 0, () => TagList], 2\n];\nexport var CreateDeliverabilityTestReportResponse$ = [3, n0, _CDTRRr,\n    0,\n    [_RI, _DTS],\n    [0, 0], 2\n];\nexport var CreateEmailIdentityPolicyRequest$ = [3, n0, _CEIPR,\n    0,\n    [_EI, _PNo, _P],\n    [[0, 1], [0, 1], 0], 3\n];\nexport var CreateEmailIdentityPolicyResponse$ = [3, n0, _CEIPRr,\n    0,\n    [],\n    []\n];\nexport var CreateEmailIdentityRequest$ = [3, n0, _CEIR,\n    0,\n    [_EI, _Ta, _DSA, _CSN],\n    [0, () => TagList, [() => DkimSigningAttributes$, 0], 0], 1\n];\nexport var CreateEmailIdentityResponse$ = [3, n0, _CEIRr,\n    0,\n    [_IT, _VFSS, _DA],\n    [0, 2, () => DkimAttributes$]\n];\nexport var CreateEmailTemplateRequest$ = [3, n0, _CETR,\n    0,\n    [_TN, _TC, _Ta],\n    [0, () => EmailTemplateContent$, () => TagList], 2\n];\nexport var CreateEmailTemplateResponse$ = [3, n0, _CETRr,\n    0,\n    [],\n    []\n];\nexport var CreateExportJobRequest$ = [3, n0, _CEJRr,\n    0,\n    [_EDS, _EDx],\n    [[() => ExportDataSource$, 0], () => ExportDestination$], 2\n];\nexport var CreateExportJobResponse$ = [3, n0, _CEJRre,\n    0,\n    [_JI],\n    [0]\n];\nexport var CreateImportJobRequest$ = [3, n0, _CIJR,\n    0,\n    [_ID, _IDS],\n    [() => ImportDestination$, () => ImportDataSource$], 2\n];\nexport var CreateImportJobResponse$ = [3, n0, _CIJRr,\n    0,\n    [_JI],\n    [0]\n];\nexport var CreateMultiRegionEndpointRequest$ = [3, n0, _CMRER,\n    0,\n    [_EN, _Det, _Ta],\n    [0, () => Details$, () => TagList], 2\n];\nexport var CreateMultiRegionEndpointResponse$ = [3, n0, _CMRERr,\n    0,\n    [_S, _EIn],\n    [0, 0]\n];\nexport var CreateTenantRequest$ = [3, n0, _CTR,\n    0,\n    [_TNe, _Ta, _SA],\n    [0, () => TagList, () => TenantSuppressionAttributes$], 1\n];\nexport var CreateTenantResourceAssociationRequest$ = [3, n0, _CTRAR,\n    0,\n    [_TNe, _RA],\n    [0, 0], 2\n];\nexport var CreateTenantResourceAssociationResponse$ = [3, n0, _CTRARr,\n    0,\n    [],\n    []\n];\nexport var CreateTenantResponse$ = [3, n0, _CTRr,\n    0,\n    [_TNe, _TI, _TA, _CTr, _Ta, _SS, _SA],\n    [0, 0, 0, 4, () => TagList, 0, () => TenantSuppressionAttributes$]\n];\nexport var CustomVerificationEmailTemplateMetadata$ = [3, n0, _CVETM,\n    0,\n    [_TN, _FEA, _TS, _SRURL, _FRURL],\n    [0, 0, 0, 0, 0]\n];\nexport var DailyVolume$ = [3, n0, _DV,\n    0,\n    [_SD, _VS, _DIP],\n    [4, () => VolumeStatistics$, () => DomainIspPlacements]\n];\nexport var DashboardAttributes$ = [3, n0, _DAa,\n    0,\n    [_EM],\n    [0]\n];\nexport var DashboardOptions$ = [3, n0, _DOa,\n    0,\n    [_EM],\n    [0]\n];\nexport var DedicatedIp$ = [3, n0, _DI,\n    0,\n    [_Ip, _WS, _WP, _PN],\n    [0, 0, 1, 0], 3\n];\nexport var DedicatedIpPool$ = [3, n0, _DIPe,\n    0,\n    [_PN, _SM],\n    [0, 0], 2\n];\nexport var DeleteConfigurationSetEventDestinationRequest$ = [3, n0, _DCSEDR,\n    0,\n    [_CSN, _EDN],\n    [[0, 1], [0, 1]], 2\n];\nexport var DeleteConfigurationSetEventDestinationResponse$ = [3, n0, _DCSEDRe,\n    0,\n    [],\n    []\n];\nexport var DeleteConfigurationSetRequest$ = [3, n0, _DCSR,\n    0,\n    [_CSN],\n    [[0, 1]], 1\n];\nexport var DeleteConfigurationSetResponse$ = [3, n0, _DCSRe,\n    0,\n    [],\n    []\n];\nexport var DeleteContactListRequest$ = [3, n0, _DCLR,\n    0,\n    [_CLN],\n    [[0, 1]], 1\n];\nexport var DeleteContactListResponse$ = [3, n0, _DCLRe,\n    0,\n    [],\n    []\n];\nexport var DeleteContactRequest$ = [3, n0, _DCR,\n    0,\n    [_CLN, _EA],\n    [[0, 1], [0, 1]], 2\n];\nexport var DeleteContactResponse$ = [3, n0, _DCRe,\n    0,\n    [],\n    []\n];\nexport var DeleteCustomVerificationEmailTemplateRequest$ = [3, n0, _DCVETR,\n    0,\n    [_TN],\n    [[0, 1]], 1\n];\nexport var DeleteCustomVerificationEmailTemplateResponse$ = [3, n0, _DCVETRe,\n    0,\n    [],\n    []\n];\nexport var DeleteDedicatedIpPoolRequest$ = [3, n0, _DDIPR,\n    0,\n    [_PN],\n    [[0, 1]], 1\n];\nexport var DeleteDedicatedIpPoolResponse$ = [3, n0, _DDIPRe,\n    0,\n    [],\n    []\n];\nexport var DeleteEmailIdentityPolicyRequest$ = [3, n0, _DEIPR,\n    0,\n    [_EI, _PNo],\n    [[0, 1], [0, 1]], 2\n];\nexport var DeleteEmailIdentityPolicyResponse$ = [3, n0, _DEIPRe,\n    0,\n    [],\n    []\n];\nexport var DeleteEmailIdentityRequest$ = [3, n0, _DEIR,\n    0,\n    [_EI],\n    [[0, 1]], 1\n];\nexport var DeleteEmailIdentityResponse$ = [3, n0, _DEIRe,\n    0,\n    [],\n    []\n];\nexport var DeleteEmailTemplateRequest$ = [3, n0, _DETR,\n    0,\n    [_TN],\n    [[0, 1]], 1\n];\nexport var DeleteEmailTemplateResponse$ = [3, n0, _DETRe,\n    0,\n    [],\n    []\n];\nexport var DeleteMultiRegionEndpointRequest$ = [3, n0, _DMRER,\n    0,\n    [_EN],\n    [[0, 1]], 1\n];\nexport var DeleteMultiRegionEndpointResponse$ = [3, n0, _DMRERe,\n    0,\n    [_S],\n    [0]\n];\nexport var DeleteSuppressedDestinationRequest$ = [3, n0, _DSDR,\n    0,\n    [_EA, _TNe],\n    [[0, 1], [0, { [_hQ]: _TNe }]], 1\n];\nexport var DeleteSuppressedDestinationResponse$ = [3, n0, _DSDRe,\n    0,\n    [],\n    []\n];\nexport var DeleteTenantRequest$ = [3, n0, _DTR,\n    0,\n    [_TNe],\n    [0], 1\n];\nexport var DeleteTenantResourceAssociationRequest$ = [3, n0, _DTRAR,\n    0,\n    [_TNe, _RA],\n    [0, 0], 2\n];\nexport var DeleteTenantResourceAssociationResponse$ = [3, n0, _DTRARe,\n    0,\n    [],\n    []\n];\nexport var DeleteTenantResponse$ = [3, n0, _DTRe,\n    0,\n    [],\n    []\n];\nexport var DeliverabilityTestReport$ = [3, n0, _DTRel,\n    0,\n    [_RI, _RNe, _Su, _FEA, _CDr, _DTS],\n    [0, 0, 0, 0, 4, 0]\n];\nexport var DeliveryOptions$ = [3, n0, _DO,\n    0,\n    [_TPl, _SPN, _MDS],\n    [0, 0, 1]\n];\nexport var Destination$ = [3, n0, _Des,\n    0,\n    [_TAo, _CA, _BA],\n    [64 | 0, 64 | 0, 64 | 0]\n];\nexport var Details$ = [3, n0, _Det,\n    0,\n    [_RDo],\n    [() => RoutesDetails], 1\n];\nexport var DkimAttributes$ = [3, n0, _DA,\n    0,\n    [_SE, _S, _Tok, _SHZ, _SAO, _NSKL, _CSKL, _LKGT],\n    [2, 0, 64 | 0, 0, 0, 0, 0, 4]\n];\nexport var DkimSigningAttributes$ = [3, n0, _DSA,\n    0,\n    [_DSS, _DSPK, _NSKL, _DSAO],\n    [0, [() => PrivateKey, 0], 0, 0]\n];\nexport var DomainDeliverabilityCampaign$ = [3, n0, _DDC,\n    0,\n    [_CIa, _IU, _Su, _FA, _SI, _FSDT, _LSDT, _IC, _SC, _RR, _DR, _RDR, _PV, _Es],\n    [0, 0, 0, 0, 64 | 0, 4, 4, 1, 1, 1, 1, 1, 1, 64 | 0]\n];\nexport var DomainDeliverabilityTrackingOption$ = [3, n0, _DDTO,\n    0,\n    [_Do, _SSD, _IPTO],\n    [0, 4, () => InboxPlacementTrackingOption$]\n];\nexport var DomainIspPlacement$ = [3, n0, _DIPo,\n    0,\n    [_IN, _IRC, _SRC, _IP, _SP],\n    [0, 1, 1, 1, 1]\n];\nexport var EmailAddressInsightsMailboxEvaluations$ = [3, n0, _EAIME,\n    0,\n    [_HVS, _HVDR, _ME, _IRA, _IDs, _IRI],\n    [() => EmailAddressInsightsVerdict$, () => EmailAddressInsightsVerdict$, () => EmailAddressInsightsVerdict$, () => EmailAddressInsightsVerdict$, () => EmailAddressInsightsVerdict$, () => EmailAddressInsightsVerdict$]\n];\nexport var EmailAddressInsightsVerdict$ = [3, n0, _EAIV,\n    0,\n    [_CV],\n    [0]\n];\nexport var EmailContent$ = [3, n0, _EC,\n    0,\n    [_Si, _Ra, _Te],\n    [() => Message$, () => RawMessage$, () => Template$]\n];\nexport var EmailInsights$ = [3, n0, _EIm,\n    0,\n    [_Des, _Is, _Ev],\n    [[() => InsightsEmailAddress, 0], 0, () => InsightsEvents]\n];\nexport var EmailTemplateContent$ = [3, n0, _ETC,\n    0,\n    [_Su, _T, _H],\n    [0, 0, 0]\n];\nexport var EmailTemplateMetadata$ = [3, n0, _ETM,\n    0,\n    [_TN, _CTr],\n    [0, 4]\n];\nexport var EventBridgeDestination$ = [3, n0, _EBD,\n    0,\n    [_EBA],\n    [0], 1\n];\nexport var EventDestination$ = [3, n0, _EDv,\n    0,\n    [_Na, _MET, _En, _KFD, _CWD, _SDn, _EBD, _PD],\n    [0, 64 | 0, 2, () => KinesisFirehoseDestination$, () => CloudWatchDestination$, () => SnsDestination$, () => EventBridgeDestination$, () => PinpointDestination$], 2\n];\nexport var EventDestinationDefinition$ = [3, n0, _EDD,\n    0,\n    [_En, _MET, _KFD, _CWD, _SDn, _EBD, _PD],\n    [2, 64 | 0, () => KinesisFirehoseDestination$, () => CloudWatchDestination$, () => SnsDestination$, () => EventBridgeDestination$, () => PinpointDestination$]\n];\nexport var EventDetails$ = [3, n0, _EDve,\n    0,\n    [_Bo, _C],\n    [() => Bounce$, () => Complaint$]\n];\nexport var ExportDataSource$ = [3, n0, _EDS,\n    0,\n    [_MDSe, _MIDS],\n    [() => MetricsDataSource$, [() => MessageInsightsDataSource$, 0]]\n];\nexport var ExportDestination$ = [3, n0, _EDx,\n    0,\n    [_DF, _SU],\n    [0, 0], 1\n];\nexport var ExportJobSummary$ = [3, n0, _EJS,\n    0,\n    [_JI, _EST, _JS, _CTr, _CTo],\n    [0, 0, 0, 4, 4]\n];\nexport var ExportMetric$ = [3, n0, _EMx,\n    0,\n    [_Na, _Ag],\n    [0, 0]\n];\nexport var ExportStatistics$ = [3, n0, _ESx,\n    0,\n    [_PRC, _ERC],\n    [1, 1]\n];\nexport var FailureInfo$ = [3, n0, _FI,\n    0,\n    [_FRSU, _EMr],\n    [0, 0]\n];\nexport var GetAccountRequest$ = [3, n0, _GAR,\n    0,\n    [],\n    []\n];\nexport var GetAccountResponse$ = [3, n0, _GARe,\n    0,\n    [_DIAWE, _ESn, _PAE, _SQ, _SEe, _SA, _Det, _VA, _PA],\n    [2, 0, 2, () => SendQuota$, 2, () => SuppressionAttributes$, [() => AccountDetails$, 0], () => VdmAttributes$, () => PricingAttributes$]\n];\nexport var GetBlacklistReportsRequest$ = [3, n0, _GBRR,\n    0,\n    [_BIN],\n    [[64 | 0, { [_hQ]: _BIN }]], 1\n];\nexport var GetBlacklistReportsResponse$ = [3, n0, _GBRRe,\n    0,\n    [_BR],\n    [() => BlacklistReport], 1\n];\nexport var GetConfigurationSetEventDestinationsRequest$ = [3, n0, _GCSEDR,\n    0,\n    [_CSN],\n    [[0, 1]], 1\n];\nexport var GetConfigurationSetEventDestinationsResponse$ = [3, n0, _GCSEDRe,\n    0,\n    [_EDven],\n    [() => EventDestinations]\n];\nexport var GetConfigurationSetRequest$ = [3, n0, _GCSR,\n    0,\n    [_CSN],\n    [[0, 1]], 1\n];\nexport var GetConfigurationSetResponse$ = [3, n0, _GCSRe,\n    0,\n    [_CSN, _TO, _DO, _RO, _SO, _Ta, _SOu, _VO, _AO],\n    [0, () => TrackingOptions$, () => DeliveryOptions$, () => ReputationOptions$, () => SendingOptions$, () => TagList, () => SuppressionOptions$, () => VdmOptions$, () => ArchivingOptions$]\n];\nexport var GetContactListRequest$ = [3, n0, _GCLR,\n    0,\n    [_CLN],\n    [[0, 1]], 1\n];\nexport var GetContactListResponse$ = [3, n0, _GCLRe,\n    0,\n    [_CLN, _To, _De, _CTr, _LUT, _Ta],\n    [0, () => Topics, 0, 4, 4, () => TagList]\n];\nexport var GetContactRequest$ = [3, n0, _GCR,\n    0,\n    [_CLN, _EA],\n    [[0, 1], [0, 1]], 2\n];\nexport var GetContactResponse$ = [3, n0, _GCRe,\n    0,\n    [_CLN, _EA, _TP, _TDP, _UA, _ADt, _CTr, _LUT],\n    [0, 0, () => TopicPreferenceList, () => TopicPreferenceList, 2, 0, 4, 4]\n];\nexport var GetCustomVerificationEmailTemplateRequest$ = [3, n0, _GCVETR,\n    0,\n    [_TN],\n    [[0, 1]], 1\n];\nexport var GetCustomVerificationEmailTemplateResponse$ = [3, n0, _GCVETRe,\n    0,\n    [_TN, _FEA, _TS, _TC, _Ta, _SRURL, _FRURL],\n    [0, 0, 0, 0, () => TagList, 0, 0]\n];\nexport var GetDedicatedIpPoolRequest$ = [3, n0, _GDIPR,\n    0,\n    [_PN],\n    [[0, 1]], 1\n];\nexport var GetDedicatedIpPoolResponse$ = [3, n0, _GDIPRe,\n    0,\n    [_DIPe],\n    [() => DedicatedIpPool$]\n];\nexport var GetDedicatedIpRequest$ = [3, n0, _GDIR,\n    0,\n    [_Ip],\n    [[0, 1]], 1\n];\nexport var GetDedicatedIpResponse$ = [3, n0, _GDIRe,\n    0,\n    [_DI],\n    [() => DedicatedIp$]\n];\nexport var GetDedicatedIpsRequest$ = [3, n0, _GDIRet,\n    0,\n    [_PN, _NT, _PS],\n    [[0, { [_hQ]: _PN }], [0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var GetDedicatedIpsResponse$ = [3, n0, _GDIRete,\n    0,\n    [_DIe, _NT],\n    [() => DedicatedIpList, 0]\n];\nexport var GetDeliverabilityDashboardOptionsRequest$ = [3, n0, _GDDOR,\n    0,\n    [],\n    []\n];\nexport var GetDeliverabilityDashboardOptionsResponse$ = [3, n0, _GDDORe,\n    0,\n    [_DE, _SED, _AS, _ASD, _PESD],\n    [2, 4, 0, () => DomainDeliverabilityTrackingOptions, () => DomainDeliverabilityTrackingOptions], 1\n];\nexport var GetDeliverabilityTestReportRequest$ = [3, n0, _GDTRR,\n    0,\n    [_RI],\n    [[0, 1]], 1\n];\nexport var GetDeliverabilityTestReportResponse$ = [3, n0, _GDTRRe,\n    0,\n    [_DTRel, _OP, _IPs, _Me, _Ta],\n    [() => DeliverabilityTestReport$, () => PlacementStatistics$, () => IspPlacements, 0, () => TagList], 3\n];\nexport var GetDomainDeliverabilityCampaignRequest$ = [3, n0, _GDDCR,\n    0,\n    [_CIa],\n    [[0, 1]], 1\n];\nexport var GetDomainDeliverabilityCampaignResponse$ = [3, n0, _GDDCRe,\n    0,\n    [_DDC],\n    [() => DomainDeliverabilityCampaign$], 1\n];\nexport var GetDomainStatisticsReportRequest$ = [3, n0, _GDSRR,\n    0,\n    [_Do, _SD, _ED],\n    [[0, 1], [4, { [_hQ]: _SD }], [4, { [_hQ]: _ED }]], 3\n];\nexport var GetDomainStatisticsReportResponse$ = [3, n0, _GDSRRe,\n    0,\n    [_OV, _DVa],\n    [() => OverallVolume$, () => DailyVolumes], 2\n];\nexport var GetEmailAddressInsightsRequest$ = [3, n0, _GEAIR,\n    0,\n    [_EA],\n    [0], 1\n];\nexport var GetEmailAddressInsightsResponse$ = [3, n0, _GEAIRe,\n    0,\n    [_MV],\n    [() => MailboxValidation$]\n];\nexport var GetEmailIdentityPoliciesRequest$ = [3, n0, _GEIPR,\n    0,\n    [_EI],\n    [[0, 1]], 1\n];\nexport var GetEmailIdentityPoliciesResponse$ = [3, n0, _GEIPRe,\n    0,\n    [_Po],\n    [128 | 0]\n];\nexport var GetEmailIdentityRequest$ = [3, n0, _GEIR,\n    0,\n    [_EI],\n    [[0, 1]], 1\n];\nexport var GetEmailIdentityResponse$ = [3, n0, _GEIRe,\n    0,\n    [_IT, _FFS, _VFSS, _DA, _MFA, _Po, _Ta, _CSN, _VSe, _VI],\n    [0, 2, 2, () => DkimAttributes$, () => MailFromAttributes$, 128 | 0, () => TagList, 0, 0, () => VerificationInfo$]\n];\nexport var GetEmailTemplateRequest$ = [3, n0, _GETR,\n    0,\n    [_TN],\n    [[0, 1]], 1\n];\nexport var GetEmailTemplateResponse$ = [3, n0, _GETRe,\n    0,\n    [_TN, _TC, _Ta],\n    [0, () => EmailTemplateContent$, () => TagList], 2\n];\nexport var GetExportJobRequest$ = [3, n0, _GEJR,\n    0,\n    [_JI],\n    [[0, 1]], 1\n];\nexport var GetExportJobResponse$ = [3, n0, _GEJRe,\n    0,\n    [_JI, _EST, _JS, _EDx, _EDS, _CTr, _CTo, _FI, _St],\n    [0, 0, 0, () => ExportDestination$, [() => ExportDataSource$, 0], 4, 4, () => FailureInfo$, () => ExportStatistics$]\n];\nexport var GetImportJobRequest$ = [3, n0, _GIJR,\n    0,\n    [_JI],\n    [[0, 1]], 1\n];\nexport var GetImportJobResponse$ = [3, n0, _GIJRe,\n    0,\n    [_JI, _ID, _IDS, _FI, _JS, _CTr, _CTo, _PRC, _FRC],\n    [0, () => ImportDestination$, () => ImportDataSource$, () => FailureInfo$, 0, 4, 4, 1, 1]\n];\nexport var GetMessageInsightsRequest$ = [3, n0, _GMIR,\n    0,\n    [_MI],\n    [[0, 1]], 1\n];\nexport var GetMessageInsightsResponse$ = [3, n0, _GMIRe,\n    0,\n    [_MI, _FEA, _Su, _ET, _In],\n    [0, [() => InsightsEmailAddress, 0], [() => EmailSubject, 0], () => MessageTagList, [() => EmailInsightsList, 0]]\n];\nexport var GetMultiRegionEndpointRequest$ = [3, n0, _GMRER,\n    0,\n    [_EN],\n    [[0, 1]], 1\n];\nexport var GetMultiRegionEndpointResponse$ = [3, n0, _GMRERe,\n    0,\n    [_EN, _EIn, _Ro, _S, _CTr, _LUT],\n    [0, 0, () => Routes, 0, 4, 4]\n];\nexport var GetReputationEntityRequest$ = [3, n0, _GRER,\n    0,\n    [_RER, _RET],\n    [[0, 1], [0, 1]], 2\n];\nexport var GetReputationEntityResponse$ = [3, n0, _GRERe,\n    0,\n    [_RE],\n    [() => ReputationEntity$]\n];\nexport var GetSuppressedDestinationRequest$ = [3, n0, _GSDR,\n    0,\n    [_EA, _TNe],\n    [[0, 1], [0, { [_hQ]: _TNe }]], 1\n];\nexport var GetSuppressedDestinationResponse$ = [3, n0, _GSDRe,\n    0,\n    [_SDu],\n    [() => SuppressedDestination$], 1\n];\nexport var GetTenantRequest$ = [3, n0, _GTR,\n    0,\n    [_TNe],\n    [0], 1\n];\nexport var GetTenantResponse$ = [3, n0, _GTRe,\n    0,\n    [_Ten],\n    [() => Tenant$]\n];\nexport var GuardianAttributes$ = [3, n0, _GA,\n    0,\n    [_OSD],\n    [0]\n];\nexport var GuardianOptions$ = [3, n0, _GO,\n    0,\n    [_OSD],\n    [0]\n];\nexport var IdentityInfo$ = [3, n0, _II,\n    0,\n    [_IT, _INd, _SEe, _VSe],\n    [0, 0, 2, 0]\n];\nexport var ImportDataSource$ = [3, n0, _IDS,\n    0,\n    [_SU, _DF],\n    [0, 0], 2\n];\nexport var ImportDestination$ = [3, n0, _ID,\n    0,\n    [_SLD, _CLD],\n    [() => SuppressionListDestination$, () => ContactListDestination$]\n];\nexport var ImportJobSummary$ = [3, n0, _IJS,\n    0,\n    [_JI, _ID, _JS, _CTr, _PRC, _FRC],\n    [0, () => ImportDestination$, 0, 4, 1, 1]\n];\nexport var InboxPlacementTrackingOption$ = [3, n0, _IPTO,\n    0,\n    [_G, _TIr],\n    [2, 64 | 0]\n];\nexport var InsightsEvent$ = [3, n0, _IE,\n    0,\n    [_Ti, _Ty, _Det],\n    [4, 0, () => EventDetails$]\n];\nexport var IspPlacement$ = [3, n0, _IPsp,\n    0,\n    [_IN, _PSl],\n    [0, () => PlacementStatistics$]\n];\nexport var KinesisFirehoseDestination$ = [3, n0, _KFD,\n    0,\n    [_IRAa, _DSAe],\n    [0, 0], 2\n];\nexport var ListConfigurationSetsRequest$ = [3, n0, _LCSR,\n    0,\n    [_NT, _PS],\n    [[0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListConfigurationSetsResponse$ = [3, n0, _LCSRi,\n    0,\n    [_CS, _NT],\n    [64 | 0, 0]\n];\nexport var ListContactListsRequest$ = [3, n0, _LCLR,\n    0,\n    [_PS, _NT],\n    [[1, { [_hQ]: _PS }], [0, { [_hQ]: _NT }]]\n];\nexport var ListContactListsResponse$ = [3, n0, _LCLRi,\n    0,\n    [_CLon, _NT],\n    [() => ListOfContactLists, 0]\n];\nexport var ListContactsFilter$ = [3, n0, _LCF,\n    0,\n    [_FS, _TF],\n    [0, () => TopicFilter$]\n];\nexport var ListContactsRequest$ = [3, n0, _LCR,\n    0,\n    [_CLN, _F, _PS, _NT],\n    [[0, 1], () => ListContactsFilter$, 1, 0], 1\n];\nexport var ListContactsResponse$ = [3, n0, _LCRi,\n    0,\n    [_Cont, _NT],\n    [() => ListOfContacts, 0]\n];\nexport var ListCustomVerificationEmailTemplatesRequest$ = [3, n0, _LCVETR,\n    0,\n    [_NT, _PS],\n    [[0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListCustomVerificationEmailTemplatesResponse$ = [3, n0, _LCVETRi,\n    0,\n    [_CVET, _NT],\n    [() => CustomVerificationEmailTemplatesList, 0]\n];\nexport var ListDedicatedIpPoolsRequest$ = [3, n0, _LDIPR,\n    0,\n    [_NT, _PS],\n    [[0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListDedicatedIpPoolsResponse$ = [3, n0, _LDIPRi,\n    0,\n    [_DIPed, _NT],\n    [64 | 0, 0]\n];\nexport var ListDeliverabilityTestReportsRequest$ = [3, n0, _LDTRR,\n    0,\n    [_NT, _PS],\n    [[0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListDeliverabilityTestReportsResponse$ = [3, n0, _LDTRRi,\n    0,\n    [_DTReli, _NT],\n    [() => DeliverabilityTestReports, 0], 1\n];\nexport var ListDomainDeliverabilityCampaignsRequest$ = [3, n0, _LDDCR,\n    0,\n    [_SD, _ED, _SDub, _NT, _PS],\n    [[4, { [_hQ]: _SD }], [4, { [_hQ]: _ED }], [0, 1], [0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]], 3\n];\nexport var ListDomainDeliverabilityCampaignsResponse$ = [3, n0, _LDDCRi,\n    0,\n    [_DDCo, _NT],\n    [() => DomainDeliverabilityCampaignList, 0], 1\n];\nexport var ListEmailIdentitiesRequest$ = [3, n0, _LEIR,\n    0,\n    [_NT, _PS],\n    [[0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListEmailIdentitiesResponse$ = [3, n0, _LEIRi,\n    0,\n    [_EIma, _NT],\n    [() => IdentityInfoList, 0]\n];\nexport var ListEmailTemplatesRequest$ = [3, n0, _LETR,\n    0,\n    [_NT, _PS],\n    [[0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListEmailTemplatesResponse$ = [3, n0, _LETRi,\n    0,\n    [_TM, _NT],\n    [() => EmailTemplateMetadataList, 0]\n];\nexport var ListExportJobsRequest$ = [3, n0, _LEJR,\n    0,\n    [_NT, _PS, _EST, _JS],\n    [0, 1, 0, 0]\n];\nexport var ListExportJobsResponse$ = [3, n0, _LEJRi,\n    0,\n    [_EJ, _NT],\n    [() => ExportJobSummaryList, 0]\n];\nexport var ListImportJobsRequest$ = [3, n0, _LIJR,\n    0,\n    [_IDT, _NT, _PS],\n    [0, 0, 1]\n];\nexport var ListImportJobsResponse$ = [3, n0, _LIJRi,\n    0,\n    [_IJ, _NT],\n    [() => ImportJobSummaryList, 0]\n];\nexport var ListManagementOptions$ = [3, n0, _LMO,\n    0,\n    [_CLN, _TNo],\n    [0, 0], 1\n];\nexport var ListMultiRegionEndpointsRequest$ = [3, n0, _LMRER,\n    0,\n    [_NT, _PS],\n    [[0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListMultiRegionEndpointsResponse$ = [3, n0, _LMRERi,\n    0,\n    [_MRE, _NT],\n    [() => MultiRegionEndpoints, 0]\n];\nexport var ListRecommendationsRequest$ = [3, n0, _LRR,\n    0,\n    [_F, _NT, _PS],\n    [128 | 0, 0, 1]\n];\nexport var ListRecommendationsResponse$ = [3, n0, _LRRi,\n    0,\n    [_Re, _NT],\n    [() => RecommendationsList, 0]\n];\nexport var ListReputationEntitiesRequest$ = [3, n0, _LRER,\n    0,\n    [_F, _NT, _PS],\n    [128 | 0, 0, 1]\n];\nexport var ListReputationEntitiesResponse$ = [3, n0, _LRERi,\n    0,\n    [_REe, _NT],\n    [() => ReputationEntitiesList, 0]\n];\nexport var ListResourceTenantsRequest$ = [3, n0, _LRTR,\n    0,\n    [_RA, _PS, _NT],\n    [0, 1, 0], 1\n];\nexport var ListResourceTenantsResponse$ = [3, n0, _LRTRi,\n    0,\n    [_RTe, _NT],\n    [() => ResourceTenantMetadataList, 0]\n];\nexport var ListSuppressedDestinationsRequest$ = [3, n0, _LSDR,\n    0,\n    [_TNe, _Rea, _SD, _ED, _NT, _PS],\n    [[0, { [_hQ]: _TNe }], [64 | 0, { [_hQ]: _Reas }], [4, { [_hQ]: _SD }], [4, { [_hQ]: _ED }], [0, { [_hQ]: _NT }], [1, { [_hQ]: _PS }]]\n];\nexport var ListSuppressedDestinationsResponse$ = [3, n0, _LSDRi,\n    0,\n    [_SDS, _NT],\n    [() => SuppressedDestinationSummaries, 0]\n];\nexport var ListTagsForResourceRequest$ = [3, n0, _LTFRR,\n    0,\n    [_RA],\n    [[0, { [_hQ]: _RA }]], 1\n];\nexport var ListTagsForResourceResponse$ = [3, n0, _LTFRRi,\n    0,\n    [_Ta],\n    [() => TagList], 1\n];\nexport var ListTenantResourcesRequest$ = [3, n0, _LTRR,\n    0,\n    [_TNe, _F, _PS, _NT],\n    [0, 128 | 0, 1, 0], 1\n];\nexport var ListTenantResourcesResponse$ = [3, n0, _LTRRi,\n    0,\n    [_TR, _NT],\n    [() => TenantResourceList, 0]\n];\nexport var ListTenantsRequest$ = [3, n0, _LTR,\n    0,\n    [_NT, _PS],\n    [0, 1]\n];\nexport var ListTenantsResponse$ = [3, n0, _LTRi,\n    0,\n    [_Tena, _NT],\n    [() => TenantInfoList, 0]\n];\nexport var MailboxValidation$ = [3, n0, _MV,\n    0,\n    [_IV, _Eva],\n    [() => EmailAddressInsightsVerdict$, () => EmailAddressInsightsMailboxEvaluations$]\n];\nexport var MailFromAttributes$ = [3, n0, _MFA,\n    0,\n    [_MFD, _MFDS, _BOMF],\n    [0, 0, 0], 3\n];\nexport var Message$ = [3, n0, _Me,\n    0,\n    [_Su, _B, _He, _At],\n    [() => Content$, () => Body$, () => MessageHeaderList, () => AttachmentList], 2\n];\nexport var MessageHeader$ = [3, n0, _MH,\n    0,\n    [_Na, _V],\n    [0, 0], 2\n];\nexport var MessageInsightsDataSource$ = [3, n0, _MIDS,\n    0,\n    [_SD, _ED, _Inc, _Ex, _MRa],\n    [4, 4, [() => MessageInsightsFilters$, 0], [() => MessageInsightsFilters$, 0], 1], 2\n];\nexport var MessageInsightsFilters$ = [3, n0, _MIF,\n    0,\n    [_FEA, _Des, _Su, _Is, _LDE, _LEEa],\n    [[() => EmailAddressFilterList, 0], [() => EmailAddressFilterList, 0], [() => EmailSubjectFilterList, 0], 64 | 0, 64 | 0, 64 | 0]\n];\nexport var MessageTag$ = [3, n0, _MTe,\n    0,\n    [_Na, _V],\n    [0, 0], 2\n];\nexport var MetricDataError$ = [3, n0, _MDE,\n    0,\n    [_I, _Cod, _Me],\n    [0, 0, 0]\n];\nexport var MetricDataResult$ = [3, n0, _MDR,\n    0,\n    [_I, _Tim, _Va],\n    [0, 64 | 4, 64 | 1]\n];\nexport var MetricsDataSource$ = [3, n0, _MDSe,\n    0,\n    [_D, _N, _Met, _SD, _ED],\n    [[2, n0, _EDxp, 0, 0, 64 | 0], 0, () => ExportMetrics, 4, 4], 5\n];\nexport var MultiRegionEndpoint$ = [3, n0, _MREu,\n    0,\n    [_EN, _S, _EIn, _Reg, _CTr, _LUT],\n    [0, 0, 0, 64 | 0, 4, 4]\n];\nexport var OverallVolume$ = [3, n0, _OV,\n    0,\n    [_VS, _RRP, _DIP],\n    [() => VolumeStatistics$, 1, () => DomainIspPlacements]\n];\nexport var PinpointDestination$ = [3, n0, _PD,\n    0,\n    [_AAp],\n    [0]\n];\nexport var PlacementStatistics$ = [3, n0, _PSl,\n    0,\n    [_IP, _SP, _MP, _SPp, _DP],\n    [1, 1, 1, 1, 1]\n];\nexport var PricingAttributes$ = [3, n0, _PA,\n    0,\n    [_CP, _NP],\n    [0, 0]\n];\nexport var PutAccountDedicatedIpWarmupAttributesRequest$ = [3, n0, _PADIWAR,\n    0,\n    [_AWE],\n    [2]\n];\nexport var PutAccountDedicatedIpWarmupAttributesResponse$ = [3, n0, _PADIWARu,\n    0,\n    [],\n    []\n];\nexport var PutAccountDetailsRequest$ = [3, n0, _PADR,\n    0,\n    [_MT, _WURL, _CL, _UCD, _ACEAd, _PAE],\n    [0, [() => WebsiteURL, 0], 0, [() => UseCaseDescription, 0], [() => AdditionalContactEmailAddresses, 0], 2], 2\n];\nexport var PutAccountDetailsResponse$ = [3, n0, _PADRu,\n    0,\n    [],\n    []\n];\nexport var PutAccountPricingAttributesRequest$ = [3, n0, _PAPAR,\n    0,\n    [_Pl],\n    [0], 1\n];\nexport var PutAccountPricingAttributesResponse$ = [3, n0, _PAPARu,\n    0,\n    [],\n    []\n];\nexport var PutAccountSendingAttributesRequest$ = [3, n0, _PASAR,\n    0,\n    [_SEe],\n    [2]\n];\nexport var PutAccountSendingAttributesResponse$ = [3, n0, _PASARu,\n    0,\n    [],\n    []\n];\nexport var PutAccountSuppressionAttributesRequest$ = [3, n0, _PASARut,\n    0,\n    [_SR, _VAa],\n    [64 | 0, () => SuppressionValidationAttributes$]\n];\nexport var PutAccountSuppressionAttributesResponse$ = [3, n0, _PASARutc,\n    0,\n    [],\n    []\n];\nexport var PutAccountVdmAttributesRequest$ = [3, n0, _PAVAR,\n    0,\n    [_VA],\n    [() => VdmAttributes$], 1\n];\nexport var PutAccountVdmAttributesResponse$ = [3, n0, _PAVARu,\n    0,\n    [],\n    []\n];\nexport var PutConfigurationSetArchivingOptionsRequest$ = [3, n0, _PCSAOR,\n    0,\n    [_CSN, _AA],\n    [[0, 1], 0], 1\n];\nexport var PutConfigurationSetArchivingOptionsResponse$ = [3, n0, _PCSAORu,\n    0,\n    [],\n    []\n];\nexport var PutConfigurationSetDeliveryOptionsRequest$ = [3, n0, _PCSDOR,\n    0,\n    [_CSN, _TPl, _SPN, _MDS],\n    [[0, 1], 0, 0, 1], 1\n];\nexport var PutConfigurationSetDeliveryOptionsResponse$ = [3, n0, _PCSDORu,\n    0,\n    [],\n    []\n];\nexport var PutConfigurationSetReputationOptionsRequest$ = [3, n0, _PCSROR,\n    0,\n    [_CSN, _RME],\n    [[0, 1], 2], 1\n];\nexport var PutConfigurationSetReputationOptionsResponse$ = [3, n0, _PCSRORu,\n    0,\n    [],\n    []\n];\nexport var PutConfigurationSetSendingOptionsRequest$ = [3, n0, _PCSSOR,\n    0,\n    [_CSN, _SEe],\n    [[0, 1], 2], 1\n];\nexport var PutConfigurationSetSendingOptionsResponse$ = [3, n0, _PCSSORu,\n    0,\n    [],\n    []\n];\nexport var PutConfigurationSetSuppressionOptionsRequest$ = [3, n0, _PCSSORut,\n    0,\n    [_CSN, _SSu, _SR, _VOa],\n    [[0, 1], 0, 64 | 0, () => SuppressionValidationOptions$], 1\n];\nexport var PutConfigurationSetSuppressionOptionsResponse$ = [3, n0, _PCSSORuto,\n    0,\n    [],\n    []\n];\nexport var PutConfigurationSetTrackingOptionsRequest$ = [3, n0, _PCSTOR,\n    0,\n    [_CSN, _CRD, _HP],\n    [[0, 1], 0, 0], 1\n];\nexport var PutConfigurationSetTrackingOptionsResponse$ = [3, n0, _PCSTORu,\n    0,\n    [],\n    []\n];\nexport var PutConfigurationSetVdmOptionsRequest$ = [3, n0, _PCSVOR,\n    0,\n    [_CSN, _VO],\n    [[0, 1], () => VdmOptions$], 1\n];\nexport var PutConfigurationSetVdmOptionsResponse$ = [3, n0, _PCSVORu,\n    0,\n    [],\n    []\n];\nexport var PutDedicatedIpInPoolRequest$ = [3, n0, _PDIIPR,\n    0,\n    [_Ip, _DPN],\n    [[0, 1], 0], 2\n];\nexport var PutDedicatedIpInPoolResponse$ = [3, n0, _PDIIPRu,\n    0,\n    [],\n    []\n];\nexport var PutDedicatedIpPoolScalingAttributesRequest$ = [3, n0, _PDIPSAR,\n    0,\n    [_PN, _SM],\n    [[0, 1], 0], 2\n];\nexport var PutDedicatedIpPoolScalingAttributesResponse$ = [3, n0, _PDIPSARu,\n    0,\n    [],\n    []\n];\nexport var PutDedicatedIpWarmupAttributesRequest$ = [3, n0, _PDIWAR,\n    0,\n    [_Ip, _WP],\n    [[0, 1], 1], 2\n];\nexport var PutDedicatedIpWarmupAttributesResponse$ = [3, n0, _PDIWARu,\n    0,\n    [],\n    []\n];\nexport var PutDeliverabilityDashboardOptionRequest$ = [3, n0, _PDDOR,\n    0,\n    [_DE, _SDubs],\n    [2, () => DomainDeliverabilityTrackingOptions], 1\n];\nexport var PutDeliverabilityDashboardOptionResponse$ = [3, n0, _PDDORu,\n    0,\n    [],\n    []\n];\nexport var PutEmailIdentityConfigurationSetAttributesRequest$ = [3, n0, _PEICSAR,\n    0,\n    [_EI, _CSN],\n    [[0, 1], 0], 1\n];\nexport var PutEmailIdentityConfigurationSetAttributesResponse$ = [3, n0, _PEICSARu,\n    0,\n    [],\n    []\n];\nexport var PutEmailIdentityDkimAttributesRequest$ = [3, n0, _PEIDAR,\n    0,\n    [_EI, _SE],\n    [[0, 1], 2], 1\n];\nexport var PutEmailIdentityDkimAttributesResponse$ = [3, n0, _PEIDARu,\n    0,\n    [],\n    []\n];\nexport var PutEmailIdentityDkimSigningAttributesRequest$ = [3, n0, _PEIDSAR,\n    0,\n    [_EI, _SAO, _SAi],\n    [[0, 1], 0, [() => DkimSigningAttributes$, 0]], 2\n];\nexport var PutEmailIdentityDkimSigningAttributesResponse$ = [3, n0, _PEIDSARu,\n    0,\n    [_DS, _DT, _SHZ],\n    [0, 64 | 0, 0]\n];\nexport var PutEmailIdentityFeedbackAttributesRequest$ = [3, n0, _PEIFAR,\n    0,\n    [_EI, _EFE],\n    [[0, 1], 2], 1\n];\nexport var PutEmailIdentityFeedbackAttributesResponse$ = [3, n0, _PEIFARu,\n    0,\n    [],\n    []\n];\nexport var PutEmailIdentityMailFromAttributesRequest$ = [3, n0, _PEIMFAR,\n    0,\n    [_EI, _MFD, _BOMF],\n    [[0, 1], 0, 0], 1\n];\nexport var PutEmailIdentityMailFromAttributesResponse$ = [3, n0, _PEIMFARu,\n    0,\n    [],\n    []\n];\nexport var PutSuppressedDestinationRequest$ = [3, n0, _PSDR,\n    0,\n    [_EA, _Reas, _TNe],\n    [0, 0, 0], 2\n];\nexport var PutSuppressedDestinationResponse$ = [3, n0, _PSDRu,\n    0,\n    [],\n    []\n];\nexport var PutTenantSuppressionAttributesRequest$ = [3, n0, _PTSAR,\n    0,\n    [_TNe, _SR, _SSu],\n    [0, 64 | 0, 0], 1\n];\nexport var PutTenantSuppressionAttributesResponse$ = [3, n0, _PTSARu,\n    0,\n    [],\n    []\n];\nexport var RawMessage$ = [3, n0, _RM,\n    0,\n    [_Da],\n    [21], 1\n];\nexport var Recommendation$ = [3, n0, _Rec,\n    0,\n    [_RA, _Ty, _De, _S, _CTr, _LUT, _Im],\n    [0, 0, 0, 0, 4, 4, 0]\n];\nexport var ReplacementEmailContent$ = [3, n0, _REC,\n    0,\n    [_RTep],\n    [() => ReplacementTemplate$]\n];\nexport var ReplacementTemplate$ = [3, n0, _RTep,\n    0,\n    [_RTD],\n    [0]\n];\nexport var ReputationEntity$ = [3, n0, _RE,\n    0,\n    [_RER, _RET, _RMP, _CMS, _ASMS, _SSA, _RIe],\n    [0, 0, 0, () => StatusRecord$, () => StatusRecord$, 0, 0]\n];\nexport var ReputationOptions$ = [3, n0, _RO,\n    0,\n    [_RME, _LFS],\n    [2, 4]\n];\nexport var ResourceTenantMetadata$ = [3, n0, _RTM,\n    0,\n    [_TNe, _TI, _RA, _AT],\n    [0, 0, 0, 4]\n];\nexport var ReviewDetails$ = [3, n0, _RD,\n    0,\n    [_S, _CIas],\n    [0, 0]\n];\nexport var Route$ = [3, n0, _Rou,\n    0,\n    [_Regi],\n    [0], 1\n];\nexport var RouteDetails$ = [3, n0, _RDou,\n    0,\n    [_Regi],\n    [0], 1\n];\nexport var SendBulkEmailRequest$ = [3, n0, _SBER,\n    0,\n    [_DCe, _BEEu, _FEA, _FEAIA, _RTA, _FFEA, _FFEAIA, _DET, _CSN, _EIn, _TNe],\n    [() => BulkEmailContent$, () => BulkEmailEntryList, 0, 0, 64 | 0, 0, 0, () => MessageTagList, 0, 0, 0], 2\n];\nexport var SendBulkEmailResponse$ = [3, n0, _SBERe,\n    0,\n    [_BEERu],\n    [() => BulkEmailEntryResultList], 1\n];\nexport var SendCustomVerificationEmailRequest$ = [3, n0, _SCVER,\n    0,\n    [_EA, _TN, _CSN],\n    [0, 0, 0], 2\n];\nexport var SendCustomVerificationEmailResponse$ = [3, n0, _SCVERe,\n    0,\n    [_MI],\n    [0]\n];\nexport var SendEmailRequest$ = [3, n0, _SER,\n    0,\n    [_Con, _FEA, _FEAIA, _Des, _RTA, _FFEA, _FFEAIA, _ET, _CSN, _EIn, _TNe, _LMO],\n    [() => EmailContent$, 0, 0, () => Destination$, 64 | 0, 0, 0, () => MessageTagList, 0, 0, 0, () => ListManagementOptions$], 1\n];\nexport var SendEmailResponse$ = [3, n0, _SERe,\n    0,\n    [_MI],\n    [0]\n];\nexport var SendingOptions$ = [3, n0, _SO,\n    0,\n    [_SEe],\n    [2]\n];\nexport var SendQuota$ = [3, n0, _SQ,\n    0,\n    [_MHS, _MSR, _SLH],\n    [1, 1, 1]\n];\nexport var SnsDestination$ = [3, n0, _SDn,\n    0,\n    [_TAop],\n    [0], 1\n];\nexport var SOARecord$ = [3, n0, _SOAR,\n    0,\n    [_PNS, _AE, _SN],\n    [0, 0, 1]\n];\nexport var StatusRecord$ = [3, n0, _SRt,\n    0,\n    [_S, _Ca, _LUT],\n    [0, 0, 4]\n];\nexport var SuppressedDestination$ = [3, n0, _SDu,\n    0,\n    [_EA, _Reas, _LUTa, _Att, _TNe],\n    [0, 0, 4, () => SuppressedDestinationAttributes$, 0], 3\n];\nexport var SuppressedDestinationAttributes$ = [3, n0, _SDA,\n    0,\n    [_MI, _FIe],\n    [0, 0]\n];\nexport var SuppressedDestinationSummary$ = [3, n0, _SDSu,\n    0,\n    [_EA, _Reas, _LUTa],\n    [0, 0, 4], 3\n];\nexport var SuppressionAttributes$ = [3, n0, _SA,\n    0,\n    [_SR, _VAa],\n    [64 | 0, () => SuppressionValidationAttributes$]\n];\nexport var SuppressionConditionThreshold$ = [3, n0, _SCT,\n    0,\n    [_CTEo, _OCT],\n    [0, () => SuppressionConfidenceThreshold$], 1\n];\nexport var SuppressionConfidenceThreshold$ = [3, n0, _SCTu,\n    0,\n    [_CVT],\n    [0], 1\n];\nexport var SuppressionListDestination$ = [3, n0, _SLD,\n    0,\n    [_SLIA],\n    [0], 1\n];\nexport var SuppressionOptions$ = [3, n0, _SOu,\n    0,\n    [_SR, _SSu, _VOa],\n    [64 | 0, 0, () => SuppressionValidationOptions$]\n];\nexport var SuppressionValidationAttributes$ = [3, n0, _SVA,\n    0,\n    [_CTon],\n    [() => SuppressionConditionThreshold$], 1\n];\nexport var SuppressionValidationOptions$ = [3, n0, _SVO,\n    0,\n    [_CTon],\n    [() => SuppressionConditionThreshold$], 1\n];\nexport var Tag$ = [3, n0, _Tag,\n    0,\n    [_K, _V],\n    [0, 0], 2\n];\nexport var TagResourceRequest$ = [3, n0, _TRR,\n    0,\n    [_RA, _Ta],\n    [0, () => TagList], 2\n];\nexport var TagResourceResponse$ = [3, n0, _TRRa,\n    0,\n    [],\n    []\n];\nexport var Template$ = [3, n0, _Te,\n    0,\n    [_TN, _TAe, _TC, _TD, _He, _At],\n    [0, 0, () => EmailTemplateContent$, 0, () => MessageHeaderList, () => AttachmentList]\n];\nexport var Tenant$ = [3, n0, _Ten,\n    0,\n    [_TNe, _TI, _TA, _CTr, _Ta, _SS, _SA],\n    [0, 0, 0, 4, () => TagList, 0, () => TenantSuppressionAttributes$]\n];\nexport var TenantInfo$ = [3, n0, _TIe,\n    0,\n    [_TNe, _TI, _TA, _CTr],\n    [0, 0, 0, 4]\n];\nexport var TenantResource$ = [3, n0, _TRe,\n    0,\n    [_RTes, _RA],\n    [0, 0]\n];\nexport var TenantSuppressionAttributes$ = [3, n0, _TSA,\n    0,\n    [_SR, _SSu],\n    [64 | 0, 0]\n];\nexport var TestRenderEmailTemplateRequest$ = [3, n0, _TRETR,\n    0,\n    [_TN, _TD],\n    [[0, 1], 0], 2\n];\nexport var TestRenderEmailTemplateResponse$ = [3, n0, _TRETRe,\n    0,\n    [_RTen],\n    [0], 1\n];\nexport var Topic$ = [3, n0, _Top,\n    0,\n    [_TNo, _DNi, _DSSe, _De],\n    [0, 0, 0, 0], 3\n];\nexport var TopicFilter$ = [3, n0, _TF,\n    0,\n    [_TNo, _UDIPU],\n    [0, 2]\n];\nexport var TopicPreference$ = [3, n0, _TPo,\n    0,\n    [_TNo, _SSub],\n    [0, 0], 2\n];\nexport var TrackingOptions$ = [3, n0, _TO,\n    0,\n    [_CRD, _HP],\n    [0, 0], 1\n];\nexport var UntagResourceRequest$ = [3, n0, _URR,\n    0,\n    [_RA, _TK],\n    [[0, { [_hQ]: _RA }], [64 | 0, { [_hQ]: _TK }]], 2\n];\nexport var UntagResourceResponse$ = [3, n0, _URRn,\n    0,\n    [],\n    []\n];\nexport var UpdateConfigurationSetEventDestinationRequest$ = [3, n0, _UCSEDR,\n    0,\n    [_CSN, _EDN, _EDv],\n    [[0, 1], [0, 1], () => EventDestinationDefinition$], 3\n];\nexport var UpdateConfigurationSetEventDestinationResponse$ = [3, n0, _UCSEDRp,\n    0,\n    [],\n    []\n];\nexport var UpdateContactListRequest$ = [3, n0, _UCLR,\n    0,\n    [_CLN, _To, _De],\n    [[0, 1], () => Topics, 0], 1\n];\nexport var UpdateContactListResponse$ = [3, n0, _UCLRp,\n    0,\n    [],\n    []\n];\nexport var UpdateContactRequest$ = [3, n0, _UCR,\n    0,\n    [_CLN, _EA, _TP, _UA, _ADt],\n    [[0, 1], [0, 1], () => TopicPreferenceList, 2, 0], 2\n];\nexport var UpdateContactResponse$ = [3, n0, _UCRp,\n    0,\n    [],\n    []\n];\nexport var UpdateCustomVerificationEmailTemplateRequest$ = [3, n0, _UCVETR,\n    0,\n    [_TN, _FEA, _TS, _TC, _SRURL, _FRURL],\n    [[0, 1], 0, 0, 0, 0, 0], 6\n];\nexport var UpdateCustomVerificationEmailTemplateResponse$ = [3, n0, _UCVETRp,\n    0,\n    [],\n    []\n];\nexport var UpdateEmailIdentityPolicyRequest$ = [3, n0, _UEIPR,\n    0,\n    [_EI, _PNo, _P],\n    [[0, 1], [0, 1], 0], 3\n];\nexport var UpdateEmailIdentityPolicyResponse$ = [3, n0, _UEIPRp,\n    0,\n    [],\n    []\n];\nexport var UpdateEmailTemplateRequest$ = [3, n0, _UETR,\n    0,\n    [_TN, _TC],\n    [[0, 1], () => EmailTemplateContent$], 2\n];\nexport var UpdateEmailTemplateResponse$ = [3, n0, _UETRp,\n    0,\n    [],\n    []\n];\nexport var UpdateReputationEntityCustomerManagedStatusRequest$ = [3, n0, _URECMSR,\n    0,\n    [_RET, _RER, _SS],\n    [[0, 1], [0, 1], 0], 3\n];\nexport var UpdateReputationEntityCustomerManagedStatusResponse$ = [3, n0, _URECMSRp,\n    0,\n    [],\n    []\n];\nexport var UpdateReputationEntityPolicyRequest$ = [3, n0, _UREPR,\n    0,\n    [_RET, _RER, _REP],\n    [[0, 1], [0, 1], 0], 3\n];\nexport var UpdateReputationEntityPolicyResponse$ = [3, n0, _UREPRp,\n    0,\n    [],\n    []\n];\nexport var VdmAttributes$ = [3, n0, _VA,\n    0,\n    [_VE, _DAa, _GA],\n    [0, () => DashboardAttributes$, () => GuardianAttributes$], 1\n];\nexport var VdmOptions$ = [3, n0, _VO,\n    0,\n    [_DOa, _GO],\n    [() => DashboardOptions$, () => GuardianOptions$]\n];\nexport var VerificationInfo$ = [3, n0, _VI,\n    0,\n    [_LCT, _LST, _ETr, _SOAR],\n    [4, 4, 0, () => SOARecord$]\n];\nexport var VolumeStatistics$ = [3, n0, _VS,\n    0,\n    [_IRC, _SRC, _PI, _PSr],\n    [1, 1, 1, 1]\n];\nvar AdditionalContactEmailAddresses = [1, n0, _ACEAd,\n    8, [() => AdditionalContactEmailAddress,\n        0]\n];\nvar AttachmentList = [1, n0, _AL,\n    0, () => Attachment$\n];\nvar BatchGetMetricDataQueries = [1, n0, _BGMDQa,\n    0, () => BatchGetMetricDataQuery$\n];\nvar BlacklistEntries = [1, n0, _BEl,\n    0, () => BlacklistEntry$\n];\nvar BlacklistItemNames = 64 | 0;\nvar BulkEmailEntryList = [1, n0, _BEEL,\n    0, () => BulkEmailEntry$\n];\nvar BulkEmailEntryResultList = [1, n0, _BEERL,\n    0, () => BulkEmailEntryResult$\n];\nvar CloudWatchDimensionConfigurations = [1, n0, _CWDCl,\n    0, () => CloudWatchDimensionConfiguration$\n];\nvar ConfigurationSetNameList = 64 | 0;\nvar CustomVerificationEmailTemplatesList = [1, n0, _CVETL,\n    0, () => CustomVerificationEmailTemplateMetadata$\n];\nvar DailyVolumes = [1, n0, _DVa,\n    0, () => DailyVolume$\n];\nvar DedicatedIpList = [1, n0, _DIL,\n    0, () => DedicatedIp$\n];\nvar DeliverabilityTestReports = [1, n0, _DTReli,\n    0, () => DeliverabilityTestReport$\n];\nvar DnsTokenList = 64 | 0;\nvar DomainDeliverabilityCampaignList = [1, n0, _DDCL,\n    0, () => DomainDeliverabilityCampaign$\n];\nvar DomainDeliverabilityTrackingOptions = [1, n0, _DDTOo,\n    0, () => DomainDeliverabilityTrackingOption$\n];\nvar DomainIspPlacements = [1, n0, _DIP,\n    0, () => DomainIspPlacement$\n];\nvar EmailAddressFilterList = [1, n0, _EAFL,\n    0, [() => InsightsEmailAddress,\n        0]\n];\nvar EmailAddressList = 64 | 0;\nvar EmailInsightsList = [1, n0, _EIL,\n    0, [() => EmailInsights$,\n        0]\n];\nvar EmailSubjectFilterList = [1, n0, _ESFL,\n    0, [() => EmailSubject,\n        0]\n];\nvar EmailTemplateMetadataList = [1, n0, _ETML,\n    0, () => EmailTemplateMetadata$\n];\nvar Esps = 64 | 0;\nvar EventDestinations = [1, n0, _EDven,\n    0, () => EventDestination$\n];\nvar EventTypes = 64 | 0;\nvar ExportDimensionValue = 64 | 0;\nvar ExportJobSummaryList = [1, n0, _EJSL,\n    0, () => ExportJobSummary$\n];\nvar ExportMetrics = [1, n0, _EMxp,\n    0, () => ExportMetric$\n];\nvar IdentityInfoList = [1, n0, _IIL,\n    0, () => IdentityInfo$\n];\nvar ImportJobSummaryList = [1, n0, _IJSL,\n    0, () => ImportJobSummary$\n];\nvar InsightsEvents = [1, n0, _IEn,\n    0, () => InsightsEvent$\n];\nvar IpList = 64 | 0;\nvar IspFilterList = 64 | 0;\nvar IspNameList = 64 | 0;\nvar IspPlacements = [1, n0, _IPs,\n    0, () => IspPlacement$\n];\nvar LastDeliveryEventList = 64 | 0;\nvar LastEngagementEventList = 64 | 0;\nvar ListOfContactLists = [1, n0, _LOCL,\n    0, () => ContactList$\n];\nvar ListOfContacts = [1, n0, _LOC,\n    0, () => Contact$\n];\nvar ListOfDedicatedIpPools = 64 | 0;\nvar MessageHeaderList = [1, n0, _MHL,\n    0, () => MessageHeader$\n];\nvar MessageTagList = [1, n0, _MTL,\n    0, () => MessageTag$\n];\nvar MetricDataErrorList = [1, n0, _MDEL,\n    0, () => MetricDataError$\n];\nvar MetricDataResultList = [1, n0, _MDRL,\n    0, () => MetricDataResult$\n];\nvar MetricValueList = 64 | 1;\nvar MultiRegionEndpoints = [1, n0, _MRE,\n    0, () => MultiRegionEndpoint$\n];\nvar RecommendationsList = [1, n0, _RL,\n    0, () => Recommendation$\n];\nvar Regions = 64 | 0;\nvar ReputationEntitiesList = [1, n0, _REL,\n    0, () => ReputationEntity$\n];\nvar ResourceTenantMetadataList = [1, n0, _RTML,\n    0, () => ResourceTenantMetadata$\n];\nvar Routes = [1, n0, _Ro,\n    0, () => Route$\n];\nvar RoutesDetails = [1, n0, _RDo,\n    0, () => RouteDetails$\n];\nvar SuppressedDestinationSummaries = [1, n0, _SDS,\n    0, () => SuppressedDestinationSummary$\n];\nvar SuppressionListReasons = 64 | 0;\nvar TagKeyList = 64 | 0;\nvar TagList = [1, n0, _TL,\n    0, () => Tag$\n];\nvar TenantInfoList = [1, n0, _TIL,\n    0, () => TenantInfo$\n];\nvar TenantResourceList = [1, n0, _TRL,\n    0, () => TenantResource$\n];\nvar TimestampList = 64 | 4;\nvar TopicPreferenceList = [1, n0, _TPL,\n    0, () => TopicPreference$\n];\nvar Topics = [1, n0, _To,\n    0, () => Topic$\n];\nvar BlacklistReport = [2, n0, _BR,\n    0, 0, () => BlacklistEntries\n];\nvar Dimensions = 128 | 0;\nvar ExportDimensions = [2, n0, _EDxp,\n    0, 0, 64 | 0\n];\nvar ListRecommendationsFilter = 128 | 0;\nvar ListTenantResourcesFilter = 128 | 0;\nvar PolicyMap = 128 | 0;\nvar ReputationEntityFilter = 128 | 0;\nexport var BatchGetMetricData$ = [9, n0, _BGMD,\n    { [_h]: [\"POST\", \"/v2/email/metrics/batch\", 200] }, () => BatchGetMetricDataRequest$, () => BatchGetMetricDataResponse$\n];\nexport var CancelExportJob$ = [9, n0, _CEJ,\n    { [_h]: [\"PUT\", \"/v2/email/export-jobs/{JobId}/cancel\", 200] }, () => CancelExportJobRequest$, () => CancelExportJobResponse$\n];\nexport var CreateConfigurationSet$ = [9, n0, _CCS,\n    { [_h]: [\"POST\", \"/v2/email/configuration-sets\", 200] }, () => CreateConfigurationSetRequest$, () => CreateConfigurationSetResponse$\n];\nexport var CreateConfigurationSetEventDestination$ = [9, n0, _CCSED,\n    { [_h]: [\"POST\", \"/v2/email/configuration-sets/{ConfigurationSetName}/event-destinations\", 200] }, () => CreateConfigurationSetEventDestinationRequest$, () => CreateConfigurationSetEventDestinationResponse$\n];\nexport var CreateContact$ = [9, n0, _CC,\n    { [_h]: [\"POST\", \"/v2/email/contact-lists/{ContactListName}/contacts\", 200] }, () => CreateContactRequest$, () => CreateContactResponse$\n];\nexport var CreateContactList$ = [9, n0, _CCL,\n    { [_h]: [\"POST\", \"/v2/email/contact-lists\", 200] }, () => CreateContactListRequest$, () => CreateContactListResponse$\n];\nexport var CreateCustomVerificationEmailTemplate$ = [9, n0, _CCVET,\n    { [_h]: [\"POST\", \"/v2/email/custom-verification-email-templates\", 200] }, () => CreateCustomVerificationEmailTemplateRequest$, () => CreateCustomVerificationEmailTemplateResponse$\n];\nexport var CreateDedicatedIpPool$ = [9, n0, _CDIP,\n    { [_h]: [\"POST\", \"/v2/email/dedicated-ip-pools\", 200] }, () => CreateDedicatedIpPoolRequest$, () => CreateDedicatedIpPoolResponse$\n];\nexport var CreateDeliverabilityTestReport$ = [9, n0, _CDTR,\n    { [_h]: [\"POST\", \"/v2/email/deliverability-dashboard/test\", 200] }, () => CreateDeliverabilityTestReportRequest$, () => CreateDeliverabilityTestReportResponse$\n];\nexport var CreateEmailIdentity$ = [9, n0, _CEI,\n    { [_h]: [\"POST\", \"/v2/email/identities\", 200] }, () => CreateEmailIdentityRequest$, () => CreateEmailIdentityResponse$\n];\nexport var CreateEmailIdentityPolicy$ = [9, n0, _CEIP,\n    { [_h]: [\"POST\", \"/v2/email/identities/{EmailIdentity}/policies/{PolicyName}\", 200] }, () => CreateEmailIdentityPolicyRequest$, () => CreateEmailIdentityPolicyResponse$\n];\nexport var CreateEmailTemplate$ = [9, n0, _CET,\n    { [_h]: [\"POST\", \"/v2/email/templates\", 200] }, () => CreateEmailTemplateRequest$, () => CreateEmailTemplateResponse$\n];\nexport var CreateExportJob$ = [9, n0, _CEJr,\n    { [_h]: [\"POST\", \"/v2/email/export-jobs\", 200] }, () => CreateExportJobRequest$, () => CreateExportJobResponse$\n];\nexport var CreateImportJob$ = [9, n0, _CIJ,\n    { [_h]: [\"POST\", \"/v2/email/import-jobs\", 200] }, () => CreateImportJobRequest$, () => CreateImportJobResponse$\n];\nexport var CreateMultiRegionEndpoint$ = [9, n0, _CMRE,\n    { [_h]: [\"POST\", \"/v2/email/multi-region-endpoints\", 200] }, () => CreateMultiRegionEndpointRequest$, () => CreateMultiRegionEndpointResponse$\n];\nexport var CreateTenant$ = [9, n0, _CTre,\n    { [_h]: [\"POST\", \"/v2/email/tenants\", 200] }, () => CreateTenantRequest$, () => CreateTenantResponse$\n];\nexport var CreateTenantResourceAssociation$ = [9, n0, _CTRA,\n    { [_h]: [\"POST\", \"/v2/email/tenants/resources\", 200] }, () => CreateTenantResourceAssociationRequest$, () => CreateTenantResourceAssociationResponse$\n];\nexport var DeleteConfigurationSet$ = [9, n0, _DCS,\n    { [_h]: [\"DELETE\", \"/v2/email/configuration-sets/{ConfigurationSetName}\", 200] }, () => DeleteConfigurationSetRequest$, () => DeleteConfigurationSetResponse$\n];\nexport var DeleteConfigurationSetEventDestination$ = [9, n0, _DCSED,\n    { [_h]: [\"DELETE\", \"/v2/email/configuration-sets/{ConfigurationSetName}/event-destinations/{EventDestinationName}\", 200] }, () => DeleteConfigurationSetEventDestinationRequest$, () => DeleteConfigurationSetEventDestinationResponse$\n];\nexport var DeleteContact$ = [9, n0, _DCel,\n    { [_h]: [\"DELETE\", \"/v2/email/contact-lists/{ContactListName}/contacts/{EmailAddress}\", 200] }, () => DeleteContactRequest$, () => DeleteContactResponse$\n];\nexport var DeleteContactList$ = [9, n0, _DCL,\n    { [_h]: [\"DELETE\", \"/v2/email/contact-lists/{ContactListName}\", 200] }, () => DeleteContactListRequest$, () => DeleteContactListResponse$\n];\nexport var DeleteCustomVerificationEmailTemplate$ = [9, n0, _DCVET,\n    { [_h]: [\"DELETE\", \"/v2/email/custom-verification-email-templates/{TemplateName}\", 200] }, () => DeleteCustomVerificationEmailTemplateRequest$, () => DeleteCustomVerificationEmailTemplateResponse$\n];\nexport var DeleteDedicatedIpPool$ = [9, n0, _DDIP,\n    { [_h]: [\"DELETE\", \"/v2/email/dedicated-ip-pools/{PoolName}\", 200] }, () => DeleteDedicatedIpPoolRequest$, () => DeleteDedicatedIpPoolResponse$\n];\nexport var DeleteEmailIdentity$ = [9, n0, _DEI,\n    { [_h]: [\"DELETE\", \"/v2/email/identities/{EmailIdentity}\", 200] }, () => DeleteEmailIdentityRequest$, () => DeleteEmailIdentityResponse$\n];\nexport var DeleteEmailIdentityPolicy$ = [9, n0, _DEIP,\n    { [_h]: [\"DELETE\", \"/v2/email/identities/{EmailIdentity}/policies/{PolicyName}\", 200] }, () => DeleteEmailIdentityPolicyRequest$, () => DeleteEmailIdentityPolicyResponse$\n];\nexport var DeleteEmailTemplate$ = [9, n0, _DETe,\n    { [_h]: [\"DELETE\", \"/v2/email/templates/{TemplateName}\", 200] }, () => DeleteEmailTemplateRequest$, () => DeleteEmailTemplateResponse$\n];\nexport var DeleteMultiRegionEndpoint$ = [9, n0, _DMRE,\n    { [_h]: [\"DELETE\", \"/v2/email/multi-region-endpoints/{EndpointName}\", 200] }, () => DeleteMultiRegionEndpointRequest$, () => DeleteMultiRegionEndpointResponse$\n];\nexport var DeleteSuppressedDestination$ = [9, n0, _DSD,\n    { [_h]: [\"DELETE\", \"/v2/email/suppression/addresses/{EmailAddress}\", 200] }, () => DeleteSuppressedDestinationRequest$, () => DeleteSuppressedDestinationResponse$\n];\nexport var DeleteTenant$ = [9, n0, _DTe,\n    { [_h]: [\"POST\", \"/v2/email/tenants/delete\", 200] }, () => DeleteTenantRequest$, () => DeleteTenantResponse$\n];\nexport var DeleteTenantResourceAssociation$ = [9, n0, _DTRA,\n    { [_h]: [\"POST\", \"/v2/email/tenants/resources/delete\", 200] }, () => DeleteTenantResourceAssociationRequest$, () => DeleteTenantResourceAssociationResponse$\n];\nexport var GetAccount$ = [9, n0, _GAe,\n    { [_h]: [\"GET\", \"/v2/email/account\", 200] }, () => GetAccountRequest$, () => GetAccountResponse$\n];\nexport var GetBlacklistReports$ = [9, n0, _GBR,\n    { [_h]: [\"GET\", \"/v2/email/deliverability-dashboard/blacklist-report\", 200] }, () => GetBlacklistReportsRequest$, () => GetBlacklistReportsResponse$\n];\nexport var GetConfigurationSet$ = [9, n0, _GCS,\n    { [_h]: [\"GET\", \"/v2/email/configuration-sets/{ConfigurationSetName}\", 200] }, () => GetConfigurationSetRequest$, () => GetConfigurationSetResponse$\n];\nexport var GetConfigurationSetEventDestinations$ = [9, n0, _GCSED,\n    { [_h]: [\"GET\", \"/v2/email/configuration-sets/{ConfigurationSetName}/event-destinations\", 200] }, () => GetConfigurationSetEventDestinationsRequest$, () => GetConfigurationSetEventDestinationsResponse$\n];\nexport var GetContact$ = [9, n0, _GC,\n    { [_h]: [\"GET\", \"/v2/email/contact-lists/{ContactListName}/contacts/{EmailAddress}\", 200] }, () => GetContactRequest$, () => GetContactResponse$\n];\nexport var GetContactList$ = [9, n0, _GCL,\n    { [_h]: [\"GET\", \"/v2/email/contact-lists/{ContactListName}\", 200] }, () => GetContactListRequest$, () => GetContactListResponse$\n];\nexport var GetCustomVerificationEmailTemplate$ = [9, n0, _GCVET,\n    { [_h]: [\"GET\", \"/v2/email/custom-verification-email-templates/{TemplateName}\", 200] }, () => GetCustomVerificationEmailTemplateRequest$, () => GetCustomVerificationEmailTemplateResponse$\n];\nexport var GetDedicatedIp$ = [9, n0, _GDI,\n    { [_h]: [\"GET\", \"/v2/email/dedicated-ips/{Ip}\", 200] }, () => GetDedicatedIpRequest$, () => GetDedicatedIpResponse$\n];\nexport var GetDedicatedIpPool$ = [9, n0, _GDIP,\n    { [_h]: [\"GET\", \"/v2/email/dedicated-ip-pools/{PoolName}\", 200] }, () => GetDedicatedIpPoolRequest$, () => GetDedicatedIpPoolResponse$\n];\nexport var GetDedicatedIps$ = [9, n0, _GDIe,\n    { [_h]: [\"GET\", \"/v2/email/dedicated-ips\", 200] }, () => GetDedicatedIpsRequest$, () => GetDedicatedIpsResponse$\n];\nexport var GetDeliverabilityDashboardOptions$ = [9, n0, _GDDO,\n    { [_h]: [\"GET\", \"/v2/email/deliverability-dashboard\", 200] }, () => GetDeliverabilityDashboardOptionsRequest$, () => GetDeliverabilityDashboardOptionsResponse$\n];\nexport var GetDeliverabilityTestReport$ = [9, n0, _GDTR,\n    { [_h]: [\"GET\", \"/v2/email/deliverability-dashboard/test-reports/{ReportId}\", 200] }, () => GetDeliverabilityTestReportRequest$, () => GetDeliverabilityTestReportResponse$\n];\nexport var GetDomainDeliverabilityCampaign$ = [9, n0, _GDDC,\n    { [_h]: [\"GET\", \"/v2/email/deliverability-dashboard/campaigns/{CampaignId}\", 200] }, () => GetDomainDeliverabilityCampaignRequest$, () => GetDomainDeliverabilityCampaignResponse$\n];\nexport var GetDomainStatisticsReport$ = [9, n0, _GDSR,\n    { [_h]: [\"GET\", \"/v2/email/deliverability-dashboard/statistics-report/{Domain}\", 200] }, () => GetDomainStatisticsReportRequest$, () => GetDomainStatisticsReportResponse$\n];\nexport var GetEmailAddressInsights$ = [9, n0, _GEAI,\n    { [_h]: [\"POST\", \"/v2/email/email-address-insights\", 200] }, () => GetEmailAddressInsightsRequest$, () => GetEmailAddressInsightsResponse$\n];\nexport var GetEmailIdentity$ = [9, n0, _GEI,\n    { [_h]: [\"GET\", \"/v2/email/identities/{EmailIdentity}\", 200] }, () => GetEmailIdentityRequest$, () => GetEmailIdentityResponse$\n];\nexport var GetEmailIdentityPolicies$ = [9, n0, _GEIP,\n    { [_h]: [\"GET\", \"/v2/email/identities/{EmailIdentity}/policies\", 200] }, () => GetEmailIdentityPoliciesRequest$, () => GetEmailIdentityPoliciesResponse$\n];\nexport var GetEmailTemplate$ = [9, n0, _GET,\n    { [_h]: [\"GET\", \"/v2/email/templates/{TemplateName}\", 200] }, () => GetEmailTemplateRequest$, () => GetEmailTemplateResponse$\n];\nexport var GetExportJob$ = [9, n0, _GEJ,\n    { [_h]: [\"GET\", \"/v2/email/export-jobs/{JobId}\", 200] }, () => GetExportJobRequest$, () => GetExportJobResponse$\n];\nexport var GetImportJob$ = [9, n0, _GIJ,\n    { [_h]: [\"GET\", \"/v2/email/import-jobs/{JobId}\", 200] }, () => GetImportJobRequest$, () => GetImportJobResponse$\n];\nexport var GetMessageInsights$ = [9, n0, _GMI,\n    { [_h]: [\"GET\", \"/v2/email/insights/{MessageId}\", 200] }, () => GetMessageInsightsRequest$, () => GetMessageInsightsResponse$\n];\nexport var GetMultiRegionEndpoint$ = [9, n0, _GMRE,\n    { [_h]: [\"GET\", \"/v2/email/multi-region-endpoints/{EndpointName}\", 200] }, () => GetMultiRegionEndpointRequest$, () => GetMultiRegionEndpointResponse$\n];\nexport var GetReputationEntity$ = [9, n0, _GRE,\n    { [_h]: [\"GET\", \"/v2/email/reputation/entities/{ReputationEntityType}/{ReputationEntityReference}\", 200] }, () => GetReputationEntityRequest$, () => GetReputationEntityResponse$\n];\nexport var GetSuppressedDestination$ = [9, n0, _GSD,\n    { [_h]: [\"GET\", \"/v2/email/suppression/addresses/{EmailAddress}\", 200] }, () => GetSuppressedDestinationRequest$, () => GetSuppressedDestinationResponse$\n];\nexport var GetTenant$ = [9, n0, _GT,\n    { [_h]: [\"POST\", \"/v2/email/tenants/get\", 200] }, () => GetTenantRequest$, () => GetTenantResponse$\n];\nexport var ListConfigurationSets$ = [9, n0, _LCS,\n    { [_h]: [\"GET\", \"/v2/email/configuration-sets\", 200] }, () => ListConfigurationSetsRequest$, () => ListConfigurationSetsResponse$\n];\nexport var ListContactLists$ = [9, n0, _LCL,\n    { [_h]: [\"GET\", \"/v2/email/contact-lists\", 200] }, () => ListContactListsRequest$, () => ListContactListsResponse$\n];\nexport var ListContacts$ = [9, n0, _LC,\n    { [_h]: [\"POST\", \"/v2/email/contact-lists/{ContactListName}/contacts/list\", 200] }, () => ListContactsRequest$, () => ListContactsResponse$\n];\nexport var ListCustomVerificationEmailTemplates$ = [9, n0, _LCVET,\n    { [_h]: [\"GET\", \"/v2/email/custom-verification-email-templates\", 200] }, () => ListCustomVerificationEmailTemplatesRequest$, () => ListCustomVerificationEmailTemplatesResponse$\n];\nexport var ListDedicatedIpPools$ = [9, n0, _LDIP,\n    { [_h]: [\"GET\", \"/v2/email/dedicated-ip-pools\", 200] }, () => ListDedicatedIpPoolsRequest$, () => ListDedicatedIpPoolsResponse$\n];\nexport var ListDeliverabilityTestReports$ = [9, n0, _LDTR,\n    { [_h]: [\"GET\", \"/v2/email/deliverability-dashboard/test-reports\", 200] }, () => ListDeliverabilityTestReportsRequest$, () => ListDeliverabilityTestReportsResponse$\n];\nexport var ListDomainDeliverabilityCampaigns$ = [9, n0, _LDDC,\n    { [_h]: [\"GET\", \"/v2/email/deliverability-dashboard/domains/{SubscribedDomain}/campaigns\", 200] }, () => ListDomainDeliverabilityCampaignsRequest$, () => ListDomainDeliverabilityCampaignsResponse$\n];\nexport var ListEmailIdentities$ = [9, n0, _LEI,\n    { [_h]: [\"GET\", \"/v2/email/identities\", 200] }, () => ListEmailIdentitiesRequest$, () => ListEmailIdentitiesResponse$\n];\nexport var ListEmailTemplates$ = [9, n0, _LET,\n    { [_h]: [\"GET\", \"/v2/email/templates\", 200] }, () => ListEmailTemplatesRequest$, () => ListEmailTemplatesResponse$\n];\nexport var ListExportJobs$ = [9, n0, _LEJ,\n    { [_h]: [\"POST\", \"/v2/email/list-export-jobs\", 200] }, () => ListExportJobsRequest$, () => ListExportJobsResponse$\n];\nexport var ListImportJobs$ = [9, n0, _LIJ,\n    { [_h]: [\"POST\", \"/v2/email/import-jobs/list\", 200] }, () => ListImportJobsRequest$, () => ListImportJobsResponse$\n];\nexport var ListMultiRegionEndpoints$ = [9, n0, _LMRE,\n    { [_h]: [\"GET\", \"/v2/email/multi-region-endpoints\", 200] }, () => ListMultiRegionEndpointsRequest$, () => ListMultiRegionEndpointsResponse$\n];\nexport var ListRecommendations$ = [9, n0, _LR,\n    { [_h]: [\"POST\", \"/v2/email/vdm/recommendations\", 200] }, () => ListRecommendationsRequest$, () => ListRecommendationsResponse$\n];\nexport var ListReputationEntities$ = [9, n0, _LRE,\n    { [_h]: [\"POST\", \"/v2/email/reputation/entities\", 200] }, () => ListReputationEntitiesRequest$, () => ListReputationEntitiesResponse$\n];\nexport var ListResourceTenants$ = [9, n0, _LRT,\n    { [_h]: [\"POST\", \"/v2/email/resources/tenants/list\", 200] }, () => ListResourceTenantsRequest$, () => ListResourceTenantsResponse$\n];\nexport var ListSuppressedDestinations$ = [9, n0, _LSD,\n    { [_h]: [\"GET\", \"/v2/email/suppression/addresses\", 200] }, () => ListSuppressedDestinationsRequest$, () => ListSuppressedDestinationsResponse$\n];\nexport var ListTagsForResource$ = [9, n0, _LTFR,\n    { [_h]: [\"GET\", \"/v2/email/tags\", 200] }, () => ListTagsForResourceRequest$, () => ListTagsForResourceResponse$\n];\nexport var ListTenantResources$ = [9, n0, _LTRis,\n    { [_h]: [\"POST\", \"/v2/email/tenants/resources/list\", 200] }, () => ListTenantResourcesRequest$, () => ListTenantResourcesResponse$\n];\nexport var ListTenants$ = [9, n0, _LTi,\n    { [_h]: [\"POST\", \"/v2/email/tenants/list\", 200] }, () => ListTenantsRequest$, () => ListTenantsResponse$\n];\nexport var PutAccountDedicatedIpWarmupAttributes$ = [9, n0, _PADIWA,\n    { [_h]: [\"PUT\", \"/v2/email/account/dedicated-ips/warmup\", 200] }, () => PutAccountDedicatedIpWarmupAttributesRequest$, () => PutAccountDedicatedIpWarmupAttributesResponse$\n];\nexport var PutAccountDetails$ = [9, n0, _PAD,\n    { [_h]: [\"POST\", \"/v2/email/account/details\", 200] }, () => PutAccountDetailsRequest$, () => PutAccountDetailsResponse$\n];\nexport var PutAccountPricingAttributes$ = [9, n0, _PAPA,\n    { [_h]: [\"PUT\", \"/v2/email/account/pricing-attributes\", 200] }, () => PutAccountPricingAttributesRequest$, () => PutAccountPricingAttributesResponse$\n];\nexport var PutAccountSendingAttributes$ = [9, n0, _PASA,\n    { [_h]: [\"PUT\", \"/v2/email/account/sending\", 200] }, () => PutAccountSendingAttributesRequest$, () => PutAccountSendingAttributesResponse$\n];\nexport var PutAccountSuppressionAttributes$ = [9, n0, _PASAu,\n    { [_h]: [\"PUT\", \"/v2/email/account/suppression\", 200] }, () => PutAccountSuppressionAttributesRequest$, () => PutAccountSuppressionAttributesResponse$\n];\nexport var PutAccountVdmAttributes$ = [9, n0, _PAVA,\n    { [_h]: [\"PUT\", \"/v2/email/account/vdm\", 200] }, () => PutAccountVdmAttributesRequest$, () => PutAccountVdmAttributesResponse$\n];\nexport var PutConfigurationSetArchivingOptions$ = [9, n0, _PCSAO,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/archiving-options\", 200] }, () => PutConfigurationSetArchivingOptionsRequest$, () => PutConfigurationSetArchivingOptionsResponse$\n];\nexport var PutConfigurationSetDeliveryOptions$ = [9, n0, _PCSDO,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/delivery-options\", 200] }, () => PutConfigurationSetDeliveryOptionsRequest$, () => PutConfigurationSetDeliveryOptionsResponse$\n];\nexport var PutConfigurationSetReputationOptions$ = [9, n0, _PCSRO,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/reputation-options\", 200] }, () => PutConfigurationSetReputationOptionsRequest$, () => PutConfigurationSetReputationOptionsResponse$\n];\nexport var PutConfigurationSetSendingOptions$ = [9, n0, _PCSSO,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/sending\", 200] }, () => PutConfigurationSetSendingOptionsRequest$, () => PutConfigurationSetSendingOptionsResponse$\n];\nexport var PutConfigurationSetSuppressionOptions$ = [9, n0, _PCSSOu,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/suppression-options\", 200] }, () => PutConfigurationSetSuppressionOptionsRequest$, () => PutConfigurationSetSuppressionOptionsResponse$\n];\nexport var PutConfigurationSetTrackingOptions$ = [9, n0, _PCSTO,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/tracking-options\", 200] }, () => PutConfigurationSetTrackingOptionsRequest$, () => PutConfigurationSetTrackingOptionsResponse$\n];\nexport var PutConfigurationSetVdmOptions$ = [9, n0, _PCSVO,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/vdm-options\", 200] }, () => PutConfigurationSetVdmOptionsRequest$, () => PutConfigurationSetVdmOptionsResponse$\n];\nexport var PutDedicatedIpInPool$ = [9, n0, _PDIIP,\n    { [_h]: [\"PUT\", \"/v2/email/dedicated-ips/{Ip}/pool\", 200] }, () => PutDedicatedIpInPoolRequest$, () => PutDedicatedIpInPoolResponse$\n];\nexport var PutDedicatedIpPoolScalingAttributes$ = [9, n0, _PDIPSA,\n    { [_h]: [\"PUT\", \"/v2/email/dedicated-ip-pools/{PoolName}/scaling\", 200] }, () => PutDedicatedIpPoolScalingAttributesRequest$, () => PutDedicatedIpPoolScalingAttributesResponse$\n];\nexport var PutDedicatedIpWarmupAttributes$ = [9, n0, _PDIWA,\n    { [_h]: [\"PUT\", \"/v2/email/dedicated-ips/{Ip}/warmup\", 200] }, () => PutDedicatedIpWarmupAttributesRequest$, () => PutDedicatedIpWarmupAttributesResponse$\n];\nexport var PutDeliverabilityDashboardOption$ = [9, n0, _PDDO,\n    { [_h]: [\"PUT\", \"/v2/email/deliverability-dashboard\", 200] }, () => PutDeliverabilityDashboardOptionRequest$, () => PutDeliverabilityDashboardOptionResponse$\n];\nexport var PutEmailIdentityConfigurationSetAttributes$ = [9, n0, _PEICSA,\n    { [_h]: [\"PUT\", \"/v2/email/identities/{EmailIdentity}/configuration-set\", 200] }, () => PutEmailIdentityConfigurationSetAttributesRequest$, () => PutEmailIdentityConfigurationSetAttributesResponse$\n];\nexport var PutEmailIdentityDkimAttributes$ = [9, n0, _PEIDA,\n    { [_h]: [\"PUT\", \"/v2/email/identities/{EmailIdentity}/dkim\", 200] }, () => PutEmailIdentityDkimAttributesRequest$, () => PutEmailIdentityDkimAttributesResponse$\n];\nexport var PutEmailIdentityDkimSigningAttributes$ = [9, n0, _PEIDSA,\n    { [_h]: [\"PUT\", \"/v2/email/identities/{EmailIdentity}/dkim/signing\", 200] }, () => PutEmailIdentityDkimSigningAttributesRequest$, () => PutEmailIdentityDkimSigningAttributesResponse$\n];\nexport var PutEmailIdentityFeedbackAttributes$ = [9, n0, _PEIFA,\n    { [_h]: [\"PUT\", \"/v2/email/identities/{EmailIdentity}/feedback\", 200] }, () => PutEmailIdentityFeedbackAttributesRequest$, () => PutEmailIdentityFeedbackAttributesResponse$\n];\nexport var PutEmailIdentityMailFromAttributes$ = [9, n0, _PEIMFA,\n    { [_h]: [\"PUT\", \"/v2/email/identities/{EmailIdentity}/mail-from\", 200] }, () => PutEmailIdentityMailFromAttributesRequest$, () => PutEmailIdentityMailFromAttributesResponse$\n];\nexport var PutSuppressedDestination$ = [9, n0, _PSD,\n    { [_h]: [\"PUT\", \"/v2/email/suppression/addresses\", 200] }, () => PutSuppressedDestinationRequest$, () => PutSuppressedDestinationResponse$\n];\nexport var PutTenantSuppressionAttributes$ = [9, n0, _PTSA,\n    { [_h]: [\"POST\", \"/v2/email/tenant/suppression\", 200] }, () => PutTenantSuppressionAttributesRequest$, () => PutTenantSuppressionAttributesResponse$\n];\nexport var SendBulkEmail$ = [9, n0, _SBE,\n    { [_h]: [\"POST\", \"/v2/email/outbound-bulk-emails\", 200] }, () => SendBulkEmailRequest$, () => SendBulkEmailResponse$\n];\nexport var SendCustomVerificationEmail$ = [9, n0, _SCVE,\n    { [_h]: [\"POST\", \"/v2/email/outbound-custom-verification-emails\", 200] }, () => SendCustomVerificationEmailRequest$, () => SendCustomVerificationEmailResponse$\n];\nexport var SendEmail$ = [9, n0, _SEen,\n    { [_h]: [\"POST\", \"/v2/email/outbound-emails\", 200] }, () => SendEmailRequest$, () => SendEmailResponse$\n];\nexport var TagResource$ = [9, n0, _TRa,\n    { [_h]: [\"POST\", \"/v2/email/tags\", 200] }, () => TagResourceRequest$, () => TagResourceResponse$\n];\nexport var TestRenderEmailTemplate$ = [9, n0, _TRET,\n    { [_h]: [\"POST\", \"/v2/email/templates/{TemplateName}/render\", 200] }, () => TestRenderEmailTemplateRequest$, () => TestRenderEmailTemplateResponse$\n];\nexport var UntagResource$ = [9, n0, _UR,\n    { [_h]: [\"DELETE\", \"/v2/email/tags\", 200] }, () => UntagResourceRequest$, () => UntagResourceResponse$\n];\nexport var UpdateConfigurationSetEventDestination$ = [9, n0, _UCSED,\n    { [_h]: [\"PUT\", \"/v2/email/configuration-sets/{ConfigurationSetName}/event-destinations/{EventDestinationName}\", 200] }, () => UpdateConfigurationSetEventDestinationRequest$, () => UpdateConfigurationSetEventDestinationResponse$\n];\nexport var UpdateContact$ = [9, n0, _UC,\n    { [_h]: [\"PUT\", \"/v2/email/contact-lists/{ContactListName}/contacts/{EmailAddress}\", 200] }, () => UpdateContactRequest$, () => UpdateContactResponse$\n];\nexport var UpdateContactList$ = [9, n0, _UCL,\n    { [_h]: [\"PUT\", \"/v2/email/contact-lists/{ContactListName}\", 200] }, () => UpdateContactListRequest$, () => UpdateContactListResponse$\n];\nexport var UpdateCustomVerificationEmailTemplate$ = [9, n0, _UCVET,\n    { [_h]: [\"PUT\", \"/v2/email/custom-verification-email-templates/{TemplateName}\", 200] }, () => UpdateCustomVerificationEmailTemplateRequest$, () => UpdateCustomVerificationEmailTemplateResponse$\n];\nexport var UpdateEmailIdentityPolicy$ = [9, n0, _UEIP,\n    { [_h]: [\"PUT\", \"/v2/email/identities/{EmailIdentity}/policies/{PolicyName}\", 200] }, () => UpdateEmailIdentityPolicyRequest$, () => UpdateEmailIdentityPolicyResponse$\n];\nexport var UpdateEmailTemplate$ = [9, n0, _UET,\n    { [_h]: [\"PUT\", \"/v2/email/templates/{TemplateName}\", 200] }, () => UpdateEmailTemplateRequest$, () => UpdateEmailTemplateResponse$\n];\nexport var UpdateReputationEntityCustomerManagedStatus$ = [9, n0, _URECMS,\n    { [_h]: [\"PUT\", \"/v2/email/reputation/entities/{ReputationEntityType}/{ReputationEntityReference}/customer-managed-status\", 200] }, () => UpdateReputationEntityCustomerManagedStatusRequest$, () => UpdateReputationEntityCustomerManagedStatusResponse$\n];\nexport var UpdateReputationEntityPolicy$ = [9, n0, _UREP,\n    { [_h]: [\"PUT\", \"/v2/email/reputation/entities/{ReputationEntityType}/{ReputationEntityReference}/policy\", 200] }, () => UpdateReputationEntityPolicyRequest$, () => UpdateReputationEntityPolicyResponse$\n];\n","import { AwsSdkSigV4ASigner, AwsSdkSigV4Signer } from \"@aws-sdk/core/httpAuthSchemes\";\nimport { AwsRestJsonProtocol } from \"@aws-sdk/core/protocols\";\nimport { SignatureV4MultiRegion } from \"@aws-sdk/signature-v4-multi-region\";\nimport { Sha256 } from \"@smithy/core/checksum\";\nimport { NoOpLogger } from \"@smithy/core/client\";\nimport { parseUrl } from \"@smithy/core/protocols\";\nimport { fromBase64, fromUtf8, toBase64, toUtf8 } from \"@smithy/core/serde\";\nimport { defaultSESv2HttpAuthSchemeProvider } from \"./auth/httpAuthSchemeProvider\";\nimport { defaultEndpointResolver } from \"./endpoint/endpointResolver\";\nimport { errorTypeRegistries } from \"./schemas/schemas_0\";\nexport const getRuntimeConfig = (config) => {\n    return {\n        apiVersion: \"2019-09-27\",\n        base64Decoder: config?.base64Decoder ?? fromBase64,\n        base64Encoder: config?.base64Encoder ?? toBase64,\n        disableHostPrefix: config?.disableHostPrefix ?? false,\n        endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n        extensions: config?.extensions ?? [],\n        httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSESv2HttpAuthSchemeProvider,\n        httpAuthSchemes: config?.httpAuthSchemes ?? [\n            {\n                schemeId: \"aws.auth#sigv4\",\n                identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n                signer: new AwsSdkSigV4Signer(),\n            },\n            {\n                schemeId: \"aws.auth#sigv4a\",\n                identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4a\"),\n                signer: new AwsSdkSigV4ASigner(),\n            },\n        ],\n        logger: config?.logger ?? new NoOpLogger(),\n        protocol: config?.protocol ?? AwsRestJsonProtocol,\n        protocolSettings: config?.protocolSettings ?? {\n            defaultNamespace: \"com.amazonaws.sesv2\",\n            errorTypeRegistries,\n            version: \"2019-09-27\",\n            serviceTarget: \"SimpleEmailService_v2\",\n        },\n        serviceId: config?.serviceId ?? \"SESv2\",\n        sha256: config?.sha256 ?? Sha256,\n        signerConstructor: config?.signerConstructor ?? SignatureV4MultiRegion,\n        urlParser: config?.urlParser ?? parseUrl,\n        utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n        utf8Encoder: config?.utf8Encoder ?? toUtf8,\n    };\n};\n","import packageInfo from \"../package.json\";\nimport { createDefaultUserAgentProvider, emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_APP_ID_CONFIG_OPTIONS, } from \"@aws-sdk/core/client\";\nimport { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, NODE_SIGV4A_CONFIG_OPTIONS } from \"@aws-sdk/core/httpAuthSchemes\";\nimport { defaultProvider as credentialDefaultProvider } from \"@aws-sdk/credential-provider-node\";\nimport { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from \"@smithy/core/client\";\nimport { loadConfig as loadNodeConfig, NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, resolveDefaultsModeConfig, } from \"@smithy/core/config\";\nimport { DEFAULT_RETRY_MODE, NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS, } from \"@smithy/core/retry\";\nimport { calculateBodyLength } from \"@smithy/core/serde\";\nimport { NodeHttpHandler as RequestHandler, streamCollector } from \"@smithy/node-http-handler\";\nimport { getRuntimeConfig as getSharedRuntimeConfig } from \"./runtimeConfig.shared\";\nexport const getRuntimeConfig = (config) => {\n    emitWarningIfUnsupportedVersion(process.version);\n    const defaultsMode = resolveDefaultsModeConfig(config);\n    const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n    const clientSharedValues = getSharedRuntimeConfig(config);\n    awsCheckVersion(process.version);\n    const loaderConfig = {\n        profile: config?.profile,\n        logger: clientSharedValues.logger,\n    };\n    return {\n        ...clientSharedValues,\n        ...config,\n        runtime: \"node\",\n        defaultsMode,\n        authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n        bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n        credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider,\n        defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n        maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n        region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n        requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider),\n        retryMode: config?.retryMode ??\n            loadNodeConfig({\n                ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n                default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n            }, config),\n        sigv4aSigningRegionSet: config?.sigv4aSigningRegionSet ?? loadNodeConfig(NODE_SIGV4A_CONFIG_OPTIONS, loaderConfig),\n        streamCollector: config?.streamCollector ?? streamCollector,\n        useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n        useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n        userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n    };\n};\n","export const getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n    const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n    let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n    let _credentials = runtimeConfig.credentials;\n    return {\n        setHttpAuthScheme(httpAuthScheme) {\n            const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n            if (index === -1) {\n                _httpAuthSchemes.push(httpAuthScheme);\n            }\n            else {\n                _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n            }\n        },\n        httpAuthSchemes() {\n            return _httpAuthSchemes;\n        },\n        setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n            _httpAuthSchemeProvider = httpAuthSchemeProvider;\n        },\n        httpAuthSchemeProvider() {\n            return _httpAuthSchemeProvider;\n        },\n        setCredentials(credentials) {\n            _credentials = credentials;\n        },\n        credentials() {\n            return _credentials;\n        },\n    };\n};\nexport const resolveHttpAuthRuntimeConfig = (config) => {\n    return {\n        httpAuthSchemes: config.httpAuthSchemes(),\n        httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n        credentials: config.credentials(),\n    };\n};\n","import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration } from \"@aws-sdk/core/client\";\nimport { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from \"@smithy/core/client\";\nimport { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from \"@smithy/core/protocols\";\nimport { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from \"./auth/httpAuthExtensionConfiguration\";\nexport const resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n    const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n    extensions.forEach((extension) => extension.configure(extensionConfiguration));\n    return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n","import { getHostHeaderPlugin, getLoggerPlugin, getRecursionDetectionPlugin, getUserAgentPlugin, resolveHostHeaderConfig, resolveUserAgentConfig, } from \"@aws-sdk/core/client\";\nimport { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from \"@smithy/core\";\nimport { Client as __Client, } from \"@smithy/core/client\";\nimport { resolveRegionConfig } from \"@smithy/core/config\";\nimport { resolveEndpointConfig } from \"@smithy/core/endpoints\";\nimport { getContentLengthPlugin } from \"@smithy/core/protocols\";\nimport { getRetryPlugin, resolveRetryConfig, } from \"@smithy/core/retry\";\nimport { getSchemaSerdePlugin } from \"@smithy/core/schema\";\nimport { defaultSESv2HttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from \"./auth/httpAuthSchemeProvider\";\nimport { resolveClientEndpointParameters, } from \"./endpoint/EndpointParameters\";\nimport { getRuntimeConfig as __getRuntimeConfig } from \"./runtimeConfig\";\nimport { resolveRuntimeExtensions } from \"./runtimeExtensions\";\nexport { __Client };\nexport class SESv2Client extends __Client {\n    config;\n    constructor(...[configuration]) {\n        const _config_0 = __getRuntimeConfig(configuration || {});\n        super(_config_0);\n        this.initConfig = _config_0;\n        const _config_1 = resolveClientEndpointParameters(_config_0);\n        const _config_2 = resolveUserAgentConfig(_config_1);\n        const _config_3 = resolveRetryConfig(_config_2);\n        const _config_4 = resolveRegionConfig(_config_3);\n        const _config_5 = resolveHostHeaderConfig(_config_4);\n        const _config_6 = resolveEndpointConfig(_config_5);\n        const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n        const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n        this.config = _config_8;\n        this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n        this.middlewareStack.use(getUserAgentPlugin(this.config));\n        this.middlewareStack.use(getRetryPlugin(this.config));\n        this.middlewareStack.use(getContentLengthPlugin(this.config));\n        this.middlewareStack.use(getHostHeaderPlugin(this.config));\n        this.middlewareStack.use(getLoggerPlugin(this.config));\n        this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n        this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n            httpAuthSchemeParametersProvider: defaultSESv2HttpAuthSchemeParametersProvider,\n            identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n                \"aws.auth#sigv4\": config.credentials,\n                \"aws.auth#sigv4a\": config.credentials,\n            }),\n        }));\n        this.middlewareStack.use(getHttpSigningPlugin(this.config));\n    }\n    destroy() {\n        super.destroy();\n    }\n}\n","import { makeBuilder } from \"@smithy/core/client\";\nimport { getEndpointPlugin } from \"@smithy/core/endpoints\";\nimport { commonParams } from \"./endpoint/EndpointParameters\";\nexport const command = makeBuilder(commonParams, \"SimpleEmailService_v2\", \"SESv2Client\", getEndpointPlugin);\nexport const _ep0 = {};\nexport const _ep1 = {\n    EndpointId: { type: \"contextParams\", name: \"EndpointId\" },\n};\nexport const _mw0 = (Command, cs, config, o) => [];\n","import { _ep0, _mw0, command } from \"../commandBuilder\";\nimport { CreateEmailTemplate$ } from \"../schemas/schemas_0\";\nexport class CreateEmailTemplateCommand extends command(_ep0, _mw0, \"CreateEmailTemplate\", CreateEmailTemplate$) {\n}\n","import { _ep0, _mw0, command } from \"../commandBuilder\";\nimport { TestRenderEmailTemplate$ } from \"../schemas/schemas_0\";\nexport class TestRenderEmailTemplateCommand extends command(_ep0, _mw0, \"TestRenderEmailTemplate\", TestRenderEmailTemplate$) {\n}\n","import { _ep0, _mw0, command } from \"../commandBuilder\";\nimport { UpdateEmailTemplate$ } from \"../schemas/schemas_0\";\nexport class UpdateEmailTemplateCommand extends command(_ep0, _mw0, \"UpdateEmailTemplate\", UpdateEmailTemplate$) {\n}\n","import {\n  CreateEmailTemplateCommand,\n  SESv2Client,\n  TestRenderEmailTemplateCommand,\n  UpdateEmailTemplateCommand,\n} from \"@aws-sdk/client-sesv2\";\nimport { AUTH_SES_TEMPLATES, type AuthSesTemplate } from \"./auth-templates.js\";\n\nexport type ProvisionOutcome = {\n  templateName: string;\n  /** \"render-skipped\" still published — SES just could not confirm it renders. */\n  status: \"published\" | \"render-skipped\" | \"failed\";\n  detail?: string;\n};\n\n/**\n * Deliberately not `upsertSESTemplate` from @wraps/email. That one takes\n * explicit credentials because the platform assumes a role into someone else's\n * account, and its AccessDenied message tells the reader to run\n * `wraps platform update-role` — advice that is wrong for a self-hoster. Here\n * the caller already IS the account that owns SES, so the ambient chain is the\n * right identity and the remediation is different.\n */\nfunction client(region: string): SESv2Client {\n  return new SESv2Client({ region });\n}\n\nasync function publish(\n  region: string,\n  template: AuthSesTemplate\n): Promise<void> {\n  const ses = client(region);\n  const TemplateContent = {\n    Subject: template.subject,\n    Html: template.htmlPart,\n    Text: template.textPart,\n  };\n\n  try {\n    await ses.send(\n      new CreateEmailTemplateCommand({\n        TemplateName: template.templateName,\n        TemplateContent,\n      })\n    );\n  } catch (error) {\n    const err = error as { name?: string };\n    if (err.name !== \"AlreadyExistsException\") {\n      throw error;\n    }\n    // Re-running deploy or upgrade is how an edited template ships.\n    await ses.send(\n      new UpdateEmailTemplateCommand({\n        TemplateName: template.templateName,\n        TemplateContent,\n      })\n    );\n  }\n}\n\n/**\n * Ask SES to render what was just published.\n *\n * This is the point of publishing at deploy time rather than trusting the\n * source: SES's Handlebars dialect is not handlebars.js, so a `{{#if}}` or\n * triple stash that looks right in the file can still fail inside SES. Without\n * this the failure surfaces later as a RenderingFailure event on a real signup,\n * which nobody is watching.\n *\n * A permission or throttle error is NOT a template problem — older roles may\n * lack ses:TestRenderEmailTemplate — so it downgrades to \"render-skipped\"\n * rather than failing a template that published fine.\n */\nasync function confirmRenders(\n  region: string,\n  template: AuthSesTemplate\n): Promise<ProvisionOutcome> {\n  try {\n    await client(region).send(\n      new TestRenderEmailTemplateCommand({\n        TemplateName: template.templateName,\n        TemplateData: JSON.stringify(template.sampleData),\n      })\n    );\n    return { templateName: template.templateName, status: \"published\" };\n  } catch (error) {\n    const err = error as { name?: string; message?: string };\n    const message = err.message ?? \"Unknown SES error\";\n\n    // AWS SDK v3 error names are unreliable — check the message too.\n    if (err.name === \"BadRequestException\" || message.includes(\"BadRequest\")) {\n      return {\n        templateName: template.templateName,\n        status: \"failed\",\n        detail: message,\n      };\n    }\n\n    return {\n      templateName: template.templateName,\n      status: \"render-skipped\",\n      detail: message,\n    };\n  }\n}\n\n/**\n * Publish every SES template the platform's own auth email addresses by name.\n *\n * On the SaaS platform these were created once by hand; nothing creates them in\n * a fresh account, so without this a self-hosted install has the entire send\n * path wired and still dies at the first signup on\n * `Template email-verification does not exist`.\n *\n * Idempotent, and never throws — one template's failure does not stop the rest,\n * and the caller decides how loudly to report.\n */\nexport async function provisionAuthTemplates(\n  region: string\n): Promise<ProvisionOutcome[]> {\n  const outcomes: ProvisionOutcome[] = [];\n\n  for (const template of AUTH_SES_TEMPLATES) {\n    try {\n      await publish(region, template);\n    } catch (error) {\n      outcomes.push({\n        templateName: template.templateName,\n        status: \"failed\",\n        detail: error instanceof Error ? error.message : String(error),\n      });\n      continue;\n    }\n    outcomes.push(await confirmRenders(region, template));\n  }\n\n  return outcomes;\n}\n\n/** Human-readable one-liner per outcome, shared by both deploy paths. */\nexport function describeProvisionOutcomes(outcomes: ProvisionOutcome[]): {\n  published: ProvisionOutcome[];\n  skipped: ProvisionOutcome[];\n  failed: ProvisionOutcome[];\n} {\n  return {\n    published: outcomes.filter((o) => o.status === \"published\"),\n    skipped: outcomes.filter((o) => o.status === \"render-skipped\"),\n    failed: outcomes.filter((o) => o.status === \"failed\"),\n  };\n}\n","import {\n  type ArchiveRetention,\n  DEFAULT_EVENT_TYPES,\n  DEFAULT_SUPPRESSION_REASONS,\n  DEFAULT_TAGS,\n  type DNSConfig,\n  type SESEventType,\n  type SuppressionReason,\n} from \"@wraps/core\";\nimport type { ResolvedConfig, WrapsEmailArgs } from \"./types.js\";\n\n/**\n * Apply default values to WrapsEmailArgs\n */\nexport function applyDefaults(args: WrapsEmailArgs): ResolvedConfig {\n  // Extract values from pulumi.Input (for simple cases where we can unwrap)\n  // Note: In practice, some of these will be pulumi.Output and need special handling\n  const vercel = args.vercel as\n    | { teamSlug: string; projectName: string }\n    | undefined;\n  const oidc = args.oidc as\n    | { providerUrl: string; audience: string; subjectPattern: string }\n    | undefined;\n  const domain = args.domain as string | undefined;\n  const tracking = args.tracking as\n    | {\n        enabled?: boolean;\n        opens?: boolean;\n        clicks?: boolean;\n        customRedirectDomain?: string;\n        httpsEnabled?: boolean;\n        wafEnabled?: boolean;\n      }\n    | undefined;\n  const events = args.events as\n    | {\n        types?: SESEventType[];\n        storeHistory?: boolean;\n        retention?: string;\n      }\n    | undefined;\n  const suppressionList = args.suppressionList as\n    | { enabled?: boolean; reasons?: SuppressionReason[] }\n    | undefined;\n  const tags = args.tags as Record<string, string> | undefined;\n\n  const dns = args.dns as DNSConfig | undefined;\n\n  return {\n    vercel,\n    oidc,\n    domain,\n    dns,\n    mailFromSubdomain: (args.mailFromSubdomain as string) ?? \"mail\",\n    tracking: {\n      enabled: tracking?.enabled ?? true,\n      opens: tracking?.opens ?? true,\n      clicks: tracking?.clicks ?? true,\n      customRedirectDomain: tracking?.customRedirectDomain,\n      httpsEnabled: tracking?.httpsEnabled ?? false,\n      wafEnabled: tracking?.wafEnabled ?? false,\n    },\n    events: events\n      ? {\n          types: events.types ?? DEFAULT_EVENT_TYPES,\n          storeHistory: events.storeHistory ?? true,\n          retention: (events.retention ?? \"90days\") as ArchiveRetention,\n        }\n      : undefined,\n    archiving: args.archiving as\n      | { enabled?: boolean; retention?: ArchiveRetention }\n      | undefined,\n    smtp: args.smtp as { enabled?: boolean } | undefined,\n    suppressionList: {\n      enabled: suppressionList?.enabled ?? true,\n      reasons: suppressionList?.reasons ?? DEFAULT_SUPPRESSION_REASONS,\n    },\n    reputationMetrics: (args.reputationMetrics as boolean) ?? true,\n    tlsRequired: (args.tlsRequired as boolean) ?? false,\n    dedicatedIp: (args.dedicatedIp as boolean) ?? false,\n    sendingEnabled: (args.sendingEnabled as boolean) ?? true,\n    webhook: args.webhook as\n      | { awsAccountNumber: string; webhookSecret: string; webhookUrl?: string }\n      | undefined,\n    tags: {\n      ...DEFAULT_TAGS,\n      ManagedBy: \"wraps-pulumi\",\n      ...(tags || {}),\n    },\n  };\n}\n","import * as aws from \"@pulumi/aws\";\nimport type * as pulumi from \"@pulumi/pulumi\";\nimport type { TransformFunctions } from \"../types.js\";\n\n/**\n * ACM certificate result\n */\nexport type ACMResult = {\n  certificate: aws.acm.Certificate;\n  certificateValidation?: aws.acm.CertificateValidation;\n  validationRecords: pulumi.Output<\n    Array<{\n      name: string;\n      type: string;\n      value: string;\n    }>\n  >;\n};\n\n/**\n * Create ACM certificate for custom tracking domain\n *\n * IMPORTANT: CloudFront requires ACM certificates to be created in us-east-1 region.\n * This function creates the certificate in us-east-1 regardless of the SES region.\n *\n * If a Route53 hosted zone ID is provided, DNS validation records will be created\n * automatically and we'll wait for validation. Otherwise, validation records are\n * returned for manual creation.\n */\nexport function createACMCertificate(\n  name: string,\n  domain: string,\n  hostedZoneId: string | undefined,\n  tags: Record<string, string>,\n  transform: TransformFunctions[\"certificate\"] | undefined,\n  opts?: pulumi.ComponentResourceOptions\n): ACMResult {\n  // CloudFront requires ACM certs in us-east-1\n  const usEast1Provider = new aws.Provider(\n    `${name}-acm-us-east-1`,\n    { region: \"us-east-1\" },\n    opts\n  );\n\n  // Certificate configuration\n  let certArgs: aws.acm.CertificateArgs = {\n    domainName: domain,\n    validationMethod: \"DNS\",\n    tags: {\n      ...tags,\n      Description: \"SSL certificate for Wraps email tracking domain\",\n    },\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    certArgs = transform(certArgs);\n  }\n\n  const certificate = new aws.acm.Certificate(\n    `${name}-tracking-cert`,\n    certArgs,\n    { ...opts, provider: usEast1Provider }\n  );\n\n  // Extract validation records\n  const validationRecords = certificate.domainValidationOptions.apply(\n    (options) =>\n      options.map((option) => ({\n        name: option.resourceRecordName,\n        type: option.resourceRecordType,\n        value: option.resourceRecordValue,\n      }))\n  );\n\n  // If Route53 hosted zone is provided, create validation records automatically\n  let certificateValidation: aws.acm.CertificateValidation | undefined;\n\n  if (hostedZoneId) {\n    // Create validation record in Route53\n    const validationRecord = new aws.route53.Record(\n      `${name}-cert-validation-record`,\n      {\n        zoneId: hostedZoneId,\n        name: certificate.domainValidationOptions[0].resourceRecordName,\n        type: certificate.domainValidationOptions[0].resourceRecordType,\n        records: [certificate.domainValidationOptions[0].resourceRecordValue],\n        ttl: 60,\n      },\n      opts\n    );\n\n    // Wait for certificate validation to complete\n    certificateValidation = new aws.acm.CertificateValidation(\n      `${name}-cert-validation`,\n      {\n        certificateArn: certificate.arn,\n        validationRecordFqdns: [validationRecord.fqdn],\n      },\n      { ...opts, provider: usEast1Provider }\n    );\n  }\n\n  return {\n    certificate,\n    certificateValidation,\n    validationRecords,\n  };\n}\n","import * as aws from \"@pulumi/aws\";\nimport type * as pulumi from \"@pulumi/pulumi\";\nimport type { TransformFunctions } from \"../types.js\";\nimport { createACMCertificate } from \"./acm.js\";\n\n/**\n * CloudFront distribution result\n */\nexport type CloudFrontResult = {\n  distribution: aws.cloudfront.Distribution;\n  domainName: pulumi.Output<string>;\n  webAcl?: aws.wafv2.WebAcl;\n};\n\n/**\n * Create WAF Web ACL with rate limiting for CloudFront\n *\n * This creates a WAFv2 Web ACL with rate limiting protection\n * to prevent abuse of tracking endpoints.\n */\nfunction createWAFWebACL(\n  name: string,\n  tags: Record<string, string>,\n  opts?: pulumi.ComponentResourceOptions\n): aws.wafv2.WebAcl {\n  // WAF for CloudFront must be created in us-east-1\n  const usEast1Provider = new aws.Provider(\n    `${name}-waf-us-east-1`,\n    { region: \"us-east-1\" },\n    opts\n  );\n\n  return new aws.wafv2.WebAcl(\n    `${name}-tracking-waf`,\n    {\n      scope: \"CLOUDFRONT\",\n      description: \"Rate limiting protection for Wraps email tracking\",\n\n      defaultAction: {\n        allow: {},\n      },\n\n      rules: [\n        {\n          name: \"RateLimitRule\",\n          priority: 1,\n          action: {\n            block: {},\n          },\n          statement: {\n            rateBasedStatement: {\n              limit: 2000, // 2000 requests per 5 minutes per IP\n              aggregateKeyType: \"IP\",\n            },\n          },\n          visibilityConfig: {\n            sampledRequestsEnabled: true,\n            cloudwatchMetricsEnabled: true,\n            metricName: \"RateLimitRule\",\n          },\n        },\n      ],\n\n      visibilityConfig: {\n        sampledRequestsEnabled: true,\n        cloudwatchMetricsEnabled: true,\n        metricName: \"wraps-email-tracking-waf\",\n      },\n\n      tags: {\n        ...tags,\n        Description: \"WAF for Wraps email tracking with rate limiting\",\n      },\n    },\n    { ...opts, provider: usEast1Provider }\n  );\n}\n\n/**\n * Create CloudFront distribution for HTTPS tracking domain\n *\n * This creates a CloudFront distribution that sits in front of AWS SES's tracking endpoint\n * (r.{region}.awstrack.me) and provides HTTPS support with a custom domain and SSL certificate.\n * Optionally creates a WAF Web ACL with rate limiting for security.\n */\nexport function createCloudFrontTracking(\n  name: string,\n  customTrackingDomain: string,\n  region: pulumi.Output<string>,\n  certificateArn: pulumi.Output<string>,\n  wafEnabled: boolean,\n  tags: Record<string, string>,\n  transform: TransformFunctions[\"distribution\"] | undefined,\n  opts?: pulumi.ComponentResourceOptions\n): CloudFrontResult {\n  // Create WAF Web ACL if enabled\n  const webAcl = wafEnabled ? createWAFWebACL(name, tags, opts) : undefined;\n\n  // SES tracking origin domain\n  const sesTrackingOrigin = region.apply((r) => `r.${r}.awstrack.me`);\n\n  // CloudFront distribution configuration\n  let distributionArgs: aws.cloudfront.DistributionArgs = {\n    enabled: true,\n    comment: \"Wraps email tracking with HTTPS support\",\n    aliases: [customTrackingDomain],\n\n    // Attach WAF Web ACL for rate limiting protection (only if enabled)\n    webAclId: webAcl?.arn,\n\n    // Origin: SES tracking endpoint\n    origins: [\n      {\n        domainName: sesTrackingOrigin,\n        originId: \"ses-tracking\",\n        customOriginConfig: {\n          httpPort: 80,\n          httpsPort: 443,\n          originProtocolPolicy: \"http-only\", // SES tracking endpoint is HTTP\n          originSslProtocols: [\"TLSv1.2\"],\n        },\n      },\n    ],\n\n    // Default cache behavior\n    defaultCacheBehavior: {\n      targetOriginId: \"ses-tracking\",\n      viewerProtocolPolicy: \"redirect-to-https\",\n      allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n      cachedMethods: [\"GET\", \"HEAD\"],\n\n      // Forward all query strings and headers (tracking links use query params)\n      forwardedValues: {\n        queryString: true,\n        cookies: {\n          forward: \"all\",\n        },\n        headers: [\"*\"],\n      },\n\n      // Minimal caching for tracking redirects\n      minTtl: 0,\n      defaultTtl: 0,\n      maxTtl: 31_536_000,\n\n      compress: true,\n    },\n\n    // Price class (use only North America & Europe for cost optimization)\n    priceClass: \"PriceClass_100\",\n\n    // Restrictions (none)\n    restrictions: {\n      geoRestriction: {\n        restrictionType: \"none\",\n      },\n    },\n\n    // SSL certificate from ACM\n    viewerCertificate: {\n      acmCertificateArn: certificateArn,\n      sslSupportMethod: \"sni-only\",\n      minimumProtocolVersion: \"TLSv1.2_2021\",\n    },\n\n    tags: {\n      ...tags,\n      Description: \"Wraps email tracking CloudFront distribution\",\n    },\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    distributionArgs = transform(distributionArgs);\n  }\n\n  const distribution = new aws.cloudfront.Distribution(\n    `${name}-tracking-cdn`,\n    distributionArgs,\n    opts\n  );\n\n  return {\n    distribution,\n    domainName: distribution.domainName,\n    webAcl,\n  };\n}\n\n/**\n * Create HTTPS tracking resources (ACM + CloudFront)\n *\n * This is the main entry point for setting up HTTPS tracking.\n * It creates:\n * 1. ACM certificate (in us-east-1 for CloudFront)\n * 2. Optional Route53 validation record\n * 3. CloudFront distribution\n * 4. Optional WAF Web ACL\n */\nexport function createHTTPSTracking(\n  name: string,\n  config: {\n    customTrackingDomain: string;\n    region: pulumi.Output<string>;\n    hostedZoneId?: string;\n    wafEnabled: boolean;\n  },\n  tags: Record<string, string>,\n  transform: TransformFunctions | undefined,\n  opts?: pulumi.ComponentResourceOptions\n): {\n  cloudfront: CloudFrontResult;\n  acmCertificateArn: pulumi.Output<string>;\n  acmValidationRecords: pulumi.Output<\n    Array<{ name: string; type: string; value: string }>\n  >;\n} {\n  // Create ACM certificate\n  const acmResult = createACMCertificate(\n    name,\n    config.customTrackingDomain,\n    config.hostedZoneId,\n    tags,\n    transform?.certificate,\n    opts\n  );\n\n  // Determine certificate ARN to use\n  // If validation was set up (Route53), use the validated cert ARN\n  // Otherwise use the certificate ARN directly (user will need to validate manually)\n  const certificateArn = acmResult.certificateValidation\n    ? acmResult.certificateValidation.certificateArn\n    : acmResult.certificate.arn;\n\n  // Create CloudFront distribution\n  const cloudfront = createCloudFrontTracking(\n    name,\n    config.customTrackingDomain,\n    config.region,\n    certificateArn,\n    config.wafEnabled,\n    tags,\n    transform?.distribution,\n    opts\n  );\n\n  return {\n    cloudfront,\n    acmCertificateArn: acmResult.certificate.arn,\n    acmValidationRecords: acmResult.validationRecords,\n  };\n}\n","import * as aws from \"@pulumi/aws\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\nimport * as command from \"@pulumi/command\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport type {\n  CloudflareDNSConfig,\n  DNSConfig,\n  Route53DNSConfig,\n  VercelDNSConfig,\n} from \"@wraps/core\";\n\n/**\n * DNS records to create for email authentication\n */\nexport type EmailDNSRecords = {\n  domain: string;\n  dkimTokens: pulumi.Output<string[]>;\n  mailFromDomain?: string;\n  region: pulumi.Output<string>;\n};\n\n/**\n * Create DNS records based on provider configuration\n */\nexport function createDNSRecords(\n  name: string,\n  dnsConfig: DNSConfig,\n  records: EmailDNSRecords,\n  tags: Record<string, string>,\n  opts?: pulumi.ComponentResourceOptions\n): void {\n  switch (dnsConfig.provider) {\n    case \"route53\":\n      createRoute53Records(name, dnsConfig, records, tags, opts);\n      break;\n    case \"cloudflare\":\n      createCloudflareRecords(name, dnsConfig, records, opts);\n      break;\n    case \"vercel\":\n      createVercelRecords(name, dnsConfig, records, opts);\n      break;\n  }\n}\n\n/**\n * Create Route53 DNS records\n */\nfunction createRoute53Records(\n  name: string,\n  config: Route53DNSConfig,\n  records: EmailDNSRecords,\n  _tags: Record<string, string>,\n  opts?: pulumi.ComponentResourceOptions\n): void {\n  const { domain, dkimTokens, mailFromDomain, region } = records;\n\n  // DKIM CNAME records (3 records)\n  dkimTokens.apply((tokens) => {\n    tokens.forEach((token, i) => {\n      new aws.route53.Record(\n        `${name}-dkim-${i + 1}`,\n        {\n          zoneId: config.hostedZoneId,\n          name: `${token}._domainkey.${domain}`,\n          type: \"CNAME\",\n          ttl: 1800,\n          records: [`${token}.dkim.amazonses.com`],\n        },\n        opts\n      );\n    });\n  });\n\n  // SPF TXT record for the domain\n  new aws.route53.Record(\n    `${name}-spf`,\n    {\n      zoneId: config.hostedZoneId,\n      name: domain,\n      type: \"TXT\",\n      ttl: 1800,\n      records: [\"v=spf1 include:amazonses.com ~all\"],\n    },\n    opts\n  );\n\n  // DMARC TXT record\n  new aws.route53.Record(\n    `${name}-dmarc`,\n    {\n      zoneId: config.hostedZoneId,\n      name: `_dmarc.${domain}`,\n      type: \"TXT\",\n      ttl: 1800,\n      records: [\n        `v=DMARC1; p=quarantine; sp=quarantine; np=reject; rua=mailto:postmaster@${mailFromDomain || domain}`,\n      ],\n    },\n    opts\n  );\n\n  // MAIL FROM domain records (if configured)\n  if (mailFromDomain) {\n    // MX record for bounce handling\n    new aws.route53.Record(\n      `${name}-mailfrom-mx`,\n      {\n        zoneId: config.hostedZoneId,\n        name: mailFromDomain,\n        type: \"MX\",\n        ttl: 1800,\n        records: [region.apply((r) => `10 feedback-smtp.${r}.amazonses.com`)],\n      },\n      opts\n    );\n\n    // SPF TXT record for MAIL FROM subdomain\n    new aws.route53.Record(\n      `${name}-mailfrom-spf`,\n      {\n        zoneId: config.hostedZoneId,\n        name: mailFromDomain,\n        type: \"TXT\",\n        ttl: 1800,\n        records: [\"v=spf1 include:amazonses.com ~all\"],\n      },\n      opts\n    );\n  }\n}\n\n/**\n * Create Cloudflare DNS records\n */\nfunction createCloudflareRecords(\n  name: string,\n  config: CloudflareDNSConfig,\n  records: EmailDNSRecords,\n  opts?: pulumi.ComponentResourceOptions\n): void {\n  const { domain, dkimTokens, mailFromDomain, region } = records;\n\n  // Create a Cloudflare provider with the API token\n  const cfProvider = new cloudflare.Provider(`${name}-cf-provider`, {\n    apiToken: config.apiToken,\n  });\n\n  const cfOpts = { ...opts, provider: cfProvider };\n\n  // DKIM CNAME records (3 records)\n  dkimTokens.apply((tokens) => {\n    tokens.forEach((token, i) => {\n      new cloudflare.Record(\n        `${name}-dkim-${i + 1}`,\n        {\n          zoneId: config.zoneId,\n          name: `${token}._domainkey.${domain}`,\n          type: \"CNAME\",\n          content: `${token}.dkim.amazonses.com`,\n          ttl: 1800,\n          proxied: false, // Must not be proxied for DKIM\n        },\n        cfOpts\n      );\n    });\n  });\n\n  // SPF TXT record for the domain\n  new cloudflare.Record(\n    `${name}-spf`,\n    {\n      zoneId: config.zoneId,\n      name: domain,\n      type: \"TXT\",\n      content: \"v=spf1 include:amazonses.com ~all\",\n      ttl: 1800,\n    },\n    cfOpts\n  );\n\n  // DMARC TXT record\n  new cloudflare.Record(\n    `${name}-dmarc`,\n    {\n      zoneId: config.zoneId,\n      name: `_dmarc.${domain}`,\n      type: \"TXT\",\n      content: `v=DMARC1; p=quarantine; sp=quarantine; np=reject; rua=mailto:postmaster@${mailFromDomain || domain}`,\n      ttl: 1800,\n    },\n    cfOpts\n  );\n\n  // MAIL FROM domain records (if configured)\n  if (mailFromDomain) {\n    // MX record for bounce handling\n    new cloudflare.Record(\n      `${name}-mailfrom-mx`,\n      {\n        zoneId: config.zoneId,\n        name: mailFromDomain,\n        type: \"MX\",\n        content: region.apply((r) => `feedback-smtp.${r}.amazonses.com`),\n        priority: 10,\n        ttl: 1800,\n      },\n      cfOpts\n    );\n\n    // SPF TXT record for MAIL FROM subdomain\n    new cloudflare.Record(\n      `${name}-mailfrom-spf`,\n      {\n        zoneId: config.zoneId,\n        name: mailFromDomain,\n        type: \"TXT\",\n        content: \"v=spf1 include:amazonses.com ~all\",\n        ttl: 1800,\n      },\n      cfOpts\n    );\n  }\n}\n\n/**\n * Create Vercel DNS records using the Vercel API via command provider\n * Vercel doesn't have a native Pulumi provider, so we use REST API calls\n */\nfunction createVercelRecords(\n  name: string,\n  config: VercelDNSConfig,\n  records: EmailDNSRecords,\n  opts?: pulumi.ComponentResourceOptions\n): void {\n  const { domain, dkimTokens, mailFromDomain, region } = records;\n  const teamParam = config.teamId ? `&teamId=${config.teamId}` : \"\";\n\n  // Helper to create a Vercel DNS record via API\n  const createVercelRecord = (\n    recordName: string,\n    recordType: string,\n    recordValue: pulumi.Input<string>,\n    recordDomain: string,\n    priority?: number\n  ) => {\n    const body = pulumi.output(recordValue).apply((value) => {\n      const payload: Record<string, unknown> = {\n        name: recordDomain.replace(`.${domain}`, \"\") || \"@\",\n        type: recordType,\n        value,\n        ttl: 1800,\n      };\n      if (priority !== undefined) {\n        payload.mxPriority = priority;\n      }\n      return JSON.stringify(payload);\n    });\n\n    new command.local.Command(\n      recordName,\n      {\n        create: pulumi.interpolate`curl -s -X POST \"https://api.vercel.com/v2/domains/${domain}/records?${teamParam}\" \\\n          -H \"Authorization: Bearer ${config.apiToken}\" \\\n          -H \"Content-Type: application/json\" \\\n          -d '${body}'`,\n        delete: pulumi.interpolate`curl -s -X DELETE \"https://api.vercel.com/v2/domains/${domain}/records/${recordDomain}?${teamParam}\" \\\n          -H \"Authorization: Bearer ${config.apiToken}\"`,\n      },\n      opts\n    );\n  };\n\n  // DKIM CNAME records (3 records)\n  dkimTokens.apply((tokens) => {\n    tokens.forEach((token, i) => {\n      createVercelRecord(\n        `${name}-dkim-${i + 1}`,\n        \"CNAME\",\n        `${token}.dkim.amazonses.com`,\n        `${token}._domainkey.${domain}`\n      );\n    });\n  });\n\n  // SPF TXT record for the domain\n  createVercelRecord(\n    `${name}-spf`,\n    \"TXT\",\n    \"v=spf1 include:amazonses.com ~all\",\n    domain\n  );\n\n  // DMARC TXT record\n  createVercelRecord(\n    `${name}-dmarc`,\n    \"TXT\",\n    `v=DMARC1; p=quarantine; sp=quarantine; np=reject; rua=mailto:postmaster@${mailFromDomain || domain}`,\n    `_dmarc.${domain}`\n  );\n\n  // MAIL FROM domain records (if configured)\n  if (mailFromDomain) {\n    // MX record for bounce handling\n    createVercelRecord(\n      `${name}-mailfrom-mx`,\n      \"MX\",\n      region.apply((r) => `feedback-smtp.${r}.amazonses.com`),\n      mailFromDomain,\n      10\n    );\n\n    // SPF TXT record for MAIL FROM subdomain\n    createVercelRecord(\n      `${name}-mailfrom-spf`,\n      \"TXT\",\n      \"v=spf1 include:amazonses.com ~all\",\n      mailFromDomain\n    );\n  }\n}\n","import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport {\n  EVENTBRIDGE_RULE_NAME,\n  EVENTS_DLQ_NAME,\n  EVENTS_QUEUE_NAME,\n  HISTORY_TABLE_NAME,\n  SES_EVENT_PATTERN,\n} from \"@wraps/core\";\nimport type {\n  ResolvedConfig,\n  TransformFunctions,\n  WebhookConfig,\n} from \"../types.js\";\n\n/**\n * DynamoDB table result\n */\nexport type DynamoDBResult = {\n  table: aws.dynamodb.Table;\n};\n\n/**\n * SQS resources result\n */\nexport type SQSResult = {\n  queue: aws.sqs.Queue;\n  dlq: aws.sqs.Queue;\n};\n\n/**\n * EventBridge resources result\n */\nexport type EventBridgeResult = {\n  rule: aws.cloudwatch.EventRule;\n  target: aws.cloudwatch.EventTarget;\n  queuePolicy: aws.sqs.QueuePolicy;\n  webhookConnection?: aws.cloudwatch.EventConnection;\n  webhookApiDestination?: aws.cloudwatch.EventApiDestination;\n  webhookTarget?: aws.cloudwatch.EventTarget;\n};\n\n/**\n * Create DynamoDB table for email history\n */\nexport function createHistoryTable(\n  name: string,\n  tags: Record<string, string>,\n  transform?: TransformFunctions[\"table\"],\n  opts?: pulumi.ComponentResourceOptions\n): DynamoDBResult {\n  let args: aws.dynamodb.TableArgs = {\n    name: HISTORY_TABLE_NAME,\n    billingMode: \"PAY_PER_REQUEST\",\n    hashKey: \"messageId\",\n    rangeKey: \"sentAt\",\n    attributes: [\n      { name: \"messageId\", type: \"S\" },\n      { name: \"sentAt\", type: \"N\" },\n      { name: \"accountId\", type: \"S\" },\n    ],\n    globalSecondaryIndexes: [\n      {\n        name: \"accountId-sentAt-index\",\n        hashKey: \"accountId\",\n        rangeKey: \"sentAt\",\n        projectionType: \"ALL\",\n      },\n    ],\n    ttl: {\n      enabled: true,\n      attributeName: \"expiresAt\",\n    },\n    tags,\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    args = transform(args);\n  }\n\n  const table = new aws.dynamodb.Table(`${name}-history-table`, args, opts);\n\n  return { table };\n}\n\n/**\n * Create SQS queue with Dead Letter Queue for event processing\n */\nexport function createEventQueues(\n  name: string,\n  tags: Record<string, string>,\n  transform?: {\n    queue?: TransformFunctions[\"queue\"];\n    dlq?: TransformFunctions[\"dlq\"];\n  },\n  opts?: pulumi.ComponentResourceOptions\n): SQSResult {\n  // Dead Letter Queue for failed event processing\n  let dlqArgs: aws.sqs.QueueArgs = {\n    name: EVENTS_DLQ_NAME,\n    messageRetentionSeconds: 1_209_600, // 14 days\n    tags: {\n      ...tags,\n      Description: \"Dead letter queue for failed SES event processing\",\n    },\n  };\n\n  if (transform?.dlq) {\n    dlqArgs = transform.dlq(dlqArgs);\n  }\n\n  const dlq = new aws.sqs.Queue(`${name}-events-dlq`, dlqArgs, opts);\n\n  // Main queue for SES events\n  let queueArgs: aws.sqs.QueueArgs = {\n    name: EVENTS_QUEUE_NAME,\n    visibilityTimeoutSeconds: 300, // 5 minutes (Lambda timeout)\n    messageRetentionSeconds: 345_600, // 4 days\n    receiveWaitTimeSeconds: 20, // Long polling\n    redrivePolicy: dlq.arn.apply((arn) =>\n      JSON.stringify({\n        deadLetterTargetArn: arn,\n        maxReceiveCount: 3,\n      })\n    ),\n    tags: {\n      ...tags,\n      Description: \"Queue for SES email events from EventBridge\",\n    },\n  };\n\n  if (transform?.queue) {\n    queueArgs = transform.queue(queueArgs);\n  }\n\n  const queue = new aws.sqs.Queue(`${name}-events-queue`, queueArgs, opts);\n\n  return { queue, dlq };\n}\n\n/**\n * Create EventBridge rule and targets for routing SES events\n */\nexport function createEventBridgeRule(\n  name: string,\n  queueArn: pulumi.Output<string>,\n  queueUrl: pulumi.Output<string>,\n  tags: Record<string, string>,\n  webhook?: WebhookConfig,\n  transform?: TransformFunctions[\"eventRule\"],\n  opts?: pulumi.ComponentResourceOptions\n): EventBridgeResult {\n  // EventBridge rule to capture all SES events on default bus\n  let ruleArgs: aws.cloudwatch.EventRuleArgs = {\n    name: EVENTBRIDGE_RULE_NAME,\n    description: \"Route all SES email events to SQS for processing\",\n    eventBusName: \"default\", // SES only sends to default bus\n    eventPattern: JSON.stringify(SES_EVENT_PATTERN),\n    tags,\n  };\n\n  if (transform) {\n    ruleArgs = transform(ruleArgs);\n  }\n\n  const rule = new aws.cloudwatch.EventRule(\n    `${name}-events-rule`,\n    ruleArgs,\n    opts\n  );\n\n  // SQS queue policy to allow EventBridge to send messages\n  const queuePolicy = new aws.sqs.QueuePolicy(\n    `${name}-events-queue-policy`,\n    {\n      queueUrl,\n      policy: pulumi.all([queueArn, rule.arn]).apply(([qArn, rArn]) =>\n        JSON.stringify({\n          Version: \"2012-10-17\",\n          Statement: [\n            {\n              Effect: \"Allow\",\n              Principal: { Service: \"events.amazonaws.com\" },\n              Action: \"sqs:SendMessage\",\n              Resource: qArn,\n              Condition: {\n                ArnEquals: { \"aws:SourceArn\": rArn },\n              },\n            },\n          ],\n        })\n      ),\n    },\n    opts\n  );\n\n  // EventBridge target to send events to SQS\n  const target = new aws.cloudwatch.EventTarget(\n    `${name}-events-target`,\n    {\n      rule: rule.name,\n      eventBusName: \"default\",\n      arn: queueArn,\n    },\n    opts\n  );\n\n  // Create API Destination for Wraps webhook (if configured)\n  let webhookConnection: aws.cloudwatch.EventConnection | undefined;\n  let webhookApiDestination: aws.cloudwatch.EventApiDestination | undefined;\n  let webhookTarget: aws.cloudwatch.EventTarget | undefined;\n\n  if (webhook) {\n    const { awsAccountNumber, webhookSecret, webhookUrl } = webhook;\n    const baseUrl = webhookUrl || \"https://api.wraps.dev\";\n\n    // Connection (stores auth credentials in Secrets Manager)\n    webhookConnection = new aws.cloudwatch.EventConnection(\n      `${name}-webhook-connection`,\n      {\n        name: \"wraps-webhook-connection\",\n        description: \"Connection for Wraps platform webhook\",\n        authorizationType: \"API_KEY\",\n        authParameters: {\n          apiKey: {\n            key: \"X-Wraps-Api-Key\",\n            value: webhookSecret,\n          },\n        },\n      },\n      opts\n    );\n\n    // API Destination\n    webhookApiDestination = new aws.cloudwatch.EventApiDestination(\n      `${name}-webhook-destination`,\n      {\n        name: \"wraps-webhook-destination\",\n        description: \"Send SES events to Wraps platform\",\n        connectionArn: webhookConnection.arn,\n        httpMethod: \"POST\",\n        invocationEndpoint: `${baseUrl}/webhooks/ses/${awsAccountNumber}`,\n        invocationRateLimitPerSecond: 300,\n      },\n      opts\n    );\n\n    // IAM role for EventBridge to invoke API Destination\n    const webhookRole = new aws.iam.Role(\n      `${name}-webhook-role`,\n      {\n        name: \"wraps-eventbridge-webhook-role\",\n        assumeRolePolicy: JSON.stringify({\n          Version: \"2012-10-17\",\n          Statement: [\n            {\n              Effect: \"Allow\",\n              Principal: { Service: \"events.amazonaws.com\" },\n              Action: \"sts:AssumeRole\",\n            },\n          ],\n        }),\n        tags,\n      },\n      opts\n    );\n\n    // Policy to allow invoking API Destination\n    new aws.iam.RolePolicy(\n      `${name}-webhook-policy`,\n      {\n        role: webhookRole.name,\n        policy: webhookApiDestination.arn.apply((destArn) =>\n          JSON.stringify({\n            Version: \"2012-10-17\",\n            Statement: [\n              {\n                Effect: \"Allow\",\n                Action: [\"events:InvokeApiDestination\"],\n                Resource: destArn,\n              },\n            ],\n          })\n        ),\n      },\n      opts\n    );\n\n    // Webhook target\n    webhookTarget = new aws.cloudwatch.EventTarget(\n      `${name}-webhook-target`,\n      {\n        rule: rule.name,\n        eventBusName: \"default\",\n        arn: webhookApiDestination.arn,\n        roleArn: webhookRole.arn,\n      },\n      opts\n    );\n  }\n\n  return {\n    rule,\n    target,\n    queuePolicy,\n    webhookConnection,\n    webhookApiDestination,\n    webhookTarget,\n  };\n}\n\n/**\n * Create all event tracking infrastructure\n */\nexport function createEventTracking(\n  name: string,\n  config: ResolvedConfig,\n  tags: Record<string, string>,\n  transform?: TransformFunctions,\n  opts?: pulumi.ComponentResourceOptions\n): {\n  table?: aws.dynamodb.Table;\n  queue: aws.sqs.Queue;\n  dlq: aws.sqs.Queue;\n  eventRule: aws.cloudwatch.EventRule;\n  eventTarget: aws.cloudwatch.EventTarget;\n  webhookConnection?: aws.cloudwatch.EventConnection;\n  webhookApiDestination?: aws.cloudwatch.EventApiDestination;\n  webhookTarget?: aws.cloudwatch.EventTarget;\n} {\n  // Create DynamoDB table if history storage is enabled\n  let table: aws.dynamodb.Table | undefined;\n  if (config.events?.storeHistory) {\n    const dynamoResult = createHistoryTable(name, tags, transform?.table, opts);\n    table = dynamoResult.table;\n  }\n\n  // Create SQS queues\n  const sqsResult = createEventQueues(\n    name,\n    tags,\n    { queue: transform?.queue, dlq: transform?.dlq },\n    opts\n  );\n\n  // Create EventBridge rule\n  const eventBridgeResult = createEventBridgeRule(\n    name,\n    sqsResult.queue.arn,\n    sqsResult.queue.url,\n    tags,\n    config.webhook,\n    transform?.eventRule,\n    opts\n  );\n\n  return {\n    table,\n    queue: sqsResult.queue,\n    dlq: sqsResult.dlq,\n    eventRule: eventBridgeResult.rule,\n    eventTarget: eventBridgeResult.target,\n    webhookConnection: eventBridgeResult.webhookConnection,\n    webhookApiDestination: eventBridgeResult.webhookApiDestination,\n    webhookTarget: eventBridgeResult.webhookTarget,\n  };\n}\n","import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { EMAIL_ROLE_NAME } from \"@wraps/core\";\nimport type {\n  OIDCConfig,\n  ResolvedConfig,\n  TransformFunctions,\n  VercelOIDCConfig,\n} from \"../types.js\";\n\n/**\n * IAM role configuration\n */\nexport type IAMRoleConfig = {\n  vercel?: VercelOIDCConfig;\n  oidc?: OIDCConfig;\n  oidcProvider?: aws.iam.OpenIdConnectProvider;\n  config: ResolvedConfig;\n};\n\n/**\n * IAM role result\n */\nexport type IAMRoleResult = {\n  role: aws.iam.Role;\n  policy: aws.iam.RolePolicy;\n};\n\n/**\n * Build assume role policy based on provider configuration\n */\nfunction buildAssumeRolePolicy(\n  config: IAMRoleConfig\n): pulumi.Output<string> | string {\n  if (config.vercel && config.oidcProvider) {\n    return pulumi.interpolate`{\n      \"Version\": \"2012-10-17\",\n      \"Statement\": [{\n        \"Effect\": \"Allow\",\n        \"Principal\": {\n          \"Federated\": \"${config.oidcProvider.arn}\"\n        },\n        \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n        \"Condition\": {\n          \"StringEquals\": {\n            \"oidc.vercel.com/${config.vercel.teamSlug}:aud\": \"https://vercel.com/${config.vercel.teamSlug}\"\n          },\n          \"StringLike\": {\n            \"oidc.vercel.com/${config.vercel.teamSlug}:sub\": \"owner:${config.vercel.teamSlug}:project:${config.vercel.projectName}:environment:*\"\n          }\n        }\n      }]\n    }`;\n  }\n\n  if (config.oidc && config.oidcProvider) {\n    return pulumi.interpolate`{\n      \"Version\": \"2012-10-17\",\n      \"Statement\": [{\n        \"Effect\": \"Allow\",\n        \"Principal\": {\n          \"Federated\": \"${config.oidcProvider.arn}\"\n        },\n        \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n        \"Condition\": {\n          \"StringEquals\": {\n            \"${config.oidc.providerUrl}:aud\": \"${config.oidc.audience}\"\n          },\n          \"StringLike\": {\n            \"${config.oidc.providerUrl}:sub\": \"${config.oidc.subjectPattern}\"\n          }\n        }\n      }]\n    }`;\n  }\n\n  // Default: Allow AWS services (Lambda, EC2, ECS) to assume\n  return JSON.stringify({\n    Version: \"2012-10-17\",\n    Statement: [\n      {\n        Effect: \"Allow\",\n        Principal: {\n          Service: [\n            \"lambda.amazonaws.com\",\n            \"ec2.amazonaws.com\",\n            \"ecs-tasks.amazonaws.com\",\n          ],\n        },\n        Action: \"sts:AssumeRole\",\n      },\n    ],\n  });\n}\n\n/**\n * Build IAM policy statements based on enabled features\n */\nfunction buildPolicyStatements(config: ResolvedConfig): object[] {\n  const statements: object[] = [];\n\n  // Always allow reading SES metrics\n  statements.push({\n    Sid: \"SESReadAccess\",\n    Effect: \"Allow\",\n    Action: [\n      \"ses:GetAccount\",\n      \"ses:GetSendQuota\",\n      \"ses:GetSendStatistics\",\n      \"ses:ListIdentities\",\n      \"ses:GetIdentityVerificationAttributes\",\n      \"ses:ListEmailIdentities\",\n      \"ses:GetEmailIdentity\",\n      \"ses:ListConfigurationSets\",\n      \"ses:GetConfigurationSet\",\n      \"ses:GetConfigurationSetEventDestinations\",\n      \"cloudwatch:GetMetricData\",\n      \"cloudwatch:GetMetricStatistics\",\n      \"cloudwatch:ListMetrics\",\n    ],\n    Resource: \"*\",\n  });\n\n  // Allow sending if enabled\n  if (config.sendingEnabled) {\n    statements.push({\n      Sid: \"SESSendAccess\",\n      Effect: \"Allow\",\n      Action: [\n        \"ses:SendEmail\",\n        \"ses:SendRawEmail\",\n        \"ses:SendTemplatedEmail\",\n        \"ses:SendBulkTemplatedEmail\",\n        \"ses:SendBulkEmail\",\n      ],\n      Resource: \"*\",\n    });\n  }\n\n  // Allow DynamoDB access if history storage enabled\n  if (config.events?.storeHistory) {\n    statements.push({\n      Sid: \"DynamoDBAccess\",\n      Effect: \"Allow\",\n      Action: [\n        \"dynamodb:PutItem\",\n        \"dynamodb:GetItem\",\n        \"dynamodb:Query\",\n        \"dynamodb:Scan\",\n        \"dynamodb:BatchGetItem\",\n        \"dynamodb:DescribeTable\",\n      ],\n      Resource: [\n        \"arn:aws:dynamodb:*:*:table/wraps-email-*\",\n        \"arn:aws:dynamodb:*:*:table/wraps-email-*/index/*\",\n      ],\n    });\n  }\n\n  // Allow EventBridge access if events configured\n  if (config.events) {\n    statements.push({\n      Sid: \"EventBridgeAccess\",\n      Effect: \"Allow\",\n      Action: [\"events:PutEvents\", \"events:DescribeEventBus\"],\n      Resource: \"arn:aws:events:*:*:event-bus/wraps-email-*\",\n    });\n  }\n\n  // Allow SQS access if events configured\n  if (config.events) {\n    statements.push({\n      Sid: \"SQSAccess\",\n      Effect: \"Allow\",\n      Action: [\n        \"sqs:SendMessage\",\n        \"sqs:ReceiveMessage\",\n        \"sqs:DeleteMessage\",\n        \"sqs:GetQueueAttributes\",\n      ],\n      Resource: \"arn:aws:sqs:*:*:wraps-email-*\",\n    });\n  }\n\n  // Allow Mail Manager Archive access if archiving enabled\n  if (config.archiving?.enabled) {\n    statements.push({\n      Sid: \"MailManagerArchiveAccess\",\n      Effect: \"Allow\",\n      Action: [\n        \"ses:StartArchiveSearch\",\n        \"ses:GetArchiveSearchResults\",\n        \"ses:GetArchiveMessage\",\n        \"ses:GetArchiveMessageContent\",\n        \"ses:GetArchive\",\n        \"ses:ListArchives\",\n        \"ses:StartArchiveExport\",\n        \"ses:GetArchiveExport\",\n      ],\n      Resource: \"arn:aws:ses:*:*:mailmanager-archive/*\",\n    });\n  }\n\n  return statements;\n}\n\n/**\n * Create IAM role for email infrastructure\n */\nexport function createIAMRole(\n  name: string,\n  roleConfig: IAMRoleConfig,\n  tags: Record<string, string>,\n  transform?: TransformFunctions[\"role\"],\n  opts?: pulumi.ComponentResourceOptions\n): IAMRoleResult {\n  const assumeRolePolicy = buildAssumeRolePolicy(roleConfig);\n\n  let roleArgs: aws.iam.RoleArgs = {\n    name: EMAIL_ROLE_NAME,\n    assumeRolePolicy,\n    tags: {\n      ...tags,\n      Provider: roleConfig.vercel\n        ? \"vercel\"\n        : roleConfig.oidc\n          ? \"custom-oidc\"\n          : \"aws\",\n    },\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    roleArgs = transform(roleArgs);\n  }\n\n  const role = new aws.iam.Role(`${name}-role`, roleArgs, opts);\n\n  // Build and attach policy\n  const policyStatements = buildPolicyStatements(roleConfig.config);\n  const policy = new aws.iam.RolePolicy(\n    `${name}-policy`,\n    {\n      role: role.name,\n      policy: JSON.stringify({\n        Version: \"2012-10-17\",\n        Statement: policyStatements,\n      }),\n    },\n    opts\n  );\n\n  return { role, policy };\n}\n","import { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport type { TransformFunctions } from \"../types.js\";\n\n/**\n * Get the package root directory (where package.json lives)\n */\nfunction getPackageRoot(): string {\n  // CJS: __dirname is available directly\n  // ESM: derive from import.meta.url\n  let dir =\n    typeof __dirname !== \"undefined\"\n      ? __dirname\n      : dirname(fileURLToPath(import.meta.url));\n\n  while (dir !== dirname(dir)) {\n    if (existsSync(join(dir, \"package.json\"))) {\n      return dir;\n    }\n    dir = dirname(dir);\n  }\n\n  throw new Error(\"Could not find package.json\");\n}\n\n/**\n * Get the path to the Lambda event processor code\n */\nfunction getLambdaPath(): string {\n  const packageRoot = getPackageRoot();\n  const lambdaPath = join(packageRoot, \"dist\", \"lambda\", \"event-processor\");\n  const bundleMarker = join(lambdaPath, \".bundled\");\n\n  if (existsSync(bundleMarker)) {\n    return lambdaPath;\n  }\n\n  throw new Error(\n    `Lambda code not found: ${lambdaPath}\\n` +\n      \"Make sure to build the package first: pnpm build\"\n  );\n}\n\n/**\n * Lambda function result\n */\nexport type LambdaResult = {\n  lambda: aws.lambda.Function;\n  lambdaRole: aws.iam.Role;\n  eventSourceMapping: aws.lambda.EventSourceMapping;\n};\n\n/**\n * Create Lambda function for processing SES events\n */\nexport function createEventProcessor(\n  name: string,\n  tableName: pulumi.Output<string>,\n  queueArn: pulumi.Output<string>,\n  accountId: pulumi.Output<string>,\n  retentionDays: number,\n  tags: Record<string, string>,\n  transform?: TransformFunctions[\"lambda\"],\n  opts?: pulumi.ComponentResourceOptions\n): LambdaResult {\n  // IAM role for Lambda execution\n  const lambdaRole = new aws.iam.Role(\n    `${name}-lambda-role`,\n    {\n      name: \"wraps-email-lambda-role\",\n      assumeRolePolicy: JSON.stringify({\n        Version: \"2012-10-17\",\n        Statement: [\n          {\n            Effect: \"Allow\",\n            Principal: { Service: \"lambda.amazonaws.com\" },\n            Action: \"sts:AssumeRole\",\n          },\n        ],\n      }),\n      tags,\n    },\n    opts\n  );\n\n  // Attach basic Lambda execution policy\n  new aws.iam.RolePolicyAttachment(\n    `${name}-lambda-basic-execution`,\n    {\n      role: lambdaRole.name,\n      policyArn:\n        \"arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole\",\n    },\n    opts\n  );\n\n  // Lambda policy for DynamoDB and SQS\n  new aws.iam.RolePolicy(\n    `${name}-lambda-policy`,\n    {\n      role: lambdaRole.name,\n      policy: pulumi.all([tableName, queueArn]).apply(([tName, qArn]) =>\n        JSON.stringify({\n          Version: \"2012-10-17\",\n          Statement: [\n            {\n              Sid: \"DynamoDBAccess\",\n              Effect: \"Allow\",\n              Action: [\n                \"dynamodb:PutItem\",\n                \"dynamodb:GetItem\",\n                \"dynamodb:Query\",\n                \"dynamodb:Scan\",\n                \"dynamodb:UpdateItem\",\n              ],\n              Resource: [\n                `arn:aws:dynamodb:*:*:table/${tName}`,\n                `arn:aws:dynamodb:*:*:table/${tName}/index/*`,\n              ],\n            },\n            {\n              Sid: \"SQSAccess\",\n              Effect: \"Allow\",\n              Action: [\n                \"sqs:ReceiveMessage\",\n                \"sqs:DeleteMessage\",\n                \"sqs:GetQueueAttributes\",\n              ],\n              Resource: qArn,\n            },\n          ],\n        })\n      ),\n    },\n    opts\n  );\n\n  // Create Lambda function using pre-bundled code from core package\n  let lambdaArgs: aws.lambda.FunctionArgs = {\n    name: \"wraps-email-event-processor\",\n    runtime: \"nodejs24.x\",\n    handler: \"index.handler\",\n    role: lambdaRole.arn,\n    code: new pulumi.asset.FileArchive(getLambdaPath()),\n    timeout: 300, // 5 minutes (matches SQS visibility timeout)\n    memorySize: 512,\n    environment: {\n      variables: {\n        TABLE_NAME: tableName,\n        AWS_ACCOUNT_ID: accountId,\n        RETENTION_DAYS: retentionDays.toString(),\n      },\n    },\n    tags: {\n      ...tags,\n      Description: \"Process SES email events from SQS and store in DynamoDB\",\n    },\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    lambdaArgs = transform(lambdaArgs);\n  }\n\n  const lambda = new aws.lambda.Function(\n    `${name}-event-processor`,\n    lambdaArgs,\n    opts\n  );\n\n  // Create SQS event source mapping\n  const eventSourceMapping = new aws.lambda.EventSourceMapping(\n    `${name}-event-source-mapping`,\n    {\n      eventSourceArn: queueArn,\n      functionName: lambda.name,\n      batchSize: 10,\n      maximumBatchingWindowInSeconds: 5,\n      functionResponseTypes: [\"ReportBatchItemFailures\"],\n    },\n    opts\n  );\n\n  return {\n    lambda,\n    lambdaRole,\n    eventSourceMapping,\n  };\n}\n","// Type-only import — erased at runtime, safe for Pulumi closure serialization.\nimport type { RetentionPeriod } from \"@aws-sdk/client-mailmanager\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport type { ArchiveRetention, ResolvedConfig } from \"../types.js\";\n\n/**\n * Mail Manager archive result\n *\n * Cost: $2/GB ingestion + $0.19/GB/month storage\n * See: https://docs.aws.amazon.com/ses/latest/dg/eb-archiving.html\n */\nexport type MailManagerResult = {\n  /** The archive ARN */\n  archiveArn: pulumi.Output<string | undefined>;\n  /** Whether archiving is enabled */\n  enabled: pulumi.Output<boolean>;\n};\n\n/**\n * Convert our retention types to AWS SDK RetentionPeriod enum\n */\nexport function retentionToAWSPeriod(\n  retention: ArchiveRetention\n): RetentionPeriod {\n  switch (retention) {\n    case \"3months\":\n      return \"THREE_MONTHS\";\n    case \"6months\":\n      return \"SIX_MONTHS\";\n    case \"9months\":\n      return \"NINE_MONTHS\";\n    case \"1year\":\n      return \"ONE_YEAR\";\n    case \"18months\":\n      return \"EIGHTEEN_MONTHS\";\n    case \"2years\":\n      return \"TWO_YEARS\";\n    case \"30months\":\n      return \"THIRTY_MONTHS\";\n    case \"3years\":\n      return \"THREE_YEARS\";\n    case \"4years\":\n      return \"FOUR_YEARS\";\n    case \"5years\":\n      return \"FIVE_YEARS\";\n    case \"6years\":\n      return \"SIX_YEARS\";\n    case \"7years\":\n      return \"SEVEN_YEARS\";\n    case \"8years\":\n      return \"EIGHT_YEARS\";\n    case \"9years\":\n      return \"NINE_YEARS\";\n    case \"10years\":\n      return \"TEN_YEARS\";\n    case \"permanent\":\n    case \"indefinite\":\n      return \"PERMANENT\";\n    default:\n      return \"THREE_MONTHS\";\n  }\n}\n\nconst MAX_NAME_ATTEMPTS = 10;\n\n// Fixed AWS archive name. Like every other resource in this package\n// (`wraps-email-role`, `wraps-email-tracking`, …) the archive uses the fixed\n// `wraps-email-` service prefix — NOT the component's logical name — so it\n// matches the CLI (`email-stack.ts` passes `name: \"email\"`) and the shared\n// deployment-verification harness (`tests/deployment/verify.sh`).\nconst ARCHIVE_NAME = \"wraps-email-archive\";\n\n// ============================================\n// DYNAMIC PROVIDER TYPES\n// ============================================\n\ntype MailManagerArchiveInputs = {\n  retention: string;\n  configSetName: string;\n  region: string;\n  tags: Record<string, string>;\n};\n\ntype MailManagerArchiveOutputs = MailManagerArchiveInputs & {\n  archiveId: string;\n  archiveArn: string;\n};\n\n// ============================================\n// DYNAMIC PROVIDER\n// ============================================\n\n/**\n * Pulumi dynamic provider for Mail Manager archives.\n *\n * Exported so unit tests can call provider methods directly.\n *\n * IMPORTANT: All AWS SDK imports live INSIDE each method body to avoid\n * Pulumi closure-serialization errors. Do NOT move them to module scope.\n */\nexport const mailManagerArchiveProvider: pulumi.dynamic.ResourceProvider = {\n  async create(\n    inputs: MailManagerArchiveInputs\n  ): Promise<pulumi.dynamic.CreateResult> {\n    const { region, retention, configSetName, tags } = inputs;\n    const baseArchiveName = ARCHIVE_NAME;\n    const namePattern = new RegExp(`^${baseArchiveName}(-\\\\d+)?$`);\n\n    // Dynamic import required — module-scope imports break Pulumi serialization.\n    const mm = await import(\"@aws-sdk/client-mailmanager\");\n    const mailManagerClient = new mm.MailManagerClient({ region });\n    const awsRetention = retentionToAWSPeriod(retention as ArchiveRetention);\n\n    let archiveId: string | undefined;\n    let archiveArn: string | undefined;\n\n    // 1. Look for an existing ACTIVE archive matching our naming pattern.\n    //    Skip any in PENDING_DELETION — they can't be reused and will block\n    //    creating a new archive with the same name.\n    try {\n      const listResult = await mailManagerClient.send(\n        new mm.ListArchivesCommand({})\n      );\n      const existing = listResult.Archives?.find(\n        (a) =>\n          a.ArchiveState === mm.ArchiveState.ACTIVE &&\n          a.ArchiveName !== undefined &&\n          namePattern.test(a.ArchiveName)\n      );\n\n      if (existing?.ArchiveId) {\n        archiveId = existing.ArchiveId;\n        const getResult = await mailManagerClient.send(\n          new mm.GetArchiveCommand({ ArchiveId: archiveId })\n        );\n        archiveArn = getResult.ArchiveArn;\n      }\n    } catch (error) {\n      // An empty result set does NOT throw — ListArchives returns no Archives —\n      // so any error here is a real failure (throttling, AccessDenied, network).\n      // Surface it rather than silently falling through to create, which could\n      // create a duplicate archive when an ACTIVE one already exists.\n      const detail = error instanceof Error ? error.message : String(error);\n      throw new Error(\n        `Failed to list existing Mail Manager archives in ${region}: ${detail}`\n      );\n    }\n\n    // 2. Create a new archive if no active one was found.\n    //    On ConflictException (name blocked by a PENDING_DELETION archive),\n    //    retry with an incrementing suffix: -2, -3, …\n    if (!archiveId) {\n      for (let attempt = 1; attempt <= MAX_NAME_ATTEMPTS; attempt++) {\n        const archiveName =\n          attempt === 1 ? baseArchiveName : `${baseArchiveName}-${attempt}`;\n\n        try {\n          const result = await mailManagerClient.send(\n            new mm.CreateArchiveCommand({\n              ArchiveName: archiveName,\n              Retention: { RetentionPeriod: awsRetention },\n              Tags: [\n                // Spread base tags (includes ManagedBy: \"wraps-pulumi\")\n                ...Object.entries(tags)\n                  .filter(([k]) => k !== \"Name\" && k !== \"Retention\")\n                  .map(([Key, Value]) => ({ Key, Value })),\n                // Archive-specific tags\n                { Key: \"Name\", Value: archiveName },\n                { Key: \"Retention\", Value: retention },\n              ],\n            })\n          );\n\n          archiveId = result.ArchiveId;\n          if (!archiveId) {\n            throw new Error(\n              \"Mail Manager archive creation returned no ArchiveId\"\n            );\n          }\n\n          // CreateArchive only returns ArchiveId; use GetArchive to resolve the ARN.\n          const getResult = await mailManagerClient.send(\n            new mm.GetArchiveCommand({ ArchiveId: archiveId })\n          );\n          archiveArn = getResult.ArchiveArn;\n\n          break;\n        } catch (error) {\n          // AWS SDK v3 sometimes reports the error name as \"Error\" with the\n          // real exception type only in the message — check both.\n          const isConflict =\n            error instanceof Error &&\n            (error.name === \"ConflictException\" ||\n              error.message.includes(\"ConflictException\"));\n          if (isConflict && attempt < MAX_NAME_ATTEMPTS) {\n            continue;\n          }\n          throw error;\n        }\n      }\n    }\n\n    if (!(archiveId && archiveArn)) {\n      throw new Error(\n        \"Failed to create or locate Mail Manager archive: no ArchiveId or ArchiveArn resolved\"\n      );\n    }\n\n    // 3. Link archive to SES Configuration Set.\n    const ses = await import(\"@aws-sdk/client-sesv2\");\n    const sesClient = new ses.SESv2Client({ region });\n\n    try {\n      await sesClient.send(\n        new ses.PutConfigurationSetArchivingOptionsCommand({\n          ConfigurationSetName: configSetName,\n          ArchiveArn: archiveArn,\n        })\n      );\n    } catch (error) {\n      const detail = error instanceof Error ? error.message : String(error);\n      throw new Error(\n        `Failed to link Mail Manager archive to SES config set '${configSetName}' in ${region}: ${detail}`\n      );\n    }\n\n    const outs: MailManagerArchiveOutputs = {\n      ...inputs,\n      archiveId,\n      archiveArn,\n    };\n\n    return { id: archiveId, outs };\n  },\n\n  async delete(_id: string, props: MailManagerArchiveOutputs): Promise<void> {\n    // Non-Destructive: we do NOT call DeleteArchiveCommand.\n    // Deleting a Mail Manager archive would permanently destroy customer mail history.\n    // Per the Wraps Non-Destructive principle, we only de-associate the archive from\n    // the SES configuration set and leave the archive intact in the customer's account.\n    try {\n      const ses = await import(\"@aws-sdk/client-sesv2\");\n      const sesClient = new ses.SESv2Client({ region: props.region });\n      await sesClient.send(\n        new ses.PutConfigurationSetArchivingOptionsCommand({\n          ConfigurationSetName: props.configSetName,\n          // Omitting ArchiveArn clears the archive association on the config set\n        })\n      );\n    } catch {\n      // Best-effort de-association — archive data is preserved regardless\n    }\n  },\n\n  async diff(\n    _id: string,\n    olds: MailManagerArchiveOutputs,\n    news: MailManagerArchiveInputs\n  ): Promise<pulumi.dynamic.DiffResult> {\n    // Retention is immutable after creation — changing it would require destroying and\n    // recreating the archive, losing all archived mail in the process.\n    // We surface this as a hard error rather than emitting a replacement (which would\n    // trigger delete → recreate and violate the Non-Destructive principle).\n    if (olds.retention !== news.retention) {\n      throw new Error(\n        \"Mail Manager archive retention cannot be changed after creation \" +\n          `(current: \"${olds.retention}\", requested: \"${news.retention}\"). ` +\n          \"Retention is immutable to protect archived mail. \" +\n          \"To use a different retention period, manually create a new archive.\"\n      );\n    }\n\n    // The archive lives in the region where it was created. Changing region\n    // would orphan the archived mail (and a replace would delete it), so we\n    // reject it the same way as a retention change rather than silently no-op.\n    if (olds.region !== news.region) {\n      throw new Error(\n        \"Mail Manager archive region cannot be changed after creation \" +\n          `(current: \"${olds.region}\", requested: \"${news.region}\"). ` +\n          \"To archive in a different region, manually create a new archive there.\"\n      );\n    }\n\n    const changes: string[] = [];\n    if (olds.configSetName !== news.configSetName) {\n      changes.push(\"configSetName\");\n    }\n\n    return {\n      changes: changes.length > 0,\n      replaces: [],\n      stables: [\"archiveId\", \"archiveArn\", \"retention\", \"region\"],\n      deleteBeforeReplace: false,\n    };\n  },\n\n  async update(\n    _id: string,\n    olds: MailManagerArchiveOutputs,\n    news: MailManagerArchiveInputs\n  ): Promise<pulumi.dynamic.UpdateResult> {\n    // Only configSetName can change in-place.\n    // Retention changes are rejected in diff() before update() is ever called.\n    if (news.configSetName !== olds.configSetName) {\n      const ses = await import(\"@aws-sdk/client-sesv2\");\n      const sesClient = new ses.SESv2Client({ region: news.region });\n      await sesClient.send(\n        new ses.PutConfigurationSetArchivingOptionsCommand({\n          ConfigurationSetName: news.configSetName,\n          ArchiveArn: olds.archiveArn,\n        })\n      );\n    }\n\n    return {\n      outs: {\n        ...news,\n        archiveId: olds.archiveId,\n        archiveArn: olds.archiveArn,\n      },\n    };\n  },\n};\n\n// ============================================\n// DYNAMIC RESOURCE CLASS\n// ============================================\n\n/**\n * Pulumi custom resource wrapping a Mail Manager archive.\n * Lifecycle is managed by {@link mailManagerArchiveProvider}.\n */\nclass MailManagerArchiveResource extends pulumi.dynamic.Resource {\n  public readonly archiveId!: pulumi.Output<string>;\n  public readonly archiveArn!: pulumi.Output<string>;\n\n  constructor(\n    name: string,\n    props: {\n      retention: pulumi.Input<string>;\n      configSetName: pulumi.Input<string>;\n      region: pulumi.Input<string>;\n      tags: pulumi.Input<Record<string, string>>;\n    },\n    opts?: pulumi.CustomResourceOptions\n  ) {\n    super(\n      mailManagerArchiveProvider,\n      name,\n      {\n        // Output-only properties (populated by provider create/update)\n        archiveId: undefined,\n        archiveArn: undefined,\n        ...props,\n      },\n      opts\n    );\n  }\n}\n\n// ============================================\n// PUBLIC API\n// ============================================\n\n/**\n * Create a Mail Manager archive for storing full email content.\n *\n * Implements idempotent create-or-reuse: if an ACTIVE archive named\n * `wraps-email-archive` already exists it is reused rather than creating\n * a duplicate. On `ConflictException` (archive name blocked by one in\n * `PENDING_DELETION`) the provider retries with suffix `-2`, `-3`, … (up\n * to 10 attempts).\n *\n * Archiving is opt-in — when `config.archiving?.enabled` is false or\n * undefined this function returns disabled placeholder outputs without\n * creating any AWS resources.\n *\n * @param name - Component logical name (used only for the Pulumi resource node name; the AWS archive is always `wraps-email-archive`)\n * @param config - Resolved component configuration (reads `config.archiving`)\n * @param configSetName - SES configuration set to associate the archive with\n * @param region - AWS region\n * @param tags - Tags applied to the created archive\n * @param opts - Pulumi resource options\n */\nexport function createMailManagerArchive(\n  name: string,\n  config: ResolvedConfig,\n  configSetName: pulumi.Input<string>,\n  region: pulumi.Input<string>,\n  tags: Record<string, string>,\n  opts?: pulumi.ComponentResourceOptions\n): MailManagerResult {\n  const archiving = config.archiving;\n\n  if (!archiving?.enabled) {\n    return {\n      archiveArn: pulumi.output(undefined),\n      enabled: pulumi.output(false),\n    };\n  }\n\n  const retention: ArchiveRetention = archiving.retention ?? \"1year\";\n\n  const archive = new MailManagerArchiveResource(\n    `${name}-mail-manager-archive`,\n    {\n      retention,\n      configSetName,\n      region,\n      tags,\n    },\n    opts ? { parent: opts.parent } : undefined\n  );\n\n  return {\n    archiveArn: archive.archiveArn,\n    enabled: pulumi.output(true),\n  };\n}\n","import * as aws from \"@pulumi/aws\";\nimport type * as pulumi from \"@pulumi/pulumi\";\nimport type {\n  OIDCConfig,\n  TransformFunctions,\n  VercelOIDCConfig,\n} from \"../types.js\";\n\n/**\n * OIDC provider result\n */\nexport type OIDCProviderResult = {\n  provider: aws.iam.OpenIdConnectProvider;\n};\n\n/**\n * Create Vercel OIDC provider for AssumeRoleWithWebIdentity\n */\nexport function createVercelOIDCProvider(\n  name: string,\n  config: VercelOIDCConfig,\n  tags: Record<string, string>,\n  transform?: TransformFunctions[\"oidcProvider\"],\n  opts?: pulumi.ComponentResourceOptions\n): OIDCProviderResult {\n  const url = `https://oidc.vercel.com/${config.teamSlug}`;\n\n  let args: aws.iam.OpenIdConnectProviderArgs = {\n    url,\n    clientIdLists: [`https://vercel.com/${config.teamSlug}`],\n    thumbprintLists: [\n      // Vercel OIDC thumbprints\n      \"20032e77eca0785eece16b56b42c9b330b906320\",\n      \"696db3af0dffc17e65c6a20d925c5a7bd24dec7e\",\n    ],\n    tags: {\n      ...tags,\n      Provider: \"vercel\",\n    },\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    args = transform(args);\n  }\n\n  const provider = new aws.iam.OpenIdConnectProvider(\n    `${name}-vercel-oidc`,\n    args,\n    opts\n  );\n\n  return { provider };\n}\n\n/**\n * Create custom OIDC provider (GitHub Actions, GitLab, etc.)\n */\nexport function createCustomOIDCProvider(\n  name: string,\n  config: OIDCConfig,\n  tags: Record<string, string>,\n  transform?: TransformFunctions[\"oidcProvider\"],\n  opts?: pulumi.ComponentResourceOptions\n): OIDCProviderResult {\n  let args: aws.iam.OpenIdConnectProviderArgs = {\n    url: config.providerUrl,\n    clientIdLists: [config.audience],\n    // For custom providers, thumbprints need to be provided\n    // This is a placeholder - in production, you'd need to fetch the actual thumbprint\n    thumbprintLists: [\"0000000000000000000000000000000000000000\"],\n    tags: {\n      ...tags,\n      Provider: \"custom-oidc\",\n    },\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    args = transform(args);\n  }\n\n  const provider = new aws.iam.OpenIdConnectProvider(\n    `${name}-custom-oidc`,\n    args,\n    opts\n  );\n\n  return { provider };\n}\n","import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { ALL_EVENT_TYPES, DEFAULT_CONFIG_SET_NAME } from \"@wraps/core\";\nimport type {\n  ResolvedConfig,\n  SESEventType,\n  TransformFunctions,\n} from \"../types.js\";\n\n/**\n * SES resources result\n */\nexport type SESResourcesResult = {\n  configSet: aws.ses.ConfigurationSet;\n  eventDestination?: aws.sesv2.ConfigurationSetEventDestination;\n  domainIdentity?: aws.ses.DomainIdentity;\n  domainDkim?: aws.ses.DomainDkim;\n  mailFromAttributes?: aws.sesv2.EmailIdentityMailFromAttributes;\n  dkimTokens: pulumi.Output<string[]>;\n};\n\n/**\n * Create SES configuration set\n */\nexport function createConfigSet(\n  name: string,\n  _config: ResolvedConfig,\n  _tags: Record<string, string>,\n  transform?: TransformFunctions[\"configSet\"],\n  opts?: pulumi.ComponentResourceOptions\n): aws.ses.ConfigurationSet {\n  let args: aws.ses.ConfigurationSetArgs = {\n    name: DEFAULT_CONFIG_SET_NAME,\n    // Using basic ses.ConfigurationSet - advanced options via sesv2\n    // are added separately\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    args = transform(args);\n  }\n\n  return new aws.ses.ConfigurationSet(`${name}-config-set`, args, opts);\n}\n\n/**\n * Create SES configuration set with v2 API (supports more options)\n */\nexport function createConfigSetV2(\n  name: string,\n  config: ResolvedConfig,\n  tags: Record<string, string>,\n  opts?: pulumi.ComponentResourceOptions\n): aws.sesv2.ConfigurationSet {\n  const args: aws.sesv2.ConfigurationSetArgs = {\n    configurationSetName: DEFAULT_CONFIG_SET_NAME,\n    deliveryOptions: config.tlsRequired ? { tlsPolicy: \"REQUIRE\" } : undefined,\n    suppressionOptions: config.suppressionList.enabled\n      ? { suppressedReasons: config.suppressionList.reasons }\n      : undefined,\n    reputationOptions: config.reputationMetrics\n      ? { reputationMetricsEnabled: true }\n      : undefined,\n    sendingOptions: {\n      sendingEnabled: config.sendingEnabled,\n    },\n    trackingOptions: config.tracking.customRedirectDomain\n      ? {\n          customRedirectDomain: config.tracking.customRedirectDomain,\n          httpsPolicy: config.tracking.httpsEnabled ? \"REQUIRE\" : \"OPTIONAL\",\n        }\n      : undefined,\n    tags,\n  };\n\n  return new aws.sesv2.ConfigurationSet(`${name}-config-set-v2`, args, opts);\n}\n\n/**\n * Resolve the `matchingEventTypes` for the SES EventBridge event destination\n * from `events.types`. An empty array (or undefined) means \"all\", matching\n * `packages/cli`'s `resolveMatchingEventTypes` — see plan 183. Extracted\n * from the two-step `config.events.types || ALL_EVENT_TYPES` (here) plus\n * `eventTypes.length > 0 ? eventTypes : ALL_EVENT_TYPES` (previously inline\n * in `createEventDestination`) so the composed default-set derivation is a\n * single pure function, testable without constructing any Pulumi resource.\n */\nexport function resolveMatchingEventTypes(\n  eventTypes?: SESEventType[]\n): SESEventType[] {\n  const provided = eventTypes || ALL_EVENT_TYPES;\n  return provided.length > 0 ? provided : ALL_EVENT_TYPES;\n}\n\n/**\n * Create EventBridge event destination for SES events\n */\nexport function createEventDestination(\n  name: string,\n  configSetName: pulumi.Input<string>,\n  eventTypes: SESEventType[],\n  opts?: pulumi.ComponentResourceOptions\n): aws.sesv2.ConfigurationSetEventDestination {\n  // SES requires the default EventBridge bus\n  const defaultEventBus = aws.cloudwatch.getEventBusOutput({ name: \"default\" });\n\n  return new aws.sesv2.ConfigurationSetEventDestination(\n    `${name}-event-destination`,\n    {\n      configurationSetName: configSetName,\n      eventDestinationName: \"wraps-email-eventbridge\",\n      eventDestination: {\n        enabled: true,\n        matchingEventTypes:\n          eventTypes.length > 0 ? eventTypes : ALL_EVENT_TYPES,\n        eventBridgeDestination: {\n          eventBusArn: defaultEventBus.arn,\n        },\n      },\n    },\n    opts\n  );\n}\n\n/**\n * Create SES domain identity\n */\nexport function createDomainIdentity(\n  name: string,\n  domain: string,\n  _tags: Record<string, string>,\n  transform?: TransformFunctions[\"domainIdentity\"],\n  opts?: pulumi.ComponentResourceOptions\n): { domainIdentity: aws.ses.DomainIdentity; domainDkim: aws.ses.DomainDkim } {\n  let args: aws.ses.DomainIdentityArgs = {\n    domain,\n  };\n\n  // Apply transform if provided\n  if (transform) {\n    args = transform(args);\n  }\n\n  const domainIdentity = new aws.ses.DomainIdentity(\n    `${name}-domain-identity`,\n    args,\n    opts\n  );\n\n  // Create DKIM verification\n  const domainDkim = new aws.ses.DomainDkim(\n    `${name}-domain-dkim`,\n    {\n      domain,\n    },\n    { ...opts, dependsOn: [domainIdentity] }\n  );\n\n  return { domainIdentity, domainDkim };\n}\n\n/**\n * Create SES domain identity with v2 API (supports configuration set linking)\n */\nexport function createDomainIdentityV2(\n  name: string,\n  domain: string,\n  configSetName: pulumi.Input<string>,\n  tags: Record<string, string>,\n  opts?: pulumi.ComponentResourceOptions\n): aws.sesv2.EmailIdentity {\n  return new aws.sesv2.EmailIdentity(\n    `${name}-domain-identity-v2`,\n    {\n      emailIdentity: domain,\n      configurationSetName: configSetName,\n      dkimSigningAttributes: {\n        nextSigningKeyLength: \"RSA_2048_BIT\",\n      },\n      tags,\n    },\n    opts\n  );\n}\n\n/**\n * Configure MAIL FROM domain for better deliverability\n */\nexport function createMailFromAttributes(\n  name: string,\n  domain: string,\n  mailFromDomain: string,\n  domainIdentity: aws.ses.DomainIdentity | aws.sesv2.EmailIdentity,\n  opts?: pulumi.ComponentResourceOptions\n): aws.sesv2.EmailIdentityMailFromAttributes {\n  return new aws.sesv2.EmailIdentityMailFromAttributes(\n    `${name}-mail-from`,\n    {\n      emailIdentity: domain,\n      mailFromDomain,\n      behaviorOnMxFailure: \"USE_DEFAULT_VALUE\",\n    },\n    { ...opts, dependsOn: [domainIdentity] }\n  );\n}\n\n/**\n * Create all SES resources based on configuration\n */\nexport function createSESResources(\n  name: string,\n  config: ResolvedConfig,\n  tags: Record<string, string>,\n  _transform?: TransformFunctions,\n  opts?: pulumi.ComponentResourceOptions\n): SESResourcesResult {\n  // Create configuration set with v2 API for full feature support\n  const configSet = createConfigSetV2(name, config, tags, opts);\n\n  // Create event destination if events are configured\n  let eventDestination: aws.sesv2.ConfigurationSetEventDestination | undefined;\n  if (config.events) {\n    eventDestination = createEventDestination(\n      name,\n      configSet.configurationSetName,\n      resolveMatchingEventTypes(config.events.types),\n      opts\n    );\n  }\n\n  // Create domain identity if domain is provided\n  let domainIdentityV2: aws.sesv2.EmailIdentity | undefined;\n  let mailFromAttributes: aws.sesv2.EmailIdentityMailFromAttributes | undefined;\n  let dkimTokens: pulumi.Output<string[]> = pulumi.output([]);\n\n  if (config.domain) {\n    // Use v2 API for domain identity — supports config set linking and DKIM\n    domainIdentityV2 = createDomainIdentityV2(\n      name,\n      config.domain,\n      configSet.configurationSetName,\n      tags,\n      { ...opts, dependsOn: [configSet] }\n    );\n\n    // Extract DKIM tokens from v2 identity\n    dkimTokens = domainIdentityV2.dkimSigningAttributes.apply(\n      (attrs) => attrs.tokens ?? []\n    );\n\n    // Configure MAIL FROM if domain is provided\n    if (config.mailFromSubdomain) {\n      const mailFromDomain = `${config.mailFromSubdomain}.${config.domain}`;\n      mailFromAttributes = createMailFromAttributes(\n        name,\n        config.domain,\n        mailFromDomain,\n        domainIdentityV2,\n        opts\n      );\n    }\n  }\n\n  return {\n    configSet: configSet as unknown as aws.ses.ConfigurationSet,\n    eventDestination,\n    domainIdentity: undefined,\n    domainDkim: undefined,\n    mailFromAttributes,\n    dkimTokens,\n  };\n}\n","import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { convertToSMTPPassword, getSMTPEndpoint } from \"@wraps/core\";\n\n/**\n * SMTP credentials result\n */\nexport type SMTPResult = {\n  iamUser: aws.iam.User;\n  accessKey: aws.iam.AccessKey;\n  smtpUsername: pulumi.Output<string>;\n  smtpPassword: pulumi.Output<string>;\n  smtpEndpoint: pulumi.Output<string>;\n};\n\n/**\n * Create SMTP credentials for legacy systems.\n *\n * Creates an IAM user with ses:SendRawEmail permission scoped to the\n * specified SES configuration set, along with access keys that are\n * converted to SMTP credentials.\n *\n * IMPORTANT: The SMTP password is shown once and cannot be retrieved later.\n * Store it securely!\n */\nexport function createSMTPCredentials(\n  name: string,\n  configSetName: pulumi.Input<string>,\n  region: pulumi.Output<string>,\n  tags: Record<string, string>,\n  opts?: pulumi.ComponentResourceOptions\n): SMTPResult {\n  // Create IAM user for SMTP authentication\n  const iamUser = new aws.iam.User(\n    `${name}-smtp-user`,\n    {\n      name: \"wraps-email-smtp-user\",\n      tags: {\n        ...tags,\n        Purpose: \"SES SMTP Authentication\",\n      },\n    },\n    opts\n  );\n\n  // Attach SES send policy scoped to configuration set\n  new aws.iam.UserPolicy(\n    `${name}-smtp-policy`,\n    {\n      user: iamUser.name,\n      policy: pulumi.output(configSetName).apply((csName) =>\n        JSON.stringify({\n          Version: \"2012-10-17\",\n          Statement: [\n            {\n              Effect: \"Allow\",\n              Action: \"ses:SendRawEmail\",\n              Resource: \"*\",\n              Condition: {\n                StringEquals: {\n                  \"ses:ConfigurationSetName\": csName,\n                },\n              },\n            },\n          ],\n        })\n      ),\n    },\n    opts\n  );\n\n  // Create access key for the IAM user\n  const accessKey = new aws.iam.AccessKey(\n    `${name}-smtp-key`,\n    {\n      user: iamUser.name,\n    },\n    opts\n  );\n\n  // SMTP username is the access key ID\n  const smtpUsername = accessKey.id;\n\n  // Convert the secret access key to SMTP password using core utility\n  const smtpPassword = pulumi\n    .all([accessKey.secret, region])\n    .apply(([secret, r]) => convertToSMTPPassword(secret, r));\n\n  // SMTP endpoint using core utility\n  const smtpEndpoint = region.apply((r) => getSMTPEndpoint(r));\n\n  return {\n    iamUser,\n    accessKey,\n    smtpUsername,\n    smtpPassword,\n    smtpEndpoint,\n  };\n}\n"],"mappings":"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CA,eAAO;MACX;IACJ;ACtDO,IAAMjB,qBAAoB,CAAC,UAAU;AACxC,UAAI,OAAO,UAAU;AACjB,eAAO;AACX,YAAM,cAAc,QAAQ,QAAQ,KAAK;AACzC,aAAO,MAAM;IACjB;AELO,IAAM,iBAAiB;MAC1B,cAAc;QACV;UACI,MAAM;UACN,WAAW;YACP,aAAa;YACb,sBAAsB;YACtB,wBAAwB;YACxB,QAAQ;YACR,qBAAqB;YACrB,gBAAgB;UACpB;UACA,eAAe;UACf,WAAW;YACP,cAAc;cACV,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,cAAc;cACV,eAAe;YACnB;YACA,cAAc;cACV,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,kBAAkB;cACd,eAAe;YACnB;YACA,cAAc;cACV,eAAe;YACnB;YACA,gBAAgB;cACZ,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,gBAAgB;cACZ,eAAe;YACnB;YACA,gBAAgB;cACZ,eAAe;YACnB;YACA,cAAc;cACV,eAAe;YACnB;YACA,cAAc;cACV,eAAe;YACnB;YACA,cAAc;cACV,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,gBAAgB;cACZ,eAAe;YACnB;YACA,gBAAgB;cACZ,eAAe;YACnB;YACA,cAAc;cACV,eAAe;YACnB;YACA,gBAAgB;cACZ,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YACA,aAAa;cACT,eAAe;YACnB;YA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","names":["i","toUtf8","fromUtf8","toBase64","fromBase64","Uint8ArrayBlobAdapter","getRandomValues","RFC3339_WITH_OFFSET","IMF_FIXDATE","RFC_850_DATE","ASC_TIME","AlgorithmId","EndpointURLScheme","IniSectionType","k","r","shapeId","ns","year","time","LazyJsonString","c","import_path","logger","join","fsReadFile","e","SelectorType","c","member","getEndpointFromConfig","getEndpointFromInstructions","endpointMiddleware","logger","h","date","e","isStreamingPayload","output","retryMiddleware","group","normalizeProvider","a","b","entry","env","endpointUrl","partition","bdd","root","i","hostname","protocol","k","c","nodes","RETRY_MODES","InvokeStore","isIdentityExpired","i","normalizeProvider","HEADER_VALUE_TYPE","value","serialized","time","buildNativeClass","import_crypto","i","c","j","h","t1","t2","aws","pulumi","import_crypto","import_path","createHmac","defaultEndpointResolver","name","Command","aws","r","cloudfront","aws","command","i","r","aws","pulumi","aws","pulumi","aws","pulumi","import_meta","lambda","pulumi","a","k","ses","aws","aws","pulumi","aws","pulumi","r","nodes","region"]}