-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain.js.map
1 lines (1 loc) · 761 KB
/
main.js.map
1
{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/about-page/about-page.component.css","webpack:///./src/app/about-page/about-page.component.html","webpack:///./src/app/about-page/about-page.component.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/aws-resources.service.ts","webpack:///./src/app/common-resource/common-resource.component.css","webpack:///./src/app/common-resource/common-resource.component.html","webpack:///./src/app/common-resource/common-resource.component.ts","webpack:///./src/app/conditions-tab/conditions-tab.component.css","webpack:///./src/app/conditions-tab/conditions-tab.component.html","webpack:///./src/app/conditions-tab/conditions-tab.component.ts","webpack:///./src/app/conditions/conditions.component.css","webpack:///./src/app/conditions/conditions.component.html","webpack:///./src/app/conditions/conditions.component.ts","webpack:///./src/app/ec2-init-config-tab/ec2-init-config-tab.component.css","webpack:///./src/app/ec2-init-config-tab/ec2-init-config-tab.component.html","webpack:///./src/app/ec2-init-config-tab/ec2-init-config-tab.component.ts","webpack:///./src/app/ec2-init/ec2-init.component.css","webpack:///./src/app/ec2-init/ec2-init.component.html","webpack:///./src/app/ec2-init/ec2-init.component.ts","webpack:///./src/app/functions-tab/functions-tab.component.css","webpack:///./src/app/functions-tab/functions-tab.component.html","webpack:///./src/app/functions-tab/functions-tab.component.ts","webpack:///./src/app/how-to/how-to.component.css","webpack:///./src/app/how-to/how-to.component.html","webpack:///./src/app/how-to/how-to.component.ts","webpack:///./src/app/import-template/import-template.component.css","webpack:///./src/app/import-template/import-template.component.html","webpack:///./src/app/import-template/import-template.component.ts","webpack:///./src/app/intrinsic-functions/intrinsic-functions.component.css","webpack:///./src/app/intrinsic-functions/intrinsic-functions.component.html","webpack:///./src/app/intrinsic-functions/intrinsic-functions.component.ts","webpack:///./src/app/json-result.service.ts","webpack:///./src/app/keys-pipe.pipe.ts","webpack:///./src/app/mappings-tab/mappings-tab.component.css","webpack:///./src/app/mappings-tab/mappings-tab.component.html","webpack:///./src/app/mappings-tab/mappings-tab.component.ts","webpack:///./src/app/mappings/mappings.component.css","webpack:///./src/app/mappings/mappings.component.html","webpack:///./src/app/mappings/mappings.component.ts","webpack:///./src/app/metadata/metadata.component.css","webpack:///./src/app/metadata/metadata.component.html","webpack:///./src/app/metadata/metadata.component.ts","webpack:///./src/app/object-help/object-help.component.css","webpack:///./src/app/object-help/object-help.component.html","webpack:///./src/app/object-help/object-help.component.ts","webpack:///./src/app/outputs-tab/outputs-tab.component.css","webpack:///./src/app/outputs-tab/outputs-tab.component.html","webpack:///./src/app/outputs-tab/outputs-tab.component.ts","webpack:///./src/app/outputs/outputs.component.css","webpack:///./src/app/outputs/outputs.component.html","webpack:///./src/app/outputs/outputs.component.ts","webpack:///./src/app/parameters-tab/parameters-tab.component.css","webpack:///./src/app/parameters-tab/parameters-tab.component.html","webpack:///./src/app/parameters-tab/parameters-tab.component.ts","webpack:///./src/app/parameters/parameters.component.css","webpack:///./src/app/parameters/parameters.component.html","webpack:///./src/app/parameters/parameters.component.ts","webpack:///./src/app/property-dialog-tab/property-dialog-tab.component.css","webpack:///./src/app/property-dialog-tab/property-dialog-tab.component.html","webpack:///./src/app/property-dialog-tab/property-dialog-tab.component.ts","webpack:///./src/app/property-dialog/property-dialog.component.css","webpack:///./src/app/property-dialog/property-dialog.component.html","webpack:///./src/app/property-dialog/property-dialog.component.ts","webpack:///./src/app/resource-data.service.ts","webpack:///./src/app/resource-view/resource-list.ts","webpack:///./src/app/resource-view/resource-view.component.css","webpack:///./src/app/resource-view/resource-view.component.html","webpack:///./src/app/resource-view/resource-view.component.ts","webpack:///./src/app/result/result.component.css","webpack:///./src/app/result/result.component.html","webpack:///./src/app/result/result.component.ts","webpack:///./src/app/transform/transform.component.css","webpack:///./src/app/transform/transform.component.html","webpack:///./src/app/transform/transform.component.ts","webpack:///./src/app/useful-utils.service.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts","webpack:///fs (ignored)"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2Fib3V0LXBhZ2UvYWJvdXQtcGFnZS5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<img src=\\\"../../assets/img/cloudkast-logo.jpg\\\" height=\\\"50\\\" width=\\\"250\\\" alt=\\\"logo\\\">\\n\\n<h4 mat-line>\\n Authoring AWS CloudFormation templates is a dreadful task (and so is writing any long piece of complex\\n json or yaml for that matter). Parsing JSON-formatted text files to see the resources that are in your template and their relationships can be difficult.\\n When you author template resources in a text editor, you must manually edit JSON or YAML, which can be tedious and error-prone.\\nThis has led to emergence of many enterprise and community driven tools in the market over the last few years. These tools can be broadly\\ndivided into the following categories:\\n<mat-list role=\\\"list\\\">\\n <li>IDE plugins e.g. Jetbrains plugin for CloudFormation etc.</li>\\n <li>GUI based tools e.g. AWS CloudFormation designer</li>\\n <li>DSLs e.g. GoFormation, cfndsl, SparkleFormation, Troposphere etc.</li>\\n </mat-list>\\n All these existing tools, however useful, end up pushing up the entry barrier even higher and thus \\n fall short in one criterion: <i>Quick Adaptability.</i>\\n</h4>\\n\\n<h4 mat-line >\\n Ever wished if you could generate AWS CloudFormation templates just the way you generate\\n AWS IAM policies using AWS policy generator? Well, now you can with CloudKast. CloudKast is an online AWS cloudformation template generator. \\n CloudKast is well suited for busy developers, junior administrators and cloud architects alike.\\n The following are the features\\n provided by CloudKast:\\n <mat-list role=\\\"list\\\">\\n <li>An intuitive form-based UI interface to generate CloudFormation templates online.</li>\\n <li>Tooltips next to each field providing short description along with valid values it can hold wherever applicable.</li>\\n <li>Resource section provides colored info icons next to each property indicating whether the property/attribute is required, conditional or optional.</li>\\n <li>Form validation for each section to ensure that 'required' fields are filled in.</li>\\n <li>An 'intrinsic function' widget to generate functions.</li>\\n <li>Autopopulating certain function fields with valid values e.g. Fn::GetAtt and Ref get auto-populated with respective parameters, resources or resources' attributes.</li>\\n <li>A 'Property Dealer' widget next to each custom property of a resource i.e. properties that do not hold primitive values. </li>\\n <li>Import functionality to import existing templates for further modification. </li>\\n <li>A copy button next to each section, to be mainly used while modifying an imported template.</li>\\n <li>'Download' option to download the template to local comupter.</li>\\n <li>Upload option to upload the template securely to an AWS s3 bucket.</li>\\n <li>Validate the template securely by providing AWS credentials of your AWS account. </li>\\n <li>A sleek, simple and easy-to-use UI interface</li>\\n <li>Provides 'How-To' videos to further reduce the little learning curve required. </li>\\n <li>Runs fully within the browser memory with no backend. </li>\\n </mat-list>\\n</h4>\\n\\n<h4 mat-line>\\n CloudKast is still in <u>development preview</u> and periodically updated with more AWS resources. If you come across any issues/bugs or want to request\\n an enhancement, we would love to hear from you. Send it to email ID provided in the upper right corner. \\n</h4>\\n\\n<h4 mat-line>\\n The following features are <b>in progress</b>:\\n <mat-list role=\\\"list\\\" >\\n <li>Serveless Application Model templates</li>\\n <li>Yaml support (currently under testing) </li>\\n <li>Remaining AWS Resources</li>\\n <li>Metadata section</li>\\n <li>Transform section. Currently supported at template level and snippet level. Snippet level support is limited to resource properties only. </li>\\n <li>comprehensive tutorial videos</li>\\n </mat-list>\\n</h4>\\n\\n\\n\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-about-page',\n templateUrl: './about-page.component.html',\n styleUrls: ['./about-page.component.css']\n})\nexport class AboutPageComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \".example-icon {\\r\\n padding: 0 14px;\\r\\n }\\r\\n \\r\\n .example-spacer {\\r\\n flex: 1 1 auto;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXBwLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxlQUFlO0VBQ2pCOztFQUVBO0lBQ0UsY0FBYztFQUNoQiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmV4YW1wbGUtaWNvbiB7XHJcbiAgICBwYWRkaW5nOiAwIDE0cHg7XHJcbiAgfVxyXG4gIFxyXG4gIC5leGFtcGxlLXNwYWNlciB7XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICB9Il19 */\"","module.exports = \"<mat-toolbar color=\\\"primary\\\" >\\n <mat-toolbar-row>\\n <span>CloudKast</span>\\n <span class=\\\"example-spacer\\\"></span>\\n <a style=\\\"color:white\\\" href=\\\"mailto:[email protected]\\\"> <mat-icon>email</mat-icon> </a> \\n </mat-toolbar-row>\\n</mat-toolbar>\\n<mat-tab-group color=\\\"primary\\\" animationDuration=\\\"0ms\\\">\\n <mat-tab label=\\\"Create\\\"> \\n <mat-tab-group color=\\\"accent\\\" animationDuration=\\\"0ms\\\" >\\n <mat-tab label=\\\"Version & Desc\\\"> \\n <app-metadata></app-metadata>\\n </mat-tab>\\n <mat-tab label=\\\"Parameters\\\">\\n <app-parameters-tab></app-parameters-tab>\\n </mat-tab>\\n <mat-tab label=\\\"Mappings\\\"> \\n <app-mappings-tab></app-mappings-tab>\\n </mat-tab>\\n <mat-tab label=\\\"Conditions\\\"> \\n <app-conditions-tab></app-conditions-tab>\\n </mat-tab>\\n <mat-tab label=\\\"Transform & Metadata\\\"> \\n <mat-tab-group color=\\\"primary\\\" animationDuration=\\\"0ms\\\" > \\n <mat-tab label=\\\"Transform\\\">\\n <app-transform></app-transform>\\n </mat-tab>\\n <mat-tab label=\\\"Metadata\\\">\\n <app-ec2-init></app-ec2-init>\\n </mat-tab>\\n </mat-tab-group>\\n </mat-tab>\\n <mat-tab label=\\\"Resources\\\"> \\n <app-resource-view></app-resource-view>\\n </mat-tab>\\n <mat-tab label=\\\"Outputs\\\"> \\n <app-outputs-tab></app-outputs-tab>\\n </mat-tab>\\n <!-- <mat-tab label=\\\"AWS::Cloudformation::Init\\\" >\\n <app-ec2-init></app-ec2-init>\\n </mat-tab> -->\\n </mat-tab-group>\\n </mat-tab>\\n <!-- <mat-tab label=\\\"Property Dealer\\\">\\n <app-object-help></app-object-help>\\n </mat-tab> -->\\n <mat-tab label=\\\"Result\\\"> \\n <app-result></app-result>\\n </mat-tab>\\n <mat-tab label=\\\"Import\\\">\\n <app-import-template></app-import-template>\\n </mat-tab>\\n <mat-tab label=\\\"About\\\">\\n <app-about-page></app-about-page>\\n </mat-tab>\\n <mat-tab label=\\\"How to\\\">\\n <app-how-to></app-how-to>\\n </mat-tab>\\n</mat-tab-group>\"","import { Component } from '@angular/core';\n\n\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent {\n title = 'CloudKast';\n\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport {FormsModule} from '@angular/forms'\nimport 'hammerjs';\n\n//Angular Material Components\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {MatCheckboxModule} from '@angular/material';\nimport {MatButtonModule} from '@angular/material';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatToolbarModule} from '@angular/material/toolbar';\nimport {MatListModule} from '@angular/material/list';\nimport {MatGridListModule} from '@angular/material/grid-list';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatStepperModule} from '@angular/material/stepper';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {MatDialogModule, MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatSortModule} from '@angular/material/sort';\nimport {MatPaginatorModule} from '@angular/material/paginator';\nimport {MatBadgeModule} from '@angular/material/badge';\n//Material import end\n\nimport { ResourceViewComponent } from './resource-view/resource-view.component';\nimport { ResultComponent } from './result/result.component';\nimport { MetadataComponent } from './metadata/metadata.component';\nimport { JsonResultService } from './json-result.service';\nimport { ParametersComponent } from './parameters/parameters.component';\nimport { ParametersTabComponent } from './parameters-tab/parameters-tab.component';\nimport { UsefulUtilsService } from './useful-utils.service';\nimport { IntrinsicFunctionsComponent } from './intrinsic-functions/intrinsic-functions.component';\nimport { KeysPipePipe } from './keys-pipe.pipe';\nimport { ObjectHelpComponent } from './object-help/object-help.component';\nimport { ResourceDataService } from './resource-data.service';\nimport { MappingsComponent } from './mappings/mappings.component';\nimport { ConditionsComponent } from './conditions/conditions.component';\nimport { OutputsComponent } from './outputs/outputs.component';\nimport { TransformComponent } from './transform/transform.component';\nimport { AboutPageComponent } from './about-page/about-page.component';\nimport { OutputsTabComponent } from './outputs-tab/outputs-tab.component';\nimport { ConditionsTabComponent } from './conditions-tab/conditions-tab.component';\nimport { MappingsTabComponent } from './mappings-tab/mappings-tab.component';\nimport { CommonResourceComponent } from './common-resource/common-resource.component';\nimport { PropertyDialogTabComponent } from './property-dialog-tab/property-dialog-tab.component';\nimport { PropertyDialogComponent } from './property-dialog/property-dialog.component';\nimport { FunctionsTabComponent } from './functions-tab/functions-tab.component';\nimport { EC2InitComponent } from './ec2-init/ec2-init.component';\nimport { Ec2InitConfigTabComponent } from './ec2-init-config-tab/ec2-init-config-tab.component';\nimport { ImportTemplateComponent } from './import-template/import-template.component';\nimport { HowToComponent } from './how-to/how-to.component';\n\n\n\n\n\n@NgModule({\n declarations: [\n AppComponent,\n ResourceViewComponent,\n ResultComponent,\n MetadataComponent,\n ParametersComponent,\n ParametersTabComponent,\n IntrinsicFunctionsComponent,\n KeysPipePipe,\n ObjectHelpComponent,\n MappingsComponent,\n ConditionsComponent,\n OutputsComponent,\n TransformComponent,\n AboutPageComponent,\n OutputsTabComponent,\n ConditionsTabComponent,\n MappingsTabComponent,\n CommonResourceComponent,\n PropertyDialogTabComponent,\n PropertyDialogComponent,\n FunctionsTabComponent,\n EC2InitComponent,\n Ec2InitConfigTabComponent,\n ImportTemplateComponent,\n HowToComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n FormsModule,\n //Material start\n MatCheckboxModule,\n MatCheckboxModule,\n MatButtonModule,\n MatInputModule,\n MatAutocompleteModule,\n MatDatepickerModule,\n MatFormFieldModule,\n MatRadioModule,\n MatSelectModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatMenuModule,\n MatSidenavModule,\n MatToolbarModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatStepperModule,\n MatTabsModule,\n MatExpansionModule,\n MatButtonToggleModule,\n MatChipsModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatDialogModule,\n MatTooltipModule,\n MatSnackBarModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatBadgeModule\n //Material End\n ],\n providers: [JsonResultService,UsefulUtilsService,ResourceDataService,\n {provide:MAT_DIALOG_DATA,useValue:\"AWS::EC2::Instance\"}\n ],\n bootstrap: [AppComponent],\n entryComponents:[PropertyDialogTabComponent]\n})\nexport class AppModule { }\n","import { Injectable } from '@angular/core';\nimport { ResourceSyntax } from './resource-view/resource-list';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AwsResourcesService {\n\n constructor() { }\n\n ec2_volume:ResourceSyntax={\n \"Type\":\"AWS::EC2::Volume\",\n \"Properties\" : {\n \"AutoEnableIO\" : \"Boolean. Indicates whether the volume is auto-enabled for I/O operations. By default, Amazon EBS disables I/O to the volume from attached EC2 instances when it determines that a volume's data is potentially inconsistent. If the consistency of the volume is not a concern, and you prefer that the volume be made available immediately if it's impaired, you can configure the volume to automatically enable I/O.\",\n \"AvailabilityZone\" : \"*String,Required: Yes\",\n \"Encrypted\" : \"**Boolean,Required: Conditional. If you specify the KmsKeyId property, you must enable encryption. Indicates whether the volume is encrypted. You can attach encrypted Amazon EBS volumes only to instance types that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. You can't create an encrypted volume from an unencrypted snapshot, or vice versa. If your AMI uses encrypted volumes, you can launch the AMI only on supported instance types.\",\n \"Iops\" : \"**Number,Required: Conditional. Required when the volume type is io1; not used with other volume types. The number of I/O operations per second (IOPS) that the volume supports. For Provisioned IOPS SSD volumes, this represents the number of IOPS that are provisioned for the volume. For General Purpose SSD volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting. \",\n \"KmsKeyId\" : \"String,The Amazon Resource Name (ARN) of the AWS Key Management Service master key\",\n \"Size\" : \"**Integer,Required: Conditional. If you don't specify a value for the SnapshotId property, you must specify this property. If you specify the SnapshotId property, specify a size that is equal to or greater than the size of the snapshot. If you don't specify a size, EC2 uses the size of the snapshot as the volume size.\",\n \"SnapshotId\" : \"String\",\n \"VolumeType\" : \"String,Valid Values: standard | io1 | gp2 | sc1 | st1,Required: No\"\n }\n }\n\n ec2_eip={\n \"Type\" : \"AWS::EC2::EIP\",\n \"Properties\" : {\n \"Domain\" : \"**Set to vpc to allocate the address to your Virtual Private Cloud (VPC). No other values are supported. Required when allocating an address to a VPC. Allowed Values: standard | vpc\",\n \"InstanceId\" : \"The Instance ID of the Amazon EC2 instance that you want to associate with this Elastic IP address.\",\n \"PublicIpv4Pool\" : \"Specifies the ID of an address pool that you own to let Amazon EC2 select an address from the address pool.\"\n }\n };\n\n ec2_instance={\n \"Type\" : \"AWS::EC2::Instance\",\n \"Properties\" : {\n //\"Metadata\":{\"info\":\"This is not a property but rather an attribute. Use the AWS::CloudFormation::Init type to include metadata on an Amazon EC2 instance for the cfn-init helper script. If your template calls the cfn-init script, the script looks for resource metadata rooted in the AWS::CloudFormation::Init metadata key.\"},\n \"Affinity\" : \"String. Indicates whether Amazon Elastic Compute Cloud (Amazon EC2) always associates the instance with a dedicated host. If you want the instance to always restart on the same host on which it was launched, specify 'host'. If you want the instance to restart on any available host, but try to launch onto the last host it ran on (on a best-effort basis), specify 'default'.\",\n \"AvailabilityZone\" : \"String. If not specified, an Availability Zone will be automatically chosen for you based on the load balancing criteria for the region.\",\n \"BlockDeviceMappings\" : [\"A list of Amazon EC2 BlockDeviceMapping.##\"],\n \"CreditSpecification\" : {\"info\":\" Type: CreditSpecification. Amazon EC2 Instance CreditSpecification.##\"},\n \"DisableApiTermination\" : \"Boolean. Specifies whether the instance can be terminated through the API.\",\n \"EbsOptimized\" : \"Boolean. Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.\",\n \"ElasticGpuSpecifications\" : [\"Type: List of ElasticGpuSpecification. Specifies the Elastic GPUs. An Elastic GPU is a GPU resource that you can attach to your instance to accelerate the graphics performance of your applications.##\"],\n \"ElasticInferenceAccelerators\" : [\"Type: List of ElasticInferenceAccelerator. Specify a list of elastic inference accelerators for an instance. ##\"],\n \"HostId\" : \"String. The ID of a dedicated host that the instance is associated with\",\n \"IamInstanceProfile\" : \"String. The IAM instance profile\",\n \"ImageId\" : \"String. The ID of the AMI. An AMI ID is required to launch an instance and must be specified here or in a launch template.\",\n \"InstanceInitiatedShutdownBehavior\" : \"String. Indicates whether an instance stops or terminates when you shut down the instance from the instance's operating system shutdown command. Allowed Values: stop | terminate\",\n \"InstanceType\" : \"String. Default: m1.small. Allowed Values: a1.2xlarge | a1.4xlarge | a1.large | a1.medium | a1.xlarge | c1.medium | c1.xlarge | c3.2xlarge | c3.4xlarge | c3.8xlarge | c3.large | c3.xlarge | c4.2xlarge | c4.4xlarge | c4.8xlarge | c4.large | c4.xlarge | c5.18xlarge | c5.2xlarge | c5.4xlarge | c5.9xlarge | c5.large | c5.xlarge | c5d.18xlarge | c5d.2xlarge | c5d.4xlarge | c5d.9xlarge | c5d.large | c5d.xlarge | c5n.18xlarge | c5n.2xlarge | c5n.4xlarge | c5n.9xlarge | c5n.large | c5n.xlarge | cc1.4xlarge | cc2.8xlarge | cg1.4xlarge | cr1.8xlarge | d2.2xlarge | d2.4xlarge | d2.8xlarge | d2.xlarge | f1.16xlarge | f1.2xlarge | f1.4xlarge | g2.2xlarge | g2.8xlarge | g3.16xlarge | g3.4xlarge | g3.8xlarge | g3s.xlarge | h1.16xlarge | h1.2xlarge | h1.4xlarge | h1.8xlarge | hi1.4xlarge | hs1.8xlarge | i2.2xlarge | i2.4xlarge | i2.8xlarge | i2.xlarge | i3.16xlarge | i3.2xlarge | i3.4xlarge | i3.8xlarge | i3.large | i3.metal | i3.xlarge | m1.large | m1.medium | m1.small | m1.xlarge | m2.2xlarge | m2.4xlarge | m2.xlarge | m3.2xlarge | m3.large | m3.medium | m3.xlarge | m4.10xlarge | m4.16xlarge | m4.2xlarge | m4.4xlarge | m4.large | m4.xlarge | m5.12xlarge | m5.24xlarge | m5.2xlarge | m5.4xlarge | m5.large | m5.metal | m5.xlarge | m5a.12xlarge | m5a.24xlarge | m5a.2xlarge | m5a.4xlarge | m5a.large | m5a.xlarge | m5ad.12xlarge | m5ad.16xlarge | m5ad.24xlarge | m5ad.2xlarge | m5ad.4xlarge | m5ad.8xlarge | m5ad.large | m5ad.xlarge | m5d.12xlarge | m5d.24xlarge | m5d.2xlarge | m5d.4xlarge | m5d.large | m5d.metal | m5d.xlarge | p2.16xlarge | p2.8xlarge | p2.xlarge | p3.16xlarge | p3.2xlarge | p3.8xlarge | p3dn.24xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge | r3.large | r3.xlarge | r4.16xlarge | r4.2xlarge | r4.4xlarge | r4.8xlarge | r4.large | r4.xlarge | r5.12xlarge | r5.24xlarge | r5.2xlarge | r5.4xlarge | r5.large | r5.metal | r5.xlarge | r5a.12xlarge | r5a.24xlarge | r5a.2xlarge | r5a.4xlarge | r5a.large | r5a.xlarge | r5ad.12xlarge | r5ad.16xlarge | r5ad.24xlarge | r5ad.2xlarge | r5ad.4xlarge | r5ad.8xlarge | r5ad.large | r5ad.xlarge | r5d.12xlarge | r5d.24xlarge | r5d.2xlarge | r5d.4xlarge | r5d.large | r5d.metal | r5d.xlarge | t1.micro | t2.2xlarge | t2.large | t2.medium | t2.micro | t2.nano | t2.small | t2.xlarge | t3.2xlarge | t3.large | t3.medium | t3.micro | t3.nano | t3.small | t3.xlarge | t3a.2xlarge | t3a.large | t3a.medium | t3a.micro | t3a.nano | t3a.small | t3a.xlarge | u-12tb1.metal | u-6tb1.metal | u-9tb1.metal | x1.16xlarge | x1.32xlarge | x1e.16xlarge | x1e.2xlarge | x1e.32xlarge | x1e.4xlarge | x1e.8xlarge | x1e.xlarge | z1d.12xlarge | z1d.2xlarge | z1d.3xlarge | z1d.6xlarge | z1d.large | z1d.metal | z1d.xlarge\",\n \"Ipv6AddressCount\" : \"Integer. The number of IPv6 addresses to associate with the instance's primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch. \",\n \"Ipv6Addresses\" : [\"Type: List of InstanceIpv6Address##\"],\n \"KernelId\" : \"String. The ID of the kernel. We recommend that you use PV-GRUB instead of kernels and RAM disks.\",\n \"KeyName\" : \"String. If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.\",\n \"LaunchTemplate\" : {\"info\":\" Type: LaunchTemplateSpecification. The launch template to use to launch the instances. Any parameters that you specify in the AWS CloudFormation template override the same parameters in the launch template. You can specify either the name or ID of a launch template, but not both. ##\"},\n \"LicenseSpecifications\" : [\"Type: List of LicenseSpecification. ##\"],\n \"Monitoring\" : \"Boolean. Specifies whether detailed monitoring is enabled for the instance.\",\n \"NetworkInterfaces\" : [\"Type: List of NetworkInterface. The network interfaces to associate with the instance. If you use this property to point to a network interface, you must terminate the original interface before attaching a new one to allow the update of the instance to succeed. If this resource has a public IP address and is also in a VPC that is defined in the same template, you must use the DependsOn Attribute to declare a dependency on the VPC-gateway attachment. ##\"],\n \"PlacementGroupName\" : \"String. The name of an existing placement group that you want to launch the instance into (for cluster instances).\",\n \"PrivateIpAddress\" : \"**String. The private IP address for this instance. By default, Amazon VPC selects an IP address from the subnet for the instance. You cannot specify this option and the network interfaces option in the same request. Only one private IP address can be designated as primary. You can't specify this option if you've specified the option to designate a private IP address as the primary IP address in a network interface specification. You cannot specify this option if you're launching more than one instance in the request. If you make an update to an instance that requires replacement, you must assign a new private IP address. During a replacement, AWS CloudFormation creates a new instance but doesn't delete the old instance until the stack has successfully updated. If the stack update fails, AWS CloudFormation uses the old instance in order to roll back the stack to the previous working state. The old and new instances cannot have the same private IP address.\",\n \"RamdiskId\" : \"String. The ID of the RAM disk to select. Some kernels require additional drivers at launch. \",\n \"SecurityGroupIds\" : [\"** List of String. A list that contains the security group IDs for VPC security groups to assign to the Amazon EC2 instance. If you specify a network interface, you must specify any security groups as part of the network interface. \"],\n \"SecurityGroups\" : [\"List of string. Valid only for Amazon EC2 security groups. A list that contains the Amazon EC2 security groups to assign to the Amazon EC2 instance.\"],\n \"SourceDestCheck\" : \"Boolean. Controls whether source/destination checking is enabled on the instance. Also determines if an instance in a VPC will perform network address translation (NAT).For the instance to perform NAT, the value must be false\",\n \"SsmAssociations\" : [\"Type: List of SsmAssociation. The SSM document and parameter values in AWS Systems Manager to associate with this instance. To use this property, you must specify an IAM instance profile role for the instance. ##\"],\n \"SubnetId\" : \"** String. You cannot specify this option and the network interfaces option in the same request.\",\n \"Tenancy\" : \"String. Allowed Values: dedicated | default | host. The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.\",\n \"UserData\" : \"String. The user data to make available to the instance. For more information, see Running Commands on Your Linux Instance at Launch (Linux) and Adding User Data (Windows). If you are using a command line tool, base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide base64-encoded text. User data is limited to 16 KB.\",\n \"Volumes\" : [\"A list of EC2 MountPoints.##\"],\n \"AdditionalInfo\" : \"\",\n \"CreationPolicy\":{\"info\":\"Use the CreationPolicy attribute when you want to wait on resource configuration actions before stack creation proceeds. For example, if you install and configure software applications on an EC2 instance, you might want those applications to be running before proceeding. In such cases, you can add a CreationPolicy attribute to the instance, and then send a success signal to the instance after the applications are installed and configured.##\"} \n }\n };\n\n ec2_securitygroup={\n \"Type\" : \"AWS::EC2::SecurityGroup\",\n \"Properties\" : {\n \"GroupName\" : \"If you don't specify a GroupName, AWS CloudFormation generates a unique physical ID and uses that ID for the group name.\",\n \"GroupDescription\" : \"*description\",\n \"SecurityGroupEgress\" : [\"A list of Amazon EC2 security group egress rules.##\"],\n \"SecurityGroupIngress\" : [\"A list of Amazon EC2 security group ingress rules.##\"],\n \"VpcId\" : \"*The physical ID of the VPC. You can obtain the physical ID by using a reference function\"\n }\n };\n\n ec2_customergateway= {\n \"Type\" : \"AWS::EC2::CustomerGateway\",\n \"Properties\" : {\n \"BgpAsn\" : \"*The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).\",\n \"IpAddress\" : \"*The internet-routable IP address for the customer gateway's outside interface. The address must be static.\",\n \"Type\" : \"*The type of VPN connection that this customer gateway supports. e.g. ipsec.1\"\n }\n };\n\n ec2_dhcpoptions= {\n \"Type\" : \"AWS::EC2::DHCPOptions\",\n \"Properties\" : {\n \"DomainName\" : \"** A domain name of your choice e.g. example.com\",\n \"DomainNameServers\" : [\"**The IP (IPv4) address of a domain name server. You can specify up to four addresses. At least one of the following properties must be specified:DomainNameServers, NetbiosNameServers, NtpServers. After this condition has been fulfilled, the rest of these properties are optional.\"],\n \"NetbiosNameServers\" : [\"**The IP address (IPv4) of a NetBIOS name server. You can specify up to four addresses. At least one of the following properties must be specified:DomainNameServers, NetbiosNameServers, NtpServers. After this condition has been fulfilled, the rest of these properties are optional.\"],\n \"NetbiosNodeType\" : \"**An integer value indicating the NetBIOS node type: 1: Broadcast. 2: Point-to-point. 4: Mixed mode. 8: Hybrid. Required if NetBiosNameServers is specified; optional otherwise. \",\n \"NtpServers\" : [\"**The IP address (IPv4) of a Network Time Protocol (NTP) server. You can specify up to four addresses. List of String values. At least one of the following properties must be specified:DomainNameServers, NetbiosNameServers, NtpServers. After this condition has been fulfilled, the rest of these properties are optional.\"]\n }\n };\n\n ec2_ec2fleet={\n \"Type\" : \"AWS::EC2::EC2Fleet\",\n \"Properties\" : {\n \"ExcessCapacityTerminationPolicy\" : \"Indicates whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2 Fleet.\",\n \"LaunchTemplateConfigs\" : [\"*List of FleetLaunchTemplateConfigRequest property types##\"],\n \"OnDemandOptions\" : {\"info\":\"Type: OnDemandOptionsRequest. The allocation strategy of On-Demand Instances in an EC2 Fleet.## \"},\n \"ReplaceUnhealthyInstances\" : \"Boolean. Indicates whether EC2 Fleet should replace unhealthy instances.\",\n \"SpotOptions\" : {\"info\":\"Type: SpotOptionsRequest. Describes the configuration of Spot Instances in an EC2 Fleet.##\"},\n \"TagSpecifications\" : [\"List of TagSpecification property types.The key-value pair for tagging the EC2 Fleet request on creation. The value for ResourceType must be fleet, otherwise the fleet request fails.##\"],\n \"TargetCapacitySpecification\" : {\"info\": \"*TargetCapacitySpecificationRequest Type. The TotalTargetCapacity, OnDemandTargetCapacity, SpotTargetCapacity, and DefaultCapacityType structure.##\"},\n \"TerminateInstancesWithExpiration\" : \"Boolean. Indicates whether running instances should be terminated when the EC2 Fleet expires.\",\n \"Type\" : \"The type of the request. By default, the EC2 Fleet places an asynchronous request for your desired capacity, and maintains it by replenishing interrupted Spot Instances (maintain). A value of instant places a synchronous one-time request, and returns errors for any instances that could not be launched. A value of request places an asynchronous one-time request without maintaining capacity or submitting requests in alternative capacity pools if capacity is unavailable.\",\n \"ValidFrom\" : \"The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). The default is to start fulfilling the request immediately.\",\n \"ValidUntil\" : \"The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new EC2 Fleet requests are placed or able to fulfill the request. The default end date is 7 days from the current date.\"\n }\n };\n\n ec2_egressonlyinternetgateway={\n \"Type\": \"AWS::EC2::EgressOnlyInternetGateway\",\n \"Properties\": {\n \"VpcId\": \"* the id of the vpc.\"\n }\n };\n\n ec2_eipassociation= {\n \"Type\": \"AWS::EC2::EIPAssociation\",\n \"Properties\": {\n \"AllocationId\": \"**[EC2-VPC] Allocation ID for the VPC Elastic IP address you want to associate with an Amazon EC2 instance in your VPC.Conditional. Required for EC2-VPC.\",\n \"EIP\": \"**Elastic IP address that you want to associate with the Amazon EC2 instance specified by the InstanceId property. Required for EC2-Classic.\",\n \"InstanceId\": \"**Instance ID of the Amazon EC2 instance that you want to associate with the Elastic IP address specified by the EIP property. If the instance has more than one network interface, you must specify a network interface ID. Conditional. If you specify the EIP property, you must specify this property. If you specify the AllocationId property, you must specify this property or the NetworkInterfaceId property.\",\n \"NetworkInterfaceId\": \"**The ID of the network interface to associate with the Elastic IP address. If the instance has more than one network interface, you must specify a network interface ID.If you specify the AllocationId property, you must specify this property or the InstanceId property.\",\n \"PrivateIpAddress\": \"The private IP address that you want to associate with the Elastic IP address. The private IP address is restricted to the primary and secondary private IP addresses that are associated with the network interface.\"\n }\n };\n\n ec2_flowlog={\n \"Type\" : \"AWS::EC2::FlowLog\",\n \"Properties\" : {\n \"DeliverLogsPermissionArn\" : \"The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that permits Amazon EC2 to publish flow logs to a CloudWatch Logs log group in your account. If you specify LogDestinationType as s3, do not specify DeliverLogsPermissionArn or LogGroupName.\",\n \"LogDestination\" : \"If you specify LogDestinationType as s3, do not specify DeliverLogsPermissionArn or LogGroupName.\",\n \"LogDestinationType\" : \"Specifies the type of destination to which the flow log data is to be published. Flow log data can be published to CloudWatch Logs or Amazon S3. To publish flow log data to CloudWatch Logs, specify 'cloud-watch-logs'. To publish flow log data to Amazon S3, specify 's3'.\",\n \"LogGroupName\" : \"The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs.\",\n \"ResourceId\" : \"*The ID of the subnet, network interface, or VPC for which you want to create a flow log.\",\n \"ResourceType\" : \"*The type of resource that you specified in the ResourceId property. For example, if you specified a VPC ID for the ResourceId property, specify VPC for this property.\",\n \"TrafficType\" : \"*The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic. Valid Values: ACCEPT | REJECT | ALL\"\n }\n };\n\n ec2_host={\n \"Type\" : \"AWS::EC2::Host\",\n \"Properties\" : {\n \"AutoPlacement\" : \"Indicates if the host accepts EC2 instances with only matching configurations or if instances must also specify the host ID. Instances that don't specify a host ID can't launch onto a host with AutoPlacement set to off.\",\n \"AvailabilityZone\" : \"*The Availability Zone (AZ) in which to launch the dedicated host.\",\n \"InstanceType\" : \"*The instance type that the dedicated host accepts.\"\n }\n };\n\n ec2_internetgateway= {\n \"Type\" : \"AWS::EC2::InternetGateway\",\n \"Properties\" : {}\n };\n\n ec2_launchtemplate= {\n \"Type\" : \"AWS::EC2::LaunchTemplate\",\n \"Properties\" : {\n \"LaunchTemplateName\" : \"Minimum length of 3. Maximum length of 128.\",\n \"LaunchTemplateData\" : {\"info\":\"Type: LaunchTemplateData##\"}\n }\n };\n\n ec2_natgateway={\n \"Type\" : \"AWS::EC2::NatGateway\",\n \"Properties\" : {\n \"AllocationId\" : \"*The allocation ID of an Elastic IP address to associate with the NAT gateway. If the Elastic IP address is associated with another resource, you must first disassociate it.\",\n \"SubnetId\" : \"*The public subnet in which to create the NAT gateway.\"\n }\n };\n\n ec2_networkacl= {\n \"Type\" : \"AWS::EC2::NetworkAcl\",\n \"Properties\" : {\n \"VpcId\" : \"*The ID of the VPC where the network ACL will be created.\"\n }\n };\n\n ec2_networkaclentry={\n \"Type\" : \"AWS::EC2::NetworkAclEntry\",\n \"Properties\" : {\n \"CidrBlock\" : \"**You must specify the CidrBlock or Ipv6CidrBlock property.\",\n \"Egress\" : \"Boolean. Whether this rule applies to egress traffic from the subnet (true) or ingress traffic to the subnet (false). By default, AWS CloudFormation specifies false.\",\n \"Icmp\" : {\"info\":\"**Type: EC2 NetworkAclEntry Icmp. required if specifying 1 (ICMP) for the protocol parameter.##\"},\n \"Ipv6CidrBlock\" : \"**You must specify the CidrBlock or Ipv6CidrBlock property.\", \n \"NetworkAclId\" : \"*ID of the ACL where the entry will be created.\",\n \"PortRange\" : {\"info\":\"**Type: EC2 NetworkAclEntry PortRange. Required if specifying 6 (TCP) or 17 (UDP) for the protocol parameter.## \"},\n \"Protocol\" : \"*The IP protocol that the rule applies to. You must specify -1 or a protocol number. If you specify -1, all ports are opened and the PortRange property is ignored.\",\n \"RuleAction\" : \"*Whether to allow or deny traffic that matches the rule; valid values are 'allow' or 'deny'.\",\n \"RuleNumber\" : \"*Rule number to assign to the entry, such as 100. ACL entries are processed in ascending order by rule number. Entries can't use the same rule number unless one is an egress rule and the other is an ingress rule.\"\n }\n };\n\n ec2_networkinterface={\n \"Type\" : \"AWS::EC2::NetworkInterface\",\n \"Properties\" : {\n \"Description\" : \"String\",\n \"GroupSet\" : [ \"Type: List of strings. A list of security group IDs associated with this network interface.\"],\n \"Ipv6AddressCount\" : \"Integer. The number of IPv6 addresses to associate with the network interface. EC2 automatically selects the IPv6 addresses from the subnet range. To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property.\",\n \"Ipv6Addresses\" : [\"One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property.##\"],\n \"PrivateIpAddress\" : \"Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property.\",\n \"PrivateIpAddresses\" : [\"Type: list of PrivateIpAddressSpecification. Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property.##\" ],\n \"SecondaryPrivateIpAddressCount\" : \"Integer. The number of secondary private IP addresses that EC2 automatically assigns to the network interface. EC2 uses the value of the PrivateIpAddress property as the primary private IP address. If you don't specify that property, EC2 automatically assigns both the primary and secondary private IP addresses.\",\n \"SourceDestCheck\" : \"Boolean. Flag indicating whether traffic to or from the instance is validated.\",\n \"SubnetId\" : \"String\"\n }\n };\n\n ec2_networkinterfaceattachment={\n \"Type\" : \"AWS::EC2::NetworkInterfaceAttachment\",\n \"Properties\" : {\n \"DeleteOnTermination\": \"Whether to delete the network interface when the instance terminates. By default, this value is set to True.\",\n \"DeviceIndex\": \"*The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.\",\n \"InstanceId\": \"*The ID of the instance to which you will attach the ENI.\",\n \"NetworkInterfaceId\": \"*The ID of the ENI that you want to attach.\"\n }\n };\n\n ec2_networkinterfacepermission={\n \"Type\" : \"AWS::EC2::NetworkInterfacePermission\",\n \"Properties\" : {\n \"AwsAccountId\" : \"*Aws account id\",\n \"NetworkInterfaceId\" : \"*The ID of the network interface.\",\n \"Permission\" : \"*The type of permission to grant: INSTANCE-ATTACH or EIP-ASSOCIATE.\"\n }\n };\n\n ec2_placementgroup={\n \"Type\" : \"AWS::EC2::PlacementGroup\",\n \"Properties\" : {\n \"Strategy\" : \"The placement strategy, which relates to the instance types that can be added to the placement group. For example, for the cluster strategy, you can cluster C4 instance types but not T2 instance types. Valid Values: cluster | spread | partition\"\n }\n };\n\n ec2_route={\n \"Type\" : \"AWS::EC2::Route\",\n \"Properties\" : {\n \"DestinationCidrBlock\" : \"**The IPv4 CIDR address block used for the destination match. For example, 0.0.0.0/0. Routing decisions are based on the most specific match. You must specify the DestinationCidrBlock or DestinationIpv6CidrBlock property.\",\n \"DestinationIpv6CidrBlock\" : \"**The IPv6 CIDR address block used for the destination match. For example, ::/0. Routing decisions are based on the most specific match. You must specify the DestinationCidrBlock or DestinationIpv6CidrBlock property.\",\n \"EgressOnlyInternetGatewayId\" : \"**The ID of an egress-only internet gateway that is attached to your VPC (over IPv6 only). Conditional. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.\",\n \"GatewayId\" : \"**The ID of an internet gateway or virtual private gateway that is attached to your VPC. For example: igw-eaad4883. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.\",\n \"InstanceId\" : \"**The ID of a NAT instance in your VPC. For example, i-1a2b3c4d. Conditional. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.\",\n \"NatGatewayId\" : \"**The ID of a NAT gateway. For example, nat-0a12bc456789de0fg.You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.\",\n \"NetworkInterfaceId\" : \"**Allows the routing of network interface IDs.You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.\",\n \"RouteTableId\" : \"*The ID of the route table where the route will be added.\",\n \"VpcPeeringConnectionId\" : \"**The ID of a VPC peering connection. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.\"\n }\n };\n\n ec2_routetable= {\n \"Type\" : \"AWS::EC2::RouteTable\",\n \"Properties\" : {\n \"VpcId\" : \"*The ID of the VPC where the route table will be created.\"\n }\n };\n\n ec2_securitygroupegress={\n \"Type\" : \"AWS::EC2::SecurityGroupEgress\",\n \"Properties\" : {\n \"CidrIp\" : \"**You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).\",\n \"CidrIpv6\" : \"**You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).\",\n \"Description\" : \"description\",\n \"DestinationPrefixListId\" : \"**The AWS service prefix of an Amazon VPC endpoint.You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).\",\n \"DestinationSecurityGroupId\" : \"**Specifies the group ID of the destination Amazon VPC security group. You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).\",\n \"FromPort\" : \"*Start of port range for the TCP and UDP protocols, or an ICMP type number. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP type number).\",\n \"GroupId\" : \"*ID of the Amazon VPC security group to modify. This value can be a reference to an AWS::EC2::SecurityGroup resource that has a valid VpcId property or the ID of an existing Amazon VPC security group.\",\n \"IpProtocol\" : \"*IP protocol name or number.se -1 to specify all protocols. If you specify -1, or a protocol number other than tcp, udp, icmp, or 58 (ICMPv6), traffic on all ports is allowed, regardless of any ports you specify. \",\n \"ToPort\" : \"*Integer. End of port range for the TCP and UDP protocols, or an ICMP code. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP code).\"\n }\n };\n\n ec2_securitygroupingress={\n \"Type\" : \"AWS::EC2::SecurityGroupIngress\",\n \"Properties\" : {\n \"CidrIp\" : \"**You must specify a source security group (SourceSecurityGroupName or SourceSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).\",\n \"CidrIpv6\" : \"**You must specify a source security group (SourceSecurityGroupName or SourceSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).\",\n \"Description\" : \"Description\",\n \"FromPort\" : \"*Integer. Start of port range for the TCP and UDP protocols, or an ICMP type number. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP type number).\",\n \"GroupId\" : \"**You must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property. For example, EC2-VPC accounts must use the GroupId property.\",\n \"GroupName\" : \"**Name of the Amazon EC2 security group (non-VPC security group) to modify. This value can be a reference to an AWS::EC2::SecurityGroup resource or the name of an existing Amazon EC2 security group. You must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property. For example, EC2-VPC accounts must use the GroupId property.\",\n \"IpProtocol\" : \"*IP protocol name or number.Use -1 to specify all protocols. If you specify -1, or a protocol number other than tcp, udp, icmp, or 58 (ICMPv6), traffic on all ports is allowed, regardless of any ports you specify. \",\n \"SourcePrefixListId\" : \"**The AWS service prefix of an Amazon VPC endpoint. You must specify a source security group (SourcePrefixListId, SourceSecurityGroupId, or SourceSecurityGroupName) or a CIDR range (CidrIp or CidrIpv6).\",\n \"SourceSecurityGroupName\" : \"**Specifies the ID of the source security group or uses the Ref intrinsic function to refer to the logical ID of a security group defined in the same template. You must specify a source security group (SourcePrefixListId, SourceSecurityGroupId, or SourceSecurityGroupName) or a CIDR range (CidrIp or CidrIpv6).\",\n \"SourceSecurityGroupId\" : \"**Specifies the name of the Amazon EC2 security group (non-VPC security group) to allow access or use the Ref intrinsic function to refer to the logical ID of a security group defined in the same template. You must specify a source security group (SourcePrefixListId, SourceSecurityGroupId, or SourceSecurityGroupName) or a CIDR range (CidrIp or CidrIpv6).\",\n \"SourceSecurityGroupOwnerId\" : \"**Specifies the AWS Account ID of the owner of the Amazon EC2 security group specified in the SourceSecurityGroupName property. If you specify SourceSecurityGroupName or SourceSecurityGroupId and that security group is owned by a different account than the account creating the stack, you must specify the SourceSecurityGroupOwnerId; otherwise, this property is optional.\",\n \"ToPort\" : \"*Integer. End of port range for the TCP and UDP protocols, or an ICMP code. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP code).Required: Yes, for ICMP and any protocol that uses ports.\"\n }\n };\n\n ec2_spotfleet={\n \"Type\" : \"AWS::EC2::SpotFleet\",\n \"Properties\" : {\n \"SpotFleetRequestConfigData\" : {\"info\":\"*Type of SpotFleetRequestConfigData##\"}\n }\n };\n\n ec2_subnet={\n \"Type\" : \"AWS::EC2::Subnet\",\n \"Properties\" : {\n \"AssignIpv6AddressOnCreation\" : \"**Indicates whether a network interface created in this subnet receives an IPv6 address. The default value is false. If you specify a true or false value for AssignIpv6AddressOnCreation, Ipv6CidrBlock must also be specified.\",\n \"AvailabilityZone\" : \"The availability zone in which you want the subnet. Default: AWS selects a zone for you (recommended).\",\n \"CidrBlock\" : \"*The CIDR block that you want the subnet to cover (for example, '10.0.0.0/24').\",\n \"Ipv6CidrBlock\" : \"**The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length. If you specify a true or false value for AssignIpv6AddressOnCreation, Ipv6CidrBlock must be specified.\",\n \"MapPublicIpOnLaunch\" : \"Indicates whether instances that are launched in this subnet receive a public IP address. By default, the value is false.\",\n \"VpcId\" : \"*A Ref structure that contains the ID of the VPC on which you want to create the subnet. The VPC ID is provided as the value of the 'Ref' property\"\n }\n };\n\n ec2_subnetcidrblock={\n \"Type\" : \"AWS::EC2::SubnetCidrBlock\",\n \"Properties\" : {\n \"Ipv6CidrBlock\" : \"*The IPv6 CIDR block for the subnet. The CIDR block must have a prefix length of /64.\",\n \"SubnetId\" : \"*The ID of the subnet to associate the IPv6 CIDR block with.\"\n }\n };\n\n ec2_subnetnetworkaclassociation={\n \"Type\" : \"AWS::EC2::SubnetNetworkAclAssociation\",\n \"Properties\" : {\n \"SubnetId\" : \"*The ID representing the current association between the original network ACL and the subnet.\",\n \"NetworkAclId\" : \"*The ID of the new ACL to associate with the subnet.\"\n }\n };\n\n ec2_subnetroutetableassociation={\n \"Type\" : \"AWS::EC2::SubnetRouteTableAssociation\",\n \"Properties\" : {\n \"RouteTableId\" : \"*The ID of the route table. This is commonly written as a reference to a route table declared elsewhere in the template.\",\n \"SubnetId\" : \"*The ID of the subnet.\"\n }\n };\n\n ec2_transitgateway={\n \"Type\" : \"AWS::EC2::TransitGateway\",\n \"Properties\" : {\n \"AmazonSideAsn\" : \"Integer. A private Autonomous System Number (ASN) for the Amazon side of a BGP session. The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294 for 32-bit ASNs.\",\n \"AutoAcceptSharedAttachments\" : \"Indicates whether attachment requests are automatically accepted. The default is disable.\",\n \"DefaultRouteTableAssociation\" : \"Enable or disable automatic association with the default association route table. The default is enable.\",\n \"DefaultRouteTablePropagation\" : \"Enable or disable automatic propagation of routes to the default propagation route table. The default is enable.\",\n \"Description\" : \"Description\",\n \"DnsSupport\" : \"Enable or disable DNS support. The default is enable.\",\n \"VpnEcmpSupport\" : \"Enable or disable Equal Cost Multipath Protocol. The default is enable.\"\n }\n };\n\n ec2_transitgatewayattachment={\n \"Type\" : \"AWS::EC2::TransitGatewayAttachment\",\n \"Properties\" : {\n \"SubnetIds\" : [\"*List of String values.The IDs of one or more subnets. You can specify only one subnet per Availability Zone. You must specify at least one subnet, but we recommend that you specify two subnets for better availability. The transit gateway uses one IP address from each specified subnet.\" ],\n \"TransitGatewayId\" : \"*The ID of the transit gateway.\",\n \"VpcId\" : \"*The ID of the VPC.\"\n }\n };\n\n ec2_transitgatewayroute={\n \"Type\" : \"AWS::EC2::TransitGatewayRoute\",\n \"Properties\" : {\n \"Blackhole\" : \"Indicates whether to drop traffic if the target isn't available.\",\n \"DestinationCidrBlock\" : \"The CIDR range used for destination matches. Routing decisions are based on the most specific match.\",\n \"TransitGatewayAttachmentId\" : \"The ID of the attachment.\",\n \"TransitGatewayRouteTableId\" : \"*The ID of the transit gateway route table.\"\n }\n };\n\n ec2_transitgatewayroutetable={\n \"Type\" : \"AWS::EC2::TransitGatewayRouteTable\",\n \"Properties\" : {\n \"TransitGatewayId\" : \"*The ID of the transit gateway.\"\n }\n };\n\n ec2_transitgatewayroutetableassociation={\n \"Type\" : \"AWS::EC2::TransitGatewayRouteTableAssociation\",\n \"Properties\" : {\n \"TransitGatewayAttachmentId\" : \"*\",\n \"TransitGatewayRouteTableId\" : \"*\"\n }\n };\n\n ec2_transitgatewayroutetablepropagation={\n \"Type\" : \"AWS::EC2::TransitGatewayRouteTablePropagation\",\n \"Properties\" : {\n \"TransitGatewayAttachmentId\" : \"*\",\n \"TransitGatewayRouteTableId\" : \"*\"\n }\n };\n\n ec2_volumeattachment= {\n \"Type\":\"AWS::EC2::VolumeAttachment\",\n \"Properties\" : {\n \"Device\" : \"*How the device is exposed to the instance (e.g., /dev/sdh, or xvdh). Note: Before this resource can be deleted (and therefore the volume detached), you must first unmount the volume in the instance. Failure to do so results in the volume being stuck in the busy state while it is trying to detach, which could possibly damage the file system or the data it contains.\",\n \"InstanceId\" : \"*The ID of the instance to which the volume attaches. This value can be a reference to an AWS::EC2::Instance resource, or it can be the physical ID of an existing EC2 instance.\",\n \"VolumeId\" : \"*The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone.\"\n }\n };\n\n ec2_vpc={\n \"Type\" : \"AWS::EC2::VPC\",\n \"Properties\" : {\n \"CidrBlock\" : \"*The CIDR block you want the VPC to cover. \",\n \"EnableDnsSupport\" : \"Boolean. Specifies whether DNS resolution is supported for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not. By default the value is set to true.\",\n \"EnableDnsHostnames\" : \"Boolean. Specifies whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not. You can only set EnableDnsHostnames to true if you also set the EnableDnsSupport attribute to true. By default, the value is set to false.\",\n \"InstanceTenancy\" : \"The allowed tenancy of instances launched into the VPC. Valid values: 'default' or 'dedicated'. \"\n }\n };\n\n ec2_vpccidrblock={\n \"Type\" : \"AWS::EC2::VPCCidrBlock\",\n \"Properties\" : {\n \"AmazonProvidedIpv6CidrBlock\" : \"Boolean. Whether to request an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You can't specify the range of IPv6 addresses or the size of the CIDR block.\",\n \"CidrBlock\" : \"An IPv4 CIDR block to associate with the VPC.\",\n \"VpcId\" : \"*vpc id\"\n }\n };\n\n ec2_vpcdhcpoptionsassociation= { \n \"Type\" : \"AWS::EC2::VPCDHCPOptionsAssociation\",\n \"Properties\" : {\n \"DhcpOptionsId\" : \"*The ID of the DHCP options you want to associate with the VPC. Specify default if you want the VPC to use no DHCP options.\",\n \"VpcId\" : \"*vpc id\"\n }\n };\n\n ec2_vpcendpoint={\n \"Type\" : \"AWS::EC2::VPCEndpoint\",\n \"Properties\" : {\n \"VpcId\" : \"*vpc id\",\n \"RouteTableIds\" : [\"List of string values. [Gateway endpoint] One or more route table IDs that are used by the VPC to reach the endpoint.\"],\n \"ServiceName\" : \"*The name of the service.\",\n \"PolicyDocument\" : {\"info\":\"[Gateway endpoint] A policy to attach to the endpoint that controls access to the service. The policy must be valid JSON. \"},\n \"VpcEndpointType\" : \"The type of endpoint. Valid values are Interface and Gateway.\",\n \"PrivateDnsEnabled\" : \"Boolean. [Interface endpoint] Indicates whether to associate a private hosted zone with the specified VPC.\",\n \"SubnetIds\" : [\"[Interface endpoint] The ID of one or more subnets in which to create an endpoint network interface.\"],\n \"SecurityGroupIds\" : [\"list of string values. [Interface endpoint] The ID of one or more security groups to associate with the endpoint network interface.\"]\n }\n };\n\n ec2_vpcendpointconnectionnotification={\n \"Type\" : \"AWS::EC2::VPCEndpointConnectionNotification\",\n \"Properties\" : {\n \"ConnectionEvents\" : [\"*List of string values. One or more endpoint events for which to receive notifications. Valid values are Accept, Connect, Delete, and Reject.\"],\n \"VPCEndpointId\" : \"The ID of the endpoint\",\n \"ServiceId\" : \"The ID of the endpoint service.\",\n \"ConnectionNotificationArn\" : \"*The ARN of the SNS topic for the notifications.\"\n }\n };\n\n ec2_vpcendpointservice={\n \"Type\" : \"AWS::EC2::VPCEndpointService\",\n \"Properties\" : {\n \"NetworkLoadBalancerArns\" : [\"list of string values. The Amazon Resource Names (ARNs) of one or more Network Load Balancers for your service.\"],\n \"AcceptanceRequired\" : \"Boolean. Indicate whether requests from service consumers to create an endpoint to your service must be accepted\"\n }\n };\n\n ec2_vpcendpointservicepermissions={\n \"Type\" : \"AWS::EC2::VPCEndpointServicePermissions\",\n \"Properties\" : {\n \"AllowedPrincipals\" : [\"The Amazon Resource Names (ARN) of one or more principals (IAM users, IAM roles, and AWS accounts). Permissions are granted to the principals in this list. To grant permissions to all principals, specify an asterisk. Permissions are revoked for principals not in this list. If the list is empty, then all permissions are revoked.\"],\n \"ServiceId\" : \"*The ID of the VPC endpoint service.\"\n }\n };\n\n ec2_vpcgatewayattachment= {\n \"Type\" : \"AWS::EC2::VPCGatewayAttachment\",\n \"Properties\" : {\n \"InternetGatewayId\" : \"**Id of the internet gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.\",\n \"VpcId\" : \"*The ID of the VPC to associate with this gateway.\",\n \"VpnGatewayId\" : \"**The ID of the virtual private network (VPN) gateway to attach to the VPC. You must specify either InternetGatewayId or VpnGatewayId, but not both.\"\n }\n };\n\n ec2_vpcpeeringconnection={\n \"Type\" : \"AWS::EC2::VPCPeeringConnection\",\n \"Properties\" : {\n \"PeerVpcId\" : \"*The ID of the VPC with which you are creating the peering connection.\",\n \"VpcId\" : \"*The ID of the VPC that is requesting a peering connection.\",\n \"PeerOwnerId\" : \"The AWS account ID of the owner of the VPC that you want to peer with.\",\n \"PeerRegion\" : \"The region code for the accepter VPC, if the accepter VPC is located in a region other than the region in which you make the request. The default is the region in which you make the request.\",\n \"PeerRoleArn\" : \"The Amazon Resource Name (ARN) of the VPC peer role for the peering connection in another AWS account.\"\n }\n };\n\n ec2_vpnconnection={\n \"Type\" : \"AWS::EC2::VPNConnection\",\n \"Properties\" : {\n \"Type\" : \"*The type of VPN connection this virtual private gateway supports.e.g. ipsec.1\",\n \"CustomerGatewayId\" : \"*The ID of the customer gateway. This can either be an embedded JSON object or a reference to a Gateway ID.\",\n \"StaticRoutesOnly\" : \"**Boolean. Conditional. If you are creating a VPN connection for a device that does not support Border Gateway Protocol (BGP), you must specify true.\",\n \"VpnGatewayId\" : \"*The ID of the virtual private gateway. This can either be an embedded JSON object or a reference to a Gateway ID.\",\n \"VpnTunnelOptionsSpecifications\" : [\"Type: List of VpnTunnelOptionsSpecification. The tunnel options for the VPN connection. Duplicates not allowed.##\"]\n }\n };\n ec2_vpnconnectionroute={\n \"Type\" : \"AWS::EC2::VPNConnectionRoute\",\n \"Properties\" : {\n \"DestinationCidrBlock\" : \"*The CIDR block that is associated with the local subnet of the customer network.\",\n \"VpnConnectionId\" : \"*\"\n }\n };\n\n ec2_vpngateway= {\n \"Type\" : \"AWS::EC2::VPNGateway\",\n \"Properties\" : {\n \"AmazonSideAsn\" : \"Long. The private Autonomous System Number (ASN) for the Amazon side of a BGP session.\",\n \"Type\" : \"*The type of VPN connection this virtual private gateway supports. The only valid value is 'ipsec.1'.\"\n }\n };\n\n ec2_vpngatewayroutepropagation= {\n \"Type\" : \"AWS::EC2::VPNGatewayRoutePropagation\",\n \"Properties\" : {\n \"RouteTableIds\" : [\"*List of string values of routetable ids. A list of routing table IDs that are associated with a VPC. The routing tables must be associated with the same VPC that the virtual private gateway is attached to.\"],\n \"VpnGatewayId\" : \"*The ID of the virtual private gateway that is attached to a VPC. The virtual private gateway must be attached to the same VPC that the routing tables are associated with.\"\n }\n };\n //Ec2 ends...\n\n //Route53 starts...\n route53_healthcheck={\n \"Type\" : \"AWS::Route53::HealthCheck\",\n \"Properties\" : {\n \"HealthCheckConfig\" : {\"info\":\"*Type: Route 53 HealthCheck HealthCheckConfig##\"},\n \"HealthCheckTags\" : [\"Type: A list of Amazon Route 53 HealthCheck HealthCheckTags##\"]\n }\n};\n route53_hostedzone={\n \"Type\" : \"AWS::Route53::HostedZone\",\n \"Properties\" : {\n \"HostedZoneConfig\" : {\"info\":\"Type: Route 53 HostedZoneConfig Property##\"},\n \"HostedZoneTags\" : [\"Type: List of Amazon Route 53 HostedZoneTags##\"],\n \"Name\" : \"*The name of the domain. For resource record types that include a domain name, specify a fully qualified domain name.\",\n \"QueryLoggingConfig\" : {\"info\":\"Type: Route 53 QueryLoggingConfig##\"},\n \"VPCs\" : [\"Type: List of Route 53 HostedZoneVPCs. One or more VPCs that you want to associate with this hosted zone. When you specify this property, AWS CloudFormation creates a private hosted zone.##\"]\n }\n}\n route53_recordset={\n \"Type\" : \"AWS::Route53::RecordSet\",\n \"Properties\" : {\n \"AliasTarget\" : {\"info\":\"**Type: AliasTarget. Required if you are creating an alias resource record set. If you specify this property, do not specify the TTL property. The alias uses a TTL value from the alias target record.##\"},\n \"Comment\" : \"Any comments that you want to include about the change batch. Important: If the record set is part of a record set group, this property isn't valid. Don't specify this property.\",\n \"Failover\" : \"Designates the record set as a PRIMARY or SECONDARY failover record set. When you have more than one resource performing the same function, you can configure Route 53 to check the health of your resources and use only health resources to respond to DNS queries. You cannot create nonfailover resource record sets that have the same Name and Type property values as failover resource record sets. If you specify this property, you must specify the SetIdentifier property.\",\n \"GeoLocation\" : {\"info\":\"Type: Route 53 Record Set GeoLocation Property. Describes how Route 53 responds to DNS queries based on the geographic origin of the query. This property is not compatible with the Region property.##\"},\n \"HealthCheckId\" : \"The health check ID that you want to apply to this record set. Route 53 returns this resource record set in response to a DNS query only while record set is healthy.\",\n \"HostedZoneId\" : \"**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both. If this record set is part of a record set group, do not specify this property.\",\n \"HostedZoneName\" : \"**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both. If this record set is part of a record set group, do not specify this property. The name of the domain for the hosted zone where you want to add the record set. When you create a stack using an AWS::Route53::RecordSet that specifies HostedZoneName, AWS CloudFormation attempts to find a hosted zone whose name matches the HostedZoneName. If AWS CloudFormation cannot find a hosted zone with a matching domain name, or if there is more than one hosted zone with the specified domain name, AWS CloudFormation will not create the stack. If you have multiple hosted zones with the same domain name, you must explicitly specify the hosted zone using HostedZoneId.\",\n \"MultiValueAnswer\" : \"Boolean. To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. Note the following: If you associate a health check with a multivalue answer resource record set, Route 53 responds to DNS queries with the corresponding IP address only when the health check is healthy. If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be healthy. Amazon Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records, Route 53 responds to all DNS queries with all the healthy records. If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different combinations of healthy records. When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records. If a resource becomes unavailable after a resolver caches a response, client software typically tries another of the IP addresses in the response.\",\n \"Name\" : \"*The name of the domain. You must specify a fully qualified domain name that ends with a period as the last label indication. If you omit the final period, Route 53 adds it.\",\n \"Region\" : \"Latency resource record sets only: The Amazon EC2 region where the resource that is specified in this resource record set resides. The resource typically is an AWS resource, for example, Amazon EC2 instance or an Elastic Load Balancing load balancer, and is referred to by an IP address or a DNS domain name, depending on the record type. When Route 53 receives a DNS query for a domain name and type for which you have created latency resource record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user and the associated Amazon EC2 region. Route 53 then returns the value that is associated with the selected resource record set. The following restrictions must be followed: You can only specify one resource record per latency resource record set. You can only create one latency resource record set for each Amazon EC2 region. You are not required to create latency resource record sets for all Amazon EC2 regions. Route 53 will choose the region with the best latency from among the regions for which you create latency resource record sets. You cannot create both weighted and latency resource record sets that have the same values for the Name and Type elements. This property is not compatible with the GeoLocation property.\",\n \"ResourceRecords\" : [\"**Type: List of String values. If you don't specify the AliasTarget property, you must specify this property. If you are creating an alias resource record set, do not specify this property.\"],\n \"SetIdentifier\" : \"**Required if you are creating a weighted, latency, failover, or geolocation resource record set. A unique identifier that differentiates among multiple resource record sets that have the same combination of DNS name and type.\",\n \"TTL\" : \"**The resource record cache time to live (TTL), in seconds. If you don't specify the AliasTarget property, you must specify this property. If you are creating an alias resource record set, do not specify this property. If you specify this property, do not specify the AliasTarget property.\",\n \"Type\" : \"* Valid values for basic resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | NS | PTR | SOA | SPF | SRV | TXT. Values for weighted, latency, geolocation, and failover resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | PTR | SPF | SRV | TXT. Valid values for multivalue answer resource record sets: A | AAAA | MX | NAPTR | PTR | SPF | SRV | TXT\",\n \"Weight\" : \"**Type: Number. Weight expects integer values. Weighted resource record sets only: Among resource record sets that have the same combination of DNS name and type, a value that determines what portion of traffic for the current resource record set is routed to the associated location.\"\n }\n}\n route53_recordsetgroup={\n \"Type\" : \"AWS::Route53::RecordSetGroup\",\n \"Properties\" : {\n \"Comment\" : \"String\",\n \"HostedZoneId\" : \"**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both.\",\n \"HostedZoneName\" : \"**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both. When you create a stack using an AWS::Route53::RecordSet that specifies HostedZoneName, AWS CloudFormation attempts to find a hosted zone whose name matches the HostedZoneName. If AWS CloudFormation cannot find a hosted zone with a matching domain name, or if there is more than one hosted zone with the specified domain name, AWS CloudFormation will not create the stack.\",\n \"RecordSets\" : [\"*Type:: List of AWS::Route53::RecordSet objects, The maximum number of records is 1,000.\"]\n }\n}\n\n r53_resolver_resolverendpoint={\n \"Type\" : \"AWS::Route53Resolver::ResolverEndpoint\",\n \"Properties\" : {\n \"Direction\" : \"*Valid values:INBOUND | OUTBOUND. Indicates whether the resolver endpoint allows inbound or outbound DNS queries.\",\n \"IpAddresses\" : [\"*Type: List of IpAddressRequest property types. The subnets and IP addresses in your VPC that you want DNS queries to pass through on the way from your VPCs to your network (for outbound endpoints) or on the way from your network to your VPCs (for inbound resolver endpoints).##\"],\n \"Name\" : \"A friendly name that lets you easily find a configuration in the Resolver dashboard in the Route 53 console.\",\n \"SecurityGroupIds\" : [\"*Type: List of String values. The ID of one or more security groups that you want to use to control access to this VPC. The security group that you specify must include one or more inbound rules (for inbound resolver endpoints) or outbound rules (for outbound resolver endpoints).\"]\n }\n};\n\n r53_resolver_resolverrule={\n \"Type\" : \"AWS::Route53Resolver::ResolverRule\",\n \"Properties\" : {\n \"DomainName\" : \"*DNS queries for this domain name are forwarded to the IP addresses that are specified in TargetIps. If a query matches multiple resolver rules (example.com and www.example.com), the query is routed using the resolver rule that contains the most specific domain name (www.example.com).\",\n \"Name\" : \"A friendly name that lets you easily find a rule in the Resolver dashboard in the Route 53 console.\",\n \"ResolverEndpointId\" : \"The ID of the outbound endpoint that the rule is associated with.\",\n \"RuleType\" : \"*When you want to forward DNS queries for specified domain name to resolvers on your network, specify FORWARD. When you have a forwarding rule to forward DNS queries for a domain to your network and you want Resolver to process queries for a subdomain of that domain, choose SYSTEM. For example, to forward DNS queries for example.com to resolvers on your network, you create a rule and specify FORWARD for RuleType. To then have Resolver process queries for apex.example.com, you create a rule and specify SYSTEM for RuleType.\",\n \"TargetIps\" : [\"Type: List of TargetAddress property types. When a DNS query matches the name that you specify in DomainName, the outbound endpoint forwards the query to the IP addresses that you specify here, typically the IP addresses for DNS resolvers on your network. Specify IPv4 addresses.##\"]\n }\n};\n\n r53_resolver_resolverruleassociation={\n \"Type\" : \"AWS::Route53Resolver::ResolverRuleAssociation\",\n \"Properties\" : {\n \"Name\" : \"The name of an association between a resolver rule and a VPC.\",\n \"ResolverRuleId\" : \"*The ID of the resolver rule that you associated with the VPC that is specified by VPCId.\",\n \"VPCId\" : \"*The ID of the VPC that you associated the resolver rule with.\"\n }\n}\n//Route53 ends...\n\n//IAM starts...\niam_accesskey=\n{\n \"Type\": \"AWS::IAM::AccessKey\",\n \"Properties\": {\n \"Serial\": \"Integer. This value is specific to AWS CloudFormation and can only be incremented. Incrementing this value notifies AWS CloudFormation that you want to rotate your access key. When you update your stack, AWS CloudFormation will replace the existing access key with a new key.\",\n \"Status\": \"Valid values: Active or Inactive. The status of the access key. By default, AWS CloudFormation sets this property value to Active.\",\n \"UserName\": \"*The name of the user that the new key will belong to.\"\n }\n}; \niam_group={\n \"Type\": \"AWS::IAM::Group\",\n \"Properties\": {\n \"GroupName\": \"A name for the IAM group. For valid values, see the GroupName parameter for the CreateGroup action in the IAM API Reference. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the group name. Pattern: [\\w+=,.@-]+ . Length Constraints: Minimum length of 1. Maximum length of 128.\",\n \"ManagedPolicyArns\": [\"Type: List of String values. One or more managed policy ARNs to attach to this group.\" ],\n \"Path\": \"String\",\n \"Policies\": [\"The policies to associate with this group. For information about policies, see Overview of IAM Policies in the IAM User Guide.\"]\n }\n}; \niam_instanceprofile=\n{\n \"Type\": \"AWS::IAM::InstanceProfile\",\n \"Properties\": {\n \"Path\": \"By default, AWS CloudFormation specifies / for the path.\",\n \"Roles\": [ \"Type: List of String values. The name of an existing IAM role to associate with this instance profile. Currently, you can assign a maximum of one role to an instance profile. \"],\n \"InstanceProfileName\": \"The name of the instance profile that you want to create. This parameter allows (per its regex pattern) a string consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: = , . @ -.\"\n }\n} \niam_managedpolicy={\n \"Type\": \"AWS::IAM::ManagedPolicy\",\n \"Properties\": {\n \"Description\" : \"String\",\n \"Groups\" : [\"Type: List of String values\" ],\n \"Path\" : \"The path for the IAM policy. By default, the path is /\",\n \"PolicyDocument\" : {\"info\":\"Policies that define the permissions for this managed policy. NOTE: this policy is not available in 'Property Dealer' utility. Please use aws policy generate to do the same\"},\n \"Roles\" : [\"If a policy has a Ref to a role and if a resource (such as AWS::ECS::Service) also has a Ref to the same role, add a DependsOn attribute to the resource so that the resource depends on the policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an AWS::ECS::Service resource, the DependsOn attribute ensures that the AWS::ECS::Service resource can complete its deletion before its role's policy is deleted.\"],\n \"Users\" : [\"Type: List of String values\"],\n \"ManagedPolicyName\" : \"A custom, friendly name for your IAM managed policy. For valid values, see the PolicyName parameter of the CreatePolicy action in the IAM API Reference.\"\n }\n}\niam_policy={\n \"Type\" : \"AWS::IAM::Policy\",\n \"Properties\" : { \n \"Groups\" : [\"**You must specify at least one of the following properties: Groups, Roles, or Users.\"],\n \"PolicyDocument\" :{\"info\":\"*A policy document that contains permissions to add to the specified users or groups. NOTE: this policy is not available in 'Property Dealer' utility. Please use aws policy generate to do the same\"},\n \"PolicyName\" : \"*The name of the policy. If you specify multiple policies for an entity, specify unique names. For example, if you specify a list of policies for an IAM role, each policy must have a unique name.\",\n \"Roles\" : [\"**Type: List of String values. If a policy has a Ref to a role and if a resource (such as AWS::ECS::Service) also has a Ref to the same role, add a DependsOn attribute to the resource so that the resource depends on the policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an AWS::ECS::Service resource, the DependsOn attribute ensures that the AWS::ECS::Service resource can complete its deletion before its role's policy is deleted.\"],\n \"Users\" : [\"**Type: List of String values. You must specify at least one of the following properties: Groups, Roles, or Users. \"]\n }\n}\niam_role={\n \"Type\": \"AWS::IAM::Role\",\n \"Properties\": {\n \"AssumeRolePolicyDocument\": {\"info\":\"*Type: A JSON policy document.The trust policy that is associated with this role. You can associate only one assume role policy with a role.\" },\n \"ManagedPolicyArns\": [\"Type: List of String values. One or more managed policy ARNs to attach to this role.\"],\n \"MaxSessionDuration\": \"The maximum session duration (in seconds) for the specified role. Anyone who uses the AWS CLI or API to assume the role can specify the duration using the optional DurationSeconds API parameter or duration-seconds CLI parameter. Minimum value of 3600. Maximum value of 43200.\",\n \"Path\": \"The path associated with this role. For information about IAM paths, see Friendly Names and Paths in IAM User Guide.\",\n \"PermissionsBoundary\": \"The ARN of the policy that is used to set the permissions boundary for the role. Minimum length of 20. Maximum length of 2048.\",\n \"Policies\": [\"Type: List of IAM Policies.## \"],\n \"RoleName\": \"A name for the IAM role. Warning: Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple regions. To prevent this, we recommend using Fn::Join and AWS::Region to create a region-specific name\"\n }\n}\niam_servicelinkedrole={\n \"Type\" : \"AWS::IAM::ServiceLinkedRole\",\n \"Properties\" : {\n \"AWSServiceName\" : \"*The service principal for the AWS service to which this role is attached. You use a string similar to a URL but without the http:// in front. For example: elasticbeanstalk.amazonaws.com.\",\n \"CustomSuffix\" : \"A string that you provide, which is combined with the service-provided prefix to form the complete role name. If you make multiple requests for the same service, then you must supply a different CustomSuffix for each request. Otherwise the request fails with a duplicate role name error. For example, you could add -1 or -debug to the suffix.\",\n \"Description\" : \"The description of the role.\"\n }\n}\niam_user={\n \"Type\": \"AWS::IAM::User\",\n \"Properties\": {\n \"Groups\": [\"Type: List of String values\"],\n \"LoginProfile\": {\"info\":\"Type: IAM User LoginProfile##\"},\n \"ManagedPolicyArns\": [\"One or more managed policy ARNs to attach to this user.\"],\n \"Path\": \"The path for the user name.\",\n \"PermissionsBoundary\": \"The ARN of the policy that is used to set the permissions boundary for the user. Minimum length of 20. Maximum length of 2048.\", \n \"Policies\": [\"Type: List of IAM Policies##\"],\n \"UserName\": \"String. Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple regions. To prevent this, we recommend using Fn::Join and AWS::Region to create a region-specific name\"\n }\n}\niam_usertogroupaddition=\n{\n \"Type\": \"AWS::IAM::UserToGroupAddition\",\n \"Properties\": {\n \"GroupName\": \"*The name of group to add users to.\",\n \"Users\": [\"*Type: List of users\"]\n }\n}\n\n//ec2 autoscaling starts\nag_agGroup=\n{\n \"Type\" : \"AWS::AutoScaling::AutoScalingGroup\",\n \"Properties\" : {\n \"AutoScalingGroupName\" : \"String\",\n \"AvailabilityZones\" : [\"**list of string values. If you don't specify the VPCZoneIdentifier property, you must specify this property.\"],\n \"Cooldown\" : \"The number of seconds after a scaling activity is completed before any further scaling activities can start.\",\n \"DesiredCapacity\" : \"If SpotPrice is not set in the AWS::AutoScaling::LaunchConfiguration for this Auto Scaling group, then Auto Scaling will begin to bring instances online based on DesiredCapacity. CloudFormation will not mark the Auto Scaling group as successful (by setting its status to CREATE_COMPLETE) until the desired capacity is reached. If SpotPrice is set, then DesiredCapacity will not be used as a criteria for success, since instances will only be started when the spot price has been matched. After the spot price has been matched, however, Amazon EC2 Auto Scaling uses DesiredCapacity as the target capacity for the group.\",\n \"HealthCheckGracePeriod\" : \"The length of time in seconds after a new EC2 instance comes into service that Amazon EC2 Auto Scaling starts checking its health.\",\n \"HealthCheckType\" : \"The service you want the health status from, Amazon EC2 or Elastic Load Balancer. Valid values are EC2 or ELB.\",\n \"InstanceId\" : \"**You must specify one of the following: InstanceId, LaunchConfigurationName, LaunchTemplate, or MixedInstancesPolicy. The ID of the Amazon EC2 instance you want to use to create the Auto Scaling group. Use this property if you want to create an Auto Scaling group that uses an existing Amazon EC2 instance instead of a launch configuration. When you use an Amazon EC2 instance to create an Auto Scaling group, a new launch configuration is first created and then associated with the Auto Scaling group. The new launch configuration derives all its properties from the instance, with the exception of BlockDeviceMapping and AssociatePublicIpAddress.\",\n \"LaunchConfigurationName\" : \"**You must specify one of the following: InstanceId, LaunchConfigurationName, LaunchTemplate, or MixedInstancesPolicy. If this resource has a public IP address and is also in a VPC that is defined in the same template, you must use the DependsOn attribute to declare a dependency on the VPC-gateway attachment. For more information. When you update the LaunchConfigurationName, existing Amazon EC2 instances continue to run with the configuration that they were originally launched with. To update existing instances, specify an update policy attribute for this Auto Scaling group. \",\n \"LaunchTemplate\" : {\"info\":\"**Type: LaunchTemplateSpecification. You must specify one of the following: InstanceId, LaunchConfigurationName, LaunchTemplate, or MixedInstancesPolicy.##\"},\n \"LifecycleHookSpecificationList\" : [\"List of LifecycleHookSpecification. The lifecycle hooks for the group, which specify actions to perform when Amazon EC2 Auto Scaling launches or terminates instances. ##\"],\n \"LoadBalancerNames\" : [ \"list of string values. A list of Classic Load Balancers associated with this Auto Scaling group. To specify Application Load Balancers or Network Load Balancers, use TargetGroupARNs instead.\"],\n \"MaxSize\" : \"*The maximum size of the Auto Scaling group.\",\n \"MetricsCollection\" : [ \"A list of Amazon EC2 Auto Scaling AutoScalingGroup MetricsCollection##\"],\n \"MinSize\" : \"*String\",\n \"MixedInstancesPolicy\" : {\"info\":\"**Type: MixedInstancesPolicy. You must specify one of the following: InstanceId, LaunchConfigurationName, LaunchTemplate, or MixedInstancesPolicy.\"},\n \"NotificationConfigurations\" : [\"Type: List of Amazon EC2 Auto Scaling AutoScalingGroup NotificationConfiguration. An embedded property that configures an Auto Scaling group to send notifications when specified events take place.##\"],\n \"PlacementGroup\" : \"String. The name of an existing cluster placement group into which you want to launch your instances. A placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a placement group.\",\n \"ServiceLinkedRoleARN\" : \"String. The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other AWS services on your behalf. By default, Auto Scaling uses a service-linked role named AWSServiceRoleForAutoScaling, which it creates if it does not exist.\",\n \"TargetGroupARNs\" : [\"list of string values. A list of Amazon Resource Names (ARN) of target groups to associate with the Auto Scaling group.\"],\n \"TerminationPolicies\" : [\"list of string values. A policy or a list of policies that are used to select the instances to terminate. The policies are executed in the order that you list them.\"],\n \"VPCZoneIdentifier\" : [\"**If you don't specify the AvailabilityZones property, you must specify this property. A list of subnet identifiers of Amazon Virtual Private Cloud (Amazon VPCs).\"],\n \"Tags\":[\"Type: List of Amazon EC2 Auto Scaling AutoScalingGroup TagProperty##\"],\n \"CreationPolicy\":{\"info\":\"Associate the CreationPolicy attribute with a resource to prevent its status from reaching create complete until AWS CloudFormation receives a specified number of success signals or the timeout period is exceeded.Use the CreationPolicy attribute when you want to wait on resource configuration actions before stack creation proceeds. For example, if you install and configure software applications on an EC2 instance, you might want those applications to be running before proceeding. In such cases, you can add a CreationPolicy attribute to the instance, and then send a success signal to the instance after the applications are installed and configured.##\"},\n \"UpdatePolicy\":{\"info\":\"For AWS::AutoScaling::AutoScalingGroup resources, AWS CloudFormation invokes one of three update policies depending on the type of change you make or whether a scheduled action is associated with the Auto Scaling group. The AutoScalingReplacingUpdate and AutoScalingRollingUpdate policies apply only when you do one or more of the following: 1. Change the Auto Scaling group's AWS::AutoScaling::LaunchConfiguration. 2. Change the Auto Scaling group's VPCZoneIdentifier property 3. Change the Auto Scaling group's LaunchTemplate property 4. Update an Auto Scaling group that contains instances that don't match the current LaunchConfiguration. If both the AutoScalingReplacingUpdate and AutoScalingRollingUpdate policies are specified, setting the WillReplace property to true gives AutoScalingReplacingUpdate precedence. The AutoScalingScheduledAction policy applies when you update a stack that includes an Auto Scaling group with an associated scheduled action. ##\"}\n }\n} \n\nag_launchConfiguration=\n{\n \"Type\" : \"AWS::AutoScaling::LaunchConfiguration\",\n \"Properties\" : {\n \"AssociatePublicIpAddress\" : \"Boolean. For Amazon EC2 instances in a VPC, indicates whether instances in the Auto Scaling group receive public IP addresses. If you specify true, each instance in the Auto Scaling group receives a unique public IP address.\",\n \"BlockDeviceMappings\" : [\"Type: A list of BlockDeviceMapping.##\"],\n \"ClassicLinkVPCId\" : \"String. The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. You can specify this property only for EC2-Classic instances. \",\n \"ClassicLinkVPCSecurityGroups\" : [\"**list of string values. If you specified the ClassicLinkVPCId property, you must specify this property.\"],\n \"EbsOptimized\" : \"Boolean. Specifies whether the launch configuration is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. By default false.\",\n \"IamInstanceProfile\" : \"String. Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.\",\n \"ImageId\" : \"*String. Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.\",\n \"InstanceId\" : \"String. The ID of the Amazon EC2 instance you want to use to create the launch configuration. Use this property if you want the launch configuration to use settings from an existing Amazon EC2 instance.\",\n \"InstanceMonitoring\" : \"Boolean. Indicates whether detailed instance monitoring is enabled for the Auto Scaling group. By default, this property is set to true (enabled).\",\n \"InstanceType\" : \"*String. Specifies the instance type of the EC2 instance.\",\n \"KernelId\" : \"Provides the ID of the kernel associated with the EC2 AMI.\",\n \"KeyName\" : \"String. Provides the name of the EC2 key pair.\",\n \"LaunchConfigurationName\" : \"String. The name of the launch configuration. This name must be unique within the scope of your AWS account.\",\n \"PlacementTenancy\" : \"String. The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware and can only be launched in a VPC.\",\n \"RamDiskId\" : \"The ID of the RAM disk to select. Some kernels require additional drivers at launch. Check the kernel requirements for information about whether you need to specify a RAM disk. To find kernel requirements, refer to the AWS Resource Center and search for the kernel ID.\",\n \"SecurityGroups\" : [\"Type: A list of security groups. The list can contain the IDs of existing EC2 security groups or references to AWS::EC2::SecurityGroup resources created in the template.\"],\n \"SpotPrice\" : \"String. The spot price for this Auto Scaling group. If a spot price is set, then the Auto Scaling group will launch when the current spot price is less than the amount specified in the template. When you have specified a spot price for an Auto Scaling group, the group will only launch when the spot price has been met, regardless of the setting in the Auto Scaling group's DesiredCapacity.\",\n \"UserData\" : \"The user data available to the launched EC2 instances.\"\n }\n} \n\nag_lifecyclehook={\n \"Type\" : \"AWS::AutoScaling::LifecycleHook\",\n \"Properties\" : {\n \"AutoScalingGroupName\" : \"*String\",\n \"DefaultResult\" : \"The action the Auto Scaling group takes when the lifecycle hook timeout elapses or if an unexpected failure occurs. Valid values are CONTINUE and ABANDON (default).\",\n \"HeartbeatTimeout\" : \"The amount of time (in seconds) that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Amazon EC2 Auto Scaling performs the action that you specified in the DefaultResult property.\",\n \"LifecycleHookName\" : \"String\",\n \"LifecycleTransition\" : \"*String. The state of the Amazon EC2 instance to which you want to attach the lifecycle hook. autoscaling:EC2_INSTANCE_LAUNCHING| autoscaling:EC2_INSTANCE_TERMINATING. This parameter is required for new lifecycle hooks, but optional when updating existing hooks. \",\n \"NotificationMetadata\" : \"String. Additional information that you want to include when Amazon EC2 Auto Scaling sends a message to the notification target.\",\n \"NotificationTargetARN\" : \"String. The Amazon resource name (ARN) of the notification target that Amazon EC2 Auto Scaling uses to notify you when an instance is in the transition state for the lifecycle hook. You can specify an Amazon SQS queue or an Amazon SNS topic. The notification message includes the following information: lifecycle action token, user account ID, Auto Scaling group name, lifecycle hook name, instance ID, lifecycle transition, and notification metadata.\",\n \"RoleARN\" : \"String. The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target. The role requires permissions to Amazon SNS and Amazon SQS.\"\n }\n}\n\nag_scalingpolicy=\n{\n \"Type\" : \"AWS::AutoScaling::ScalingPolicy\",\n \"Properties\" : {\n \"AdjustmentType\" : \"String. Specifies whether the ScalingAdjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.\",\n \"AutoScalingGroupName\" : \"*String. The name or Amazon Resource Name (ARN) of the Auto Scaling group that you want to attach the policy to.\",\n \"Cooldown\" : \"String. The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. Do not specify this property if you are using the StepScaling policy type.\",\n \"EstimatedInstanceWarmup\" : \"Integer. The estimated time, in seconds, until a newly launched instance can send metrics to CloudWatch. By default, Amazon EC2 Auto Scaling uses the cooldown period, as specified in the Cooldown property. Do not specify this property if you are using the SimpleScaling policy type.\",\n \"MetricAggregationType\" : \"String. The aggregation type for the CloudWatch metrics. You can specify Minimum, Maximum, or Average. By default, AWS CloudFormation specifies Average. Do not specify this property if you are using the SimpleScaling policy type.\",\n \"MinAdjustmentMagnitude\" : \"Integer. For the PercentChangeInCapacity adjustment type, the minimum number of instances to scale. The scaling policy changes the desired capacity of the Auto Scaling group by a minimum of this many instances. This property replaces the MinAdjustmentStep property.\",\n \"PolicyType\" : \"String. An Auto Scaling policy type. You can specify SimpleScaling, StepScaling, or TargetTrackingScaling. By default, AWS CloudFormation specifies SimpleScaling. \",\n \"ScalingAdjustment\" : \"**Integer. This property is required if the policy type is SimpleScaling. This property is not supported with any other policy type. The number of instances by which to scale. The AdjustmentType property determines if AWS CloudFormation interprets this number as an absolute number (when the ExactCapacity value is specified), increase or decrease capacity by a specified number (when the ChangeInCapacity value is specified), or increase or decrease capacity as a percentage of the existing Auto Scaling group size (when the PercentChangeInCapacity value is specified). A positive value adds to the current capacity and a negative value subtracts from the current capacity. For exact capacity, you must specify a positive value.\",\n \"StepAdjustments\" : [\"**Type: List of Amazon EC2 Auto Scaling ScalingPolicy StepAdjustments. This property is required if the policy type is StepScaling. This property is not supported with any other policy type.##\"],\n \"TargetTrackingConfiguration\" : {\"info\":\"**Type: Amazon EC2 Auto Scaling ScalingPolicy TargetTrackingConfiguration This property is required if the policy type is TargetTrackingScaling. This property is not supported with any other policy type. ##\"}\n }\n} \n\nag_scheduledAction= {\n \"Type\" : \"AWS::AutoScaling::ScheduledAction\",\n \"Properties\" : {\n \"AutoScalingGroupName\" : \"*String\",\n \"DesiredCapacity\" : \"**Integer. The number of Amazon EC2 instances that should be running in the Auto Scaling group. At least one of MaxSize, MinSize, or DesiredCapacity must be specified.\",\n \"EndTime\" : \"The time in UTC for this schedule to end. For example, 2010-06-01T00:00:00Z\",\n \"MaxSize\" : \"**Integer. The maximum number of Amazon EC2 instances in the Auto Scaling group. At least one of MaxSize, MinSize, or DesiredCapacity must be specified.\",\n \"MinSize\" : \"**Integer. The minimum number of Amazon EC2 instances in the Auto Scaling group. At least one of MaxSize, MinSize, or DesiredCapacity must be specified.\",\n \"Recurrence\" : \"String. Specifying the StartTime and EndTime properties with Recurrence property forms the start and stop boundaries of the recurring action.\",\n \"StartTime\" : \"The time in UTC for this schedule to start. For example, 2010-06-01T00:00:00Z.\"\n }\n}\n\nelbv2_listener={\n \"Type\" : \"AWS::ElasticLoadBalancingV2::Listener\",\n \"Properties\" : {\n \"Certificates\" : [\"**Type: List of Elastic Load Balancing V2 Certificate##\"],\n \"DefaultActions\" : [\"*Type: List of Elastic Load Balancing V2 Action##\"],\n \"LoadBalancerArn\" : \"*String\",\n \"Port\" : \"*Integer. Valid Range: Minimum value of 1. Maximum value of 65535.\",\n \"Protocol\" : \"*String. Valid Values: HTTP | HTTPS | TCP | TLS\",\n \"SslPolicy\" : \"String. [HTTPS and TLS listeners] The security policy that defines the ciphers and protocols that the listener supports. The default is the current predefined security policy.\"\n }\n}\n\nelbv2_listenercertificate={\n \"Type\" : \"AWS::ElasticLoadBalancingV2::ListenerCertificate\",\n \"Properties\" : {\n \"Certificates\" : [\"* Type: List of Certificate##\"],\n \"ListenerArn\" : \"*String. The Amazon Resource Name (ARN) of the listener.\"\n }\n};\nelbv2_listenerrule={\n \"Type\" : \"AWS::ElasticLoadBalancingV2::ListenerRule\",\n \"Properties\" : {\n \"Actions\" : [ \"*Type: List of Elastic Load Balancing V2 Actions##\" ],\n \"Conditions\" : [\"*Type: List of Elastic Load Balancing V2 Conditions##\"],\n \"ListenerArn\" : \"*String. The Amazon Resource Name (ARN) of the listener.\",\n \"Priority\" : \"*Integer. The priority for the rule. Elastic Load Balancing evaluates rules in priority order, from the lowest value to the highest value. If a request satisfies a rule, Elastic Load Balancing ignores all subsequent rules. Valid Range: Minimum value of 1. Maximum value of 50000.\"\n }\n};\nelbv2_loadbalancer={\n \"Type\" : \"AWS::ElasticLoadBalancingV2::LoadBalancer\",\n \"Properties\" : { \n \"IpAddressType\" : \"String. [Application Load Balancers] The type of IP addresses that are used by the load balancer's subnets, such as ipv4 (for IPv4 addresses) or dualstack (for IPv4 and IPv6 addresses).The default value is ipv4. If Scheme is internal, then IpAddressType must be ipv4. Valid Values: ipv4 | dualstack \",\n \"LoadBalancerAttributes\" : [\"Type: A list of Elastic Load Balancing V2 LoadBalancerAttributes##.\"],\n \"Name\" : \"String. A name for the load balancer. This name must be unique within your AWS account and can have a maximum of 32 alphanumeric characters and hyphens. A name can't begin or end with a hyphen. \",\n \"Scheme\" : \"String. Specifies whether the load balancer is internal or Internet-facing. Valid values are internet-facing and internal. The default is internet-facing. The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the Internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can only route requests from clients with access to the VPC for the load balancer. \",\n \"SecurityGroups\" : [\"Type: List of String values. [Application Load Balancers] The IDs of the security groups to assign to the load balancer.\"],\n \"SubnetMappings\" : [\"Type: List of Elastic Load Balancing V2 SubnetMapping. The subnets to attach to the load balancer, specified as a list of SubnetMapping property types. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify your own Elastic IP addresses. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet. ##\"],\n \"Subnets\" : [\"Type: List of String values. The subnets to attach to the load balancer, specified as a list of subnet IDs. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Application Load Balancers] You must specify subnets from at least two Availability Zones.\"],\n \"Type\" : \"String. The type of load balancer to create. Valid values are application and network. The default is application. \"\n }\n};\nelbv2_targetgroup={\n \"Type\" : \"AWS::ElasticLoadBalancingV2::TargetGroup\",\n \"Properties\" : {\n \"HealthCheckIntervalSeconds\" : \"Integer. The approximate number of seconds between health checks for an individual target. Valid Range: Minimum value of 5. Maximum value of 300.\",\n \"HealthCheckPath\" : \"[HTTP/HTTPS health checks] The ping path destination where Elastic Load Balancing sends health check requests. The default is /. \",\n \"HealthCheckPort\" : \"String. The port that the load balancer uses when performing health checks on the targets. The default is traffic-port, which is the port on which each target receives traffic from the load balancer. \",\n \"HealthCheckProtocol\" : \"String. Valid Values: HTTP | HTTPS | TCP | TLS. The protocol the load balancer uses when performing health checks on targets. For Application Load Balancers, the default is HTTP. For Network Load Balancers, the default is TCP. The TCP protocol is supported for health checks only if the protocol of the target group is TCP or TLS. The TLS protocol is not supported for health checks. \",\n \"HealthCheckTimeoutSeconds\" : \"Integer. The number of seconds to wait for a response before considering that a health check has failed. For Application Load Balancers, the range is 2–60 seconds and the default is 5 seconds. For Network Load Balancers, this value is 10 seconds for TCP and HTTPS health checks and 6 seconds for HTTP health checks. \",\n \"HealthyThresholdCount\" : \"Integer. The number of consecutive successful health checks that are required before an unhealthy target is considered healthy. \",\n \"Matcher\" : {\"info\": \" Type: Elastic Load Balancing V2 Matcher. [HTTP/HTTPS health checks] The HTTP codes that a healthy target uses when responding to a health check. ##\"},\n \"Name\" : \"String. This name must be unique per account, per region.\",\n \"Port\" : \"*Integer. The port on which the targets receive traffic.\",\n \"Protocol\" : \"*String. The protocol to use for routing traffic to the targets.\",\n \"TargetGroupAttributes\" : [\"Type: List of Elastic Load Balancing V2 TargetGroupAttributes ##\"],\n \"Targets\" : [\"Type: List of Elastic Load Balancing V2 TargetDescription##\"],\n \"TargetType\" : \"String. The type of targets that you must specify when registering targets with this target group. \",\n \"UnhealthyThresholdCount\" : \"Integer. The number of consecutive failed health checks that are required before a target is considered unhealthy.\",\n \"VpcId\" : \"String\"\n }\n};\n\n //certificate manager\n acm_certificate={\n \"Type\" : \"AWS::CertificateManager::Certificate\",\n \"Properties\" : {\n \"DomainName\" : \"*String. Fully qualified domain name (FQDN), such as www.example.com, of the site that you want to secure with the ACM certificate. To protect several sites in the same domain, use an asterisk (*) to specify a wildcard. For example, *.example.com protects www.example.com, site.example.com, and images.example.com. \",\n \"DomainValidationOptions\" : [\"Type: List of AWS Certificate Manager Certificate DomainValidationOption. ##\" ],\n \"SubjectAlternativeNames\" : [\"Type: List of String values. FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, you can add www.example.net to a certificate for the www.example.com domain name so that users can reach your site by using either name. \"],\n \"ValidationMethod\" : \"String. The method you want to use if you are requesting a public certificate to validate that you own or control a domain. Valid values include EMAIL or DNS. We recommend that you use DNS validation. The default is EMAIL. ACM uses CNAME (Canonical Name) records to validate that you own or control a domain. When you choose DNS validation, ACM provides you one or more CNAME records to insert into your DNS database. During stack creation, CloudFormation emits a CREATE_IN_PROGRESS event which lists these CNAME records. They are displayed in the Status reason column on the Events page for the stack. \"\n }\n };\n\n //dynamodb\n dynamodb_table={\n \"Type\" : \"AWS::DynamoDB::Table\",\n \"Properties\" : {\n \"AttributeDefinitions\" : [\"*Type: List of AttributeDefinition.A list of attributes that describe the key schema for the table and indexes. Duplicates are allowed ##\"],\n \"BillingMode\" : \"String. Specify how you are charged for read and write throughput and how you manage capacity. If not specified, the default is PROVISIONED. PROVISIONED: Sets the billing mode to PROVISIONED. We recommend using PROVISIONED for predictable workloads. PAY_PER_REQUEST: Sets the billing mode to PAY_PER_REQUEST. We recommend using PAY_PER_REQUEST for unpredictable workloads.\",\n \"GlobalSecondaryIndexes\" : [\"Type: List of GlobalSecondaryIndex. Global secondary indexes to be created on the table. You can create up to 20 global secondary indexes. If you update a table to include a new global secondary index, AWS CloudFormation initiates the index creation and then proceeds with the stack update. AWS CloudFormation doesn't wait for the index to complete creation because the backfilling phase can take a long time, depending on the size of the table. You can't use the index or update the table until the index's status is ACTIVE. You can track its status by using the DynamoDB DescribeTable command. If you add or delete an index during an update, we recommend that you don't update any other resources. If your stack fails to update and is rolled back while adding a new index, you must manually delete the index. Updates are not supported. The following are exceptions: 1. If you update only the provisioned throughput values of global secondary indexes, you can update the table without interruption. 2. You can delete or add one global secondary index without interruption. If you do both in the same update (for example, by changing the index's logical ID), the update fails ##\" ],\n \"KeySchema\" : [\"*Type: List of KeySchema. Specifies the attributes that make up the primary key for the table. The attributes in the KeySchema property must also be defined in the AttributeDefinitions property. ##\"],\n \"LocalSecondaryIndexes\" : [\"Type: List of LocalSecondaryIndex. Local secondary indexes to be created on the table. You can create up to 5 local secondary indexes. Each index is scoped to a given hash key value. The size of each hash key can be up to 10 gigabytes##\"],\n \"PointInTimeRecoverySpecification\" : {\"info\":\"Type: PointInTimeRecoverySpecification. The settings used to enable point in time recovery.##\"},\n \"ProvisionedThroughput\" : {\"info\":\"**Type: ProvisionedThroughput. Throughput for the specified table, which consists of values for ReadCapacityUnits and WriteCapacityUnits.Conditional. If you set BillingMode as PROVISIONED, you must specify this property. If you set BillingMode as PAY_PER_REQUEST, you cannot specify this property. ##\"},\n \"SSESpecification\" : {\"info\":\"Type: DynamoDB Table SSESpecification##\"},\n \"StreamSpecification\" : {\"info\":\"Type: StreamSpecification##\"},\n \"TableName\" : \"String. A name for the table. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the table name. If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name. \",\n \"TimeToLiveSpecification\" : {\"info\":\"Type: TimeToLiveSpecification##\"}\n }\n };\n\n //sqs\n sqs_queue=\n {\n \"Type\" : \"AWS::SQS::Queue\",\n \"Properties\" : {\n \"ContentBasedDeduplication\" : \"Boolean. For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication. During the deduplication interval, Amazon SQS treats messages that are sent with identical content as duplicates and delivers only one copy of the message.\",\n \"DelaySeconds\": \"Integer. The time in seconds that the delivery of all messages in the queue is delayed. You can specify an integer value of 0 to 900 (15 minutes). The default value is 0. \",\n \"FifoQueue\" : \"Boolean. If set to true, creates a FIFO queue. If you don't specify this property, Amazon SQS creates a standard queue. \",\n \"KmsMasterKeyId\": \"String. The ID of an AWS managed customer master key (CMK) for Amazon SQS or a custom CMK. To use the AWS managed CMK for Amazon SQS, specify the alias alias/aws/sqs. \",\n \"KmsDataKeyReusePeriodSeconds\": \"Integer. The length of time in seconds that Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again. The value must be an integer between 60 (1 minute) and 86,400 (24 hours). The default is 300 (5 minutes). \",\n \"MaximumMessageSize\": \"Integer. The limit of how many bytes that a message can contain before Amazon SQS rejects it. You can specify an integer value from 1024 bytes (1 KiB) to 262144 bytes (256 KiB). The default value is 262144 (256 KiB). \",\n \"MessageRetentionPeriod\": \"Integer. The number of seconds that Amazon SQS retains a message. You can specify an integer value from 60 seconds (1 minute) to 1209600 seconds (14 days). The default value is 345600 seconds (4 days). \",\n \"QueueName\": \"String. A name for the queue. To create a FIFO queue, the name of your FIFO queue must end with the .fifo suffix. If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\",\n \"ReceiveMessageWaitTimeSeconds\": \"Integer. Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, as opposed to returning an empty response if a message isn't yet available. You can specify an integer from 1 to 20. \",\n \"RedrivePolicy\": {\"info\":\"Specifies an existing dead letter queue to receive messages after the source queue (this queue) fails to process a message a specified number of times. ##\"},\n \"VisibilityTimeout\": \"Integer. The length of time during which a message will be unavailable after a message is delivered from the queue. This blocks other components from receiving the same message and gives the initial component time to process and delete the message from the queue. \"\n }\n } ;\n sqs_queuepolicy=\n {\n \"Type\" : \"AWS::SQS::QueuePolicy\",\n \"Properties\" : {\n \"PolicyDocument\" : {\"info\":\"*A policy document that contains the permissions for the specified Amazon SQS queues. Use AWS policy generator to create one.\"},\n \"Queues\" : [\"*Type: List of String values . The URLs of the queues to which you want to add the policy. \"]\n }\n };\n\n //sns\n sns_subscription={\n \"Type\" : \"AWS::SNS::Subscription\",\n \"Properties\" : {\n \"DeliveryPolicy\" : {\"info\":\"The JSON serialization of the subscription's delivery policy. Use AWS policy generator to create the policy.\"},\n \"Endpoint\" : \"String. The endpoint that receives notifications from the Amazon SNS topic. The endpoint value depends on the protocol that you specify. For the http protocol, the endpoint is an URL beginning with 'https://' For the https protocol, the endpoint is a URL beginning with 'https://' .For the email protocol, the endpoint is an email address. For the email-json protocol, the endpoint is an email address. For the sms protocol, the endpoint is a phone number of an SMS-enabled device. For the sqs protocol, the endpoint is the ARN of an Amazon SQS queue. For the application protocol, the endpoint is the EndpointArn of a mobile app and device. For the lambda protocol, the endpoint is the ARN of an AWS Lambda function.\",\n \"FilterPolicy\" : {\"info\":\"The filter policy JSON that is assigned to the subscription. Use AWS policy generator to create the policy.\"},\n \"Protocol\" : \"*String. http – delivery of JSON-encoded message via HTTP POST. https – delivery of JSON-encoded message via HTTPS POST . email – delivery of message via SMTP. email-json – delivery of JSON-encoded message via SMTP. sms – delivery of message via SMS. sqs – delivery of JSON-encoded message to an Amazon SQS queue. application – delivery of JSON-encoded message to an EndpointArn for a mobile app and device. lambda – delivery of JSON-encoded message to an AWS Lambda function.\",\n \"RawMessageDelivery\" : \"Boolean. true if raw message delivery is enabled for the subscription. Raw messages are free of JSON formatting and can be sent to HTTP/S and Amazon SQS endpoints.\",\n \"Region\" : \"String. For cross-region subscriptions, the region in which the topic resides. \",\n \"TopicArn\" : \"*String. The Amazon Resource Name (ARN) of the topic to subscribe to.\"\n }\n };\n sns_topic={\n \"Type\" : \"AWS::SNS::Topic\",\n \"Properties\" : {\n \"DisplayName\" : \"A developer-defined string that can be used to identify this SNS topic.\",\n \"KmsMasterKeyId\" : \"String. An AWS KMS key identifier. This can be a key ID, key ARN, or key alias.\",\n \"Subscription\" : [\"Type: List of SNS Subscriptions##\"],\n \"TopicName\" : \"A name for the topic. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the topic name. If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name. \"\n }\n };\n sns_topicpolicy={\n \"Type\" : \"AWS::SNS::TopicPolicy\",\n \"Properties\" :\n {\n \"PolicyDocument\" : {\"info\":\"A JSON policy document. Please use aws policy generator to create the policy.\"},\n \"Topics\" : [\"Type: A list of Amazon SNS topics ARNs\"]\n }\n }\n\n // serverless_function={\n // \"Type\":\"AWS::Serverless::Function\",\n // \"Properties\":{\n // \"Globals\":{\"info\":\"Note: Globals is NOT a property but a section. in your SAM template to define properties common to all your Serverless Function and APIs ##\"},\n // \"Handler\":\"**String. Function within your code that is called to begin execution. It can be specified in Globals or overridden here.\",\n // \"Runtime\":\"**String. The runtime environment. It can be specified in Globals or overridden here.\",\n // \"CodeUri\":\"** string | S3 Location Object. Either CodeUri or InlineCode must be specified. S3 Uri or location to the function code. The S3 object this Uri references MUST be a Lambda deployment package.##. Either InlineCode or CodeUri must be specified. \",\n // \"InlineCode\": \"** string. Either CodeUri or InlineCode must be specified. The inline code for the lambda.\",\n // \"FunctionName\": \"string. A name for the function. If you don't specify a name, a unique name will be generated for you.\",\n // \"Description\": \"string\",\n // \"MemorySize\": \"Number. Size of the memory allocated per invocation of the function in MB. Defaults to 128.\",\n // \"Timeout\": \"**Number. Maximum time that the function can run before it is killed in seconds. Defaults to 3. It can be specified in Globals or overridden here.\",\n // \"Role\":\"string. ARN of an IAM role to use as this function's execution role. If omitted, a default role is created for this function.\",\n // \"Policies\":[\"list of strings | list of iam policy document objects | list of SAM policy templates. Names of AWS managed IAM policies or IAM policy documents or SAM Policy Templates that this function needs, which should be appended to the default role for this function. If the Role property is set, this property has no meaning.##\"],\n // \"PermissionsBoundary\":\"**string. ARN of a permissions boundary to use for this function's execution role.\",\n // \"Environment\":\" ** Function environment object. Configuration for the runtime environment.##\",\n // \"VpcConfig\": \"VPC config object. Configuration to enable this function to access private resources within your VPC.##\",\n // }\n // }\n\n\n //ecs\n\n ecs_cluster={\n \"Type\" : \"AWS::ECS::Cluster\",\n \"Properties\" : {\n \"ClusterName\" : \"String. A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name. Update requires: Replacement\"\n }\n }\n \n ecs_service={\n \"Type\" : \"AWS::ECS::Service\",\n \"Properties\" : {\n \"Cluster\" : \"String. The short name or full Amazon Resource Name (ARN) of the cluster on which to run your service. If you do not specify a cluster, the default cluster is assumed.\",\n \"DeploymentConfiguration\" : {\"info\":\"Type: DeploymentConfiguration. Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks.##\"},\n \"DesiredCount\" : \"Integer. The number of instantiations of the specified task definition to place and keep running on your cluster.\",\n \"HealthCheckGracePeriodSeconds\" : \"Integer. The period of time, in seconds, that the Amazon ECS service scheduler should ignore unhealthy Elastic Load Balancing target health checks after a task has first started. This is only valid if your service is configured to use a load balancer. If your service's tasks take a while to start and respond to Elastic Load Balancing health checks, you can specify a health check grace period of up to 2,147,483,647 seconds. During that time, the ECS service scheduler ignores health check status. This grace period can prevent the ECS service scheduler from marking tasks as unhealthy and stopping them before they have time to come up.\",\n \"LaunchType\" : \"String. Allowed Values: EC2 | FARGATE\",\n \"LoadBalancers\" : [\"Type: List of LoadBalancer. A list of load balancer objects to associate with the cluster. If you specify the Role property, LoadBalancers must be specified as well.##\"],\n \"NetworkConfiguration\" : {\"info\":\" Type: NetworkConfiguration. The network configuration for the service. This parameter is required for task definitions that use the awsvpc network mode to receive their own elastic network interface, and it is not supported for other network modes. ##\"},\n \"PlacementConstraints\" : [\"Type: List of PlacementConstraint. An array of placement constraint objects to use for tasks in your service. You can specify a maximum of 10 constraints per task (this limit includes constraints in the task definition and those specified at runtime).##\"],\n \"PlacementStrategies\" : [\"Type: List of PlacementStrategy. The placement strategy objects to use for tasks in your service. You can specify a maximum of five strategy rules per service.##\"],\n \"PlatformVersion\" : \"String. The platform version that your tasks in the service are running on. A platform version is specified only for tasks using the Fargate launch type. If one isn't specified, the LATEST platform version is used by default.\",\n \"Role\" : \"String. The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is only permitted if you are using a load balancer with your service and your task definition does not use the awsvpc network mode. If you specify the role parameter, you must also specify a load balancer object with the loadBalancers parameter. Important: If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. The service-linked role is required if your task definition uses the awsvpc network mode, in which case you should not specify a role here. If your specified role has a path other than /, then you must either specify the full role ARN (this is recommended) or prefix the role name with the path. \",\n \"SchedulingStrategy\" : \"String. Allowed Values: DAEMON | REPLICA . REPLICA-The replica scheduling strategy places and maintains the desired number of tasks across your cluster. By default, the service scheduler spreads tasks across Availability Zones. You can use task placement strategies and constraints to customize task placement decisions. This scheduler strategy is required if the service is using the CODE_DEPLOY or EXTERNAL deployment controller types. DAEMON-The daemon scheduling strategy deploys exactly one task on each active container instance that meets all of the task placement constraints that you specify in your cluster. When you're using this strategy, you don't need to specify a desired number of tasks, a task placement strategy, or use Service Auto Scaling policies. Tasks using the Fargate launch type or the CODE_DEPLOY or EXTERNAL deployment controller types don't support the DAEMON scheduling strategy.\",\n \"ServiceName\" : \"String. The name of your service. Up to 255 letters (uppercase and lowercase), numbers, and hyphens are allowed. Service names must be unique within a cluster, but you can have similarly named services in multiple clusters within a Region or across multiple Regions.\",\n \"ServiceRegistries\" : [\"Type: List of ServiceRegistry. The details of the service discovery registries to assign to this service. Service discovery is supported for Fargate tasks if you are using platform version v1.1.0 or later.##\"],\n \"TaskDefinition\" : \"*String. The family and revision (family:revision) or full ARN of the task definition to run in your service. If a revision is not specified, the latest ACTIVE revision is used. A task definition must be specified if the service is using the ECS deployment controller.\"\n }\n }\n\n ecs_taskdefinition={\n \"Type\" : \"AWS::ECS::TaskDefinition\",\n \"Properties\" : {\n \"ContainerDefinitions\" : [\"Type: List of ContainerDefinition. A list of container definitions in JSON format that describe the different containers that make up your task.##\"],\n \"Cpu\" : \"String. The number of cpu units used by the task. If you are using the EC2 launch type, this field is optional and any value can be used. If you are using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the memory parameter: 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB). 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB). 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB). 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB). 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB).\",\n \"ExecutionRoleArn\" : \"String. The Amazon Resource Name (ARN) of the task execution role that containers in this task can assume. All containers in this task are granted the permissions that are specified in this role.\",\n \"Family\" : \"String. The name of a family that this task definition is registered to. A family groups multiple versions of a task definition. Amazon ECS gives the first task definition that you registered to a family a revision number of 1. Amazon ECS gives sequential revision numbers to each task definition that you add. To use revision numbers when you update a task definition, specify this property. If you don't specify a value, AWS CloudFormation generates a new task definition each time that you update it.\",\n \"Memory\" : \"String. The amount (in MiB) of memory used by the task. If using the EC2 launch type, this field is optional and any value can be used. If using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) | 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU) | 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) | Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU) | Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU)\",\n \"NetworkMode\" : \"String. Allowed Values: awsvpc | bridge | host | none. The Docker networking mode to use for the containers in the task. The valid values are none, bridge, awsvpc, and host. The default Docker network mode is bridge. If you are using the Fargate launch type, the awsvpc network mode is required. If you are using the EC2 launch type, any network mode can be used. If the network mode is set to none, you cannot specify port mappings in your container definitions, and the tasks containers do not have external connectivity. The host and awsvpc network modes offer the highest networking performance for containers because they use the EC2 network stack instead of the virtualized network stack provided by the bridge mode. With the host and awsvpc network modes, exposed container ports are mapped directly to the corresponding host port (for the host network mode) or the attached elastic network interface port (for the awsvpc network mode), so you cannot take advantage of dynamic host port mappings. If the network mode is awsvpc, the task is allocated an elastic network interface, and you must specify a NetworkConfiguration value when you create a service or run a task with the task definition. Currently, only Amazon ECS-optimized AMIs, other Amazon Linux variants with the ecs-init package, or AWS Fargate infrastructure support the awsvpc network mode. If the network mode is host, you cannot run multiple instantiations of the same task on a single container instance when port mappings are used. Docker for Windows uses different network modes than Docker for Linux. When you register a task definition with Windows containers, you must not specify a network mode. If you use the console to register a task definition with Windows containers, you must choose the <default> network mode object.\",\n \"PlacementConstraints\" : [ \"Type: List of TaskDefinitionPlacementConstraint. An array of placement constraint objects to use for tasks. This field is not valid if you are using the Fargate launch type for your task. ##\"],\n \"RequiresCompatibilities\" : [ \"list of strings. The launch type the task requires. If no value is specified, it will default to EC2. Valid values include EC2 and FARGATE.\"],\n \"TaskRoleArn\" : \"String. IAM roles for tasks on Windows require that the -EnableTaskIAMRole option is set when you launch the Amazon ECS-optimized Windows AMI. Your containers must also run some configuration code in order to take advantage of the feature.\",\n \"Volumes\" : [\"Type: List of Volume. If your tasks are using the Fargate launch type, the host and sourcePath parameters are not supported. ##\"]\n }\n }\n \n cloudtrail_trail={\n \"Type\" : \"AWS::CloudTrail::Trail\",\n \"Properties\" : {\n \"CloudWatchLogsLogGroupArn\" : \"**String. Specifies a log group name using an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered. Not required unless you specify CloudWatchLogsRoleArn.\",\n \"CloudWatchLogsRoleArn\" : \"**String. Specifies the role for the CloudWatch Logs endpoint to assume to write to a user's log group.\",\n \"EnableLogFileValidation\" : \"Boolean. Specifies whether log file validation is enabled. The default is false. When you disable log file integrity validation, the chain of digest files is broken after one hour. CloudTrail will not create digest files for log files that were delivered during a period in which log file integrity validation was disabled. For example, if you enable log file integrity validation at noon on January 1, disable it at noon on January 2, and re-enable it at noon on January 10, digest files will not be created for the log files delivered from noon on January 2 to noon on January 10. The same applies whenever you stop CloudTrail logging or delete a trail.\",\n \"EventSelectors\" : [\"Type: List of EventSelector. Use event selectors to further specify the management and data event settings for your trail. By default, trails created without specific event selectors will be configured to log all read and write management events, and no data events. When an event occurs in your account, CloudTrail evaluates the event selector for all trails. For each trail, if the event matches any event selector, the trail processes and logs the event. If the event doesn't match any event selector, the trail doesn't log the event. ##\"],\n \"IncludeGlobalServiceEvents\" : \"Boolean. Specifies whether the trail is publishing events from global services such as IAM to the log files.\",\n \"IsLogging\" : \"*Boolean. Whether the CloudTrail is currently logging AWS API calls.\",\n \"IsMultiRegionTrail\" : \"Boolean. Specifies whether the trail applies only to the current region or to all regions. The default is false. If the trail exists only in the current region and this value is set to true, shadow trails (replications of the trail) will be created in the other regions. If the trail exists in all regions and this value is set to false, the trail will remain in the region where it was created, and its shadow trails in other regions will be deleted. As a best practice, consider using trails that log events in all regions.\",\n \"KMSKeyId\" : \"String. Specifies the KMS key ID to use to encrypt the logs delivered by CloudTrail. The value can be an alias name prefixed by 'alias/', a fully specified ARN to an alias, a fully specified ARN to a key, or a globally unique identifier. \",\n \"S3BucketName\" : \"*String. Specifies the name of the Amazon S3 bucket designated for publishing log files.\",\n \"S3KeyPrefix\" : \"String. Specifies the Amazon S3 key prefix that comes after the name of the bucket you have designated for log file delivery. \",\n \"SnsTopicName\" : \"String. Specifies the name of the Amazon SNS topic defined for notification of log file delivery. The maximum length is 256 characters.\",\n \"TrailName\" : \"String. Specifies the name of the trail or trail ARN. e.g. arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail\"\n }\n }\n \n cw_alarm={\n \"Type\" : \"AWS::CloudWatch::Alarm\",\n \"Properties\" : {\n \"ActionsEnabled\" : \"Boolean. Indicates whether actions should be executed during any changes to the alarm state.\",\n \"AlarmActions\" : [\"Type: List of String. Maximum : 5. The list of actions to execute when this alarm transitions into an ALARM state from any other state. Specify each action as an Amazon Resource Name (ARN). \"],\n \"AlarmDescription\" : \"String. Description of the alarm.\",\n \"AlarmName\" : \"String. The name of the alarm. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the alarm name. If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\",\n \"ComparisonOperator\" : \"*String. Allowed Values: GreaterThanOrEqualToThreshold | GreaterThanThreshold | LessThanOrEqualToThreshold | LessThanThreshold. The arithmetic operation to use when comparing the specified statistic and threshold. The specified statistic value is used as the first operand.\",\n \"DatapointsToAlarm\" : \"Integer. The number of datapoints that must be breaching to trigger the alarm. This is used only if you are setting an 'M out of N' alarm. In that case, this value is the M. \",\n \"Dimensions\" : [\"Type: List of Dimension. The dimensions for the metric associated with the alarm. For an alarm based on a math expression, you can't specify Dimensions. Instead, you use Metrics. ## \"],\n \"EvaluateLowSampleCountPercentile\" : \"String. Used only for alarms based on percentiles. If ignore, the alarm state does not change during periods with too few data points to be statistically significant. If evaluate or this parameter is not used, the alarm is always evaluated and possibly changes state no matter how many data points are available.\",\n \"EvaluationPeriods\" : \"*Integer. The number of periods over which data is compared to the specified threshold.\",\n \"ExtendedStatistic\" : \"String. The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. Pattern: p(\\\\d{1,2}(\\\\.\\\\d{0,2})?|100)\",\n \"InsufficientDataActions\" : [\"List of string. The actions to execute when this alarm transitions to the INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN).\"],\n \"MetricName\" : \"String. The name of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you use Metrics instead and you can't specify MetricName.\",\n \"Metrics\" : [ \"Type: List of MetricDataQuery. An array that enables you to create an alarm based on the result of a metric math expression. Each item in the array either retrieves a metric or performs a math expression. If you specify the Metrics parameter, you cannot specify MetricName, Dimensions, Period, Namespace, Statistic, or ExtendedStatistic. ##\"],\n \"Namespace\" : \"String. The namespace of the metric associated with the alarm. This is required for an alarm based on a metric. For an alarm based on a math expression, you can't specify Namespace and you use Metrics instead.\",\n \"OKActions\" : [\"List of string. The actions to execute when this alarm transitions to the OK state from any other state. Each action is specified as an Amazon Resource Name (ARN).\" ],\n \"Period\" : \"Integer. The period, in seconds, over which the statistic is applied. This is required for an alarm based on a metric. For an alarm based on a math expression, you can't specify Period, and instead you use the Metrics parameter.\",\n \"Statistic\" : \"String. Allowed Values: Average | Maximum | Minimum | SampleCount | Sum. The statistic for the metric associated with the alarm, other than percentile. For percentile statistics, use ExtendedStatistic.\",\n \"Threshold\" : \"*Double. The value to compare with the specified statistic.\",\n \"TreatMissingData\" : \"String. Sets how this alarm is to handle missing data points. Valid values are breaching, notBreaching, ignore, and missing. If you omit this parameter, the default behavior of missing is used.\",\n \"Unit\" : \"Allowed Values: Bits | Bits/Second | Bytes | Bytes/Second | Count | Count/Second | Gigabits | Gigabits/Second | Gigabytes | Gigabytes/Second | Kilobits | Kilobits/Second | Kilobytes | Kilobytes/Second | Megabits | Megabits/Second | Megabytes | Megabytes/Second | Microseconds | Milliseconds | None | Percent | Seconds | Terabits | Terabits/Second | Terabytes | Terabytes/Second\"\n }\n }\n cw_dashboard={\n \"Type\" : \"AWS::CloudWatch::Dashboard\",\n \"Properties\" : {\n \"DashboardBody\" : \"*String. The detailed information about the dashboard in JSON format, including the widgets to include and their location on the dashboard. This parameter is required.\",\n \"DashboardName\" : \"String. The name of the dashboard. The name must be between 1 and 255 characters. If you do not specify a name, one will be generated automatically.\"\n }\n }\n\n cwlogs_destination={\n \"Type\" : \"AWS::Logs::Destination\",\n \"Properties\" : {\n \"DestinationName\" : \"*String\",\n \"DestinationPolicy\" : {\"info\":\"*An IAM policy document that governs which AWS accounts can create subscription filters against this destination. Please use IAM policy generator to generate the policy.\"},\n \"RoleArn\" : \"*String. The ARN of an IAM role that permits CloudWatch Logs to send data to the specified AWS resource.\",\n \"TargetArn\" : \"*String. The Amazon Resource Name (ARN) of the physical target to where the log events are delivered (for example, a Kinesis stream).\"\n }\n }\n \n \n cwlogs_loggroup={\n \"Type\" : \"AWS::Logs::LogGroup\",\n \"Properties\" : {\n \"LogGroupName\" : \"String. The name of the log group. If you don't specify a name, AWS CloudFormation generates a unique ID for the log group.\",\n \"RetentionInDays\" : \"Integer. The number of days to retain the log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, and 3653.\"\n }\n }\n\n cwlogs_logstream={\n \"Type\" : \"AWS::Logs::LogStream\",\n \"Properties\" : {\n \"LogGroupName\" : \"*String\",\n \"LogStreamName\" : \"String\"\n }\n }\n \n\n cwlogs_metricfilter={\n \"Type\" : \"AWS::Logs::MetricFilter\",\n \"Properties\" : {\n \"FilterPattern\" : \"*String. A filter pattern for extracting metric data out of ingested log events.\",\n \"LogGroupName\" : \"*String. The name of an existing log group that you want to associate with this metric filter. \",\n \"MetricTransformations\" : [\"Type: List of MetricTransformation##\"]\n }\n }\n\n cwlogs_subscriptionfilter={\n \"Type\" : \"AWS::Logs::SubscriptionFilter\",\n \"Properties\" : {\n \"DestinationArn\" : \"*String\",\n \"FilterPattern\" : \"*String. The filtering expressions that restrict what gets delivered to the destination AWS resource. \",\n \"LogGroupName\" : \"*String. The log group to associate with the subscription filter. All log events that are uploaded to this log group are filtered and delivered to the specified AWS resource if the filter pattern matches the log events.\",\n \"RoleArn\" : \"String. The ARN of an IAM role that grants CloudWatch Logs permissions to deliver ingested log events to the destination stream.\"\n }\n }\n \n cwevents_eventbuspolicy={\n \"Type\" : \"AWS::Events::EventBusPolicy\",\n \"Properties\" : {\n \"Action\" : \"*String. The action that you are enabling the other account to perform. Currently, this must be events:PutEvents.\",\n \"Condition\" : {\"info\":\"Condition is a JSON string that you can use to limit the event bus permissions that you're granting only to accounts that fulfill the condition. Currently, the only supported condition is membership in a certain AWS organization. If you specify Condition with an AWS organization ID and specify '*' as the value for Principal, you grant permission to all the accounts in the named organization. ##\"},\n \"Principal\" : \"*String. The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify '*' to permit any account to put events to your default event bus. If you specify '*'' without specifying Condition, avoid creating rules that may match undesirable events. To create more secure rules, make sure that the event pattern for each rule contains an account field with a specific account ID from which to receive events. Rules with an account field do not match any events sent from other accounts.\",\n \"StatementId\" : \"*String. An identifier string for the external account that you're granting permissions to. If you later want to revoke the permission for this external account, you must specify this StatementId.\"\n }\n }\n \n cwevents_rule={\n \"Type\" : \"AWS::Events::Rule\",\n \"Properties\" : {\n \"Description\" : \"String\",\n \"EventPattern\" : {\"info\":\"Describes which events CloudWatch Events routes to the specified target. For more information, see Event Patterns in CloudWatch Events in the Amazon CloudWatch Events User Guide. \"},\n \"Name\" : \"String. The name of the rule. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the rule name. If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\",\n \"RoleArn\" : \"String. The Amazon Resource Name (ARN) of the role that is used for target invocation.\",\n \"ScheduleExpression\" : \"String. The scheduling expression that determines when and how often the rule runs.\",\n \"State\" : \"String. Indicates whether the rule is enabled. Allowed Values: DISABLED | ENABLED\",\n \"Targets\" : [\"Type: List of Target. The resources that CloudWatch Events routes events to and invokes when the rule is triggered. If you're setting the event bus of another account as the target and that account granted permission to your account through an organization instead of directly by the account ID, you must specify a RoleArn with proper permissions in the Target structure. ##\" ]\n }\n }\n \n eks_cluster={\n \"Type\" : \"AWS::EKS::Cluster\",\n \"Properties\" : {\n \"Name\" : \"String\",\n \"ResourcesVpcConfig\" : {\"info\":\"*Type: ResourcesVpcConfig. The VPC configuration used by the cluster control plane. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. You must specify at least two subnets. You can specify up to five security groups, but we recommend that you use a dedicated security group for your cluster control plane. ##\"},\n \"RoleArn\" : \"*String. The Amazon Resource Name (ARN) of the IAM role that provides permissions for Amazon EKS to make calls to other AWS API operations on your behalf. \",\n \"Version\" : \"String. The desired Kubernetes version for your cluster. If you don't specify a value here, the latest version available in Amazon EKS is used.\"\n }\n }\n\n efs_filesystem={\n \"Type\" : \"AWS::EFS::FileSystem\",\n \"Properties\" : {\n \"Encrypted\" : \"**Boolean. A Boolean value that, if true, creates an encrypted file system. When creating an encrypted file system, you have the option of specifying a KmsKeyId for an existing AWS Key Management Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to protect the encrypted file system.\",\n \"FileSystemTags\" : [\"Type: List of ElasticFileSystemTag. A value that specifies to create one or more tags associated with the file system. Each tag is a user-defined key-value pair. Name your file system on creation by including a 'Key':'Name','Value':'{value}' key-value pair. ##\"],\n \"KmsKeyId\" : \"String. The ID of the AWS KMS CMK to be used to protect the encrypted file system. This parameter is only required if you want to use a nondefault CMK. If this parameter is not specified, the default CMK for Amazon EFS is used. If KmsKeyId is specified, the Encrypted parameter must be set to true.\",\n \"PerformanceMode\" : \"String. The performance mode of the file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. The performance mode can't be changed after the file system has been created. Allowed Values: generalPurpose | maxIO\",\n \"ProvisionedThroughputInMibps\" : \"**Double. The throughput, measured in MiB/s, that you want to provision for a file system that you're creating. Valid values are 1-1024. Required if ThroughputMode is set to provisioned. The upper limit for throughput is 1024 MiB/s. You can get this limit increased by contacting AWS Support.\",\n \"ThroughputMode\" : \"String. The throughput mode for the file system to be created. There are two throughput modes to choose from for your file system: bursting and provisioned. If you set ThroughputMode to provisioned, you must also set a value for ProvisionedThroughPutInMibps. You can decrease your file system's throughput in Provisioned Throughput mode or change between the throughput modes as long as it’s been more than 24 hours since the last decrease or throughput mode change. Allowed Values: bursting | provisioned\"\n }\n }\n\n efs_mounttarget={\n \"Type\" : \"AWS::EFS::MountTarget\",\n \"Properties\" : {\n \"FileSystemId\" : \"*String. The ID of the file system for which to create the mount target.\",\n \"IpAddress\" : \"String. Valid IPv4 address within the address range of the specified subnet.\",\n \"SecurityGroups\" : [\"Type: List of String. Up to five VPC security group IDs, of the form sg-xxxxxxxx. These must be for the same VPC as subnet specified.\"],\n \"SubnetId\" : \"*String\"\n }\n }\n \n s3_bucket={\n \"Type\" : \"AWS::S3::Bucket\",\n \"Properties\" : {\n \"AccelerateConfiguration\" : {\"info\":\"Type: AccelerateConfiguration. Configures the transfer acceleration state for an Amazon S3 bucket.##\"},\n \"AccessControl\" : \"String. A canned access control list (ACL) that grants predefined permissions to the bucket. valid values : private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control | log-delivery-write\",\n \"AnalyticsConfigurations\" : [\"Type: List of AnalyticsConfiguration. Specifies the configuration and any analyses for the analytics filter of an Amazon S3 bucket. ##\"],\n \"BucketEncryption\" : {\"info\":\"Type: BucketEncryption. Specifies default encryption for a bucket using server-side encryption with Amazon S3-managed keys (SSE-S3) or AWS KMS-managed keys (SSE-KMS) bucket. ##\"},\n \"BucketName\" : \"String. A name for the bucket. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the bucket name.\",\n \"CorsConfiguration\" : {\"info\":\"Type: CorsConfiguration. Describes the cross-origin access configuration for objects in an Amazon S3 bucket. ##\"},\n \"InventoryConfigurations\" : [\"Type: List of InventoryConfiguration. Specifies the inventory configuration for an Amazon S3 bucket.##\"],\n \"LifecycleConfiguration\" : {\"info\":\"Type: LifecycleConfiguration. Specifies the lifecycle configuration for objects in an Amazon S3 bucket.##\"},\n \"LoggingConfiguration\" : {\"info\":\"Type: LoggingConfiguration. Settings that define where logs are stored. ##\"},\n \"MetricsConfigurations\" : [\"List of MetricsConfiguration,Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that this is a full replacement of the existing metrics configuration.##\"],\n \"NotificationConfiguration\" : {\"info\":\"Type: NotificationConfiguration. Configuration that defines how Amazon S3 handles bucket notifications.##\"},\n \"PublicAccessBlockConfiguration\" : {\"info\":\"Type: PublicAccessBlockConfiguration. Configuration that defines how Amazon S3 handles public access.##\"},\n \"ReplicationConfiguration\" : {\"info\":\"Type: ReplicationConfiguration. Configuration for replicating objects in an S3 bucket. To enable replication, you must also enable versioning by using the VersioningConfiguration property. Amazon S3 can store replicated objects in only one destination bucket. The destination bucket must already exist and be in a different AWS Region than your source bucket.##\"},\n \"VersioningConfiguration\" : {\"info\":\"Type: VersioningConfiguration. Enables multiple versions of all objects in this bucket. You might enable versioning to prevent objects from being deleted or overwritten by mistake or to archive objects so that you can retrieve previous versions of them.##\"},\n \"WebsiteConfiguration\" : {\"info\":\"Type: WebsiteConfiguration. Information used to configure the bucket as a static website. ##\"}\n }\n }\n\n s3_bucketpolicy={\n \"Type\" : \"AWS::S3::BucketPolicy\",\n \"Properties\" : {\n \"Bucket\" : \"*String. The name of the Amazon S3 bucket to which the policy applies.\",\n \"PolicyDocument\" : {\"info\":\"*Type: Json. A policy document containing permissions to add to the specified bucket. Please use AWS Policy Generator to generate policies.\"}\n }\n } \n\n\n ecr_repository={\n \"Type\" : \"AWS::ECR::Repository\",\n \"Properties\" : {\n \"LifecyclePolicy\" : {\"info\":\"Lifecycle Policy ##\"},\n \"RepositoryName\" : \"String. The name to use for the repository. The repository name may be specified on its own (such as nginx-web-app) or it can be prepended with a namespace to group the repository into a category (such as project-a/nginx-web-app). If you don't specify a name,\",\n \"RepositoryPolicyText\" : {\"info\":\"Type : Json. Create a policy using AWS IAM policy generator\"}\n }\n }\n \n cfn_customresource={\n \"Type\" : \"AWS::CloudFormation::CustomResource\",\n \"Properties\" : {\n \"ServiceToken\" : \"*String, The service token that was given to the template developer by the service provider to access the service, such as an Amazon SNS topic ARN or Lambda function ARN. The service token must be from the same region in which you are creating the stack.\"\n }\n }\n \n cfn_macro={\n \"Type\" : \"AWS::CloudFormation::Macro\",\n \"Properties\" : {\n \"Description\" : \"String. A description of the macro.\",\n \"FunctionName\" : \"*String. The Amazon Resource Name (ARN) of the underlying AWS Lambda function that you want AWS CloudFormation to invoke when the macro is run.\",\n \"LogGroupName\" : \"String. The Amazon CloudWatch log group to which AWS CloudFormation sends error logging information when invoking the macro's underlying AWS Lambda function.\",\n \"LogRoleARN\" : \"String. The ARN of the role AWS CloudFormation should assume when sending log entries to CloudWatch logs.\",\n \"Name\" : \"*String. The name of the macro. The name of the macro must be unique across all macros in the account.\"\n }\n }\n \n cfn_stack={\n \"Type\" : \"AWS::CloudFormation::Stack\",\n \"Properties\" : {\n \"NotificationARNs\" : [\"List of strings. The Simple Notification Service (SNS) topic ARNs to publish stack related events. You can find your SNS topic ARNs using the SNS console or your Command Line Interface (CLI). Maximum : 5\"],\n \"Parameters\" : {\"info\":\"** Type: map of string. The set value pairs that represent the parameters passed to CloudFormation when this nested stack is created. Each parameter has a name corresponding to a parameter defined in the embedded template and a value representing the value that you want to set for the parameter. Note: If you use the Ref function to pass a parameter value to a nested stack, comma-delimited list parameters must be of type String. In other words, you cannot pass values that are of type CommaDelimitedList to nested stacks. Whether an update causes interruptions depends on the resources that are being updated. An update never causes a nested stack to be replaced.\"},\n \"TemplateURL\" : \"*String, Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket.\",\n \"TimeoutInMinutes\" : \"Integer, The length of time, in minutes, that CloudFormation waits for the nested stack to reach the CREATE_COMPLETE state. The default is no timeout. When CloudFormation detects that the nested stack has reached the CREATE_COMPLETE state, it marks the nested stack resource as CREATE_COMPLETE in the parent stack and resumes creating the parent stack. If the timeout period expires before the nested stack reaches CREATE_COMPLETE, CloudFormation marks the nested stack as failed and rolls back both the nested stack and parent stack.\"\n }\n }\n\n cfn_waitcondition={\n \"Type\" : \"AWS::CloudFormation::WaitCondition\",\n \"Properties\" : {\n \"Count\" : \"Integer. The number of success signals that CloudFormation must receive before it continues the stack creation process. When the wait condition receives the requisite number of success signals, CloudFormation resumes the creation of the stack. If the wait condition does not receive the specified number of success signals before the Timeout period expires, CloudFormation assumes that the wait condition has failed and rolls the stack back.\",\n \"Handle\" : \"String. A reference to the wait condition handle used to signal this wait condition. Use the Ref intrinsic function to specify an AWS::CloudFormation::WaitConditionHandle resource. Anytime you add a WaitCondition resource during a stack update, you must associate the wait condition with a new WaitConditionHandle resource. Do not reuse an old wait condition handle that has already been defined in the template. If you reuse a wait condition handle, the wait condition might evaluate old signals from a previous create or update stack command.\",\n \"Timeout\" : \"String. The length of time (in seconds) to wait for the number of signals that the Count property specifies. Timeout is a minimum-bound property, meaning the timeout occurs no sooner than the time you specify, but can occur shortly thereafter. The maximum time that can be specified for this property is 12 hours (43200 seconds).\",\n \"CreationPolicy\":{\"info\":\"Use the CreationPolicy attribute when you want to wait on resource configuration actions before stack creation proceeds. For example, if you install and configure software applications on an EC2 instance, you might want those applications to be running before proceeding. In such cases, you can add a CreationPolicy attribute to the instance, and then send a success signal to the instance after the applications are installed and configured. ## \"} \n }\n }\n\n cfn_waitconditionhandle={\n \"Type\" : \"AWS::CloudFormation::WaitConditionHandle\",\n \"Properties\" : {\n }\n }\n \n lambda_alias={\n \"Type\" : \"AWS::Lambda::Alias\",\n \"Properties\" : {\n \"Description\" : \"String\",\n \"FunctionName\" : \"*String. Name formats = 1. Function name - MyFunction 2. Function ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction 3. Partial ARN - 123456789012:function:MyFunction. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length. \",\n \"FunctionVersion\" : \"*String. The function version that the alias invokes.\",\n \"Name\" : \"*String. The name of the alias\",\n \"RoutingConfig\" : [\"List of VersionWeight.\"]\n }\n }\n\n lambda_eventsourcemapping={\n \"Type\" : \"AWS::Lambda::EventSourceMapping\",\n \"Properties\" : {\n \"BatchSize\" : \"Integer. The maximum number of items to retrieve in a single batch. Amazon Kinesis - Default 100. Max 10,000. Amazon DynamoDB Streams - Default 100. Max 1,000. Amazon Simple Queue Service - Default 10. Max 10.\",\n \"Enabled\" : \"Boolean. Disables the event source mapping to pause polling and invocation.\",\n \"EventSourceArn\" : \"*String. The Amazon Resource Name (ARN) of the event source. Amazon Kinesis - The ARN of the data stream or a stream consumer. Amazon DynamoDB Streams - The ARN of the stream. Amazon Simple Queue Service - The ARN of the queue.\",\n \"FunctionName\" : \"*String. The name of the Lambda function. Name formats = 1. Function name - MyFunction 2. Function ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction 3. Partial ARN - 123456789012:function:MyFunction. 4. Version or Alias ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length. \",\n \"StartingPosition\" : \"String. The position in a stream from which to start reading. Required for Amazon Kinesis and Amazon DynamoDB Streams sources. AT_TIMESTAMP is only supported for Amazon Kinesis streams. Allowed Values: AT_TIMESTAMP | LATEST | TRIM_HORIZON\"\n }\n }\n \n lambda_function={\n \"Type\" : \"AWS::Lambda::Function\",\n \"Properties\" : {\n \"Code\" : {\"info\":\"Type:Code ##\"},\n \"DeadLetterConfig\" : {\"info\":\"Type : DeadLetterConfig. A dead letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. ##\"},\n \"Description\" : \"String\",\n \"Environment\" : {\"info\":\"Type: Environment. Environment variables that are accessible from function code during execution.##\"},\n \"FunctionName\" : \"String. The name of the Lambda function, up to 64 characters in length. If you don't specify a name, AWS CloudFormation generates one. If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\",\n \"Handler\" : \"*String. The name of the method within your code that Lambda calls to execute your function. The format includes the file name.\",\n \"KmsKeyArn\" : \"String. The ARN of the AWS Key Management Service (AWS KMS) key that's used to encrypt your function's environment variables. If it's not provided, AWS Lambda uses a default service key.\",\n \"Layers\" : [\"List of strings. A list of function layers to add to the function's execution environment. Specify each layer by its ARN, including the version.\"],\n \"MemorySize\" : \"Integer. The amount of memory that your function has access to. Increasing the function's memory also increases its CPU allocation. The default value is 128 MB. The value must be a multiple of 64 MB.\",\n \"ReservedConcurrentExecutions\" : \"Integer. The number of simultaneous executions to reserve for the function.\",\n \"Role\" : \"*String. The Amazon Resource Name (ARN) of the function's execution role.\",\n \"Runtime\" : \"*String. Allowed Values: dotnetcore1.0 | dotnetcore2.1 | go1.x | java8 | nodejs10.x | nodejs8.10 | provided | python2.7 | python3.6 | python3.7 | ruby2.5\",\n \"Timeout\" : \"Integer. The amount of time that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds.\",\n \"TracingConfig\" : {\"info\":\"Type: TracingConfig. Set Mode to Active to sample and trace a subset of incoming requests with AWS X-Ray.##\"},\n \"VpcConfig\" : {\"info\":\"Type: VpcConfig. For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can only access resources and the internet through that VPC. \"}\n }\n }\n\n lambda_layerversion={\n \"Type\" : \"AWS::Lambda::LayerVersion\",\n \"Properties\" : {\n \"CompatibleRuntimes\" : [\"List of strings. A list of compatible function runtimes. Used for filtering with ListLayers and ListLayerVersions.\" ],\n \"Content\" : {\"info\":\"*Type: Content ##\"},\n \"Description\" : \"String\",\n \"LayerName\" : \"String. The name or Amazon Resource Name (ARN) of the layer.\",\n \"LicenseInfo\" : \"String. The layer's software license. It can be any of the following: 1. An SPDX license identifier. For example, MIT. 2. The URL of a license hosted on the internet. For example, https://opensource.org/licenses/MIT. 3. The full text of the license. Maximum:512\"\n }\n }\n\n lambda_layerversionpermission={\n \"Type\" : \"AWS::Lambda::LayerVersionPermission\",\n \"Properties\" : {\n \"Action\" : \"*String. The API action that grants access to the layer. For example, lambda:GetLayerVersion.\",\n \"LayerVersionArn\" : \"*String. The Amazon Resource Name (ARN) of the layer.\",\n \"OrganizationId\" : \"String. With the principal set to *, grant permission to all accounts in the specified organization.\",\n \"Principal\" : \"*String. An account ID, or * to grant permission to all AWS accounts.\"\n }\n }\n \n lambda_permission={\n \"Type\" : \"AWS::Lambda::Permission\",\n \"Properties\" : {\n \"Action\" : \"*String. The action that the principal can use on the function. For example, lambda:InvokeFunction or lambda:GetFunction.\",\n \"EventSourceToken\" : \"String. For Alexa Smart Home functions, a token that must be supplied by the invoker.\",\n \"FunctionName\" : \"*String. The name of the Lambda function, version, or alias. The name of the Lambda function. Name formats = 1. Function name - MyFunction 2. Function ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction 3. Partial ARN - 123456789012:function:MyFunction. 4. Version or Alias ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length. \",\n \"Principal\" : \"*String. The AWS service or account that invokes the function. If you specify a service, use SourceArn or SourceAccount to limit who can invoke the function through that service.\",\n \"SourceAccount\" : \"String. For AWS services, the ID of the account that owns the resource. Use this instead of SourceArn to grant permission to resources that are owned by another account (for example, all of an account's Amazon S3 buckets). Or use it together with SourceArn to ensure that the resource is owned by the specified account. For example, an Amazon S3 bucket could be deleted by its owner and recreated by another account.\",\n \"SourceArn\" : \"String. For AWS services, the ARN of the AWS resource that invokes the function. For example, an Amazon S3 bucket or Amazon SNS topic.\"\n }\n }\n \n lambda_version={\n \"Type\" : \"AWS::Lambda::Version\",\n \"Properties\" : {\n \"CodeSha256\" : \"String. Only publish a version if the hash value matches the value that's specified. Use this option to avoid publishing a version if the function code has changed since you last updated it.\",\n \"Description\" : \"String\",\n \"FunctionName\" : \"String. The name of the Lambda function, version, or alias. The name of the Lambda function. Name formats = 1. Function name - MyFunction 2. Function ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction 3. Partial ARN - 123456789012:function:MyFunction. 4. Version or Alias ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD. The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.\"\n }\n }\n \n ram_resourceshare={\n \"Type\" : \"AWS::RAM::ResourceShare\",\n \"Properties\" : {\n \"AllowExternalPrincipals\" : \"Boolean. Indicates whether principals outside your AWS organization can be associated with a resource share.\",\n \"Name\" : \"String. The name of the resource share\",\n \"Principals\" : [\"Type: List of String. The principals to associate with the resource share. The possible values are IDs of AWS accounts, the ARN of an OU or organization from AWS Organizations.\"],\n \"ResourceArns\" : [\"Type: List of String. The Amazon Resource Names (ARN) of the resources to associate with the resource share.\"]\n }\n }\n \n sm_resourcepolicy={\n \"Type\" : \"AWS::SecretsManager::ResourcePolicy\",\n \"Properties\" : {\n \"ResourcePolicy\" : {\"info\":\"*Specifies a JSON object that's constructed according to the grammar and syntax for a resource-based policy. The policy identifies who can access or manage this secret and its versions. Please use aws policy generator to generate this policy.\"},\n \"SecretId\" : \"*String. Specifies the Amazon Resource Name (ARN) or the friendly name of the secret that you want to attach a resource-based permissions policy to. If you use this property to change the SecretId for an existing resource-based policy, it removes the policy from the original secret, and then attaches the policy to the secret with the specified SecretId. This results in changing the permissions for two secrets.\"\n }\n }\n\n sm_rotationschedule={\n \"Type\" : \"AWS::SecretsManager::RotationSchedule\",\n \"Properties\" : {\n \"RotationLambdaARN\" : \"String. Specifies the ARN of the Lambda function that can rotate the secret. If you don't specify this parameter, then the secret must already have the ARN of a Lambda function configured.\",\n \"RotationRules\" : {\"info\":\"Type: RotationRules. Specifies a structure that defines the rotation schedule for this secret.##\"},\n \"SecretId\" : \"*String. Specifies the Amazon Resource Name (ARN) or the friendly name of the secret that you want to rotate.\"\n }\n }\n\n sm_secret={\n \"Type\" : \"AWS::SecretsManager::Secret\",\n \"Properties\" : {\n \"Description\" : \"String\",\n \"GenerateSecretString\" : {\"info\":\"Type: GenerateSecretString. You can return that string directly to use as the secret value, or you can specify both the SecretStringTemplate and the GenerateSecretKeyparameters. Secrets Manager uses the value in GenerateSecretKeyparameters. Secrets Manager uses the value in GenerateSecretKey as the key name and combines it with the randomly generated password to make a JSON key-value pair. It then inserts that pair into the JSON structure that's specified in the SecretStringTemplateparameter.##\"},\n \"KmsKeyId\" : \"String. Specifies the ARN, Key ID, or alias of the AWS KMS customer master key (CMK) that's used to encrypt the SecretString or SecretBinary values for versions of this secret. If you don't specify this value, then Secrets Manager defaults to the AWS account's CMK (the one named aws/secretsmanager). If an AWS KMS CMK with that name doesn't yet exist, Secrets Manager creates it for you automatically the first time it needs to encrypt a version's SecretString or SecretBinary fields.\",\n \"Name\" : \"String. The friendly name of the secret. You can use forward slashes in the name to represent a path hierarchy. For example, /prod/databases/dbserver1 could represent the secret for a server named dbserver1 in the folder databases in the folder prod.\",\n \"SecretString\" : \"String. Specifies a literal string to use as the secret value for the secret. You can use any text you like, but remember that Lambda rotation functions require a specific JSON structure to be present in this field. Alternatively, instead of hardcoding the password in this string parameter, we recommend that you use the GenerateSecretString parameter instead.\"\n }\n }\n \n sm_secrettargetattachment={\n \"Type\" : \"AWS::SecretsManager::SecretTargetAttachment\",\n \"Properties\" : {\n \"SecretId\" : \"*String. The Amazon Resource Name (ARN) or the friendly name of the secret that contains the credentials that you want to use with the specified service or database. To reference a secret that's also created in this template, use the see Ref function with the secret's logical ID.\",\n \"TargetId\" : \"*String. The ARN of the service or database whose credentials are stored in the specified secret.\",\n \"TargetType\" : \"*String. A string used by the Secrets Manager console to determine how to parse the structure of the secret text and place the values in the proper fields of the console user interface. If you created this secret using the Secrets Manager console then we recommend that you do not modify this value. If this is a custom secret, then this field is available for your use. As a best practice, do not store any sensitive information in this field. Instead, store sensitive information in the SecretString or SecretBinary fields to ensure that it is encrypted.\"\n }\n }\n \n cb_project={\n \"Type\" : \"AWS::CodeBuild::Project\",\n \"Properties\" : {\n \"Artifacts\" : {\"info\":\"*Artifacts is a property of the AWS::CodeBuild::Project resource that specifies output settings for artifacts generated by an AWS CodeBuild build.##\"} ,\n \"BadgeEnabled\" : \"**Boolean. Indicates whether AWS CodeBuild generates a publicly accessible URL for your project's build badge. Including build badges with your project is currently not supported if the source type is CodePipeline. If you specify CODEPIPELINE for the Source property, do not specify the BadgeEnabled property.\",\n \"Cache\" : {\"info\":\"Type:ProjectCache. Settings that AWS CodeBuild uses to store and reuse build dependencies.##\"},\n \"Description\" : \"String\",\n \"EncryptionKey\" : \"String. The alias or Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) that CodeBuild uses to encrypt the build output. If you don't specify a value, CodeBuild uses the AWS-managed CMK for Amazon Simple Storage Service (Amazon S3).\",\n \"Environment\" : {\"info\":\"*Type:Environment. The build environment settings for the project, such as the environment type or the environment variables to use for the build environment.##\"},\n \"LogsConfig\" : {\"info\":\"Type:LogsConfig. Information about logs for the build project. A project can create logs in Amazon CloudWatch Logs, an S3 bucket, or both.##\"},\n \"Name\" : \"String. The name of the build project. The name must be unique across all of the projects in your AWS account.\",\n \"QueuedTimeoutInMinutes\" : \"Integer. The number of minutes a build is allowed to be queued before it times out.\",\n \"SecondaryArtifacts\" : [\"List of Artifacts. A list of Artifacts objects. Each artifacts object specifies output settings that the project generates during a build.##\"],\n \"SecondarySources\" : [\"List of Source. ##\" ],\n \"SecondarySourceVersions\" : [\"Type: List of ProjectSourceVersion. An array of ProjectSourceVersion objects. If secondarySourceVersions is specified at the build level, then they take over these secondarySourceVersions (at the project level).##\"],\n \"ServiceRole\" : \"*String. The ARN of the AWS Identity and Access Management (IAM) role that enables AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account.\",\n \"Source\" : {\"info\":\"*The source code settings for the project, such as the source code's repository type and location.##\"},\n \"SourceVersion\" : \"String. A version of the build input to be built for this project. If not specified, the latest version is used. If specified, it must be one of: 1. For AWS CodeCommit: the commit ID to use 2.For GitHub: the commit ID, pull request ID, branch name, or tag name that corresponds to the version of the source code you want to build. If a pull request ID is specified, it must use the format pr/pull-request-ID (for example pr/25). If a branch name is specified, the branch's HEAD commit ID is used. If not specified, the default branch's HEAD commit ID is used 3.For Bitbucket: the commit ID, branch name, or tag name that corresponds to the version of the source code you want to build. If a branch name is specified, the branch's HEAD commit ID is used. If not specified, the default branch's HEAD commit ID is used 4.For Amazon Simple Storage Service (Amazon S3): the version ID of the object that represents the build input ZIP file to use.\",\n \"TimeoutInMinutes\" : \"Integer. How long, in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait before timing out any related build that did not get marked as completed. The default is 60 minutes.\",\n \"Triggers\" : {\"info\":\"Type: ProjectTriggers. For an existing AWS CodeBuild build project that has its source code stored in a GitHub repository, enables AWS CodeBuild to begin automatically rebuilding the source code every time a code change is pushed to the repository.##\"},\n \"VpcConfig\" : {\"info\":\"VpcConfig specifies settings that enable AWS CodeBuild to access resources in an Amazon VPC. ##\"}\n }\n }\n\n cb_sourcecredential={\n \"Type\" : \"AWS::CodeBuild::SourceCredential\",\n \"Properties\" : {\n \"AuthType\" : \"*String. The type of authentication used by the credentials. Valid options are OAUTH, BASIC_AUTH, or PERSONAL_ACCESS_TOKEN. Allowed Values: BASIC_AUTH | OAUTH | PERSONAL_ACCESS_TOKEN\",\n \"ServerType\" : \"*String. Allowed Values: BITBUCKET | GITHUB | GITHUB_ENTERPRISE\",\n \"Token\" : \"*String. For GitHub or GitHub Enterprise, this is the personal access token. For Bitbucket, this is the app password.\",\n \"Username\" : \"String. The Bitbucket username when the authType is BASIC_AUTH. This parameter is not valid for other types of source providers or connections.\"\n }\n }\n\n msk_cluster={\n \"Type\" : \"AWS::MSK::Cluster\",\n \"Properties\" : {\n \"BrokerNodeGroupInfo\" : {\"info\": \"*Type: BrokerNodeGroupInfo. The setup to be used for brokers in the cluster. ##\"},\n \"ClientAuthentication\" : {\"info\": \"Type: ClientAuthentication. Includes information related to client authentication. ##\"},\n \"ClusterName\" : \"*Type: String\",\n \"ConfigurationInfo\" : {\"info\": \"Type: ConfigurationInfo ##\"},\n \"EncryptionInfo\" : {\"info\": \"Type: EncryptionInfo ##\"},\n \"EnhancedMonitoring\" : \"String. Specifies the level of monitoring for the MSK cluster. The possible values are DEFAULT, PER_BROKER, and PER_TOPIC_PER_BROKER.\",\n \"KafkaVersion\" : \"*String\",\n \"NumberOfBrokerNodes\" : \"*Integer. The number of broker nodes you want in the Amazon MSK cluster.\"\n }\n }\n \n //elasticsearch_domain\n es_domain={\n \"Type\" : \"AWS::Elasticsearch::Domain\",\n \"Properties\" : {\n \"AccessPolicies\" : {\"info\":\"Type: JSON object. An AWS Identity and Access Management (IAM) policy document that specifies who can access the Amazon ES domain and their permissions.\"},\n \"AdvancedOptions\" : \"Type: Map of string. Additional options to specify for the Amazon ES domain. rest.action.multi.allow_explicit_index= Specifies whether explicit references to indices are allowed inside the body of HTTP requests. Setting this property to false prevents users from bypassing access control for subresources. indices.fielddata.cache.size= Specifies the percentage of Java heap space that is allocated to field data. By default, this setting is unbounded. indices.query.bool.max_clause_count=Specifies the maximum number of clauses allowed in a Lucene Boolean query. The default is 1024. \",\n \"DomainName\" : \"String. A name for the Amazon ES domain. \",\n \"EBSOptions\" : {\"info\":\"The configurations of Amazon Elastic Block Store (Amazon EBS) volumes that are attached to data nodes in the Amazon ES domain.##\"},\n \"ElasticsearchClusterConfig\" : {\"info\":\"Type: ElasticsearchClusterConfig. ElasticsearchClusterConfig is a property of the AWS::Elasticsearch::Domain resource that configures the cluster of an Amazon Elasticsearch Service (Amazon ES) domain.##\"},\n \"ElasticsearchVersion\" : \"String. The version of Elasticsearch to use, such as 2.3. If not specified, 1.5 is used as the default.\",\n \"EncryptionAtRestOptions\" : {\"info\":\"Type: EncryptionAtRestOptions. Whether the domain should encrypt data at rest, and if so, the AWS Key Management Service (KMS) key to use. Can only be used to create a new domain, not update an existing one.##\"},\n \"NodeToNodeEncryptionOptions\" : {\"info\":\"Type: NodeToNodeEncryptionOptions. Specifies whether node-to-node encryption is enabled.##\"},\n \"SnapshotOptions\" : {\"info\":\"Type: SnapshotOptions. The automated snapshot configuration for the Amazon ES domain indices.##\"},\n \"VPCOptions\" : {\"info\":\"Type: VPCOptions. The virtual private cloud (VPC) configuration for the Amazon ES domain.##\"}\n }\n }\n \n //RDS\n rds_dbcluster={\n \"Type\" : \"AWS::RDS::DBCluster\",\n \"Properties\" : {\n \"AssociatedRoles\" : [\"List of DBClusterRole. Provides a list of the AWS Identity and Access Management (IAM) roles that are associated with the DB cluster. IAM roles that are associated with a DB cluster grant permission for the DB cluster to access other AWS services on your behalf.##\" ],\n \"AvailabilityZones\" : [\"List of string. A list of Availability Zones (AZs) where instances in the DB cluster can be created.\"],\n \"BacktrackWindow\" : \"Type:Long. The target backtrack window, in seconds. To disable backtracking, set this value to 0. If specified, this value must be set to a number from 0 to 259,200 (72 hours).\",\n \"BackupRetentionPeriod\" : \"Integer. The number of days for which automated backups are retained. Must be a value from 1 to 35\",\n \"DatabaseName\" : \"String. The name of your database. If you don't provide a name, then Amazon RDS won't create a database in this DB cluster.\",\n \"DBClusterIdentifier\" : \"String. The DB cluster identifier. This parameter is stored as a lowercase string.\",\n \"DBClusterParameterGroupName\" : \"String. The name of the DB cluster parameter group to associate with this DB cluster.\",\n \"DBSubnetGroupName\" : \"String. A DB subnet group that you want to associate with this DB cluster.\",\n \"DeletionProtection\" : \"Boolean. A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.\",\n \"EnableCloudwatchLogsExports\" : [\"List of string. The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used. \"],\n \"EnableIAMDatabaseAuthentication\" : \"Boolean. A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.\",\n \"Engine\" : \"*String. The name of the database engine to be used for this DB cluster. aurora | aurora-mysql | aurora-postgresql\",\n \"EngineMode\" : \"String. provisioned | serverless| parallelquery| global| multimaster.\",\n \"EngineVersion\" : \"String. The version number of the database engine to use. Use this command to get it 'aws rds describe-db-engine-versions --engine aurora --query 'DBEngineVersions[].EngineVersion''\",\n \"KmsKeyId\" : \"String. The Amazon Resource Name (ARN) of the AWS Key Management Service master key that is used to encrypt the database instances in the DB cluster, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, the default master key is used. If you specify this property, you must set the StorageEncrypted property to true.\",\n \"MasterUsername\" : \"String. The name of the master user for the DB cluster.\",\n \"MasterUserPassword\" : \"String. The master password for the DB instance.\",\n \"Port\" : \"Integer. The port number on which the instances in the DB cluster accept connections. Default: 3306 if engine is set as aurora or 5432 if set to aurora-postgresql.\",\n \"PreferredBackupWindow\" : \"String. The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. Must be in the format hh24:mi-hh24:mi. Must be in Universal Coordinated Time (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes.\",\n \"PreferredMaintenanceWindow\" : \"String. The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Constraints: Minimum 30-minute window.\",\n \"ReplicationSourceIdentifier\" : \"String. The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a Read Replica.\",\n \"RestoreType\" : \"String. The type of restore to be performed. You can specify one of the following values: full-copy - The new DB cluster is restored as a full copy of the source DB cluster. copy-on-write - The new DB cluster is restored as a clone of the source DB cluster.\",\n \"ScalingConfiguration\" : {\"info\":\"Type: ScalingConfiguration. The ScalingConfiguration property type specifies the scaling configuration of an Aurora Serverless DB cluster.##\"},\n \"SnapshotIdentifier\" : \"String. The identifier for the DB snapshot or DB cluster snapshot to restore from. You can use either the name or the Amazon Resource Name (ARN) to specify a DB cluster snapshot. However, you can use only the ARN to specify a DB snapshot. After you restore a DB cluster with a SnapshotIdentifier property, you must specify the same SnapshotIdentifier property for any future updates to the DB cluster. When you specify this property for an update, the DB cluster is not restored from the snapshot again, and the data in the database is not changed. However, if you don't specify the SnapshotIdentifier property, an empty DB cluster is created, and the original DB cluster is deleted. If you specify a property that is different from the previous snapshot restore property, the DB cluster is restored from the specified SnapshotIdentifier property, and the original DB cluster is deleted.\",\n \"SourceDBClusterIdentifier\" : \"String. The identifier of the source DB cluster from which to restore. Must match the identifier of an existing DBCluster.\",\n \"SourceRegion\" : \"String. The AWS Region which contains the source DB cluster when replicating a DB cluster. For example, us-east-1.\",\n \"StorageEncrypted\" : \"Boolean. Indicates whether the DB instance is encrypted. \",\n \"UseLatestRestorableTime\" : \"Boolean. A value that indicates whether to restore the DB cluster to the latest restorable backup time. By default, the DB cluster is not restored to the latest restorable backup time.\",\n \"VpcSecurityGroupIds\" : [\"List of string. A list of EC2 VPC security groups to associate with this DB cluster.\"]\n }\n }\n \n rds_dbclusterparametergroup={\n \"Type\" : \"AWS::RDS::DBClusterParameterGroup\",\n \"Properties\" : {\n \"Description\" : \"*String. A friendly description for this DB cluster parameter group.\",\n \"Family\" : \"*String. The DB cluster parameter group family name. A DB cluster parameter group can be associated with one and only one DB cluster parameter group family, and can be applied only to a DB cluster running a DB engine and engine version compatible with that DB cluster parameter group family. Use the command : aws rds describe-db-engine-versions --query 'DBEngineVersions[].DBParameterGroupFamily'\",\n \"Parameters\" : \"*Json. Provides a list of parameters for the DB cluster parameter group.\",\n }\n }\n \n rds_dbinstance={\n \"Type\" : \"AWS::RDS::DBInstance\",\n \"Properties\" : {\n \"AllocatedStorage\" : \"String. The amount of storage (in gigabytes) to be initially allocated for the database instance.\",\n \"AllowMajorVersionUpgrade\" : \"Boolean. A value that indicates whether major version upgrades are allowed. Changing this parameter doesn't result in an outage and the change is asynchronously applied as soon as possible. Constraints: Major version upgrades must be allowed when specifying a value for the EngineVersion parameter that is a different major version than the DB instance's current version.\",\n \"AssociatedRoles\" : [\"Type: List of DBInstanceRole##\" ],\n \"AutoMinorVersionUpgrade\" : \"Boolean. A value that indicates whether minor engine upgrades are applied automatically to the DB instance during the maintenance window. By default, minor engine upgrades are applied automatically.\",\n \"AvailabilityZone\" : \"String. The Availability Zone (AZ) where the database will be created.\",\n \"BackupRetentionPeriod\" : \"Integer. The number of days for which automated backups are retained. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.\",\n \"CharacterSetName\" : \"String. For supported engines, indicates that the DB instance should be associated with the specified CharacterSet.\",\n \"CopyTagsToSnapshot\" : \"Boolean. A value that indicates whether to copy tags from the DB instance to snapshots of the DB instance. By default, tags are not copied.\",\n \"DBClusterIdentifier\" : \"String. The identifier of the DB cluster that the instance will belong to.\",\n \"DBInstanceClass\" : \"*String. The compute and memory capacity of the DB instance, for example, db.m4.large. Not all DB instance classes are available in all AWS Regions, or for all database engines. \",\n \"DBInstanceIdentifier\" : \"String. A name for the DB instance. If you specify a name, AWS CloudFormation converts it to lowercase. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the DB instance. \",\n \"DBName\" : \"String. MySQL = The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance. MariaDB= The name of the database to create when the DB instance is created. If this parameter is not specified, no database is created in the DB instance. PostgreSQL=The name of the database to create when the DB instance is created. If this parameter is not specified, the default 'postgres' database is created in the DB instance. Oracle=The Oracle System ID (SID) of the created DB instance. If you specify null, the default value ORCL is used. You can't specify the string NULL, or any other reserved word, for DBName. Default: ORCL. SQL Server=Not applicable. Must be null. Amazon Aurora=The name of the database to create when the primary instance of the DB cluster is created. If this parameter is not specified, no database is created in the DB instance. \",\n \"DBParameterGroupName\" : \"String. The name of an existing DB parameter group or a reference to an AWS::RDS::DBParameterGroup resource created in the template.\",\n \"DBSecurityGroups\" : [\"List of string. A list of the DB security groups to assign to the DB instance. The list can include both the name of existing DB security groups or references to AWS::RDS::DBSecurityGroup resources created in the template.\"],\n \"DBSnapshotIdentifier\" : \"String. The name or Amazon Resource Name (ARN) of the DB snapshot that's used to restore the DB instance. If you're restoring from a shared manual DB snapshot, you must specify the ARN of the snapshot. Some DB instance properties aren't valid when you restore from a snapshot, such as the MasterUsername and MasterUserPassword properties.\",\n \"DBSubnetGroupName\" : \"String. A DB subnet group to associate with the DB instance. If you update this value, the new subnet group must be a subnet group in a new VPC.\",\n \"DeleteAutomatedBackups\" : \"Boolean. A value that indicates whether to remove automated backups immediately after the DB instance is deleted. This parameter isn't case-sensitive. The default is to remove automated backups immediately after the DB instance is deleted.\",\n \"DeletionProtection\" : \"Boolean. A value that indicates whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.\",\n \"Domain\" : \"String. The Active Directory directory ID to create the DB instance in. Currently, only Microsoft SQL Server and Oracle DB instances can be created in an Active Directory Domain.\",\n \"DomainIAMRoleName\" : \"String. Specify the name of the IAM role to be used when making API calls to the Directory Service.\",\n \"EnableCloudwatchLogsExports\" : [\"List of string. The list of log types that need to be enabled for exporting to CloudWatch Logs. The values in the list depend on the DB engine being used.\"],\n \"EnableIAMDatabaseAuthentication\" : \"Boolean. A value that indicates whether to enable mapping of AWS Identity and Access Management (IAM) accounts to database accounts. By default, mapping is disabled.\",\n \"EnablePerformanceInsights\" : \"Boolean. A value that indicates whether to enable Performance Insights for the DB instance.\",\n \"Engine\" : \"String. The name of the database engine that you want to use for this DB instance.\",\n \"EngineVersion\" : \"String. The version number of the database engine to use.\",\n \"Iops\" : \"Integer. The number of I/O operations per second (IOPS) that the database provisions. The value must be equal to or greater than 1000.\",\n \"KmsKeyId\" : \"String. The ARN of the AWS Key Management Service (AWS KMS) master key that's used to encrypt the DB instance, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. If you enable the StorageEncrypted property but don't specify this property, AWS CloudFormation uses the default master key. If you specify this property, you must set the StorageEncrypted property to true.\",\n \"LicenseModel\" : \"String. License model information for this DB instance.\",\n \"MasterUsername\" : \"String. The master user name for the DB instance.\",\n \"MasterUserPassword\" : \"String\",\n \"MonitoringInterval\" : \"Integer. The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB instance. To disable collecting Enhanced Monitoring metrics, specify 0. The default is 0. Valid Values: 0, 1, 5, 10, 15, 30, 60\",\n \"MonitoringRoleArn\" : \"String. The ARN for the IAM role that permits RDS to send enhanced monitoring metrics to Amazon CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess. \",\n \"MultiAZ\" : \"Boolean. Specifies whether the database instance is a multiple Availability Zone deployment. You can't set the AvailabilityZone parameter if the MultiAZ parameter is set to true. Amazon Aurora storage is replicated across all the Availability Zones and doesn't require the MultiAZ option to be set.\",\n \"OptionGroupName\" : \"String. Indicates that the DB instance should be associated with the specified option group.\",\n \"PerformanceInsightsKMSKeyId\" : \"String. The AWS KMS key identifier for encryption of Performance Insights data. The KMS key ID is the Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for the KMS encryption key.\",\n \"PerformanceInsightsRetentionPeriod\" : \"Integer. The amount of time, in days, to retain Performance Insights data. Valid values are 7 or 731 (2 years).\",\n \"Port\" : \"String. The port number on which the database accepts connections.\",\n \"PreferredBackupWindow\" : \"String. The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter.\",\n \"PreferredMaintenanceWindow\" : \"String. The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).\",\n \"ProcessorFeatures\" : [ \"List of ProcessFeature. The number of CPU cores and the number of threads per core for the DB instance class of the DB instance.##\" ],\n \"PromotionTier\" : \"Integer. A value that specifies the order in which an Aurora Replica is promoted to the primary instance after a failure of the existing primary instance. Valid Values: 0 - 15\",\n \"PubliclyAccessible\" : \"Boolean. Indicates whether the DB instance is an internet-facing instance. If you specify true, AWS CloudFormation creates an instance with a publicly resolvable DNS name, which resolves to a public IP address. If you specify false, AWS CloudFormation creates an internal instance with a DNS name that resolves to a private IP address.\",\n \"SourceDBInstanceIdentifier\" : \"String. If you want to create a Read Replica DB instance, specify the ID of the source DB instance. Each DB instance can have a limited number of Read Replicas. \",\n \"SourceRegion\" : \"String. The ID of the region that contains the source DB instance for the Read Replica.\",\n \"StorageEncrypted\" : \"Boolean. A value that indicates whether the DB instance is encrypted. By default, it is not encrypted.\",\n \"StorageType\" : \"String. Valid values: standard | gp2 | io1\",\n \"Timezone\" : \"String. The time zone of the DB instance.\",\n \"UseDefaultProcessorFeatures\" : \"Boolean. A value that indicates whether the DB instance class of the DB instance uses its default processor features.\",\n \"VPCSecurityGroups\" : [\"List of string. A list of the VPC security group IDs to assign to the DB instance. The list can include both the physical IDs of existing VPC security groups and references to AWS::EC2::SecurityGroup resources created in the template.\"]\n }\n }\n\n rds_dbparametergroup = {\n \"Type\" : \"AWS::RDS::DBParameterGroup\",\n \"Properties\" : {\n \"Description\" : \"*String\",\n \"Family\" : \"*String. The DB parameter group family name. A DB parameter group can be associated with one and only one DB parameter group family, and can be applied only to a DB instance running a DB engine and engine version compatible with that DB parameter group family.\",\n \"Parameters\" : \"Type: Map of string. An array of parameter names, values, and the apply method for the parameter update. At least one parameter name, value, and apply method must be supplied; subsequent arguments are optional\",\n }\n }\n\n rds_dbsecuritygroup = {\n \"Type\" : \"AWS::RDS::DBSecurityGroup\",\n \"Properties\" : {\n \"DBSecurityGroupIngress\" : [\"*Type: List of Ingress ##\"],\n \"EC2VpcId\" : \"String. The identifier of an Amazon VPC. This property indicates the VPC that this DB security group belongs to.\",\n \"GroupDescription\" : \"*String. Provides the description of the DB security group.\",\n }\n }\n\n rds_dbsecuritygroupingress = {\n \"Type\" : \"AWS::RDS::DBSecurityGroupIngress\",\n \"Properties\" : {\n \"CIDRIP\" : \"String\",\n \"DBSecurityGroupName\" : \"*String\",\n \"EC2SecurityGroupId\" : \"String. Id of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.\",\n \"EC2SecurityGroupName\" : \"String. Name of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.\",\n \"EC2SecurityGroupOwnerId\" : \"String. AWS account number of the owner of the EC2 security group specified in the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.\"\n }\n }\n\n rds_dbsubnetgroup = {\n \"Type\" : \"AWS::RDS::DBSubnetGroup\",\n \"Properties\" : {\n \"DBSubnetGroupDescription\" : \"*String\",\n \"DBSubnetGroupName\" : \"String. The name for the DB subnet group. This value is stored as a lowercase string.\",\n \"SubnetIds\" : [\"*List of string. The EC2 Subnet IDs for the DB subnet group.\"],\n }\n }\n \n rds_eventsubscription={\n \"Type\" : \"AWS::RDS::EventSubscription\",\n \"Properties\" : {\n \"Enabled\" : \"Boolean. A value that indicates whether to activate the subscription. If the event notification subscription is not activated, the subscription is created but not active.\",\n \"EventCategories\" : [\"List of string. A list of event categories for a SourceType that you want to subscribe to. \"],\n \"SnsTopicArn\" : \"*String. The Amazon Resource Name (ARN) of the SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it.\",\n \"SourceIds\" : [\"List of string. The list of identifiers of the event sources for which events are returned. If not specified, then all sources are included in the response. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it can't end with a hyphen or contain two consecutive hyphens.\"],\n \"SourceType\" : \"String. The type of source that is generating the events. For example, if you want to be notified of events generated by a DB instance, you would set this parameter to db-instance. if this value is not specified, all events are returned. Valid values: db-instance | db-cluster | db-parameter-group | db-security-group | db-snapshot | db-cluster-snapshot\"\n }\n }\n \n rds_optiongroup={\n \"Type\" : \"AWS::RDS::OptionGroup\",\n \"Properties\" : {\n \"EngineName\" : \"*String. Specifies the name of the engine that this option group should be associated with.\",\n \"MajorEngineVersion\" : \"*String. Specifies the major version of the engine that this option group should be associated with.\",\n \"OptionConfigurations\" : [\"*Type: List of OptionConfiguration##\"],\n \"OptionGroupDescription\" : \"*String. The description of the option group.\",\n }\n }\n \n \n}\n","module.exports = \".example-headers-align .mat-expansion-panel-header-title,\\r\\n.example-headers-align .mat-expansion-panel-header-description {\\r\\n flex-basis: 0;\\r\\n}\\r\\n\\r\\n.example-headers-align .mat-expansion-panel-header-description {\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tbW9uLXJlc291cmNlL2NvbW1vbi1yZXNvdXJjZS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFLGFBQWE7QUFDZjs7QUFFQTtFQUNFLDhCQUE4QjtFQUM5QixtQkFBbUI7QUFDckIiLCJmaWxlIjoic3JjL2FwcC9jb21tb24tcmVzb3VyY2UvY29tbW9uLXJlc291cmNlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZXhhbXBsZS1oZWFkZXJzLWFsaWduIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZSxcclxuLmV4YW1wbGUtaGVhZGVycy1hbGlnbiAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24ge1xyXG4gIGZsZXgtYmFzaXM6IDA7XHJcbn1cclxuXHJcbi5leGFtcGxlLWhlYWRlcnMtYWxpZ24gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uIHtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuXHJcbiJdfQ== */\"","module.exports = \"<div *ngIf=\\\"isPresent\\\" >\\n\\n <mat-accordion class=\\\"example-headers-align\\\">\\n <mat-expansion-panel>\\n <mat-expansion-panel-header>\\n <mat-panel-title> {{serviceSyntax}} </mat-panel-title>\\n <mat-panel-description> {{resname.value}} </mat-panel-description>\\n </mat-expansion-panel-header>\\n\\n\\n <form #myForm=\\\"ngForm\\\" (submit)=\\\"onDone(myForm.value)\\\" >\\n <mat-form-field>\\n <input matInput #resname name=\\\"resourceName\\\" placeholder=\\\"Resource Name\\\" value=\\\"SampleName\\\" ngModel required>\\n </mat-form-field>\\n <mat-icon [ngStyle]=\\\"{'color':reqColor}\\\" >info</mat-icon> <br>\\n <span> \\n <br> <u>Properties: </u> <button mat-icon-button type=\\\"button\\\" [matTooltip]=\\\"newPropTip\\\" (click)=\\\"isNewProp=true\\\" > \\n <mat-icon>add</mat-icon> </button> <br> \\n </span>\\n <div *ngIf=\\\"isNewProp\\\" >\\n <mat-form-field >\\n <input matInput type=\\\"text\\\" name=\\\"newProp\\\" #newProp placeholder=\\\"New Property Name\\\">\\n </mat-form-field>\\n <button mat-icon-button type=\\\"button\\\" (click)=\\\"addNewProperty(newProp.value);isNewProp=false\\\" > <mat-icon>add</mat-icon> </button>\\n </div>\\n <div *ngFor=\\\"let n of newProp\\\" >\\n <mat-form-field>\\n <input matInput ngModel [name]=\\\"n\\\" [placeholder]=\\\"n\\\" type=\\\"text\\\">\\n </mat-form-field>\\n </div>\\n <div *ngFor=\\\"let j of resPropkeys\\\" >\\n <span *ngIf=\\\"j=='CreationPolicy' || j=='UpdatePolicy'\\\" > <br> <u> Specific Attributes: </u> <br> </span>\\n <span *ngIf=\\\"j=='DeletionPolicy'\\\" > <br> <u>Common Attributes:</u> <br> </span> <br>\\n <mat-form-field *ngIf=\\\"getTypeOf(resObject.Properties[j])=='string'\\\" >\\n <input matInput ngModel type=\\\"text\\\" [name]=\\\"j\\\" [placeholder]=\\\"j\\\" [required]=\\\"isRequired(resObject.Properties[j])['required']\\\" >\\n </mat-form-field>\\n <mat-form-field *ngIf=\\\"isArray(resObject.Properties[j])\\\" >\\n <input matInput ngModel type=\\\"text\\\" [name]=\\\"j\\\" [placeholder]=\\\"j\\\" [required]=\\\"isRequired(resObject.Properties[j])['required']\\\" >\\n <mat-hint> {{arrayTip}} </mat-hint>\\n </mat-form-field>\\n <mat-form-field *ngIf=\\\"!isArray(resObject.Properties[j]) && getTypeOf(resObject.Properties[j])=='object'\\\" >\\n <input matInput ngModel type=\\\"text\\\" [name]=\\\"j\\\" [placeholder]=\\\"j\\\" [required]=\\\"isRequired(resObject.Properties[j])['required']\\\" >\\n <mat-hint>{{objectTip}} </mat-hint>\\n </mat-form-field>\\n <mat-icon *ngIf=\\\"getTypeOf(resObject.Properties[j])=='string'\\\" \\n [matTooltip]=\\\"resObject.Properties[j]\\\" [ngStyle]=\\\"{'color':isRequired(resObject.Properties[j])['color']}\\\">info</mat-icon>\\n <mat-icon *ngIf=\\\"isArray(resObject.Properties[j])\\\" \\n [matTooltip]=\\\"resObject.Properties[j][0]\\\" [ngStyle]=\\\"{'color':isRequired(resObject.Properties[j])['color']}\\\" >info</mat-icon>\\n <mat-icon *ngIf=\\\"!isArray(resObject.Properties[j]) && getTypeOf(resObject.Properties[j])=='object'\\\" \\n [matTooltip]=\\\"resObject.Properties[j]['info']\\\" [ngStyle]=\\\"{'color':isRequired(resObject.Properties[j])['color']}\\\">info</mat-icon>\\n <button mat-icon-button type=\\\"button\\\" *ngIf=\\\"isPropertyComplex(resObject.Properties[j])\\\" (click)=\\\"populateProperty(serviceSyntax)\\\" >\\n <mat-icon>create</mat-icon>\\n </button>\\n\\n </div>\\n <div *ngIf=\\\"isTagged\\\" >\\n Tags:\\n <button type=\\\"button\\\" mat-raised-button (click)=\\\"addTag()\\\">\\n <mat-icon>add</mat-icon>\\n </button><br>\\n <div *ngFor=\\\"let i of tagArray\\\" >\\n <input name=\\\"tagKey{{i}}\\\" placeholder=\\\"Key\\\" ngModel>\\n <input name=\\\"tagValue{{i}}\\\" placeholder=\\\"Value\\\" ngModel>\\n </div>\\n </div>\\n\\n <button mat-icon-button [disabled]=\\\"myForm.invalid\\\" type=\\\"submit\\\" \\n matTooltip=\\\"click Submit or press Enter\\\" color=\\\"primary\\\">\\n <mat-icon>done</mat-icon>\\n </button>\\n <button mat-icon-button type=\\\"button\\\" matTooltip=\\\"Remove from Template\\\" (click)=\\\"onRemove(myForm.value)\\\">\\n <mat-icon>remove_circle</mat-icon>\\n </button>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button \\n matTooltip=\\\"copy json\\\" (click)=\\\"copyToClipboard(myForm.value)\\\"> <mat-icon>file_copy</mat-icon> </button>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button color=\\\"accent\\\"\\n matTooltip=\\\"copy yaml\\\" (click)=\\\"copyToYamlClipboard(myForm.value)\\\"> <mat-icon>file_copy</mat-icon> </button>\\n </form>\\n </mat-expansion-panel>\\n </mat-accordion>\\n </div>\\n <mat-divider></mat-divider>\"","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\nimport {RESOURCE_DATA,ResourceSyntax} from '../resource-view/resource-list';\nimport { ResourceDataService } from '../resource-data.service';\nimport {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material';\nimport { PropertyDialogTabComponent } from '../property-dialog-tab/property-dialog-tab.component';\nimport {MatSnackBar} from '@angular/material'\n\n\n\n\n@Component({\n selector: 'app-common-resource',\n templateUrl: './common-resource.component.html',\n styleUrls: ['./common-resource.component.css']\n})\nexport class CommonResourceComponent implements OnInit {\n\n \n @Input('isTagged') isTagged:Boolean;\n @Input('myresource') resObject:ResourceSyntax;\n serviceSyntax:String;\n currentService:String;\n currentResource:String;\n resPropkeys;\n isNewProp=false;\n newProp=[];\n reqColor=\"red\";\n conColor=\"darkorange\";\n arrayTip=\"semicolon (;) delimited items\"\n objectTip=\"Json Object e.g. {\\\"a\\\":\\\"b\\\"} \"\n newPropTip=\"Add a new custom Property. Useful in conjunction with Transform section or for certain resources e.g. AWS::CloudFormation::CustomResource. Adding custom attributes is not supported. Note: Existing standard properties cannot be added except for 'Tags'.\"\n\n constructor(public result:JsonResultService, \n public utility:UsefulUtilsService, \n public objProp:ResourceDataService, \n public dialog: MatDialog,\n private snackBar:MatSnackBar){\n }\n\n openSnackBar(message:string, action:string){\n this.snackBar.open(message,action,{duration:2000})\n };\n\n ngOnInit(){\n this.resObject=this.utility.addCommonProperties(this.resObject);\n this.serviceSyntax=(this.resObject[\"Type\"] as String);\n this.currentService=(this.resObject[\"Type\"] as String).split(\"::\")[1];\n this.currentResource=(this.resObject[\"Type\"] as String).split(\"::\")[2];\n this.resPropkeys=Object.keys(this.resObject[\"Properties\"]);\n }\n\n tagCount=0;\n tagArray=[];\n isPresent=true;\n isCopyReady:Boolean = false;\n \n isPropertyComplex(value){\n //return this.objProp.comProp.hasOwnProperty(value);\n if(this.getTypeOf(value)!='string'){\n var tooltip = this.isArray(value)?value[0]:value[\"info\"];\n //console.log(tooltip);\n return (tooltip as String).includes(\"##\")?true:false\n }\n else {\n return false;\n }\n }\n\n addTag(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n \n getTagArray(value){\n var tags=[];\n this.tagArray.forEach((i)=>{\n tags.push({\n \"Key\":value[`tagKey${i}`]?this.utility.getProperJson(value[`tagKey${i}`]):undefined,\n \"Value\":value[`tagValue${i}`]?this.utility.getProperJson(value[`tagValue${i}`]):undefined\n })\n });\n return tags.length==0?undefined:tags\n }\n\n isObjectEmpty(obj:Object){\n return Object.keys(obj).length === 0 && obj.constructor === Object?true:false;\n }\n\n getTypeOf(value){\n return typeof(value);\n }\n\n isArray(value){\n return Array.isArray(value);\n }\n\n isRequired(value){\n if(this.getTypeOf(value)=='object'){\n if(this.isArray(value)){\n if(value[0].includes(\"*\")){\n if(value[0].startsWith(\"**\")){\n return {\"color\":this.conColor, \"required\":false};\n }else{\n return {\"color\":this.reqColor, \"required\":true};\n }\n }\n }\n else{\n if(value['info'].includes(\"*\")){\n if(value['info'].startsWith(\"**\")){\n return {\"color\":this.conColor, \"required\": false};\n }else{\n return {\"color\":this.reqColor, \"required\":true};\n }\n }\n }\n }\n else{\n if(value.includes(\"*\")){\n if(value.startsWith(\"**\")){\n return {\"color\":this.conColor, \"required\": false};\n }else{\n return {\"color\":this.reqColor, \"required\":true};\n }\n }\n }\n return {\"color\":\"grey\", \"required\": false};\n }\n\n populateProperty(res){\n const dialogRef = this.dialog.open(PropertyDialogTabComponent, {\n width: '750px',\n height:'500px',\n data: res\n });\n\n dialogRef.afterClosed().subscribe(result => {\n //console.log('The dialog was closed');\n });\n //console.log(res);\n }\n \n addNewProperty(value){\n if(this.resObject.Properties.hasOwnProperty(value)){\n alert(`Property by name ${value} already exists.`)\n return\n }\n\n if(value != ''){\n this.resObject.Properties[value]=undefined\n this.newProp.push(value);\n }\n }\n\n\n copyToClipboard(value){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.result.jsonresult.Resources[value.resourceName]);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n copyToYamlClipboard(value){\n this.utility.copyToClipboardYaml(this.result.jsonresult.Resources[value.resourceName])\n }\n\n onRemove(value){\n this.isPresent=false;\n for(var i=0;i<RESOURCE_DATA.length;i++){\n if(RESOURCE_DATA[i].servicename==this.currentService){\n var myresource=RESOURCE_DATA[i].subresource;\n for(var j=0;j<myresource.length;j++){\n if(myresource[j].resourcename==this.currentResource){\n myresource[j].resourcecount=myresource[j].resourcecount-1;\n }\n }\n }\n }\n this.result.jsonresult.Resources[value.resourceName]=undefined;\n this.openSnackBar(`\"${value.resourceName}\" has been removed. Check Result tab.`,\"Ok\")\n }\n\n onDone(value){\n //console.log(value);\n this.isCopyReady=true;\n this.result.jsonresult.Resources[value.resourceName]={};\n this.result.jsonresult.Resources[value.resourceName][\"Properties\"]={}\n this.result.jsonresult.Resources[value.resourceName].Type=this.resObject[\"Type\"];\n Object.keys(this.resObject[\"Properties\"]).forEach((prop)=>{\n if(typeof(this.resObject[\"Properties\"][prop])==\"object\"){\n if(Array.isArray(this.resObject[\"Properties\"][prop])){\n if(prop==\"DependsOn\"){\n this.doCommonResAttributesArrayType(value.resourceName,prop,value[prop])\n }\n else{\n this.result.jsonresult.Resources[value.resourceName][\"Properties\"][prop]=this.utility.getSemicolonArray(value[prop]);\n }\n }\n else {\n if(prop==\"UpdatePolicy\" || prop==\"CreationPolicy\" ||prop==\"Metadata\" ){\n this.doCommonResAttributesObjectType(value.resourceName,prop, value[prop]);\n }\n else{\n this.result.jsonresult.Resources[value.resourceName][\"Properties\"][prop]=this.utility.getProperJson(value[prop]);\n }\n } \n }else{\n if(prop==\"UpdateReplacePolicy\" || prop==\"DeletionPolicy\" ||prop==\"Condition\" ){\n this.doCommonResAttributesObjectType(value.resourceName,prop,value[prop]);\n }\n else{\n this.result.jsonresult.Resources[value.resourceName][\"Properties\"][prop]=this.utility.getProperJson(value[prop]);\n }\n }\n })\n\n if(this.tagArray.length==0 && value[\"Tags\"]!=undefined ){\n this.result.jsonresult.Resources[value.resourceName][\"Properties\"][\"Tags\"]=this.utility.getProperJson(value[\"Tags\"])\n }else{\n this.result.jsonresult.Resources[value.resourceName][\"Properties\"][\"Tags\"]=this.getTagArray(value);\n }\n\n if(this.resObject[\"Type\"]==\"AWS::EC2::Instance\"){\n this.result.jsonresult.Resources[value.resourceName][\"Properties\"][\"Metadata\"]=undefined;\n this.result.jsonresult.Resources[value.resourceName][\"Metadata\"]=this.utility.getProperJson(value[\"Metadata\"]);\n }\n this.openSnackBar(`\"${value.resourceName}\" has been added. Check Result tab.`,\"Ok\");\n }\n\n doCommonResAttributesArrayType(resname, propname, propvalue){\n if(propname!=undefined){\n //this.result.jsonresult.Resources[resname][propname]={};\n this.result.jsonresult.Resources[resname][propname]=this.utility.getSemicolonArray(propvalue);\n }\n }\n\n doCommonResAttributesObjectType(resname, propname, propvalue){\n if(propname!=undefined){\n this.result.jsonresult.Resources[resname][propname]={};\n this.result.jsonresult.Resources[resname][propname]=this.utility.getProperJson(propvalue);\n }\n }\n\n\n}","module.exports = \".example-card {\\r\\n max-width: 500px;\\r\\n }\\r\\n\\r\\n .example-container {\\r\\n width: 1200px;\\r\\n height: 350px;\\r\\n border: 1px solid rgba(0, 0, 0, 0.5);\\r\\n }\\r\\n\\r\\n .example-sidenav-content {\\r\\n display: flex;\\r\\n height: 100%;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n }\\r\\n\\r\\n .example-sidenav {\\r\\n padding: 20px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZGl0aW9ucy10YWIvY29uZGl0aW9ucy10YWIuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGdCQUFnQjtFQUNsQjs7RUFFQTtJQUNFLGFBQWE7SUFDYixhQUFhO0lBQ2Isb0NBQW9DO0VBQ3RDOztFQUVBO0lBQ0UsYUFBYTtJQUNiLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsdUJBQXVCO0VBQ3pCOztFQUVBO0lBQ0UsYUFBYTtFQUNmIiwiZmlsZSI6InNyYy9hcHAvY29uZGl0aW9ucy10YWIvY29uZGl0aW9ucy10YWIuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNhcmQge1xyXG4gICAgbWF4LXdpZHRoOiA1MDBweDtcclxuICB9XHJcblxyXG4gIC5leGFtcGxlLWNvbnRhaW5lciB7XHJcbiAgICB3aWR0aDogMTIwMHB4O1xyXG4gICAgaGVpZ2h0OiAzNTBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC41KTtcclxuICB9XHJcbiAgXHJcbiAgLmV4YW1wbGUtc2lkZW5hdi1jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgfVxyXG4gIFxyXG4gIC5leGFtcGxlLXNpZGVuYXYge1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICB9Il19 */\"","module.exports = \"<mat-drawer-container class=\\\"example-container\\\" autosize >\\n <button mat-raised-button color=\\\"primary\\\" (click)=\\\"addParam()\\\">Add Condition</button>\\n <button mat-button color=\\\"primary\\\" (click)=\\\"drawer.toggle()\\\" \\n matTooltip=\\\"Open intrinsic functions side panel\\\">Intrinsic Functions</button>\\n <div *ngFor=\\\"let i of tagArray\\\">\\n <app-conditions></app-conditions>\\n </div>\\n <mat-drawer #drawer class=\\\"example-sidenav\\\" mode=\\\"side\\\" position=\\\"end\\\">\\n <app-intrinsic-functions class=\\\"example-card\\\" ></app-intrinsic-functions>\\n </mat-drawer>\\n\\n</mat-drawer-container>\\n\\n<!-- <mat-accordion>\\n <mat-expansion-panel class=\\\"example-card\\\" >\\n <mat-expansion-panel-header>\\n <mat-panel-title>Intrinsic Functions</mat-panel-title>\\n <mat-panel-description>Use Function manager to generate a function for the conditions.</mat-panel-description>\\n </mat-expansion-panel-header>\\n <app-intrinsic-functions class=\\\"example-card\\\" ></app-intrinsic-functions>\\n </mat-expansion-panel>\\n</mat-accordion> -->\\n\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-conditions-tab',\n templateUrl: './conditions-tab.component.html',\n styleUrls: ['./conditions-tab.component.css']\n})\nexport class ConditionsTabComponent implements OnInit {\n\n tagCount=0;\n tagArray=[];\n constructor() { }\n\n ngOnInit() {\n }\n\n addParam(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n\n}\n","module.exports = \".example-card {\\r\\n max-width: 400px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29uZGl0aW9ucy9jb25kaXRpb25zLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxnQkFBZ0I7RUFDbEIiLCJmaWxlIjoic3JjL2FwcC9jb25kaXRpb25zL2NvbmRpdGlvbnMuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNhcmQge1xyXG4gICAgbWF4LXdpZHRoOiA0MDBweDtcclxuICB9Il19 */\"","module.exports = \"\\n<div *ngIf=\\\"isPresent\\\">\\n <mat-accordion>\\n <mat-expansion-panel>\\n <mat-expansion-panel-header>\\n <mat-panel-title>\\n Condition\\n </mat-panel-title>\\n <mat-panel-description>\\n {{conname.value}}\\n </mat-panel-description>\\n </mat-expansion-panel-header>\\n <mat-card class=\\\"example-card\\\">Condition\\n <form action=\\\"\\\" #conform=\\\"ngForm\\\" (submit)=\\\"onDone(conform.value)\\\">\\n <!-- <input type=\\\"hidden\\\" ngModel name=\\\"index\\\" [ngModel]=\\\"i\\\" ><br> -->\\n <input type=\\\"text\\\" #conname name=\\\"resourceName\\\" placeholder=\\\"Logical ID\\\" ngModel\\n matTooltip=\\\"Logical ID of the condition, a String value\\\" required > <br>\\n <input type=\\\"text\\\" name=\\\"func\\\" placeholder=\\\"Intrinsic Function\\\" ngModel\\n matTooltip=\\\"Use any of these functions = Fn::And, Fn::Equals, Fn::If, \\n Fn::Not, Fn::Or\\\" required ><br>\\n <button mat-icon-button type=\\\"submit\\\" [disabled]=\\\"conform.invalid\\\">\\n <mat-icon>done</mat-icon>\\n </button>\\n <button mat-icon-button type=\\\"button\\\" (click)=\\\"onRemove(conform.value)\\\">\\n <mat-icon>remove_circle</mat-icon>\\n </button>\\n </form>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button \\n matTooltip=\\\"copy json\\\" \\n (click)=\\\"copyToClipboard(conform.value)\\\"> \\n <mat-icon>file_copy</mat-icon> \\n </button>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button color=\\\"accent\\\"\\n matTooltip=\\\"copy yaml\\\" \\n (click)=\\\"copyToYamlClipboard(conform.value)\\\"> \\n <mat-icon>file_copy</mat-icon> \\n </button>\\n </mat-card>\\n </mat-expansion-panel>\\n </mat-accordion>\\n</div>\\n\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n@Component({\n selector: 'app-conditions',\n templateUrl: './conditions.component.html',\n styleUrls: ['./conditions.component.css']\n})\nexport class ConditionsComponent implements OnInit {\n tagCount=0;\n tagArray=[];\n isPresent=true;\n isCopyReady=false;\n constructor(public result:JsonResultService, public util:UsefulUtilsService) { }\n\n ngOnInit() {\n }\n\n addCondition(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n //console.log(this.tagCount);\n //console.log(this.tagArray);\n }\n\n onRemove(value){\n this.isPresent=false;\n if(value.resourceName) this.result.jsonresult.Conditions[value.resourceName]=undefined;\n }\n\n onDone(value){\n if (this.result.jsonresult.Conditions==undefined){\n this.result.jsonresult.Conditions={}\n }\n this.result.jsonresult.Conditions[value.resourceName]=this.util.getProperJson(value.func);\n this.isCopyReady=true;\n }\n\n onReset(){\n this.isPresent=false;\n this.tagCount=0;\n this.tagArray=[];\n this.result.jsonresult.Conditions={}\n }\n\n copyToClipboard(value){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.result.jsonresult.Conditions[value.resourceName]);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n copyToYamlClipboard(value){\n this.util.copyToClipboardYaml(this.result.jsonresult.Conditions[value.resourceName]);\n }\n\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2VjMi1pbml0LWNvbmZpZy10YWIvZWMyLWluaXQtY29uZmlnLXRhYi5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<p>\\n ec2-init-config-tab works!\\n</p>\\n\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-ec2-init-config-tab',\n templateUrl: './ec2-init-config-tab.component.html',\n styleUrls: ['./ec2-init-config-tab.component.css']\n})\nexport class Ec2InitConfigTabComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \".example-card {\\r\\n max-width: 400px;\\r\\n }\\r\\n\\r\\n .example-container {\\r\\n width: 1200px;\\r\\n height: 350px;\\r\\n border: 1px solid rgba(0, 0, 0, 0.5);\\r\\n }\\r\\n\\r\\n .example-sidenav-content {\\r\\n display: flex;\\r\\n height: 100%;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n }\\r\\n\\r\\n .example-sidenav {\\r\\n padding: 20px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWMyLWluaXQvZWMyLWluaXQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGdCQUFnQjtFQUNsQjs7RUFFQTtJQUNFLGFBQWE7SUFDYixhQUFhO0lBQ2Isb0NBQW9DO0VBQ3RDOztFQUVBO0lBQ0UsYUFBYTtJQUNiLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsdUJBQXVCO0VBQ3pCOztFQUVBO0lBQ0UsYUFBYTtFQUNmIiwiZmlsZSI6InNyYy9hcHAvZWMyLWluaXQvZWMyLWluaXQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNhcmQge1xyXG4gICAgbWF4LXdpZHRoOiA0MDBweDtcclxuICB9XHJcblxyXG4gIC5leGFtcGxlLWNvbnRhaW5lciB7XHJcbiAgICB3aWR0aDogMTIwMHB4O1xyXG4gICAgaGVpZ2h0OiAzNTBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC41KTtcclxuICB9XHJcbiAgXHJcbiAgLmV4YW1wbGUtc2lkZW5hdi1jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgfVxyXG4gIFxyXG4gIC5leGFtcGxlLXNpZGVuYXYge1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICB9Il19 */\"","module.exports = \"\\n<mat-drawer-container class=\\\"example-container\\\" autosize >\\n <button mat-button color=\\\"primary\\\" (click)=\\\"drawer.toggle()\\\">Intrinsic Functions </button>\\n <mat-drawer #drawer class=\\\"example-sidenav\\\" mode=\\\"side\\\" position=\\\"end\\\">\\n <app-intrinsic-functions class=\\\"example-card\\\" ></app-intrinsic-functions>\\n </mat-drawer>\\n\\n\\n\\n<!-- <mat-accordion>\\n <mat-expansion-panel>\\n <mat-expansion-panel-header>\\n <mat-panel-title>\\n Intrinsic Functions\\n </mat-panel-title>\\n <mat-panel-description>\\n Use various functions to generate the Metadata objects.\\n </mat-panel-description>\\n </mat-expansion-panel-header>\\n <app-intrinsic-functions></app-intrinsic-functions>\\n </mat-expansion-panel>\\n</mat-accordion>\\n<br> -->\\n\\n\\n<mat-accordion>\\n <mat-expansion-panel>\\n <mat-expansion-panel-header>\\n <mat-panel-title>\\n Config\\n </mat-panel-title>\\n <mat-panel-description>\\n Generate AWS::CloudFormation::Init config Object. Configset currently is not supported.\\n </mat-panel-description>\\n </mat-expansion-panel-header>\\n\\n <mat-chip color=\\\"primary\\\" >Sources</mat-chip><br>\\n<mat-card class=\\\"example-card\\\" >\\n <button mat-stroked-button (click)=\\\"addSource()\\\" >Add sources </button><br>\\n <form #sourceform=\\\"ngForm\\\" (submit)=\\\"onSourcesDone(sourceform.value)\\\">\\n <div *ngFor=\\\"let i of sourceArray\\\" >\\n <input type=\\\"text\\\" name=\\\"sourcekey{{i}}\\\" ngModel placeholder=\\\"sourceKey{{i}}\\\"\\n matTooltip=\\\"Target directory to unpack. e.g. /etc/puppet\\\">\\n <input type=\\\"text\\\" name=\\\"sourcevalue{{i}}\\\" ngModel placeholder=\\\"sourceValue{{i}}\\\"\\n matTooltip=\\\"an archive file location e.g. https://github.com/user1/cfn-demo/tarball/master\\\">\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n\\n<mat-chip color=\\\"primary\\\" >Packages</mat-chip><br>\\n\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addAptPackage()\\\" >Apt Packages </button><br>\\n <form #aptform=\\\"ngForm\\\" (submit)=\\\"onAptDone(aptform.value)\\\">\\n <div *ngFor=\\\"let i of aptArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" ngModel placeholder=\\\"key{{i}}\\\" [matTooltip]=\\\"apt\\\" >\\n <input type=\\\"text\\\" name=\\\"value{{i}}\\\" ngModel placeholder=\\\"value{{i}} \\\"><br>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addRpmPackage()\\\" >RPM Packages </button><br>\\n <form #rpmform=\\\"ngForm\\\" (submit)=\\\"onRpmDone(rpmform.value)\\\">\\n <div *ngFor=\\\"let i of rpmArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" ngModel placeholder=\\\"key{{i}}\\\" [matTooltip]=\\\"rpm\\\" >\\n <input type=\\\"text\\\" name=\\\"value{{i}}\\\" ngModel placeholder=\\\"value{{i}} \\\"><br>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addMsiPackage()\\\" >MSI Packages </button><br>\\n <form #msiform=\\\"ngForm\\\" (submit)=\\\"onMsiDone(msiform.value)\\\">\\n <div *ngFor=\\\"let i of msiArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" ngModel placeholder=\\\"key{{i}}\\\" [matTooltip]=\\\"msi\\\" >\\n <input type=\\\"text\\\" name=\\\"value{{i}}\\\" ngModel placeholder=\\\"value{{i}} \\\"><br>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addPythonPackage()\\\" >Python Packages </button><br>\\n <form #pythonform=\\\"ngForm\\\" (submit)=\\\"onPythonDone(pythonform.value)\\\">\\n <div *ngFor=\\\"let i of pythonArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" ngModel placeholder=\\\"key{{i}}\\\" [matTooltip]=\\\"python\\\" >\\n <input type=\\\"text\\\" name=\\\"value{{i}}\\\" ngModel placeholder=\\\"value{{i}} \\\"><br>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addYumPackage()\\\" >YUM Packages </button><br>\\n <form #yumform=\\\"ngForm\\\" (submit)=\\\"onYumDone(yumform.value)\\\">\\n <div *ngFor=\\\"let i of yumArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" ngModel placeholder=\\\"key{{i}}\\\" [matTooltip]=\\\"yum\\\" >\\n <input type=\\\"text\\\" name=\\\"value{{i}}\\\" ngModel placeholder=\\\"value{{i}} \\\"><br>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addRubyGemsPackage()\\\" >Rubygems Packages </button><br>\\n <form #rubyform=\\\"ngForm\\\" (submit)=\\\"onRubyGemsDone(rubyform.value)\\\">\\n <div *ngFor=\\\"let i of rubygemsArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" ngModel placeholder=\\\"key{{i}}\\\" [matTooltip]=\\\"rubygems\\\" >\\n <input type=\\\"text\\\" name=\\\"value{{i}}\\\" ngModel placeholder=\\\"value{{i}} \\\"><br>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n\\n<mat-chip>Users</mat-chip><br>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addUsers()\\\" >User</button><br>\\n <form #userform=\\\"ngForm\\\" (submit)=\\\"onUserDone(userform.value)\\\">\\n <div *ngFor=\\\"let i of usersArray\\\" >\\n <input type=\\\"text\\\" name=\\\"user{{i}}\\\" ngModel placeholder=\\\"user{{i}}\\\"> <br>\\n <input type=\\\"text\\\" name=\\\"homedir{{i}}\\\" ngModel placeholder=\\\"homedir{{i}}\\\" [matTooltip]=\\\"homedir\\\" > <br>\\n <input type=\\\"text\\\" name=\\\"uid{{i}}\\\" ngModel placeholder=\\\"uid{{i}}\\\" [matTooltip]=\\\"uid\\\" > <br>\\n <input type=\\\"text\\\" name=\\\"groups{{i}}\\\" ngModel placeholder=\\\"groups{{i}}\\\" [matTooltip]=\\\"groups\\\" >\\n <mat-divider></mat-divider>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n\\n<mat-chip>Services</mat-chip>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addServices()\\\" >Services</button><br>\\n <form #serviceform=\\\"ngForm\\\" (submit)=\\\"onServiceDone(serviceform.value)\\\">\\n <div *ngFor=\\\"let i of servicesArray\\\" >\\n <input type=\\\"text\\\" name=\\\"type{{i}}\\\" ngModel placeholder=\\\"sysvinit | windows\\\"> <br>\\n <input type=\\\"text\\\" name=\\\"name{{i}}\\\" ngModel placeholder=\\\"Service Name\\\"> <br>\\n <input type=\\\"text\\\" name=\\\"ensureRunning{{i}}\\\" ngModel placeholder=\\\"ensureRunning\\\" [matTooltip]=\\\"ensureRunning\\\" > <br>\\n <input type=\\\"text\\\" name=\\\"enabled{{i}}\\\" ngModel placeholder=\\\"Enabled\\\" [matTooltip]=\\\"enabled\\\" > <br>\\n <input type=\\\"text\\\" name=\\\"files{{i}}\\\" ngModel placeholder=\\\"Files\\\" [matTooltip]=\\\"files\\\" > <br>\\n <input type=\\\"text\\\" name=\\\"sources{{i}}\\\" ngModel placeholder=\\\"Sources\\\" [matTooltip]=\\\"sources\\\" > <br>\\n <input type=\\\"text\\\" name=\\\"packages{{i}}\\\" ngModel placeholder=\\\"Packages\\\" [matTooltip]=\\\"packages\\\" > <br>\\n <input type=\\\"text\\\" name=\\\"commands{{i}}\\\" ngModel placeholder=\\\"Commands\\\" [matTooltip]=\\\"commands\\\" > <br>\\n <mat-divider></mat-divider>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n\\n<mat-chip>Groups</mat-chip>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addGroups()\\\" >Group</button><br>\\n <form #grpform=\\\"ngForm\\\" (submit)=\\\"onGroupDone(grpform.value)\\\">\\n <div *ngFor=\\\"let i of groupsArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" ngModel placeholder=\\\"GroupName\\\">\\n <input type=\\\"text\\\" name=\\\"value{{i}}\\\" ngModel placeholder=\\\"Gid\\\" [matTooltip]=\\\"gid\\\" >\\n <mat-divider></mat-divider>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n\\n<mat-chip>Files</mat-chip>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addFiles()\\\" >file</button><br>\\n <form #fileform=\\\"ngForm\\\" (submit)=\\\"onFilesDone(fileform.value)\\\">\\n <div *ngFor=\\\"let i of filesArray\\\" >\\n <input type=\\\"text\\\" name=\\\"filename{{i}}\\\" ngModel placeholder=\\\"filename\\\">\\n <input type=\\\"text\\\" name=\\\"content{{i}}\\\" ngModel placeholder=\\\"content\\\" [matTooltip]=\\\"content\\\" >\\n <input type=\\\"text\\\" name=\\\"source{{i}}\\\" ngModel placeholder=\\\"source\\\" [matTooltip]=\\\"source\\\" >\\n <input type=\\\"text\\\" name=\\\"encoding{{i}}\\\" ngModel placeholder=\\\"encoding\\\" [matTooltip]=\\\"encoding\\\" >\\n <input type=\\\"text\\\" name=\\\"group{{i}}\\\" ngModel placeholder=\\\"group\\\" [matTooltip]=\\\"group\\\" >\\n <input type=\\\"text\\\" name=\\\"owner{{i}}\\\" ngModel placeholder=\\\"owner\\\" [matTooltip]=\\\"owner\\\" >\\n <input type=\\\"text\\\" name=\\\"mode{{i}}\\\" ngModel placeholder=\\\"mode\\\" [matTooltip]=\\\"mode\\\" >\\n <input type=\\\"text\\\" name=\\\"authentication{{i}}\\\" ngModel placeholder=\\\"authentication\\\" [matTooltip]=\\\"authentication\\\" >\\n <input type=\\\"text\\\" name=\\\"context{{i}}\\\" ngModel placeholder=\\\"context\\\" [matTooltip]=\\\"context\\\" >\\n <mat-divider></mat-divider>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n\\n<mat-chip>Commands</mat-chip>\\n<mat-card class=\\\"example-card\\\">\\n <button mat-stroked-button (click)=\\\"addCommands()\\\" >commands</button><br>\\n <form #cmdform=\\\"ngForm\\\" (submit)=\\\"onCommandsDone(cmdform.value)\\\">\\n <div *ngFor=\\\"let i of commandsArray\\\" >\\n <input type=\\\"text\\\" name=\\\"commandname{{i}}\\\" ngModel placeholder=\\\"Command name\\\">\\n <input type=\\\"text\\\" name=\\\"command{{i}}\\\" ngModel placeholder=\\\"command\\\" [matTooltip]=\\\"command\\\" >\\n <input type=\\\"text\\\" name=\\\"env{{i}}\\\" ngModel placeholder=\\\"Env\\\" [matTooltip]=\\\"env\\\" >\\n <input type=\\\"text\\\" name=\\\"cwd{{i}}\\\" ngModel placeholder=\\\"cwd\\\" [matTooltip]=\\\"cwd\\\" >\\n <input type=\\\"text\\\" name=\\\"test{{i}}\\\" ngModel placeholder=\\\"test\\\" [matTooltip]=\\\"test\\\" >\\n <input type=\\\"text\\\" name=\\\"ignoreErrors{{i}}\\\" ngModel placeholder=\\\"ignoreErrors\\\" [matTooltip]=\\\"ignoreErrors\\\" >\\n <input type=\\\"text\\\" name=\\\"wait{{i}}\\\" ngModel placeholder=\\\"waitAfterCompletion\\\" [matTooltip]=\\\"waitAfterCompletion\\\" >\\n <mat-divider></mat-divider>\\n </div>\\n <button mat-icon-button type=\\\"submit\\\" > <mat-icon>done</mat-icon> </button>\\n </form>\\n</mat-card>\\n<button mat-raised-button color=\\\"primary\\\" type=\\\"button\\\" (click)=\\\"onReset()\\\" >Reset</button>\\n\\n </mat-expansion-panel>\\n</mat-accordion>\\n\\n<button mat-icon-button\\n matTooltip=\\\"copy json\\\" \\n (click)=\\\"copyToClipboard()\\\"> \\n <mat-icon>file_copy</mat-icon> \\n</button>\\n\\n<button mat-icon-button color=\\\"accent\\\" \\n matTooltip=\\\"copy yaml\\\" \\n (click)=\\\"copyToYamlClipboard()\\\"> \\n <mat-icon>file_copy</mat-icon> \\n</button>\\n\\n<pre> {{myobj|json}} </pre>\\n\\n</mat-drawer-container>\"","import { Component, OnInit } from '@angular/core';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n@Component({\n selector: 'app-ec2-init',\n templateUrl: './ec2-init.component.html',\n styleUrls: ['./ec2-init.component.css']\n})\nexport class EC2InitComponent implements OnInit {\n\n constructor(public util:UsefulUtilsService) { }\n\n ngOnInit() {\n }\n myobj={\n \"AWS::CloudFormation::Init\":{\n \"config\":{\n }\n }\n }\n //sources\n sourceCount=0; sourceArray=[];\n //packages\n aptCount=0; aptArray=[];\n msiCount=0; msiArray=[];\n pythonCount=0; pythonArray=[];\n rpmCount=0; rpmArray=[];\n rubygemsCount=0; rubygemsArray=[];\n yumCount=0; yumArray=[];\n\n groupsCount=0;\n groupsArray=[];\n usersCount=0;\n usersArray=[];\n filesCount=0;\n filesArray=[];\n commandsCount=0;\n commandsArray=[];\n servicesCount=0;\n servicesArray=[];\n\n //packages\n apt=\"apt packages as a json object. each package is specified as a package name and a list of versions. The version can be a string, a list of versions, or an empty string or list. An empty string or list indicates that you want the latest version. For rpm manager, the version is specified as a path to a file on disk or a URL.\"\n msi=\"msi packages as a json object. On Windows systems, the packages key supports only the MSI installer.\"\n python=\"python packages.\"\n rpm=\"rpm packages as a json object. each package is specified as a package name and a list of versions. The version can be a string, a list of versions, or an empty string or list. An empty string or list indicates that you want the latest version. For rpm manager, the version is specified as a path to a file on disk or a URL.\"\n rubygems=\"rubygems as a json object. each package is specified as a package name and a list of versions. The version can be a string, a list of versions, or an empty string or list. An empty string or list indicates that you want the latest version. For rpm manager, the version is specified as a path to a file on disk or a URL.\"\n yum=\"yum packages as a json object. each package is specified as a package name and a list of versions. The version can be a string, a list of versions, or an empty string or list. An empty string or list indicates that you want the latest version. For rpm manager, the version is specified as a path to a file on disk or a URL.\"\n\n //users\n groups=\"A list of group names. The user will be added to each group in the list.\"\n uid=\"A user ID. The creation process fails if the user name exists with a different user ID. If the user ID is already assigned to an existing user the operating system may reject the creation request.\"\n homedir=\"the user's home directory.\"\n\n //services\n ensureRunning=\"Set to true to ensure that the service is running after cfn-init finishes. Set to false to ensure that the service is not running after cfn-init finishes. Omit this key to make no changes to the service state.\"\n enabled=\"Set to true to ensure that the service will be started automatically upon boot. Set to false to ensure that the service will not be started automatically upon boot. \";\n files=\"A list of files. If cfn-init changes one directly via the files block, this service will be restarted\"\n sources=\"A list of directories. If cfn-init expands an archive into one of these directories, this service will be restarted.\"\n packages=\"A map of package manager to list of package names. If cfn-init installs or updates one of these packages, this service will be restarted.\"\n commands=\"A list of command names. If cfn-init runs the specified command, this service will be restarted.\"\n\n //groups\n gid=\"If a group ID is specified, and the group already exists by name, the group creation will fail. If another group has the specified group ID, the OS may reject the group creation.\"\n\n //commands\n command=\"Required. Either an array or a string specifying the command to run. If you use an array, you do not need to escape space characters or enclose command parameters in quotes. Don't use the array to specify multiple commands.\"\n env=\"Optional. Sets environment variables for the command. This property overwrites, rather than appends, the existing environment.\"\n cwd=\"Optional. The working directory\"\n test=\"Optional. A test command that determines whether cfn-init runs commands that are specified in the command key. If the test passes, cfn-init runs the commands. The cfn-init script runs the test in a command interpreter, such as Bash or cmd.exe. Whether a test passes depends on the exit code that the interpreter returns. For Linux, the test command must return an exit code of 0 for the test to pass. For Windows, the test command must return an %ERRORLEVEL% of 0.\"\n ignoreErrors=\"Optional. A Boolean value that determines whether cfn-init continues to run if the command in contained in the command key fails (returns a non-zero value). Set to true if you want cfn-init to continue running even if the command fails. Set to false if you want cfn-init to stop running if the command fails. The default value is false.\"\n waitAfterCompletion=\"Optional. For Windows systems only. Specifies how long to wait (in seconds) after a command has finished in case the command causes a reboot. The default value is 60 seconds and a value of 'forever' directs cfn-init to exit and resume only after the reboot is complete. Set this value to 0 if you do not want to wait for every command.\"\n\n //files\n content=\"Either a string or a properly formatted JSON object. If you use a JSON object as your content, the JSON will be written to a file on disk. Any intrinsic functions such as Fn::GetAtt or Ref are evaluated before the JSON object is written to disk. When you create a symlink, specify the symlink target as the content.\"\n file_source=\"A URL to load the file from. This option cannot be specified with the content key.\"\n source=\"A URL to load the file from. This option cannot be specified with the content key.\"\n encoding=\"The encoding format. Only used if the content is a string. Encoding is not applied if you are using a source. Valid values: plain | base64\"\n group=\"The name of the owning group for this file. Not supported for Windows systems.\"\n owner=\"The name of the owning user for this file. Not supported for Windows systems.\"\n mode=\"A six-digit octal value representing the mode for this file. Not supported for Windows systems. Use the first three digits for symlinks and the last three digits for setting permissions. To create a symlink, specify 120xxx, where xxx defines the permissions of the target file. To specify permissions for a file, use the last three digits, such as 000644.\"\n authentication=\"The name of an authentication method to use. This overrides any default authentication. You can use this property to select an authentication method you define with the AWS::CloudFormation::Authentication resource.\"\n context=\"Specifies a context for files that are to be processed as Mustache templates. To use this key, you must have installed aws-cfn-bootstrap 1.3-11 or later as well as pystache.\"\n\n //Sources\n addSource(){\n this.sourceCount+=1; this.sourceArray.push(this.sourceCount);\n }\n\n //packages\n addAptPackage(){\n this.aptCount+=1; this.aptArray.push(this.aptCount);\n }\n\n addMsiPackage(){\n this.msiCount+=1; this.msiArray.push(this.msiCount);\n }\n\n addPythonPackage(){\n this.pythonCount+=1; this.pythonArray.push(this.pythonCount);\n }\n\n addRpmPackage(){\n this.rpmCount+=1; this.rpmArray.push(this.rpmCount);\n }\n\n addRubyGemsPackage(){\n this.rubygemsCount+=1; this.rubygemsArray.push(this.rubygemsCount);\n }\n\n addYumPackage(){\n this.yumCount+=1; this.yumArray.push(this.yumCount);\n }\n //users\n addUsers(){\n this.usersCount+=1; this.usersArray.push(this.usersCount);\n }\n\n //services\n addServices(){\n this.servicesCount+=1; this.servicesArray.push(this.servicesCount);\n }\n\n //group\n addGroups(){\n this.groupsCount+=1; this.groupsArray.push(this.groupsCount);\n }\n\n //files\n addFiles(){\n this.filesCount+=1; this.filesArray.push(this.filesCount);\n }\n\n //commands\n addCommands(){\n this.commandsCount+=1; this.commandsArray.push(this.commandsCount);\n }\n\n getArray(val){\n try{\n if((val as String).includes(\"{\")){\n var kk=((val as String).split(\";\"));\n var mm =[]\n kk.forEach((i)=>{\n if((i as String).includes(\"{\")){\n mm.push(JSON.parse(i));\n }\n else{\n mm.push(i);\n }\n })\n return mm; \n }\n else{\n return val.length!=0?((val as String).split(\";\")):undefined\n }\n }\n catch(error){\n alert(\"Oops! An Error occurred. Please check the input field type\")\n } \n }\n\n\n onSourcesDone(value){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"sources\"]={};\n this.sourceArray.forEach((i)=>{\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"sources\"][value[`sourcekey${i}`]]=this.util.getProperJson(value[`sourcevalue${i}`]);\n })\n }\n\n onAptDone(value){\n if(this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]==undefined) this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"apt\"]={};\n for(var i=1;i<=this.aptArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"apt\"][value[`key${i}`]]=this.util.getProperJson(value[`value${i}`]);\n }\n }\n\n onRpmDone(value){\n if(this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]==undefined) this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"rpm\"]={};\n for(var i=1;i<=this.rpmArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"rpm\"][value[`key${i}`]]=this.util.getProperJson(value[`value${i}`]);\n }\n }\n\n onMsiDone(value){\n if(this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]==undefined) this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"msi\"]={};\n for(var i=1;i<=this.msiArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"msi\"][value[`key${i}`]]=this.util.getProperJson(value[`value${i}`]);\n }\n }\n\n onYumDone(value){\n if(this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]==undefined) this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"yum\"]={};\n for(var i=1;i<=this.yumArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"yum\"][value[`key${i}`]]=this.getArray(value[`value${i}`]);\n }\n }\n\n onPythonDone(value){\n if(this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]==undefined) this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"python\"]={};\n for(var i=1;i<=this.pythonArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"python\"][value[`key${i}`]]=this.getArray(value[`value${i}`]);\n }\n }\n\n onRubyGemsDone(value){\n if(this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]==undefined) this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"rubygems\"]={};\n for(var i=1;i<=this.rubygemsArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"packages\"][\"rubygems\"][value[`key${i}`]]=this.getArray(value[`value${i}`]);\n }\n }\n\n //Users\n onUserDone(value){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"users\"]={};\n for(var i=1;i<=this.usersArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"users\"][value[`user${i}`]]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"users\"][value[`user${i}`]][\"groups\"]=this.util.getArray(value[`groups${i}`]);\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"users\"][value[`user${i}`]][\"uid\"]=this.util.getProperJson(value[`uid${i}`]);\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"users\"][value[`user${i}`]][\"homeDir\"]=this.util.getProperJson(value[`homedir${i}`]);\n }\n }\n\n onServiceDone(value){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"]={};\n for(var i=1;i<=this.servicesArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]]={}\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]][value[`name${i}`]]={};\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]][value[`name${i}`]][\"ensureRunning\"]=this.util.getProperJson(value[`ensureRunning${i}`]);\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]][value[`name${i}`]][\"enabled\"]=this.util.getProperJson(value[`enabled${i}`]);\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]][value[`name${i}`]][\"files\"]=this.util.getArray(value[`files${i}`]);\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]][value[`name${i}`]][\"sources\"]=this.util.getArray(value[`sources${i}`]);\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]][value[`name${i}`]][\"commands\"]=this.util.getArray(value[`commands${i}`]);\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"services\"][value[`type${i}`]][value[`name${i}`]][\"packages\"]=this.util.getProperJson(value[`packages${i}`]); \n } \n }\n\n onGroupDone(value){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"groups\"]={};\n for(var i=1;i<=this.groupsArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"groups\"][value[`key${i}`]]={\n \"gid\":this.util.getProperJson(value[`value${i}`])\n }\n\n }\n }\n\n onFilesDone(value){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"files\"]={};\n for(var i=1;i<=this.filesArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"files\"][value[`filename${i}`]]={\n \"content\":this.util.doUnescape(this.util.getProperJson(value[`content${i}`])),\n \"source\":this.util.getProperJson(value[`source${i}`]),\n \"encoding\":this.util.getProperJson(value[`encoding${i}`]),\n \"group\":this.util.getProperJson(value[`group${i}`]),\n \"owner\":this.util.getProperJson(value[`owner${i}`]),\n \"mode\":this.util.getProperJson(value[`mode${i}`]),\n \"authentication\":this.util.getProperJson(value[`authentication${i}`]),\n \"context\":this.util.getProperJson(value[`context${i}`])\n }\n }\n }\n\n onCommandsDone(value){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"commands\"]={};\n for(var i=1;i<=this.commandsArray.length;i++){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"][\"commands\"][value[`commandname${i}`]]={\n \"command\":this.util.getProperJson(value[`command${i}`]),\n \"env\":this.util.getProperJson(value[`env${i}`]),\n \"cwd\":this.util.getProperJson(value[`cwd${i}`]),\n \"test\":this.util.getProperJson(value[`test${i}`]),\n \"ignoreErrors\":this.util.getProperJson(value[`ignoreErrors${i}`]),\n \"waitAfterCompletion\":this.util.getProperJson(value[`wait${i}`])\n }\n }\n }\n\n onReset(){\n this.myobj[\"AWS::CloudFormation::Init\"][\"config\"]={}\n }\n\n copyToClipboard(){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.myobj);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n copyToYamlClipboard(){\n this.util.copyToClipboardYaml(this.myobj);\n }\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2Z1bmN0aW9ucy10YWIvZnVuY3Rpb25zLXRhYi5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<button mat-raised-button color=\\\"primary\\\" (click)=\\\"addParam()\\\"> <mat-icon>add</mat-icon> </button><br>\\n<div *ngFor=\\\"let i of tagArray\\\">\\n <app-intrinsic-functions></app-intrinsic-functions>\\n</div>\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-functions-tab',\n templateUrl: './functions-tab.component.html',\n styleUrls: ['./functions-tab.component.css']\n})\nexport class FunctionsTabComponent implements OnInit {\n\n tagCount=1;\n tagArray=[1];\n\n ngOnInit() {\n }\n\n addParam(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n}\n","module.exports = \".example-card {\\r\\n width: 320px;\\r\\n height: 350px;\\r\\n float: left;\\r\\n padding-bottom: 10px;\\r\\n padding-top: 10px;\\r\\n padding-left: 10px;\\r\\n padding-right: 10px;\\r\\n margin-left: 10px;\\r\\n margin-right: 10px;\\r\\n margin-top: 10px;\\r\\n margin-bottom: 10px;\\r\\n }\\r\\n\\r\\n .example-header-image {\\r\\n background-size: cover;\\r\\n background-image: none\\r\\n }\\r\\n\\r\\n .example-video{\\r\\n padding-left: 10px;\\r\\n padding-right: 10px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG93LXRvL2hvdy10by5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksWUFBWTtJQUNaLGFBQWE7SUFDYixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtFQUNyQjs7RUFFQTtJQUNFLHNCQUFzQjtJQUN0QjtFQUNGOztFQUVBO0lBQ0Usa0JBQWtCO0lBQ2xCLG1CQUFtQjtFQUNyQiIsImZpbGUiOiJzcmMvYXBwL2hvdy10by9ob3ctdG8uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNhcmQge1xyXG4gICAgd2lkdGg6IDMyMHB4O1xyXG4gICAgaGVpZ2h0OiAzNTBweDtcclxuICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XHJcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcclxuICAgIHBhZGRpbmctbGVmdDogMTBweDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgLmV4YW1wbGUtaGVhZGVyLWltYWdlIHtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lXHJcbiAgfVxyXG5cclxuICAuZXhhbXBsZS12aWRlb3tcclxuICAgIHBhZGRpbmctbGVmdDogMTBweDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgfSJdfQ== */\"","module.exports = \"\\n<br>\\n\\n\\n <mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Parameters</mat-card-title>\\n <mat-card-subtitle>See how to create parameters</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/jPqO_1u3dmI\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n Also see how the regex pattern for 'AllowedPattern' doesn't need backslash characters escaped. Escape characters will be automatically added by CloudKast.\\n </p>\\n </mat-card-content>\\n </mat-card> \\n\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Parameters</mat-card-title>\\n <mat-card-subtitle>See how to create parameters</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/jPqO_1u3dmI\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n Also see how the regex pattern for 'AllowedPattern' doesn't need backslash characters escaped. Escape characters will be automatically added by CloudKast.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Mappings</mat-card-title>\\n <mat-card-subtitle>See how to create Mappings.</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/6gvqy8gPc7A\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n Creating Mapping is a dreadful task, but with CloudKast it's not dreadful anymore.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Conditions</mat-card-title>\\n <mat-card-subtitle>See how to create Conditions.</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/T2udV-Q5q3U\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n Also see how to make use of 'Intrinsic Functions' widget to create function values. Functions\\n e.g. Fn::GetAttrs, Ref get autopopulated with Parameters and Resources already defined.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Simple Resources</mat-card-title>\\n <mat-card-subtitle>resources with primitive properties.</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/KbiyZ9irzeY\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n Here's an example of how to create a simple AWS resource (one that doesn't have properties that are custom objects.). Make a note how required, optional and conditional properties are highlighted different using info icons.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Complex Resources</mat-card-title>\\n <mat-card-subtitle>resources with custom properties.</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/vVnW9tkdPOU\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n See how to make use of 'Property Dealer' widget to create properties that are custom objects. Make a note of how a property of type array delimits items using semicolon.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Validate</mat-card-title>\\n <mat-card-subtitle>Validate template</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/cKJrx3k-TW4\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n A secure way of validating your template using AWS account credentials. Template is uploaded \\n with authenticated-read access to a bucket enabled for CORS.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Import</mat-card-title>\\n <mat-card-subtitle>Import an existing template</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/on5fWt3ALEM\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n See how to import an existing template for editing (removal, addition, modification) of sections\\n and resources and how to save the updated template.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n<mat-card class=\\\"example-card\\\">\\n <mat-card-header>\\n <mat-card-title>Functions</mat-card-title>\\n <mat-card-subtitle>How to create functions</mat-card-subtitle>\\n </mat-card-header>\\n <iframe width=\\\"300\\\" height=\\\"200\\\" src=\\\"https://www.youtube.com/embed/eh-ntqUT1k0\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n <mat-card-content>\\n <p>\\n See how to create intrinsic functions e.g. how to create UserData property of \\n an EC2 instance.\\n </p>\\n </mat-card-content>\\n</mat-card>\\n\\n\\n\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-how-to',\n templateUrl: './how-to.component.html',\n styleUrls: ['./how-to.component.css']\n})\nexport class HowToComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2ltcG9ydC10ZW1wbGF0ZS9pbXBvcnQtdGVtcGxhdGUuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<button type=\\\"button\\\" mat-raised-button color=\\\"primary\\\" (click)=\\\"jsonfile.click()\\\"\\nmatTooltip=\\\"Please select the cloudformation template json file\\\" > Import JSON file </button> <br>\\n<input hidden #jsonfile type=\\\"file\\\" (change)=\\\"onFileAdd($event.target.files)\\\"> <br>\\n<mat-accordion>\\n<mat-card>\\n <mat-expansion-panel *ngIf=\\\"fileImported\\\">\\n <mat-expansion-panel-header>\\n <mat-panel-title>Add new</mat-panel-title>\\n <mat-panel-description>Add new Parameter/Condition/Mapping/Resource/Output</mat-panel-description>\\n </mat-expansion-panel-header>\\n\\n <div *ngIf=\\\"fileImported\\\">\\n <input type=\\\"text\\\" #paramname placeholder=\\\"Add a new Parameter\\\" name=\\\"paramname\\\" ngModel >\\n <button [disabled]=\\\"paramname.value==''\\\" mat-icon-button (click)=\\\"addParam(paramname.value)\\\" > <mat-icon>add</mat-icon> </button>\\n </div>\\n <div *ngIf=\\\"fileImported\\\">\\n <input type=\\\"text\\\" #mapname placeholder=\\\"Add a new Mapping\\\" name=\\\"mapname\\\" ngModel >\\n <button [disabled]=\\\"mapname.value==''\\\" mat-icon-button (click)=\\\"addMapping(mapname.value)\\\" > <mat-icon>add</mat-icon> </button>\\n </div>\\n <div *ngIf=\\\"fileImported\\\">\\n <input type=\\\"text\\\" #conname placeholder=\\\"Add a new Condition\\\" name=\\\"conname\\\" ngModel >\\n <button [disabled]=\\\"conname.value==''\\\" mat-icon-button (click)=\\\"addCondition(conname.value)\\\" > <mat-icon>add</mat-icon> </button>\\n </div> \\n <div *ngIf=\\\"fileImported\\\">\\n <input type=\\\"text\\\" #resname placeholder=\\\"Add a new Resource\\\" name=\\\"resname\\\" ngModel >\\n <button [disabled]=\\\"resname.value==''\\\" mat-icon-button (click)=\\\"addResource(resname.value)\\\" > <mat-icon>add</mat-icon> </button>\\n </div>\\n <div *ngIf=\\\"fileImported\\\">\\n <input type=\\\"text\\\" #outname placeholder=\\\"Add a new Output\\\" name=\\\"outname\\\" ngModel >\\n <button [disabled]=\\\"outname.value==''\\\" mat-icon-button (click)=\\\"addOutput(outname.value)\\\" > <mat-icon>add</mat-icon> </button>\\n </div>\\n </mat-expansion-panel>\\n <mat-divider></mat-divider>\\n\\n <mat-expansion-panel *ngIf=\\\"fileImported\\\">\\n <mat-expansion-panel-header>\\n <mat-panel-title>Parameters:</mat-panel-title>\\n <mat-panel-description> Number of Parameters : {{getSectionCount(selProp['Parameters'])}} </mat-panel-description>\\n </mat-expansion-panel-header>\\n <form *ngIf=\\\"fileImported\\\" #paramform=\\\"ngForm\\\" (submit)=\\\"onParamSubmit(paramform.value)\\\">\\n <div *ngFor=\\\"let i of getKeys(selProp['Parameters'])\\\" >\\n <mat-form-field *ngIf=\\\"isParamRemoved(i)\\\" >\\n <input type=\\\"text\\\" [name]=\\\"i\\\" [placeholder]=\\\"i\\\" [value]=\\\"selProp['Parameters'][i] | json\\\" \\n [matTooltip]=\\\"selProp['Parameters'][i] | json\\\" matInput ngModel>\\n </mat-form-field>\\n <button *ngIf=\\\"isParamRemoved(i)\\\" mat-icon-button (click)=\\\"removeParam(i)\\\" matTooltip=\\\"remove this parameter.\\\" > \\n <mat-icon>remove</mat-icon> \\n </button>\\n </div>\\n <button mat-icon-button color=\\\"primary\\\" type=\\\"submit\\\"> \\n <mat-icon>done</mat-icon>\\n </button>\\n </form> \\n </mat-expansion-panel>\\n <mat-divider></mat-divider>\\n\\n <mat-expansion-panel *ngIf=\\\"fileImported\\\">\\n <mat-expansion-panel-header>\\n <mat-panel-title>Mappings:</mat-panel-title>\\n <mat-panel-description> Number of Mappings : {{getSectionCount(selProp['Mappings'])}} </mat-panel-description>\\n </mat-expansion-panel-header>\\n <form *ngIf=\\\"fileImported\\\" #mapform=\\\"ngForm\\\" (submit)=\\\"onMappingSubmit(mapform.value)\\\">\\n <div *ngFor=\\\"let i of getKeys(selProp['Mappings'])\\\" >\\n <mat-form-field *ngIf=\\\"isMappingRemoved(i)\\\" >\\n <input type=\\\"text\\\" [name]=\\\"i\\\" [placeholder]=\\\"i\\\" [value]=\\\"selProp['Mappings'][i] | json\\\" \\n [matTooltip]=\\\"selProp['Mappings'][i] | json\\\" matInput ngModel>\\n </mat-form-field>\\n <button *ngIf=\\\"isMappingRemoved(i)\\\" mat-icon-button (click)=\\\"removeMapping(i)\\\" matTooltip=\\\"remove this mapping.\\\" > \\n <mat-icon>remove</mat-icon> \\n </button>\\n </div>\\n <button mat-icon-button color=\\\"primary\\\" type=\\\"submit\\\"> \\n <mat-icon>done</mat-icon>\\n </button>\\n </form>\\n </mat-expansion-panel>\\n <mat-divider></mat-divider>\\n\\n <mat-expansion-panel *ngIf=\\\"fileImported\\\">\\n <mat-expansion-panel-header>\\n <mat-panel-title>Conditions:</mat-panel-title>\\n <mat-panel-description> Number of Conditions : {{getSectionCount(selProp['Conditions'])}} </mat-panel-description>\\n </mat-expansion-panel-header> \\n <form *ngIf=\\\"fileImported\\\" #conform=\\\"ngForm\\\" (submit)=\\\"onConditionSubmit(conform.value)\\\">\\n\\n <div *ngFor=\\\"let i of getKeys(selProp['Conditions'])\\\" >\\n <mat-form-field *ngIf=\\\"isConditionRemoved(i)\\\" >\\n <input type=\\\"text\\\" [name]=\\\"i\\\" [placeholder]=\\\"i\\\" [value]=\\\"selProp['Conditions'][i] | json\\\" \\n [matTooltip]=\\\"selProp['Conditions'][i] | json\\\" matInput ngModel>\\n </mat-form-field>\\n <button *ngIf=\\\"isConditionRemoved(i)\\\" mat-icon-button (click)=\\\"removeCondition(i)\\\" matTooltip=\\\"remove this condition.\\\" > \\n <mat-icon>remove</mat-icon> \\n </button>\\n </div>\\n\\n <button mat-icon-button color=\\\"primary\\\" type=\\\"submit\\\"> \\n <mat-icon>done</mat-icon>\\n </button>\\n </form>\\n </mat-expansion-panel>\\n <mat-divider></mat-divider>\\n\\n <mat-expansion-panel *ngIf=\\\"fileImported\\\">\\n <mat-expansion-panel-header>\\n <mat-panel-title>Resources:</mat-panel-title>\\n <mat-panel-description> Number of Resources : {{getSectionCount(selProp['Resources'])}} </mat-panel-description>\\n </mat-expansion-panel-header> \\n <form *ngIf=\\\"fileImported\\\" #resform=\\\"ngForm\\\" (submit)=\\\"onResourceSubmit(resform.value)\\\">\\n <div *ngFor=\\\"let i of getKeys(selProp['Resources'])\\\" >\\n <mat-form-field *ngIf=\\\"isResourceRemoved(i)\\\" >\\n <input type=\\\"text\\\" [name]=\\\"i\\\" [placeholder]=\\\"i\\\" [value]=\\\"selProp['Resources'][i] | json\\\" \\n [matTooltip]=\\\"selProp['Resources'][i] | json\\\" matInput ngModel>\\n </mat-form-field>\\n <button *ngIf=\\\"isResourceRemoved(i)\\\" mat-icon-button (click)=\\\"removeResource(i)\\\" \\n matTooltip=\\\"remove this resource.\\\"> \\n <mat-icon>remove</mat-icon> \\n </button>\\n </div>\\n <button mat-icon-button color=\\\"primary\\\" type=\\\"submit\\\"> \\n <mat-icon>done</mat-icon>\\n </button>\\n </form>\\n</mat-expansion-panel>\\n <mat-divider></mat-divider>\\n\\n <mat-expansion-panel *ngIf=\\\"fileImported\\\"> \\n <mat-expansion-panel-header>\\n <mat-panel-title>Outputs:</mat-panel-title>\\n <mat-panel-description> Number of Outputs : {{getSectionCount(selProp['Outputs'])}} </mat-panel-description>\\n </mat-expansion-panel-header> \\n <form *ngIf=\\\"fileImported\\\" #outform=\\\"ngForm\\\" (submit)=\\\"onOutputSubmit(outform.value)\\\">\\n Outputs: <br>\\n <div *ngFor=\\\"let i of getKeys(selProp['Outputs'])\\\" >\\n <mat-form-field *ngIf=\\\"isOutputRemoved(i)\\\" >\\n <input type=\\\"text\\\" [name]=\\\"i\\\" [placeholder]=\\\"i\\\" [value]=\\\"selProp['Outputs'][i] | json\\\" \\n [matTooltip]=\\\"selProp['Outputs'][i] | json\\\" matInput ngModel>\\n </mat-form-field>\\n <button *ngIf=\\\"isOutputRemoved(i)\\\" mat-icon-button (click)=\\\"removeOutput(i)\\\" matTooltip=\\\"remove this outing.\\\" > \\n <mat-icon>remove</mat-icon> \\n </button>\\n </div>\\n <button mat-icon-button color=\\\"primary\\\" type=\\\"submit\\\"> \\n <mat-icon>done</mat-icon>\\n </button>\\n </form>\\n</mat-expansion-panel>\\n <mat-divider></mat-divider>\\n</mat-card>\\n</mat-accordion> <br>\\n<a *ngIf=\\\"fileImported\\\" mat-button href=\\\"#\\\" (click)=\\\"getDownloadHref()\\\" matTooltip=\\\"Download Template\\\" >\\n <mat-icon>save</mat-icon>\\n</a> <br>\\n\\n\\n<pre> {{ selProp | json}} </pre>\"","import { Component, OnInit } from '@angular/core';\nimport { UsefulUtilsService } from '../useful-utils.service';\nimport { JsonResultService } from '../json-result.service';\n\n\n@Component({\n selector: 'app-import-template',\n templateUrl: './import-template.component.html',\n styleUrls: ['./import-template.component.css']\n})\nexport class ImportTemplateComponent implements OnInit {\n\n constructor(public result:JsonResultService,public util:UsefulUtilsService) { }\n\n ngOnInit() {\n }\n\n selProp={};\n selPropCopy={};\n import_output={};\n fileImported=false;\n\n\n onFileAdd(files){\n let reader = new FileReader();\n reader.readAsText(files[0]);\n reader.onload=()=>{\n this.selProp= JSON.parse(JSON.parse(JSON.stringify(reader.result)));\n this.selPropCopy=this.selProp;\n }\n this.fileImported=true;\n }\n\n getKeys(value){\n if(value!=undefined){\n return (Object.keys(value)).length==0?undefined:Object.keys(value);\n }\n else{\n return [];\n }\n }\n\n getSectionCount(value:Object){\n var i=0;\n this.getKeys(value).forEach((j)=>{\n if(value[j]!=undefined){\n i=i+1;\n }\n });\n return i\n }\n\n getDownloadHref(){\n var str = \"data:text/plain;charset=utf-8,\"\n var data = str + encodeURI(JSON.stringify(this.selProp));\n var link = document.createElement('a');\n link.setAttribute('href', data);\n link.setAttribute('download',\"cloudkast.json\")\n link.click();\n }\n\n //Parameters:\n addParam(value){\n if(this.selProp[\"Parameters\"]==undefined) this.selProp[\"Parameters\"]={};\n this.selProp[\"Parameters\"][value]={};\n }\n\n removeParam(value){\n this.selProp[\"Parameters\"][value]=undefined\n }\n\n isParamRemoved(value){\n if(this.selProp[\"Parameters\"][value]==undefined){\n return false;\n }\n else{\n return true;\n }\n }\n\n onParamSubmit(value){\n if(this.selProp[\"Parameters\"]==undefined) this.selProp[\"Parameters\"]={};\n var valArray=this.getKeys(value);\n valArray.forEach((i)=>{\n if(value[i]==\"\"){\n this.selProp[\"Parameters\"][i]=this.selPropCopy[\"Parameters\"][i];\n } \n else{\n this.selProp[\"Parameters\"][i]=this.util.getProperJson(value[i]);\n }\n \n })\n }\n\n //Mappings:\n\n addMapping(value){\n if(this.selProp[\"Mappings\"]==undefined) this.selProp[\"Mappings\"]={};\n this.selProp[\"Mappings\"][value]={};\n }\n\n removeMapping(value){\n this.selProp[\"Mappings\"][value]=undefined\n }\n\n isMappingRemoved(value){\n if(this.selProp[\"Mappings\"][value]==undefined){\n return false;\n }\n else{\n return true;\n }\n }\n\n onMappingSubmit(value){\n if(this.selProp[\"Mappings\"]==undefined) this.selProp[\"Mappings\"]={};\n var valArray=this.getKeys(value);\n valArray.forEach((i)=>{\n if(value[i]==\"\"){\n this.selProp[\"Mappings\"][i]=this.selPropCopy[\"Mappings\"][i];\n } \n else{\n this.selProp[\"Mappings\"][i]=this.util.getProperJson(value[i]);\n }\n });\n }\n\n//Conditions:\n\naddCondition(value){\n if(this.selProp[\"Conditions\"]==undefined) this.selProp[\"Conditions\"]={};\n this.selProp[\"Conditions\"][value]={};\n}\n\nremoveCondition(value){\n this.selProp[\"Conditions\"][value]=undefined\n}\n\nisConditionRemoved(value){\n if(this.selProp[\"Conditions\"][value]==undefined){\n return false;\n }\n else{\n return true;\n }\n}\n\nonConditionSubmit(value){\n if(this.selProp[\"Conditions\"]==undefined) this.selProp[\"Conditions\"]={};\n var valArray=this.getKeys(value);\n valArray.forEach((i)=>{\n if(value[i]==\"\"){\n this.selProp[\"Conditions\"][i]=this.selPropCopy[\"Conditions\"][i];\n } \n else{\n this.selProp[\"Conditions\"][i]=this.util.getProperJson(value[i]);\n }\n });\n}\n\n//Resources:\naddResource(value){\n if(this.selProp[\"Resources\"]==undefined) this.selProp[\"Resources\"]={};\n this.selProp[\"Resources\"][value]={};\n}\n\nremoveResource(value){\n this.selProp[\"Resources\"][value]=undefined\n}\n\nisResourceRemoved(value){\n if(this.selProp[\"Resources\"][value]==undefined){\n return false;\n }\n else{\n return true;\n }\n}\n\nonResourceSubmit(value){\n if(this.selProp[\"Resources\"]==undefined) this.selProp[\"Resources\"]={};\n var valArray=this.getKeys(value);\n valArray.forEach((i)=>{\n if(value[i]==\"\"){\n this.selProp[\"Resources\"][i]=this.selPropCopy[\"Resources\"][i];\n } \n else{\n this.selProp[\"Resources\"][i]=this.util.getProperJson(value[i]);\n }\n });\n}\n\n\n//Outputs:\naddOutput(value){\n if(this.selProp[\"Outputs\"]==undefined) this.selProp[\"Outputs\"]={};\n this.selProp[\"Outputs\"][value]={};\n}\n\nremoveOutput(value){\n this.selProp[\"Outputs\"][value]=undefined\n}\n\nisOutputRemoved(value){\n if(this.selProp[\"Outputs\"][value]==undefined){\n return false;\n }\n else{\n return true;\n }\n}\n\nonOutputSubmit(value){\n if(this.selProp[\"Outputs\"]==undefined) this.selProp[\"Outputs\"]={};\n var valArray=this.getKeys(value);\n valArray.forEach((i)=>{\n if(value[i]==\"\"){\n this.selProp[\"Outputs\"][i]=this.selPropCopy[\"Outputs\"][i];\n } \n else{\n this.selProp[\"Outputs\"][i]=this.util.getProperJson(value[i]);\n }\n });\n }\n\n}\n","module.exports = \".example-card {\\r\\n max-width: 250px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaW50cmluc2ljLWZ1bmN0aW9ucy9pbnRyaW5zaWMtZnVuY3Rpb25zLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxnQkFBZ0I7RUFDbEIiLCJmaWxlIjoic3JjL2FwcC9pbnRyaW5zaWMtZnVuY3Rpb25zL2ludHJpbnNpYy1mdW5jdGlvbnMuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNhcmQge1xyXG4gICAgbWF4LXdpZHRoOiAyNTBweDtcclxuICB9Il19 */\"","module.exports = \"<mat-card class=\\\"example-card\\\" > \\n<form #funcform=\\\"ngForm\\\" id=\\\"funcform\\\" (submit)=\\\"doFunc(funcform.value)\\\" >\\n <input list=\\\"functions\\\" name=\\\"funcname\\\" placeholder=\\\"Pick a function\\\" #funcname ngModel> <br>\\n <datalist id=\\\"functions\\\" label=\\\"functions\\\" >\\n <option value=\\\"Ref\\\"></option>\\n <option value=\\\"Fn::Base64\\\"></option>\\n <option value=\\\"Fn::Cidr\\\"></option>\\n <option value=\\\"Fn::FindInMap\\\"></option>\\n <option value=\\\"Fn::GetAtt\\\"></option>\\n <option value=\\\"Fn::GetAZs\\\"></option>\\n <option value=\\\"Fn::ImportValue\\\"></option>\\n <option value=\\\"Fn::Join\\\"></option>\\n <option value=\\\"Fn::Select\\\"></option>\\n <option value=\\\"Fn::Split\\\"></option>\\n <option value=\\\"Fn::Sub\\\"></option>\\n <option value=\\\"Fn::And\\\"></option>\\n <option value=\\\"Fn::Equals\\\"></option>\\n <option value=\\\"Fn::If\\\"></option>\\n <option value=\\\"Fn::Not\\\"></option>\\n <option value=\\\"Fn::Or\\\"></option>\\n <option value=\\\"Fn::Transform\\\"></option>\\n </datalist>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Transform'\\\" >\\n <input type=\\\"text\\\" ngModel name=\\\"traname\\\">\\n <button type=\\\"button\\\" mat-raised-button (click)=\\\"addTag()\\\" matTooltip=\\\"Add a list of key-value pair for Parameters.\\\" >\\n <mat-icon>add</mat-icon>\\n </button><br>\\n <div *ngFor=\\\"let i of tagArray\\\" >\\n <input name=\\\"tagKey{{i}}\\\" placeholder=\\\"Key\\\" ngModel>\\n <input name=\\\"tagValue{{i}}\\\" placeholder=\\\"Value\\\" ngModel>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Ref'\\\" >\\n <select name=\\\"refvalue\\\" form=\\\"funcform\\\" ngModel #refvalue>\\n <optgroup label=\\\"values available\\\">\\n <option *ngFor=\\\"let i of retReflist()\\\" [value]=\\\"i\\\">{{i}} </option>\\n </optgroup>\\n </select>\\n <mat-icon matTooltip=\\\"Resources and Parameters will only get populated once they have been added to the template\\\" >info</mat-icon>\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Base64'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"b64value\\\" placeholder=\\\"Enter String\\\"> \\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Cidr'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"ipblock\\\" placeholder=\\\"IP Block\\\" \\n matTooltip=\\\"The user-specified CIDR address block to be split into \\n smaller CIDR blocks. e.g. 192.168.0.0/24\\\"> <br>\\n <input type=\\\"text\\\" ngModel name=\\\"count\\\" placeholder=\\\"count\\\" \\n matTooltip=\\\"The number of CIDRs to generate. Valid range is between 1 and 256.\\\"> <br>\\n <input type=\\\"text\\\" ngModel name=\\\"cidrbits\\\" placeholder=\\\"CidrBits\\\" \\n matTooltip=\\\"The number of subnet bits for the CIDR. For example, specifying a value '8' \\n for this parameter will create a CIDR with a mask of '/24'. Enter a number e.g. 24\\\" >\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::FindInMap'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"maps\\\" placeholder=\\\"Mapping element\\\" #mapname list=\\\"maplist\\\">\\n <datalist id=\\\"maplist\\\" label=\\\"Maps\\\" >\\n <option *ngFor=\\\"let i of retMaps()\\\" [value]=\\\"i\\\" > {{i}} </option>\\n </datalist>\\n <mat-icon matTooltip=\\\"Only maps that have been added to the template will be populated here\\\" >info</mat-icon>\\n <br>\\n <div *ngIf=\\\"mapname.value != ''\\\" >\\n <input type=\\\"text\\\" ngModel name=\\\"topkey\\\" placeholder=\\\"TopLevelKey\\\" #topkey list=\\\"keylist\\\">\\n <datalist id=\\\"keylist\\\" label=\\\"Keys\\\">\\n <option *ngFor=\\\"let j of retMapKeys(mapname.value)\\\" > {{j}} </option>\\n </datalist>\\n <div *ngIf=\\\"topkey.value != '' \\\" >\\n <input type=\\\"text\\\" ngModel name=\\\"secondkey\\\" placeholder=\\\"SecondLevelKey\\\" list=\\\"secKeyList\\\">\\n <datalist id=\\\"secKeyList\\\" lable=\\\"SecondKeys\\\" >\\n <option *ngFor=\\\"let k of retMapSecKeys(mapname.value,topkey.value)\\\"> {{k}} </option>\\n </datalist>\\n </div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::GetAtt'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"resname\\\" placeholder=\\\"Resource\\\" #resname list=\\\"reslist\\\" > \\n <datalist id=\\\"reslist\\\" label=\\\"Resources\\\" >\\n <option *ngFor=\\\"let i of retResList()\\\" [value]=\\\"i\\\" > {{i}} </option>\\n </datalist>\\n <mat-icon matTooltip=\\\"Only resources that have been added to the template will be populated here.\\\" >info</mat-icon>\\n <br>\\n <div *ngIf=\\\"resname.value!=''\\\" >\\n <input list=\\\"attrs\\\" ngModel type=\\\"text\\\" name=\\\"propname\\\" placeholder=\\\"Property Name\\\">\\n <datalist id=\\\"attrs\\\" label=\\\"Attributes\\\" >\\n <option *ngFor=\\\"let j of ResAttributes[jsonresult.jsonresult.Resources[resname.value]['Type']]\\\" [value]=\\\"j\\\"> {{j}} </option>\\n </datalist>\\n <mat-icon matTooltip=\\\"Respective attributes will be populated based on the type of the resource seleted.\\\" >info</mat-icon>\\n </div>\\n </div>\\n \\n <div *ngIf=\\\"funcname.value=='Fn::GetAZs'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"zone\\\" placeholder=\\\"Zonename or Function\\\" >\\n </div>\\n \\n <div *ngIf=\\\"funcname.value=='Fn::ImportValue'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"importval\\\" placeholder=\\\"ImportValue\\\" \\n [matTooltip]=\\\"fnimportvalueTip\\\" >\\n </div>\\n \\n <div *ngIf=\\\"funcname.value=='Fn::Join'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"delim\\\" placeholder=\\\"Delimiter\\\" matTooltip=\\\"\\n Enter delimiter.\\\" #delim>\\n <mat-icon [matTooltip]=\\\"fnjoinTip\\\" >info</mat-icon> <br>\\n <button mat-raised-button color=\\\"primary\\\" type=\\\"button\\\" (click)=\\\"addFnjoinElement()\\\">Add Element</button><br>\\n <div *ngFor=\\\"let i of fnjoinArray\\\">\\n <input type=\\\"text\\\" name=\\\"element{{i}}\\\" ngModel >\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Select'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"index\\\" placeholder=\\\"Index\\\">\\n <mat-icon [matTooltip]=\\\"fnselectTip\\\" >info</mat-icon> <br>\\n <button mat-raised-button color=\\\"primary\\\" type=\\\"button\\\" (click)=\\\"addFnselectElement()\\\">Add Element</button><br>\\n <div *ngFor=\\\"let i of fnselectArray\\\">\\n <input type=\\\"text\\\" name=\\\"element{{i}}\\\" ngModel >\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Split'\\\">\\n <input type=\\\"text\\\" ngModel name=\\\"split\\\" placeholder=\\\"Split By\\\">\\n <mat-icon [matTooltip]=\\\"fnsplitTip\\\">info</mat-icon><br>\\n <input type=\\\"text\\\" ngModel name=\\\"splitvalue\\\" placeholder=\\\"Value\\\"><br>\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Sub'\\\">\\n <!-- <input type=\\\"text\\\" ngModel name=\\\"sub\\\" placeholder=\\\"Substitute\\\" > -->\\n <textarea name=\\\"sub\\\" ngModel id=\\\"\\\" cols=\\\"25\\\" rows=\\\"10\\\"></textarea>\\n <mat-icon [matTooltip]=\\\"fnsubTip\\\" >info</mat-icon><br>\\n <input type=\\\"text\\\" ngModel name=\\\"subvalue\\\" placeholder=\\\"Subvalue\\\" \\n matTooltip=\\\"If you're substituting only template parameters e.g. ${MyVarName}, this field must be left blank.\\\" >\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::And'\\\" >\\n <button mat-raised-button color=\\\"primary\\\" type=\\\"button\\\" (click)=\\\"addFnAndElement()\\\">Add Condition</button>\\n <mat-icon [matTooltip]=\\\"fnAndTip\\\" >info</mat-icon>\\n <br>\\n <div *ngFor=\\\"let i of fnandArray\\\">\\n <input type=\\\"text\\\" name=\\\"element{{i}}\\\" ngModel >\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Equals'\\\" >\\n <input type=\\\"text\\\" name=\\\"equal1\\\" ngModel placeholder=\\\"value 1\\\" >\\n <input type=\\\"text\\\" name=\\\"equal2\\\" ngModel placeholder=\\\"value 2\\\" >\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::If'\\\" >\\n <input type=\\\"text\\\" name=\\\"ifcon\\\" ngModel placeholder=\\\"Condition\\\"> <br>\\n <input type=\\\"text\\\" name=\\\"iftrue\\\" ngModel placeholder=\\\"Value if true\\\">\\n <input type=\\\"text\\\" name=\\\"iffalse\\\" ngModel placeholder=\\\"Value if false\\\">\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Not'\\\" >\\n <input type=\\\"text\\\" name=\\\"fnnot\\\" ngModel placeholder=\\\"Condition\\\" >\\n </div>\\n\\n <div *ngIf=\\\"funcname.value=='Fn::Or'\\\" >\\n <button mat-raised-button color=\\\"primary\\\" type=\\\"button\\\" (click)=\\\"addFnOrElement()\\\">Add Condition</button>\\n <mat-icon [matTooltip]=\\\"fnOrTip\\\" >info</mat-icon>\\n <br>\\n <div *ngFor=\\\"let i of fnorArray\\\">\\n <input type=\\\"text\\\" name=\\\"element{{i}}\\\" ngModel >\\n </div>\\n </div>\\n <button mat-icon-button color=\\\"primary\\\" type=\\\"submit\\\" matTooltip=\\\"Generate function\\\">\\n <mat-icon>done</mat-icon>\\n </button>\\n <button mat-icon-button type=\\\"button\\\" color=\\\"accent\\\" \\n (click)=\\\"funcname.value=''; funcobj={}; onReset()\\\"\\n matTooltip=\\\"Reset function\\\" >\\n <mat-icon>clear</mat-icon>\\n </button>\\n\\n</form>\\n\\n<pre id=\\\"funcOutput\\\" >\\n {{funcobj|json}}\\n</pre>\\n<button mat-icon-button (click)=\\\"copyToClipboard()\\\"> <mat-icon>file_copy</mat-icon> </button>\\n</mat-card>\\n\\n\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n\n@Component({\n selector: 'app-intrinsic-functions',\n templateUrl: './intrinsic-functions.component.html',\n styleUrls: ['./intrinsic-functions.component.css']\n})\nexport class IntrinsicFunctionsComponent implements OnInit {\n\n \n constructor(public jsonresult:JsonResultService, public utility:UsefulUtilsService) { }\n\n tagCount=0;\n tagArray=[];\n funcobj={};\n fnjoinArray=[];\n fnjoinCount=0;\n fnselectArray=[];\n fnselectCount=0;\n fnandArray=[];\n fnandCount=0;\n fnorArray=[];\n fnorCount=0;\n fnimportvalueTip=\"The intrinsic function Fn::ImportValue returns the value of an output exported by another stack.You can use the following functions in the Fn::ImportValue function. The value of these functions can't depend on a resource. Fn::Base64, Fn::FindInMap, Fn::If, Fn::Join, Fn:Select, Fn::Split, Fn::Sub, Ref\";\n fnjoinTip=\"e.g. The following example returns: a:b:c. \\\"Fn::Join\\\" : [ \\\":\\\", [ \\\"a\\\", \\\"b\\\", \\\"c\\\" ] ]. For the Fn::Join delimiter, you cannot use any functions. You must specify a string value. For the Fn::Join list of values, you can use the following functions: Fn::Base64, Fn::FindInMap, Fn::GetAtt, Fn::GetAZs, Fn::If, Fn::ImportValue, Fn::Join, Fn::Split, Fn::Select, Fn::Sub, Ref\";\n fnselectTip=\"e.g. The following example returns: 'grapes'. { \\\"Fn::Select\\\" : [ \\\"1\\\", [ \\\"apples\\\", \\\"grapes\\\", \\\"oranges\\\", \\\"mangoes\\\" ]]}. For the Fn::Select index value, you can use the Ref and Fn::FindInMap functions. For the Fn::Select list of objects, you can use the following functions: Fn::FindInMap, Fn::GetAtt, Fn::GetAZs, Fn::If, Fn::Split, Ref\";\n fnsplitTip=\"e.g. The following example splits a string at each vertical bar (|). The function returns [\\\"a\\\", \\\"b\\\", \\\"c\\\"]. { \\\"Fn::Split\\\" : [ \\\"|\\\" , \\\"a|b|c\\\" ] }. If you split a string with consecutive delimiters, the resulting list will include an empty string. For the Fn::Split delimiter, you cannot use any functions. You must specify a string value. For the Fn::Split list of values, you can use the following functions: Fn::Base64,Fn::FindInMap,Fn::GetAtt,Fn::GetAZs,Fn::If,Fn::ImportValue,Fn::Join,Fn::Select,Fn::Sub,Ref\"\n fnsubTip=\"The intrinsic function Fn::Sub substitutes variables in an input string with values that you specify. e.g. { \\\"Fn::Sub\\\": [ \\\"www.${Domain}\\\", { \\\"Domain\\\": {\\\"Ref\\\" : \\\"RootDomainName\\\" }} ]}. For the String parameter, you cannot use any functions. You must specify a string value.For the VarName and VarValue parameters, you can use the following functions: Fn::Base64, Fn::FindInMap, Fn::GetAtt,Fn::GetAZs,Fn::If,Fn::ImportValue,Fn::Join,Fn::Select,Ref\"\n fnAndTip=\"Fn::And acts as an AND operator. The minimum number of conditions that you can include is 2, and the maximum is 10.\"\n fnOrTip=\"Fn::Or acts as an AND operator. The minimum number of conditions that you can include is 2, and the maximum is 10.\"\n \n ResAttributes = {\n \"AWS::EC2::Instance\":[\"AvailabilityZone\",\"PrivateDnsName\",\"PublicDnsName\",\"PrivateIp\",\"PublicIp\"],\n \"AWS::DynamoDB::Table\":[\"Arn\",\"StreamArn\"],\n \"AWS::EC2::CapacityReservation\":[\"AvailabilityZone\",\"AvailableInstanceCount\",\"InstanceType\", \"Tenancy\", \"TotalInstanceCount\"],\n \"AWS::EC2::EIP\":[\"AllocationId\"],\n \"AWS::EC2::NetworkInterface\":[\"PrimaryPrivateIpAddress\",\"SecondaryPrivateIpAddresses\"],\n \"AWS::EC2::SecurityGroup\":[\"VpcId\",\"GroupId\"],\n \"AWS::EC2::Subnet\":[\"AvailabilityZone\",\"Ipv6CidrBlocks\",\"NetworkAclAssociationId\",\"VpcId\"],\n \"AWS::EC2::SubnetNetworkAclAssociation\":[\"AssociationId\"],\n \"AWS::EC2::VPC\":[\"CidrBlock\",\"CidrBlockAssociations\",\"DefaultNetworkAcl\",\"DefaultSecurityGroup\",\"Ipv6CidrBlocks\"],\n \"AWS::AmazonMQ::Broker\":[\"Arn\",\"ConfigurationId\",\"ConfigurationRevision\"],\n \"AWS::AmazonMQ::Configuration\":[\"Arn\",\"Revision\"],\n \"AWS::ApiGateway::DomainName\":[\"DistributionDomainName\"],\n \"AWS::ApiGateway::RestApi\":[\"RootResourceId\"],\n \"AWS::ApiGatewayV2::DomainName\":[\"RegionalDomainName\",\"RegionalHostedZoneId\"],\n \"AWS::AppMesh::Mesh\":[\"Arn\",\"MeshName\",\"Uid\"],\n \"AWS::AppMesh::Route\":[\"Arn\",\"MeshName\",\"RouteName\",\"Uid\",\"VirtualRouterName\"],\n \"AWS::AppMesh::VirtualNode\":[\"Arn\",\"MeshName\",\"Uid\",\"VirtualNodeName\"],\n \"AWS::AppMesh::VirtualRouter\":[\"Arn\",\"MeshName\",\"Uid\",\"VirtualRouterName\"],\n \"AWS::AppMesh::VirtualService\":[\"Arn\",\"MeshName\",\"Uid\",\"VirtualServiceName\"],\n \"AWS::AppStream::ImageBuilder\":[\"StreamingUrl\"],\n \"AWS::Cloud9::EnvironmentEC2\":[\"Arn\",\"Name\"],\n \"AWS::CloudFormation::WaitCondition\":[\"Data\"],\n \"AWS::CloudFormation::Stack\":[\"Outputs.NestedStackOutputName\"],\n \"AWS::CloudFront::Distribution\":[\"DomainName\"],\n \"AWS::CloudFront::CloudFrontOriginAccessIdentity\":[\"S3CanonicalUserId\"],\n \"AWS::CloudTrail::Trail\":[\"Arn\",\"SnsTopicArn\"],\n \"AWS::CloudWatch::Alarm\":[\"Arn\"],\n \"AWS::CodeBuild::Project\":[\"Arn\"],\n \"AWS::CodeCommit::Repository\":[\"Arn\",\"CloneUrlHttp\",\"CloneUrlSsh\",\"Name\"],\n \"AWS::CodePipeline::Pipeline\":[\"Version\"],\n \"AWS::CodePipeline::Webhook\":[\"Url\"],\n \"AWS::Config::ConfigRule\":[\"Arn\",\"ConfigRuleId\",\"Compliance.Type\"],\n \"AWS::DAX::Cluster\":[\"Arn\",\"ClusterDiscoveryEndpoint\"],\n \"AWS::DirectoryService::MicrosoftAD\":[\"Alias\",\"DnsIpAddresses\"],\n \"AWS::DirectoryService::SimpleAD\":[\"Alias\",\"DnsIpAddresses\"],\n \"AWS::DLM::LifecyclePolicy\":[\"Arn\"],\n \"AWS::DocDB::DBCluster\":[\"ClusterResourceId\",\"Endpoint\",\"ReadEndpoint\",\"Port\"],\n \"AWS::DocDB::DBInstance\":[\"Endpoint\",\"Port\"],\n \"AWS::ECR::Repository\":[\"Arn\"],\n \"AWS::ECS::Cluster\":[\"Arn\"],\n \"AWS::ECS::Service\":[\"Name\"],\n \"AWS::EKS::Cluster\":[\"Arn\",\"CertificateAuthorityData\",\"Endpoint\"],\n \"AWS::ElastiCache::CacheCluster\":[\"ConfigurationEndpoint.Address\",\"ConfigurationEndpoint.Port\",\"RedisEndpoint.Address\",\"RedisEndpoint.Port\"],\n \"AWS::ElastiCache::ReplicationGroup\":[\"ConfigurationEndPoint.Address\",\"ConfigurationEndPoint.Port\",\"PrimaryEndPoint.Address\",\"PrimaryEndPoint.Port\",\"ReadEndPoint.Addresses\",\"ReadEndPoint.Ports\",\"ReadEndPoint.Addresses.List\",\"ReadEndPoint.Ports.List\"],\n \"AWS::ElasticBeanstalk::Environment\":[\"EndpointURL\"],\n \"AWS::ElasticLoadBalancing::LoadBalancer\":[\"CanonicalHostedZoneName\",\"CanonicalHostedZoneNameID\",\"DNSName\",\"SourceSecurityGroup.GroupName\",\"SourceSecurityGroup.OwnerAlias\"],\n \"AWS::ElasticLoadBalancingV2::LoadBalancer\":[\"DNSName\",\"CanonicalHostedZoneID\",\"LoadBalancerFullName\",\"LoadBalancerName\",\"SecurityGroups\"],\n \"AWS::ElasticLoadBalancingV2::TargetGroup\":[\"LoadBalancerArns\",\"TargetGroupFullName\",\"TargetGroupName\"],\n \"AWS::Elasticsearch::Domain\":[\"DomainArn\",\"DomainEndpoint\"],\n \"AWS::EMR::Cluster\":[\"MasterPublicDNS\"],\n \"AWS::Events::Rule\":[\"Arn\"],\n \"AWS::Greengrass::ConnectorDefinition\":[\"Arn\",\"Id\",\"LatestVersionArn\",\"Name\"],\n \"AWS::Greengrass::CoreDefinition\":[\"Arn\",\"Id\",\"LatestVersionArn\",\"Name\"],\n \"AWS::Greengrass::DeviceDefinition\":[\"Arn\",\"Id\",\"LatestVersionArn\", \"Name\"],\n \"AWS::Greengrass::FunctionDefinition\":[\"Id\"],\n \"AWS::Greengrass::FunctionDefinitionVersion\":[\"Arn\"],\n \"AWS::Greengrass::Group\":[\"Arn\",\"Id\",\"LatestVersionArn\",\"Name\",\"RoleArn\",\"RoleAttachedAt\"],\n \"AWS::Greengrass::LoggerDefinition\":[\"Arn\",\"Id\",\"LatestVersionArn\",\"Name\"],\n \"AWS::Greengrass::ResourceDefinition\":[\"Arn\",\"Id\",\"LatestVersionArn\",\"Name\"],\n \"AWS::Greengrass::SubscriptionDefinition\":[\"Arn\",\"Id\",\"LatestVersionArn\",\"Name\"],\n \"AWS::IAM::AccessKey\":[\"SecretAccessKey\"],\n \"AWS::IAM::Group\":[\"Arn\"],\n \"AWS::IAM::InstanceProfile\":[\"Arn\"],\n \"AWS::IAM::Role\":[\"Arn\"],\n \"AWS::IAM::User\":[\"Arn\"],\n \"AWS::IoT::Certificate\":[\"Arn\"],\n \"AWS::IoT::Policy\":[\"Arn\"],\n \"AWS::IoT::TopicRule\":[\"Arn\"],\n \"AWS::IoT1Click::Device\":[\"Arn\",\"DeviceId\",\"Enabled\"],\n \"AWS::IoT1Click::Placement\":[\"PlacementName\",\"ProjectName\"],\n \"AWS::IoT1Click::Project\":[\"ProjectName\",\"Arn\"],\n \"AWS::Kinesis::Stream\":[\"Arn\"],\n \"AWS::Kinesis::StreamConsumer\":[\"ConsumerARN\",\"ConsumerCreationTimestamp\",\"ConsumerName\",\"ConsumerStatus\",\"StreamARN\"],\n \"AWS::KinesisFirehose::DeliveryStream\":[\"Arn\"],\n \"AWS::KMS::Key\":[\"Arn\"],\n \"AWS::Lambda::Function\":[\"Arn\"],\n \"AWS::Lambda::Version\":[\"Version\"],\n \"AWS::Logs::Destination\":[\"Arn\"],\n \"AWS::Logs::LogGroup\":[\"Arn\"],\n \"AWS::OpsWorks::Instance\":[\"AvailabilityZone\",\"PrivateDnsName\",\"PrivateIp\",\"PublicDnsName\",\"PublicIp\"],\n \"AWS::OpsWorks::UserProfile\":[\"SshUserName\"],\n \"AWS::OpsWorksCM::Server\":[\"Arn\",\"Endpoint\"],\n \"AWS:RAM::ResourceShare\":[\"Arn\"],\n \"AWS::Redshift::Cluster\":[\"Endpoint.Address\",\"Endpoint.Port\"],\n \"AWS::RDS::DBCluster\":[\"Endpoint.Address\",\"Endpoint.Port\",\"ReadEndpoint.Address\"],\n \"AWS::RDS::DBInstance\":[\"Endpoint.Address\",\"Endpoint.Port\"],\n \"AWS::RoboMaker::Fleet\":[\"Arn\"],\n \"AWS::RoboMaker::RobotApplication\":[\"Arn\",\"CurrentRevisionId\"],\n \"AWS::RoboMaker::SimulationApplication\":[\"Arn\",\"CurrentRevisionId\"],\n \"AWS::Route53::HostedZone\":[\"NameServers\"],\n \"AWS::Route53Resolver::ResolverEndpoint\":[\"Arn\",\"Direction\",\"HostedVPCId\",\"IpAddressCount\",\"Name\",\"ResolverEndpointId\"],\n \"AWS::Route53Resolver::ResolverRule\":[\"Arn\",\"DomainName\",\"ResolverEndpointId\",\"ResolverRuleId\",\"TargetIps\"],\n \"AWS::Route53Resolver::ResolverRuleAssociation\":[\"Name\",\"ResolverRuleAssociationId\",\"ResolverRuleId\",\"VPCId\"],\n \"AWS::S3::Bucket\":[\"Arn\",\"DomainName\",\"DualStackDomainName\",\"WebsiteURL\"],\n \"AWS::Serverless::Function\":[\"Arn\"],\n \"AWS::ServiceDiscovery::HttpNamespace\":[\"Arn\",\"Id\"],\n \"AWS::ServiceDiscovery::PrivateDnsNamespace\":[\"Arn\",\"Id\"],\n \"AWS::ServiceDiscovery::PublicDnsNamespace\":[\"Arn\",\"Id\"],\n \"AWS::ServiceDiscovery::Service\":[\"Arn\",\"Id\",\"Name\"],\n \"AWS::SNS::Topic\":[\"TopicName\"],\n \"AWS::StepFunctions::Activity\":[\"Name\"],\n \"AWS::StepFunctions::StateMachine\":[\"Name\"],\n \"AWS::SQS::Queue\":[\"Arn\",\"QueueName\"]\n }\n\n \n ngOnInit() {\n }\n\n addTag(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n getTagArray(value){\n var tags=[];\n this.tagArray.forEach((i)=>{\n tags.push({\n \"Key\":value[`tagKey${i}`]? this.utility.getProperJson(value[`tagKey${i}`]):undefined,\n \"Value\":value[`tagValue${i}`]?this.utility.getProperJson(value[`tagValue${i}`]):undefined\n })\n });\n return tags.length==0?undefined:tags\n }\n addFnjoinElement(){\n this.fnjoinCount+=1;\n this.fnjoinArray.push(this.fnjoinCount);\n }\n\n addFnselectElement(){\n this.fnselectCount+=1;\n this.fnselectArray.push(this.fnselectCount);\n }\n\n addFnAndElement(){\n this.fnandCount+=1;\n this.fnandArray.push(this.fnandCount);\n }\n\n addFnOrElement(){\n this.fnorCount+=1;\n this.fnorArray.push(this.fnorCount);\n }\n\n getKeys(val){\n return Object.keys(val);\n }\n\n retResList(){\n return Object.keys(this.jsonresult.jsonresult.Resources).length > 0 ? Object.keys(this.jsonresult.jsonresult.Resources) : [];\n }\n\n retReflist(){\n var paramarray=Object.keys(this.jsonresult.jsonresult.Parameters);\n var pseudo=[\"AWS::Partition\", \"AWS::Region\", \"AWS::StackId\", \"AWS::StackName\", \"AWS::URLSuffix\",\"AWS::AccountId\",\"AWS::NoValue\"];\n return Object.keys(this.jsonresult.jsonresult.Resources).concat(paramarray).concat(pseudo);\n //return pseudo;\n }\n\n retMaps(){\n return Object.keys(this.jsonresult.jsonresult.Mappings);\n }\n\n retMapKeys(val){ \n return Object.keys(this.jsonresult.jsonresult.Mappings[val])\n }\n\n retMapSecKeys(val1,val2){\n return Object.keys(this.jsonresult.jsonresult.Mappings[val1][val2])\n }\n\n onReset(){\n this.fnjoinArray=[];\n this.fnjoinCount=0;\n this.fnselectArray=[];\n this.fnselectCount=0;\n this.fnandArray=[];\n this.fnandCount=0;\n }\n\n retResource(){\n return (Object.keys(this.jsonresult.jsonresult.Resources).length!=0)?Object.keys(this.jsonresult.jsonresult.Resources):[];\n }\n\n retResProps(rname){\n return (Object.keys(this.jsonresult.jsonresult.Resources[rname][\"Properties\"]).length!=0)?Object.keys(this.jsonresult.jsonresult.Resources[rname][\"Properties\"]):[];\n }\n\n retArray(num){\n var joinarr = []\n for(var i=0;i<num;i=i+1){\n joinarr.push(i);\n }\n return joinarr;\n }\n\n copyToClipboard(){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.funcobj);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n doFunc(value){\n switch (value.funcname) {\n case \"Ref\":\n this.funcobj={\n \"Ref\":value.refvalue\n }\n break;\n case \"Fn::Base64\":\n this.funcobj={\n \"Fn::Base64\": this.utility.getProperJson(value.b64value)\n }\n break;\n case \"Fn::Cidr\":\n this.funcobj={\n \"Fn::Cidr\":[value.ipblock, value.count, value.cidrbits]\n }\n break;\n case \"Fn::FindInMap\":\n this.funcobj={\n \"Fn::FindInMap\":[value.maps,this.utility.getProperJson(value.topkey),this.utility.getProperJson(value.secondkey)]\n }\n break;\n case \"Fn::GetAtt\":\n this.funcobj={\n \"Fn::GetAtt\":[value.resname, value.propname]\n }\n break;\n case \"Fn::GetAZs\":\n this.funcobj={\n \"Fn::GetAZs\":this.utility.getProperJson(value.zone)\n }\n break;\n case \"Fn::ImportValue\":\n this.funcobj={\n \"Fn::ImportValue\":this.utility.getProperJson(value.importval)\n }\n break;\n case \"Fn::Join\":\n var joinArr = [];\n var joinElements=[];\n this.fnjoinArray.forEach((i)=>{\n joinElements.push(this.utility.doUnescape(this.utility.getProperJson( value[`element${i}`])));\n });\n joinArr.push(value.delim);\n joinArr.push(joinElements);\n this.funcobj={\n \"Fn::Join\": this.utility.getProperJson(joinArr)\n }\n break;\n case \"Fn::Select\":\n var selectArr=[];\n var selectElements=[];\n this.fnselectArray.forEach((i)=>{\n selectElements.push(this.utility.getProperJson(value[`element${i}`]));\n });\n selectArr.push(value.index);\n selectArr.push(selectElements);\n this.funcobj={\n \"Fn::Select\": this.utility.getProperJson(selectArr)\n }\n break; \n\n case \"Fn::Split\":\n var splitArr=[];\n splitArr.push(value.split);\n splitArr.push(this.utility.getProperJson(value.splitvalue));\n this.funcobj={\n \"Fn::Split\": this.utility.getProperJson(splitArr)\n }\n break; \n\n case \"Fn::Sub\":\n var subParam = \"\"\n var subArr=[];\n if(value.subvalue!=''){\n subArr.push(value.sub)\n subArr.push(this.utility.getProperJson(value.subvalue))\n this.funcobj = {\n \"Fn::Sub\": this.utility.getProperJson(subArr)\n }\n }\n else{\n subParam = value.sub\n this.funcobj = {\n \"Fn::Sub\": subParam\n }\n }\n break; \n\n case \"Fn::Transform\":\n this.funcobj={\n \"Fn::Transform\": {\n \"Name\":value.traname,\n \"Parameters\":this.getTagArray(value)\n } \n }\n break; \n \n case \"Fn::And\":\n var andArray=[];\n this.fnandArray.forEach((i)=>{\n andArray.push(this.utility.getProperJson(value[`element${i}`]));\n });\n this.funcobj={\n \"Fn::And\": this.utility.getProperJson(andArray)\n }\n break;\n \n case \"Fn::Equals\":\n var equalArray=[];\n equalArray.push(this.utility.getProperJson(value.equal1));\n equalArray.push(this.utility.getProperJson(value.equal2));\n this.funcobj={\n \"Fn::Equals\":this.utility.getProperJson(equalArray)\n }\n break;\n \n case \"Fn::If\":\n var ifArray=[];\n ifArray.push(value.ifcon);\n ifArray.push(this.utility.getProperJson(value.iftrue));\n ifArray.push(this.utility.getProperJson(value.iffalse));\n this.funcobj={\n \"Fn::If\":this.utility.getProperJson(ifArray)\n }\n break;\n \n case \"Fn::Not\":\n var fnnotArray=[];\n fnnotArray.push(this.utility.getProperJson(value.fnnot));\n this.funcobj={\n \"Fn::Not\":this.utility.getProperJson(fnnotArray)\n };\n \n break;\n\n case \"Fn::Or\":\n var orArray=[];\n this.fnorArray.forEach((i)=>{\n orArray.push(this.utility.getProperJson(value[`element${i}`]));\n });\n this.funcobj={\n \"Fn::Or\": this.utility.getProperJson(orArray)\n }\n break;\n \n default:\n break;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n// export interface CloudFormation{\n// AWSTemplateFormatVersion:string,\n// Description:string,\n// Parameters:object,\n// Mappings:object,\n// Conditions:object,\n// Transform:object,\n// Resources:object,\n// Outputs:object\n// }\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JsonResultService {\n\n // jsonresult:CloudFormation={\n // AWSTemplateFormatVersion:\"2010-09-09\",\n // Description:\"Template created by CloudKast\",\n // Parameters:undefined,\n // Mappings:undefined,\n // Conditions:undefined,\n // Transform:undefined,\n // Resources:{},\n // Outputs:undefined\n // }\n\n jsonresult = {\n \"AWSTemplateFormatVersion\":\"2010-09-09\",\n \"Description\":\"Template create by CloudKast\",\n \"Parameters\":undefined,\n \"Mappings\":undefined,\n \"Conditions\":undefined,\n \"Transform\":undefined,\n \"Resources\":{},\n \"Outputs\":undefined\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'keysPipe'\n})\nexport class KeysPipePipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n let keys = [];\n for (let key in value) {\n keys.push(key);\n }\n return keys;\n }\n\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21hcHBpbmdzLXRhYi9tYXBwaW5ncy10YWIuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<button mat-raised-button color=\\\"primary\\\" (click)=\\\"addParam()\\\">Add Mapping</button><br>\\n<div *ngFor=\\\"let i of tagArray\\\">\\n <app-mappings></app-mappings>\\n</div>\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-mappings-tab',\n templateUrl: './mappings-tab.component.html',\n styleUrls: ['./mappings-tab.component.css']\n})\nexport class MappingsTabComponent implements OnInit {\n\n tagCount=0;\n tagArray=[];\n constructor() { }\n\n ngOnInit() {\n }\n\n addParam(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n}\n","module.exports = \".example-card {\\r\\n max-width: 500px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFwcGluZ3MvbWFwcGluZ3MuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGdCQUFnQjtFQUNsQiIsImZpbGUiOiJzcmMvYXBwL21hcHBpbmdzL21hcHBpbmdzLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZXhhbXBsZS1jYXJkIHtcclxuICAgIG1heC13aWR0aDogNTAwcHg7XHJcbiAgfSJdfQ== */\"","module.exports = \"\\n <div *ngIf=\\\"isPresent\\\" >\\n <mat-accordion>\\n <mat-expansion-panel color=\\\"accent\\\">\\n <mat-expansion-panel-header>\\n <mat-panel-title>\\n Mapping\\n </mat-panel-title>\\n <mat-panel-description>\\n {{mapname.value}}\\n </mat-panel-description>\\n </mat-expansion-panel-header>\\n <mat-card class=\\\"example-card\\\">Mapping\\n <form #myForm=\\\"ngForm\\\" (submit)=\\\"onDone(myForm.value)\\\">\\n <input name=\\\"resourceName\\\" #mapname placeholder=\\\"Mapping Name\\\" ngModel required > <br>\\n <button type=\\\"button\\\" mat-stroked-button (click)=\\\"addKeying()\\\" >Add keys</button>\\n <mat-divider></mat-divider>\\n <div *ngFor=\\\"let i of keyArray\\\" >\\n <input type=\\\"text\\\" name=\\\"key{{i}}\\\" placeholder=\\\"Key\\\" matTooltip=\\\"Key identifier\\\" \\n style=\\\"margin-left: 20px\\\" ngModel> <br>\\n <button type=\\\"button\\\" mat-stroked-button (click)=\\\"addValue()\\\" \\n style=\\\"margin-left:20px\\\" > Add Values </button> \\n <div *ngFor=\\\"let j of valueArray\\\">\\n <input type=\\\"text\\\" name=\\\"name{{i}}{{j}}\\\" placeholder=\\\"KeyName\\\" ngModel \\n style=\\\"margin-left: 40px\\\" matTooltip=\\\"key in String\\\" >\\n <input type=\\\"text\\\" name=\\\"value{{i}}{{j}}\\\" placeholder=\\\"KeyValue\\\" matTooltip=\\\"\\n value in String or List. For a list, provide comma separated values\\\" ngModel> <br>\\n </div>\\n <mat-divider></mat-divider>\\n </div>\\n <button [disabled]=\\\"myForm.invalid\\\" type=\\\"submit\\\" mat-icon-button> \\n <mat-icon>done</mat-icon> \\n </button>\\n <button mat-icon-button (click)=\\\"onRemove(myForm.value)\\\">\\n <mat-icon>remove_circle</mat-icon>\\n </button>\\n </form>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button \\n matTooltip=\\\"copy json\\\" \\n (click)=\\\"copyToClipboard(myForm.value)\\\"> \\n <mat-icon>file_copy</mat-icon> \\n </button>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button color=\\\"accent\\\" \\n matTooltip=\\\"copy yaml\\\" \\n (click)=\\\"copyToYamlClipboard(myForm.value)\\\"> \\n <mat-icon>file_copy</mat-icon> \\n </button>\\n </mat-card>\\n </mat-expansion-panel>\\n </mat-accordion>\\n </div>\\n\\n\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n@Component({\n selector: 'app-mappings',\n templateUrl: './mappings.component.html',\n styleUrls: ['./mappings.component.css']\n})\nexport class MappingsComponent implements OnInit {\n\n tagCount=0;\n tagArray=[];\n keyCount=0;\n keyArray=[];\n valueCount=0;\n valueArray=[];\n isPresent=true;\n isCopyReady=false\n constructor(public result:JsonResultService, public util:UsefulUtilsService) { }\n\n ngOnInit() {\n }\n\n addMapping(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n addKeying(){\n this.keyCount+=1;\n this.keyArray.push(this.keyCount);\n }\n\n addValue(){\n this.valueCount+=1;\n this.valueArray.push(this.valueCount);\n }\n\n onRemove(value){\n this.isPresent=false;\n if(value.resourceName) this.result.jsonresult.Mappings[value.resourceName]=undefined;\n }\n\n onDone(val){\n if (this.result.jsonresult.Mappings==undefined){\n this.result.jsonresult.Mappings={}\n }\n\n this.result.jsonresult.Mappings[val.resourceName]={}\n\n for(var i=1;i<=this.keyArray.length;i++){\n var curKey=val[`key${i}`];\n var valObj={} \n\n for(var j=1;j<=this.valueArray.length;j++){\n \n var curName=val[`name${i}${j}`];\n var curVal=val[`value${i}${j}`];\n if(curName.length==0 || curVal.length==0){\n valObj[curName]=undefined\n }\n else{\n if(curVal.includes(\",\")){\n valObj[curName]=curVal.split(\",\");\n }\n else{\n valObj[curName]=curVal;\n }\n }\n if(j==this.valueArray.length){\n this.result.jsonresult.Mappings[val.resourceName][curKey]= valObj;\n }\n }\n }\n this.isCopyReady=true;\n }\n\n copyToClipboard(value){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.result.jsonresult.Mappings[value.resourceName]);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n copyToYamlClipboard(value){\n this.util.copyToClipboardYaml(this.result.jsonresult.Mappings[value.resourceName])\n }\n}\n","module.exports = \".example-meta-container {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n }\\r\\n \\r\\n .example-meta-container > * {\\r\\n width: 40%;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWV0YWRhdGEvbWV0YWRhdGEuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGFBQWE7SUFDYixzQkFBc0I7RUFDeEI7O0VBRUE7SUFDRSxVQUFVO0VBQ1oiLCJmaWxlIjoic3JjL2FwcC9tZXRhZGF0YS9tZXRhZGF0YS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmV4YW1wbGUtbWV0YS1jb250YWluZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgfVxyXG4gIFxyXG4gIC5leGFtcGxlLW1ldGEtY29udGFpbmVyID4gKiB7XHJcbiAgICB3aWR0aDogNDAlO1xyXG4gIH0iXX0= */\"","module.exports = \"\\n<br>\\n<br>\\n<div class=\\\"example-meta-container\\\">\\n <mat-form-field>\\n <input matInput [(ngModel)]=\\\"result.jsonresult.AWSTemplateFormatVersion\\\" type=\\\"text\\\" \\n name=\\\"cfnversion\\\" placeholder=\\\"Template Version\\\" matTooltip=\\\"cannot be edited\\\" readonly>\\n </mat-form-field> \\n <mat-form-field>\\n <textarea matInput [(ngModel)]=\\\"result.jsonresult.Description\\\" \\n name=\\\"cfndescription\\\" placeholder=\\\"Template Description\\\" >\\n </textarea>\\n </mat-form-field>\\n</div>\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\n\n@Component({\n selector: 'app-metadata',\n templateUrl: './metadata.component.html',\n styleUrls: ['./metadata.component.css']\n})\nexport class MetadataComponent implements OnInit {\n\n constructor(public result:JsonResultService) {\n }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"body{\\r\\n margin:0\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb2JqZWN0LWhlbHAvb2JqZWN0LWhlbHAuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJO0FBQ0oiLCJmaWxlIjoic3JjL2FwcC9vYmplY3QtaGVscC9vYmplY3QtaGVscC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiYm9keXtcclxuICAgIG1hcmdpbjowXHJcbn0iXX0= */\"","module.exports = \"<mat-card>Property Dealer\\n<form id=\\\"propform\\\" #propform=\\\"ngForm\\\" (submit)=\\\"onDone(propform.value)\\\" >\\n <select #resname name=\\\"resname\\\" form=\\\"propform\\\" ngModel>\\n <optgroup *ngFor=\\\"let i of mainObj.comProp | keyvalue\\\" [label]=\\\"i.key\\\" >\\n <option *ngFor=\\\"let j of mainObj.comProp[i.key] | keyvalue\\\" [value]=\\\"j.key\\\">{{j.key}}</option> \\n </optgroup>\\n </select>\\n <button [disabled]=\\\"resname.value==''\\\" mat-stroked-button color=\\\"primary\\\" type=\\\"submit\\\">Generate form</button>\\n</form> \\n<form *ngIf=\\\"propSent\\\" #jsonform=\\\"ngForm\\\" (submit)=\\\"onSubmit(jsonform.value)\\\">\\n <div *ngFor=\\\"let w of getKeys(selProp)\\\">\\n <input *ngIf=\\\"getTypeof(selProp[w])=='string' || isArray(selProp[w]) \\\" \\n type=\\\"text\\\" [name]=\\\"w\\\" [placeholder]=\\\"w\\\" [matTooltip]=\\\"isArray(selProp[w])?selProp[w][0]:selProp[w]\\\" ngModel>\\n <mat-chip *ngIf=\\\"getTypeof(selProp[w])=='object' && !isArray(selProp[w])\\\">\\n {{w}}\\n </mat-chip>\\n <div *ngIf=\\\"getDepth(selProp[w]) > 0 && getTypeof(selProp[w])=='object' \\\">\\n <div *ngFor=\\\"let x of getKeys(isArray(selProp[w])?[]:selProp[w])\\\">\\n <input *ngIf=\\\"getTypeof(selProp[w][x])=='string' || isArray(selProp[w][x]) \\\" \\n type=\\\"text\\\" [name]=\\\"x\\\" [placeholder]=\\\"x\\\" ngModel [matTooltip]=\\\"isArray(selProp[w][x])?selProp[w][x][0]:selProp[w][x]\\\" style=\\\"margin-left: 20px\\\" >\\n <mat-chip *ngIf=\\\"getTypeof(selProp[w][x])=='object' && !isArray(selProp[w][x])\\\" style=\\\"margin-left: 20px\\\" >\\n {{x}}\\n </mat-chip>\\n <div *ngIf=\\\"getDepth(selProp[w][x]) >0 && getTypeof(selProp[w][x])=='object'\\\">\\n <div *ngFor=\\\"let k of getKeys(isArray(selProp[w][x])?[]:selProp[w][x])\\\">\\n <input *ngIf=\\\"getTypeof(selProp[w][x][k])=='string' || isArray(selProp[w][x][k])\\\" \\n type=\\\"text\\\" [name]=\\\"k\\\" [placeholder]=\\\"k\\\" ngModel [matTooltip]=\\\"isArray(selProp[w][x][k])?selProp[w][x][k][0]:selProp[w][x][k]\\\" style=\\\"margin-left: 40px\\\" >\\n\\n <mat-chip *ngIf=\\\"getTypeof(selProp[w][x][k])=='object' && !isArray(selProp[w][x][k])\\\" style=\\\"margin-left: 40px\\\" >\\n {{k}}\\n </mat-chip>\\n <div *ngIf=\\\"getDepth(selProp[w][x][k]) >0 && getTypeof(selProp[w][x][k])=='object'\\\">\\n <div *ngFor=\\\"let v of getKeys(isArray(selProp[w][x][k])?[]:selProp[w][x][k])\\\">\\n <input *ngIf=\\\"getTypeof(selProp[w][x][k][v])=='string' || isArray(selProp[w][x][k][v])\\\" \\n type=\\\"text\\\" [name]=\\\"v\\\" [placeholder]=\\\"v\\\" ngModel [matTooltip]=\\\"isArray(selProp[w][x][k][v])?selProp[w][x][k][v][0]:selProp[w][x][k][v]\\\" style=\\\"margin-left: 60px\\\" > \\n\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <button mat-stroked-button color=\\\"primary\\\" type=\\\"submit\\\">Generate</button>\\n <button mat-stroked-button color=\\\"warn\\\" (click)=\\\"resname.value=''; onReset()\\\">Reset</button>\\n</form>\\n<br>\\n<pre>{{myobj|json}}</pre>\\n<button [disabled]=\\\"!isCopyReady\\\" mat-icon-button (click)=\\\"copyToClipboard()\\\"> <mat-icon>file_copy</mat-icon> </button>\\n</mat-card>\\n<mat-divider></mat-divider>\\n\"","import { Component, OnInit } from '@angular/core';\nimport { ResourceDataService } from '../resource-data.service'\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n\n@Component({\n selector: 'app-object-help',\n templateUrl: './object-help.component.html',\n styleUrls: ['./object-help.component.css']\n})\nexport class ObjectHelpComponent implements OnInit {\n\n resKeys:String[];\n propKeys:String[];\n propSent=false;\n selProp:Object;\n isCopyReady:Boolean=false;\n myobj={}\n nonStringOutput={};\n\n constructor(public mainObj:ResourceDataService, public util:UsefulUtilsService){\n }\n\n ngOnInit() {\n }\n\ngetKeys(value){\n return (Object.keys(value)).length==0?[]:Object.keys(value);\n}\n\nonDone(value){\n this.selProp=this.getSelProp(value.resname);\n this.propSent=true;\n}\n\ngetSelProp(value){\n var a1=Object.values(this.mainObj.comProp);\n var a2:Object;\n a1.forEach((i)=>{\n if(i.hasOwnProperty(value)){\n a2=i[value];\n }\n })\n console.log(a2);\n return a2;\n}\n\nonSubmit(value){\n console.log(value);\n this.getLooper(this.selProp,value,this.myobj);\n this.isCopyReady=true;\n}\n\ngetLooper(loopval,formval,myobj){\n this.getKeys(loopval).forEach((j)=>{\n if(typeof(loopval[j])==\"string\"){\n myobj[j]=this.util.getProperJson(formval[j]);\n }\n else{\n if(Array.isArray(loopval[j])){\n myobj[j]=this.util.getSemicolonArray(formval[j]);\n }\n else{\n myobj[j]={}\n this.getLooper(loopval[j],formval,myobj[j])\n }\n }\n\n })\n}\n\nonReset(){\n this.propSent=false;\n this.isCopyReady=false;\n this.myobj={};\n}\n\nisArray(value){\n return Array.isArray(value);\n}\n\ngetTypeof(val){\n return typeof(val);\n}\n\ngetDepth(obj){\n var level = 1;\n var key;\n for(key in obj) {\n if (!obj.hasOwnProperty(key)) continue;\n\n if(typeof obj[key] == 'object'){\n var depth = this.getDepth(obj[key]) + 1;\n level = Math.max(depth, level);\n }\n }\n return level;\n}\n\ncopyToClipboard(){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.myobj);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n this.myobj={};\n}\n\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL291dHB1dHMtdGFiL291dHB1dHMtdGFiLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<button mat-raised-button color=\\\"primary\\\" (click)=\\\"addParam()\\\">Add Output</button><br>\\n<div *ngFor=\\\"let i of tagArray\\\">\\n <app-outputs></app-outputs>\\n</div>\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-outputs-tab',\n templateUrl: './outputs-tab.component.html',\n styleUrls: ['./outputs-tab.component.css']\n})\nexport class OutputsTabComponent implements OnInit {\n\n tagCount=0;\n tagArray=[];\n constructor() { }\n\n ngOnInit() {\n }\n\n addParam(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n\n}\n","module.exports = \".example-card {\\r\\n max-width: 400px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy9vdXRwdXRzLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxnQkFBZ0I7RUFDbEIiLCJmaWxlIjoic3JjL2FwcC9vdXRwdXRzL291dHB1dHMuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNhcmQge1xyXG4gICAgbWF4LXdpZHRoOiA0MDBweDtcclxuICB9Il19 */\"","module.exports = \"\\n <div *ngIf=\\\"isPresent\\\" >\\n <mat-accordion>\\n <mat-expansion-panel>\\n <mat-expansion-panel-header>\\n <mat-panel-title>\\n Output\\n </mat-panel-title>\\n <mat-panel-description>\\n {{outname.value}}\\n </mat-panel-description>\\n </mat-expansion-panel-header>\\n <mat-card class=\\\"example-card\\\">Output\\n <form #myForm=\\\"ngForm\\\" (submit)=\\\"onDone(myForm.value)\\\">\\n <input name=\\\"resourceName\\\" placeholder=\\\"Output Name\\\" #outname ngModel required> <br>\\n <input type=\\\"text\\\" name=\\\"desc\\\" placeholder=\\\"Description\\\" ngModel> <br>\\n <input type=\\\"text\\\" name=\\\"value\\\" placeholder=\\\"Value\\\" matTooltip=\\\"\\n Value to be returned\\\" ngModel> <br>\\n <mat-chip>Export</mat-chip> <br>\\n <input type=\\\"text\\\" name=\\\"export\\\" placeholder=\\\"Name\\\" ngModel style=\\\"margin-left:20px\\\"\\n matTooltip=\\\"Value to be exported\\\"><br>\\n <input type=\\\"text\\\" name=\\\"Condition\\\" placeholder=\\\"Condition\\\" ngModel \\n matTooltip=\\\"AWS CloudFormation creates entities that are associated with a true condition and ignores entities that are associated with a false condition\\\" > <br>\\n <button type=\\\"submit\\\" mat-icon-button [disabled]=\\\"myForm.invalid\\\" >\\n <mat-icon>done</mat-icon>\\n </button>\\n <button mat-icon-button (click)=\\\"onRemove(myForm.value)\\\">\\n <mat-icon>remove_circle</mat-icon>\\n </button>\\n </form>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button \\n matTooltip=\\\"copy json\\\" (click)=\\\"copyToClipboard(myForm.value)\\\"> \\n <mat-icon>file_copy</mat-icon> \\n </button>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button color=\\\"accent\\\"\\n matTooltip=\\\"copy yaml\\\" (click)=\\\"copyToYamlClipboard(myForm.value)\\\"> \\n <mat-icon>file_copy</mat-icon> \\n </button>\\n </mat-card>\\n </mat-expansion-panel>\\n </mat-accordion>\\n </div>\\n\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n@Component({\n selector: 'app-outputs',\n templateUrl: './outputs.component.html',\n styleUrls: ['./outputs.component.css']\n})\nexport class OutputsComponent implements OnInit {\n\n tagCount=0;\n tagArray=[];\n isPresent=true;\n isCopyReady=false;\n resProp={\n \"Description\" : \"Information about the value\",\n \"Value\" : \"Value to return\",\n \"Export\" : {\"Name\" : \"Value to export\"}\n };\n constructor(public result:JsonResultService, public util:UsefulUtilsService) { }\n\n ngOnInit() {\n }\n\n addOutput(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n onRemove(value){\n this.isPresent=false;\n if(value.resourceName) this.result.jsonresult.Outputs[value.resourceName]=undefined;\n }\n\n onDone(value){\n if (this.result.jsonresult.Outputs==undefined){\n this.result.jsonresult.Outputs={}\n }\n this.result.jsonresult.Outputs[value.resourceName]={\n \"Description\":value.desc,\n \"Value\":this.util.getProperJson(value.value),\n \"Export\":{\n \"Name\":this.util.getProperJson(value.export)\n },\n \"Condition\":this.util.getProperJson(value.Condition)\n }\n this.isCopyReady=true;\n }\n\n copyToClipboard(value){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.result.jsonresult.Outputs[value.resourceName]);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n copyToYamlClipboard(value){\n this.util.copyToClipboardYaml(this.result.jsonresult.Outputs[value.resourceName]);\n }\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhcmFtZXRlcnMtdGFiL3BhcmFtZXRlcnMtdGFiLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<button mat-raised-button color=\\\"primary\\\" (click)=\\\"addParam()\\\">Add Parameter</button><br>\\n<div *ngFor=\\\"let i of tagArray\\\">\\n <app-parameters></app-parameters>\\n</div>\\n\\n\\n\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-parameters-tab',\n templateUrl: './parameters-tab.component.html',\n styleUrls: ['./parameters-tab.component.css']\n})\nexport class ParametersTabComponent implements OnInit {\n\n tagCount=0;\n tagArray=[];\n constructor() { }\n\n ngOnInit() {\n }\n\n addParam(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n \n}\n","module.exports = \".example-card {\\r\\n max-width: 400px;\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFyYW1ldGVycy9wYXJhbWV0ZXJzLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxnQkFBZ0I7RUFDbEIiLCJmaWxlIjoic3JjL2FwcC9wYXJhbWV0ZXJzL3BhcmFtZXRlcnMuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNhcmQge1xyXG4gICAgbWF4LXdpZHRoOiA0MDBweDtcclxuICB9Il19 */\"","module.exports = \"\\r\\n<div *ngIf=\\\"isPresent\\\" >\\r\\n <mat-accordion>\\r\\n <mat-expansion-panel>\\r\\n <mat-expansion-panel-header>\\r\\n <mat-panel-title>\\r\\n Parameters\\r\\n </mat-panel-title>\\r\\n <mat-panel-description>\\r\\n {{paramname.value}}\\r\\n </mat-panel-description>\\r\\n </mat-expansion-panel-header> \\r\\n <mat-card class=\\\"example-card\\\" >Parameter\\r\\n <form #myForm=\\\"ngForm\\\" (submit)=\\\"onDone(myForm.value)\\\">\\r\\n <input name=\\\"resourceName\\\" #paramname placeholder=\\\"Parameter Name\\\" ngModel required> <br>\\r\\n <input name=\\\"Type\\\" placeholder=\\\"Type\\\" ngModel list=\\\"paramtypes\\\" >\\r\\n <datalist id=\\\"paramtypes\\\" label=\\\"Parameter Types\\\" > \\r\\n <option *ngFor=\\\"let i of paramTypes\\\" [value]=\\\"i\\\"> {{i}} </option>\\r\\n </datalist>\\r\\n <!-- <input name=\\\"AllowedPattern\\\" placeholder=\\\"Allowed Pattern\\\" ngModel pattern='[\\\\\\\\A-Z0-9]*'> <br> -->\\r\\n <div *ngFor=\\\"let j of resPropkeys\\\">\\r\\n <input ngModel type=\\\"text\\\" [name]=\\\"j\\\" [placeholder]=\\\"j\\\" [matTooltip]=\\\"resProp[j]\\\" >\\r\\n <mat-icon *ngIf=\\\"j=='AllowedPattern'\\\" color=\\\"warn\\\" [matTooltip]=\\\"regexTooltip\\\" >warning</mat-icon>\\r\\n </div>\\r\\n <button [disabled]=\\\"myForm.invalid\\\" type=\\\"submit\\\" mat-icon-button>\\r\\n <mat-icon>done</mat-icon>\\r\\n </button>\\r\\n <button mat-icon-button type=\\\"button\\\" (click)=\\\"onRemove(myForm.value)\\\">\\r\\n <mat-icon>remove_circle</mat-icon>\\r\\n </button>\\r\\n </form>\\r\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button \\r\\n matTooltip=\\\"copy json\\\" \\r\\n (click)=\\\"copyToClipboard(myForm.value)\\\"> \\r\\n <mat-icon>file_copy</mat-icon> \\r\\n </button>\\r\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button color=\\\"accent\\\"\\r\\n matTooltip=\\\"copy yaml (beta)\\\" \\r\\n (click)=\\\"copyToClipboardYaml(myForm.value)\\\"> \\r\\n <mat-icon>file_copy</mat-icon> \\r\\n </button>\\r\\n </mat-card>\\r\\n </mat-expansion-panel>\\r\\n </mat-accordion>\\r\\n</div>\\r\\n\\r\\n\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n@Component({\n selector: 'app-parameters',\n templateUrl: './parameters.component.html',\n styleUrls: ['./parameters.component.css']\n})\nexport class ParametersComponent implements OnInit {\n\n tagCount=0;\n tagArray=[];\n isPresent=true;\n isCopyReady=false;\n regexTooltip=\"Do not add an additional backslash to any backslash characters in your regular expression. Escape characters will be automatically added. E.g. if you need to include a \\\\d in your regular expression, leave it as \\\\d.\"\n paramTypes=[\"String\",\"Number\",\"List<Number>\",\"CommaDelimitedList\",\"AWS::EC2::AvailabilityZone::Name\",\"AWS::EC2::Image::Id\",\"AWS::EC2::Instance::Id\",\"AWS::EC2::KeyPair::KeyName\",\"AWS::EC2::SecurityGroup::GroupName\",\"AWS::EC2::SecurityGroup::Id\",\"AWS::EC2::Subnet::Id\",\"AWS::EC2::Volume::Id\",\"AWS::EC2::VPC::Id\",\"AWS::Route53::HostedZone::Id\",\"List<AWS::EC2::AvailabilityZone::Name>\",\"List<AWS::EC2::Image::Id>\",\"List<AWS::EC2::Instance::Id>\",\"List<AWS::EC2::SecurityGroup::GroupName>\",\"List<AWS::EC2::SecurityGroup::Id>\",\"List<AWS::EC2::Subnet::Id>\",\"List<AWS::EC2::Volume::Id>\",\"List<AWS::EC2::VPC::Id>\",\"List<AWS::Route53::HostedZone::Id>\",\"AWS::SSM::Parameter::Name\",\"AWS::SSM::Parameter::Value<String>\",\"AWS::SSM::Parameter::Value<List<String>>\",\"AWS::SSM::Parameter::Value<CommaDelimitedList>\", \"AWS::SSM::Parameter::Value<AWS::EC2::AvailabilityZone::Name>\", \"AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>\", \"AWS::SSM::Parameter::Value<AWS::EC2::Instance::Id>\",\"AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>\",\"AWS::SSM::Parameter::Value<AWS::EC2::SecurityGroup::GroupName>\",\"AWS::SSM::Parameter::Value<AWS::EC2::SecurityGroup::Id>\",\"AWS::SSM::Parameter::Value<AWS::EC2::Subnet::Id>\",\"AWS::SSM::Parameter::Value<AWS::EC2::Volume::Id>\",\"AWS::SSM::Parameter::Value<AWS::EC2::VPC::Id>\",\"AWS::SSM::Parameter::Value<AWS::Route53::HostedZone::Id>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::AvailabilityZone::Name>>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::Image::Id>>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::Instance::Id>>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::SecurityGroup::GroupName>>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::SecurityGroup::Id>>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::Subnet::Id>>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::Volume::Id>>\",\"AWS::SSM::Parameter::Value<List<AWS::EC2::VPC::Id>>\",\"AWS::SSM::Parameter::Value<List<AWS::Route53::HostedZone::Id>>\"]\n\n\n resProp={\n \"AllowedPattern\":\"A regular expression that represents the patterns to allow for String types.\",\n \"AllowedValues\":\"An array(comma separated) containing the list of values allowed for the parameter.\",\n \"ConstraintDescription\":\"A string that explains a constraint when the constraint is violated.\",\n \"Default\":\"A value of the appropriate type for the template to use if no value is specified when a stack is created.\",\n \"Description\":\"Description\",\n \"MaxLength\":\"MaxLength\",\n \"MaxValue\":\"MaxValue\",\n \"MinLength\":\"MinLength\",\n \"MinValue\":\"MinValue\",\n \"NoEcho\":\"Whether to mask the parameter value when a call is made that describes the stack. If you set the value to true, the parameter value is masked with asterisks (*****).\"\n };\n resPropkeys=Object.keys(this.resProp);\n \n\n constructor(public result:JsonResultService, public util:UsefulUtilsService) { }\n\n ngOnInit() {\n }\n\n addParam(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n onRemove(value){\n this.isPresent=false;\n if(value.resourceName) this.result.jsonresult.Parameters[value.resourceName]=undefined;\n }\n\n fixRegex(value){\n return decodeURI(value);\n }\n\n copyToClipboard(value){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.result.jsonresult.Parameters[value.resourceName]);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n copyToClipboardYaml(value){\n this.util.copyToClipboardYaml(this.result.jsonresult.Parameters[value.resourceName])\n }\n \n onDone(value){\n if (this.result.jsonresult.Parameters==undefined){\n this.result.jsonresult.Parameters={}\n }\n this.result.jsonresult.Parameters[value.resourceName]={\n \"Type\":value.Type?value.Type:undefined,\n \"AllowedPattern\":value.AllowedPattern?value.AllowedPattern:undefined,\n \"AllowedValues\":value.AllowedValues?(value.AllowedValues as String).split(\",\"):undefined,\n \"ConstraintDescription\":value.ConstraintDescription?value.ConstraintDescription:undefined,\n \"Default\":value.Default?value.Default:undefined,\n \"Description\":value.Description?value.Description:undefined,\n \"MaxLength\":value.MaxLength?value.MaxLength:undefined,\n \"MaxValue\":value.MaxValue?value.MaxValue:undefined,\n \"MinLength\":value.MinLength?value.MinLength:undefined,\n \"MinValue\":value.MinValue?value.MinValue:undefined,\n \"NoEcho\":value.NoEcho?value.NoEcho:undefined\n };\n this.isCopyReady=true;\n }\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb3BlcnR5LWRpYWxvZy10YWIvcHJvcGVydHktZGlhbG9nLXRhYi5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<button mat-raised-button color=\\\"primary\\\" (click)=\\\"addParam()\\\"> <mat-icon>add</mat-icon> </button><br>\\n<div *ngFor=\\\"let i of tagArray\\\">\\n <app-property-dialog [curRes]=\\\"data\\\" ></app-property-dialog>\\n</div>\\n<app-intrinsic-functions></app-intrinsic-functions>\"","import { Component, OnInit, Inject } from '@angular/core';\nimport {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material';\n\n\n@Component({\n selector: 'app-property-dialog-tab',\n templateUrl: './property-dialog-tab.component.html',\n styleUrls: ['./property-dialog-tab.component.css']\n})\nexport class PropertyDialogTabComponent implements OnInit {\n\n constructor(public dialogRef: MatDialogRef<PropertyDialogTabComponent>,@Inject(MAT_DIALOG_DATA) public data) { }\n\n tagCount=1;\n tagArray=[1];\n\n ngOnInit() {\n }\n\n addParam(){\n this.tagCount+=1;\n this.tagArray.push(this.tagCount);\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3Byb3BlcnR5LWRpYWxvZy9wcm9wZXJ0eS1kaWFsb2cuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<mat-card>Property Dealer\\n <mat-icon color=\\\"warn\\\" [matTooltip]=\\\"prophelp\\\" >help</mat-icon>\\n <form id=\\\"propform\\\" #propform=\\\"ngForm\\\" (submit)=\\\"onDone(propform.value)\\\" >\\n <select #resname name=\\\"resname\\\" form=\\\"propform\\\" ngModel>\\n <optgroup [label]=\\\"curRes\\\" >\\n <option *ngFor=\\\"let j of mainObj.comProp[curRes] | keyvalue\\\" [value]=\\\"j.key\\\">{{j.key}}</option> \\n </optgroup>\\n </select>\\n <button [disabled]=\\\"resname.value==''\\\" mat-stroked-button color=\\\"primary\\\" type=\\\"submit\\\">Generate form</button>\\n </form> \\n <form *ngIf=\\\"propSent\\\" #jsonform=\\\"ngForm\\\" (submit)=\\\"onSubmit(jsonform.value)\\\">\\n <div *ngFor=\\\"let w of getKeys(selProp)\\\">\\n <input *ngIf=\\\"getTypeof(selProp[w])=='string' || isArray(selProp[w]) \\\" \\n type=\\\"text\\\" [name]=\\\"w\\\" [placeholder]=\\\"w\\\" [matTooltip]=\\\"isArray(selProp[w])?selProp[w][0]:selProp[w]\\\" ngModel>\\n <mat-chip *ngIf=\\\"getTypeof(selProp[w])=='object' && !isArray(selProp[w])\\\">\\n {{w}}\\n </mat-chip>\\n <div *ngIf=\\\"getDepth(selProp[w]) > 0 && getTypeof(selProp[w])=='object' \\\">\\n <div *ngFor=\\\"let x of getKeys(isArray(selProp[w])?[]:selProp[w])\\\">\\n <input *ngIf=\\\"getTypeof(selProp[w][x])=='string' || isArray(selProp[w][x]) \\\" \\n type=\\\"text\\\" [name]=\\\"x\\\" [placeholder]=\\\"x\\\" ngModel [matTooltip]=\\\"isArray(selProp[w][x])?selProp[w][x][0]:selProp[w][x]\\\" style=\\\"margin-left: 20px\\\" >\\n <mat-chip *ngIf=\\\"getTypeof(selProp[w][x])=='object' && !isArray(selProp[w][x])\\\" style=\\\"margin-left: 20px\\\">\\n {{x}}\\n </mat-chip>\\n <div *ngIf=\\\"getDepth(selProp[w][x]) >0 && getTypeof(selProp[w][x])=='object'\\\">\\n <div *ngFor=\\\"let k of getKeys(isArray(selProp[w][x])?[]:selProp[w][x])\\\">\\n <input *ngIf=\\\"getTypeof(selProp[w][x][k])=='string' || isArray(selProp[w][x][k])\\\" \\n type=\\\"text\\\" [name]=\\\"k\\\" [placeholder]=\\\"k\\\" ngModel [matTooltip]=\\\"isArray(selProp[w][x][k])?selProp[w][x][k][0]:selProp[w][x][k]\\\" style=\\\"margin-left: 40px\\\" >\\n </div>\\n </div>\\n </div>\\n </div>\\n </div> \\n <button mat-icon-button color=\\\"primary\\\" type=\\\"submit\\\"> <mat-icon>done</mat-icon> </button>\\n <button mat-icon-button color=\\\"warn\\\" (click)=\\\"resname.value=''; onReset()\\\"> <mat-icon>clear</mat-icon> </button>\\n </form>\\n <br>\\n <pre >{{myobj|json}}</pre>\\n <button [disabled]=\\\"!isCopyReady\\\" mat-icon-button (click)=\\\"copyToClipboard()\\\"> <mat-icon>file_copy</mat-icon> </button>\\n </mat-card>\\n <mat-divider></mat-divider>\\n \"","import { Component, OnInit, Input } from '@angular/core';\nimport { ResourceDataService } from '../resource-data.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n@Component({\n selector: 'app-property-dialog',\n templateUrl: './property-dialog.component.html',\n styleUrls: ['./property-dialog.component.css']\n})\nexport class PropertyDialogComponent implements OnInit {\n\n resKeys:String[];\n propKeys:String[];\n reqColor=\"red\";\n conColor=\"darkorange\";\n propSent=false;\n prophelp=\"Tooltip guide: Required properties(starting with *), Conditional properties(starting with **). \\n A property of type array should start with 'List of <string|<object>>' \\n Enter list of items delimited by semicolon(;) for a property of type array. \\nUse the 'plus' icon above to open an additional property dealer widget. Use the function widget below to generate functions. \"\n selProp:Object;\n isCopyReady:Boolean=false;\n @Input('curRes') curRes:string;\n\n constructor(public mainObj:ResourceDataService, public util:UsefulUtilsService){\n }\n\n\n\n\n ngOnInit() {\n }\n\n\n myobj={}\n nonStringOutput={};\n\n\ngetKeys(value){\n return (Object.keys(value)).length==0?[]:Object.keys(value);\n}\n\nonDone(value){\n this.selProp=this.getSelProp(value.resname);\n this.propSent=true;\n}\n\nisRequired(value){\n if(this.getTypeof(value)=='object'){\n if(this.isArray(value)){\n if(value[0].includes(\"*\")){\n if(value[0].startsWith(\"**\")){\n return {\"color\":this.conColor, \"required\":false};\n }else{\n return {\"color\":this.reqColor, \"required\":true};\n }\n }\n }\n else{\n if(value['info'].includes(\"*\")){\n if(value['info'].startsWith(\"**\")){\n return {\"color\":this.conColor, \"required\": false};\n }else{\n return {\"color\":this.reqColor, \"required\":true};\n }\n }\n }\n }\n else{\n if(value.includes(\"*\")){\n if(value.startsWith(\"**\")){\n return {\"color\":this.conColor, \"required\": false};\n }else{\n return {\"color\":this.reqColor, \"required\":true};\n }\n }\n }\n return {\"color\":\"grey\", \"required\": false};\n}\n\ngetSelProp(value){\n var a1=Object.values(this.mainObj.comProp);\n var a2:Object;\n a1.forEach((i)=>{\n if(i.hasOwnProperty(value)){\n a2=i[value];\n }\n })\n return a2;\n}\n\nonSubmit(value){\n this.getLooper(this.selProp,value,this.myobj);\n this.clearUndefinedObj(this.myobj);\n this.clearEmptyObj(this.myobj)\n this.isCopyReady=true;\n}\n\ngetLooper(loopval,formval,myobj){\n this.getKeys(loopval).forEach((j)=>{\n if(typeof(loopval[j])==\"string\"){\n myobj[j]=this.util.getProperJson(formval[j]);\n }\n else{\n if(Array.isArray(loopval[j])){\n myobj[j]=this.util.getSemicolonArray(formval[j]);\n }\n else{\n myobj[j]={}\n this.getLooper(loopval[j],formval,myobj[j])\n }\n }\n })\n\n}\n\nclearUndefinedObj(obj){\n for (let key in obj){\n if(typeof(obj[key])=='object' && !Array.isArray(obj[key])){\n this.clearUndefinedObj(obj[key])\n }\n else{\n if (obj[key] == undefined){\n delete obj[key]\n }\n }\n } \n}\n\nclearEmptyObj(obj){\n console.log(obj)\n for (let key in obj){\n if(typeof(obj[key])=='object' && !Array.isArray(obj[key]) ){\n if (Object.entries(obj[key]).length==0){\n obj[key]=undefined\n }\n else{\n this.clearEmptyObj(obj[key])\n } \n }\n }\n}\n\nonReset(){\n this.propSent=false;\n this.isCopyReady=false;\n this.myobj={};\n}\n\nisArray(value){\n return Array.isArray(value);\n}\n\ngetTypeof(val){\n return typeof(val);\n}\n\ngetDepth(obj){\n var level = 1;\n var key;\n for(key in obj) {\n if (!obj.hasOwnProperty(key)) continue;\n\n if(typeof obj[key] == 'object'){\n var depth = this.getDepth(obj[key]) + 1;\n level = Math.max(depth, level);\n }\n }\n return level;\n}\n\ncopyToClipboard(){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.myobj);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n this.myobj={};\n}\n\n}\n","import { Injectable } from '@angular/core';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResourceDataService {\n\n constructor() { }\n\n comProp:Object={\n \"AWS::EC2::Instance\":{\n \"AssociationParameters\":{\n \"Key\":\"*The name of an input parameter that is in the associated SSM document.\",\n \"Value\":[\"*The value of an input parameter. List of String values\"]\n },\n \"BlockDeviceMapping_ec2\":{\n \"DeviceName\":\"*The name of the device within Amazon EC2. Recommended for EBS Volumes: /dev/sd[f-p], /dev/sd[f-p][1-6](only for paravirtual).\",\n \"Ebs\":{\n \"DeleteOnTermination\":\"Boolean. Determines whether to delete the volume on instance termination. The default value is true.\",\n \"Encrypted\":\"Boolean. Indicates whether the volume is encrypted. Encrypted Amazon EBS volumes can only be attached to instance types that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. You cannot create an encrypted volume from an unencrypted snapshot or vice versa. If your AMI uses encrypted volumes, you can only launch the AMI on supported instance types.\",\n \"Iops\":\"**Number. The number of I/O operations per second (IOPS) that the volume supports. This can be an integer from 100 – 20000.Required when the volume type is io1; not used with other volume types.\",\n \"SnapshotId\":\"**If you specify both SnapshotId and VolumeSize, VolumeSize must be equal or greater than the size of the snapshot.\",\n \"VolumeSize\":\"**Integer. The size of the volume, in GiBs.Constraints: 1-16,384 for gp2, 4-16,384 for io1, 500-16,384 for st1, 500-16,384 for sc1, and 1-1,024 for standard. If you specify a snapshot, the volume size must be equal to or larger than the snapshot size.Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.\",\n \"VolumeType\":\"The volume type. If you set the type to io1, you must also set the Iops property. The volume type. This can be gp2 for General Purpose SSD, io1 for Provisioned IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard for Magnetic volumes.Defaults: If no volume type is specified, the default is standard in us-east-1, eu-west-1, eu-central-1, us-west-2, us-west-1, sa-east-1, ap-northeast-1, ap-northeast-2, ap-southeast-1, ap-southeast-2, ap-south-1, us-gov-west-1, and cn-north-1. In all other Regions, EBS defaults to gp2. standard | io1 | gp2 | sc1 | st1\"\n },\n \"NoDevice\":\"This property can be used to unmap a defined device. Suppresses the specified device included in the block device mapping of the AMI. To suppress a device, specify an empty string {}.\",\n \"VirtualName\":\"**The name of the virtual device. The name must be in the form ephemeralX where X is a number starting from zero (0); for example, ephemeral0. You can specify either VirtualName or Ebs, but not both.\"\n },\n \"CreditSpecification\":{\n \"CPUCredits\":\"The credit option for CPU usage of a T2 or T3 instance. Valid values are unlimited and standard. T3 instances launch as unlimited by default. T2 instances launch as standard by default.\"\n },\n \"ElasticGpuSpecification\":{\n \"Type\":\"*The type of Elastic GPU.\"\n },\n \"ElasticInferenceAccelerator\":{\n \"Type\":\"*The type of elastic inference accelerator. The possible values are eia1.medium, eia1.large, and eia1.xlarge.\"\n },\n \"LaunchTemplateSpecification_ec2\":{\n \"LaunchTemplateId\":\"**The ID of the launch template.You must specify either LaunchTemplateId or LaunchTemplateName, but not both.\",\n \"LaunchTemplateName\":\"**You must specify either LaunchTemplateId or LaunchTemplateName, but not both\",\n \"Version\":\"*The version number. AWS CloudFormation does not support specifying $Latest, or $Default for the template version number.\"\n },\n \"LicenseSpecification_ec2\":{\n \"LicenseConfigurationArn\":\"*The Amazon Resource Name (ARN) of license configuration to associate with the instance.\"\n },\n \"MountPoint_ec2\":{\n \"Device\":\"*How the device is exposed to the instance (such as /dev/sdh, or xvdh).\",\n \"VolumeId\":\"*The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone and the instance must be running.\"\n },\n \"NetworkInterface_ec2\":{\n \"AssociatePublicIpAddress\":\"Boolean. Indicates whether the network interface receives a public IP address. You can associate a public IP address with a network interface only if it has a device index of eth0 and if it is a new network interface (not an existing one). In other words, if you specify true, don't specify a network interface ID.\",\n \"DeleteOnTermination\":\"Boolean. Whether to delete the network interface when the instance terminates.\",\n \"Description\":\"\",\n \"DeviceIndex\":\"*The network interface's position in the attachment order.\",\n \"GroupSet\":[\"List of strings. A list of security group IDs associated with this network interface.\"],\n \"NetworkInterfaceId\":\"**If you don't specify the SubnetId property, you must specify this property.\",\n \"Ipv6AddressCount\":\"Integer. The number of IPv6 addresses to associate with the network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property.\",\n \"Ipv6Addresses\":[\"List of EC2 NetworkInterface Ipv6Addresses. One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. To specify a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property.\"],\n \"PrivateIpAddress\":\"Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property.\",\n \"PrivateIpAddresses\":[\"list of PrivateIpAddressSpecification. Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want Amazon EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property.\"],\n \"SecondaryPrivateIpAddressCount\":\"The number of secondary private IP addresses that Amazon EC2 auto assigns to the network interface. Amazon EC2 uses the value of the PrivateIpAddress property as the primary private IP address. If you don't specify that property, Amazon EC2 auto assigns both the primary and secondary private IP addresses.\",\n \"SubnetId\":\"**The ID of the subnet to associate with the network interface. If you don't specify the NetworkInterfaceId property, you must specify this property.\"\n },\n \"SsmAssociations\":{\n \"AssociationParameters\":[\"List of Amazon EC2 Instance SsmAssociations AssociationParameters\"],\n \"DocumentName\":\"*The name of an SSM document to associate with the instance.\"\n },\n \"CreationPolicy_ec2\":{\n \"ResourceSignal\" : { \n \"Count\" : \"Integer. Default :1 . The number of success signals AWS CloudFormation must receive before it sets the resource status as CREATE_COMPLETE. If the resource receives a failure signal or doesn't receive the specified number of signals before the timeout period expires, the resource creation fails and AWS CloudFormation rolls the stack back.\",\n \"Timeout\" : \"The length of time that AWS CloudFormation waits for the number of signals that was specified in the Count property. The timeout period starts after AWS CloudFormation starts creating the resource, and the timeout expires no sooner than the time you specify but can occur shortly thereafter. The maximum time that you can specify is 12 hours. The value must be in ISO8601 duration format, in the form: 'PT#H#M#S', where each # is the number of hours, minutes, and seconds, respectively. For best results, specify a period of time that gives your instances plenty of time to get up and running. A shorter timeout can cause a rollback. Default: PT5M (5 minutes)\"\n }\n },\n \"InstanceIpv6Address_ec2\":{\n \"Ipv6Address\" : \"*String, The IPv6 Address.\"\n },\n \"PrivateIpAddressSpecification_ec2\":{\n \"Primary\" : \"*Boolean. Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary\",\n \"PrivateIpAddress\" : \"*String\"\n } \n },\n \"AWS::EC2::SecurityGroup\":{\n \"SecurityGroupEgress\":{\n \"CidrIp\" : \"**\",\n \"CidrIpv6\" : \"**\",\n \"Description\" : \"**\",\n \"DestinationPrefixListId\" : \"**\",\n \"DestinationSecurityGroupId\" : \"**\",\n \"FromPort\" : \"\",\n \"IpProtocol\" : \"*\",\n \"ToPort\" : \"\"\n },\n \"SecurityGroupIngress\":{\n \"CidrIp\" : \"**\",\n \"CidrIpv6\" : \"**\",\n \"Description\" : \"**\",\n \"FromPort\" : \"\",\n \"IpProtocol\" : \"*\",\n \"SourceSecurityGroupId\" : \"**\",\n \"SourceSecurityGroupName\" : \"**\",\n \"SourceSecurityGroupOwnerId\" : \"**\",\n \"ToPort\" : \"\"\n }\n },\n \"AWS::EC2::EC2Fleet\":{\n \"FleetLaunchTemplateConfigRequest\":{\n \"LaunchTemplateSpecification\" : {\n \"LaunchTemplateId\" : \"The ID of the launch template.\",\n \"LaunchTemplateName\" : \"\",\n \"Version\" : \"The version number of the launch template.\"\n },\n \"Overrides\" : []\n },\n \"FleetLaunchTemplateOverridesRequest\":{\n \"AvailabilityZone\" : \"\",\n \"InstanceType\" : \"\",\n \"MaxPrice\" : \"The maximum price per unit hour that you are willing to pay for a Spot Instance.\",\n \"Priority\" : \"The priority for the launch template override. If AllocationStrategy is set to prioritized, EC2 Fleet uses priority to determine which launch template override to use first in fulfilling On-Demand capacity. The highest priority is launched first. Valid values are whole numbers starting at 0. The lower the number, the higher the priority. If no number is set, the launch template override has the lowest priority.\",\n \"SubnetId\" : \"\",\n \"WeightedCapacity\" : \"\"\n },\n \"OnDemandOptionsRequest\":{\n \"AllocationStrategy\" : \"The order of the launch template overrides to use in fulfilling On-Demand capacity. If you specify lowest-price, EC2 Fleet uses price to determine the order, launching the lowest price first. If you specify prioritized, EC2 Fleet uses the priority that you assigned to each launch template override, launching the highest priority first. If you do not specify a value, EC2 Fleet defaults to lowest-price.\"\n },\n \"SpotOptionsRequest\":{\n \"AllocationStrategy\" : \"Indicates how to allocate the target capacity across the Spot pools specified by the Spot Fleet request. The default is lowestPrice.\",\n \"InstanceInterruptionBehavior\" : \"The behavior when a Spot Instance is interrupted. The default is terminate.\",\n \"InstancePoolsToUseCount\" : \"The number of Spot pools across which to allocate your target Spot capacity. Valid only when Spot AllocationStrategy is set to lowest-price. EC2 Fleet selects the cheapest Spot pools and evenly allocates your target Spot capacity across the number of Spot pools that you specify.\"\n },\n \"TagSpecification\":{\n \"ResourceType\" : \"The type of resource to tag. Currently, the resource types that support tagging on creation are fleet, dedicated-host, instance, snapshot, and volume.\",\n \"Tags\" : []\n },\n \"TargetCapacitySpecificationRequest\":{\n \"DefaultTargetCapacityType\" : \"\",\n \"OnDemandTargetCapacity\" : \"\",\n \"SpotTargetCapacity\" : \"\",\n \"TotalTargetCapacity\" : \"*The number of units to request, filled using DefaultTargetCapacityType.\"\n }\n },\n \"AWS::EC2::LaunchTemplate\":{\n \"LaunchTemplateData\":{\n \"SecurityGroups\" : [\"List of String values.\"],\n \"TagSpecifications\" : [\"Type: List of TagSpecification\"],\n \"UserData\" : \"The Base64-encoded user data to make available to the instance.\",\n \"InstanceInitiatedShutdownBehavior\" : \"Valid values include stop and terminate. The default is stop.\",\n \"BlockDeviceMappings\" : [\"list of BlockDeviceMapping\" ],\n \"IamInstanceProfile\" : {\n \"Arn\" : \"\",\n \"Name\" : \"\"\n },\n \"KernelId\" : \"\",\n \"SecurityGroupIds\" : [\"Type: List of String values. One or more security group IDs.\"],\n \"EbsOptimized\" : \"Boolean.Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.\",\n \"KeyName\" : \"The name of the key pair. If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.\",\n \"DisableApiTermination\" : \"Boolean. If set to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API\",\n \"ElasticGpuSpecifications\" : [\"list of ElasticGpuSpecification\" ],\n \"Placement\" : {\n \"GroupName\" : \"String\",\n \"Tenancy\" : \"Valid values include default, dedicated, and host.\",\n \"AvailabilityZone\" : \"String\",\n \"Affinity\" : \"The affinity setting for an instance on a Dedicated Host.\",\n \"HostId\" : \"String\"\n },\n \"InstanceMarketOptions\" : {\n \"SpotOptions\" : {\n \"SpotInstanceType\" : \"Valid values include: one-time and persistent.\",\n \"InstanceInterruptionBehavior\" : \"Valid values include: hibernate, stop, and terminate.\",\n \"MaxPrice\" : \"The maximum hourly price you're willing to pay for the Spot Instances.\"\n },\n \"MarketType\" : \"Valid values include: spot\"\n },\n \"NetworkInterfaces\" : [\" list of NetworkInterface\"],\n \"ImageId\" : \"\",\n \"InstanceType\" : \"\",\n \"RamDiskId\" : \"\",\n \"Monitoring\" : {\n \"Enabled\" : \"Boolean.Specify true to enable detailed monitoring. Otherwise, basic monitoring is enabled.\"\n },\n \"CreditSpecification\" : {\n \"CpuCredits\" : \"The credit option for CPU usage of a T2 instance. Valid values include standard and unlimited.\"\n }\n },\n \"TagSpecification\":{\n \"ResourceType\" : \"The type of resource to tag. Currently, the resource types that support tagging on creation are instance and volume.\",\n \"Tags\" : [\"The tags to apply to the resource.\"]\n },\n \"Ebs\":{\n \"SnapshotId\" : \"String. \",\n \"VolumeType\" : \"String. Valid values include: standard, io1, gp2, sc1, and st1.\",\n \"KmsKeyId\" : \"String\",\n \"Encrypted\" : \"Boolean\",\n \"Iops\" : \"Integer\",\n \"VolumeSize\" : \"Integer. If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.\",\n \"DeleteOnTermination\" : \"Boolean\"\n },\n \"ElasticGpuSpecification\":{\n \"Type\" : \"String\"\n },\n \"NetworkInterface\":{\n \"Description\" : \"String\",\n \"PrivateIpAddress\" : \"String\",\n \"PrivateIpAddresses\" : [ \"list of privateipaddresses\" ],\n \"SecondaryPrivateIpAddressCount\" : \"Integer\",\n \"Ipv6AddressCount\" : \"Integer\",\n \"Groups\" : [\"Type: List of String values. The IDs of one or more security groups.\"],\n \"DeviceIndex\" : \"Integer\",\n \"SubnetId\" : \"String\",\n \"Ipv6Addresses\" : [\"Type: List of Ipv6Add\"] ,\n \"AssociatePublicIpAddress\" : \"Boolean. Associates a public IPv4 address with eth0 for a new network interface.\",\n \"NetworkInterfaceId\" : \"String\",\n \"DeleteOnTermination\" : \"Boolean\"\n }\n },\n \"AWS::EC2::VPNConnection\":{\n \"VpnTunnelOptionsSpecification\":{\n \"PreSharedKey\" : \"The pre-shared key (PSK) to establish initial authentication between the virtual private gateway and customer gateway.\",\n \"TunnelInsideCidr\" : \"The range of inside IP addresses for the tunnel. Any specified CIDR blocks must be unique across all VPN connections that use the same virtual private gateway.\"\n }\n },\n \"AWS::EC2::SpotFleet\":{\n \"SpotFleetRequestConfigData\":{\n \"AllocationStrategy\" : \"Indicates how to allocate the target capacity across the Spot pools that you specified in the Spot fleet request.\",\n \"ExcessCapacityTerminationPolicy\" : \"Indicates whether running Spot instances are terminated if you decrease the target capacity of the Spot fleet request below the current size of the Spot fleet.\",\n \"IamFleetRole\" : \"*The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that grants the Spot fleet the ability to bid on, launch, and terminate instances on your behalf. \",\n \"InstanceInterruptionBehavior\" : \"The behavior when a Spot Instance is interrupted.\",\n \"LaunchSpecifications\" : [\"**List of Amazon Elastic Compute Cloud SpotFleet LaunchSpecifications. You must specify either LaunchSpecifications or LaunchTemplateConfigs.\"],\n \"LaunchTemplateConfigs\" : [\"**List of LaunchTemplateConfig\"],\n \"LoadBalancersConfig\" : {\n \"ClassicLoadBalancersConfig\" : {\n \"ClassicLoadBalancers\" : [\"*List of Amazon EC2 SpotFleet ClassicLoadBalancer\"]\n },\n \"TargetGroupsConfig\" : {\n \"TargetGroups\" : [\"Type: List of Amazon EC2 SpotFleet TargetGroup\"]\n }\n },\n \"ReplaceUnhealthyInstances\" : \"Boolean. Indicates whether the Spot fleet should replace unhealthy instances.\",\n \"SpotPrice\" : \"The bid price per unit hour. For more information, see How Spot Fleet Works in the Amazon EC2 User Guide for Linux Instances.\",\n \"TargetCapacity\" : \"*The number of units to request for the spot fleet. You can choose to set the target capacity as the number of instances or as a performance characteristic that is important to your application workload, such as vCPUs, memory, or I/O. \",\n \"TerminateInstancesWithExpiration\" : \"Boolean. Indicates whether running Spot instances are terminated when the Spot fleet request expires.\",\n \"Type\" : \"The type of request, which indicates whether the fleet will only request the target capacity or also attempt to maintain it.\",\n \"ValidFrom\" : \"The start date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ). By default, Amazon Elastic Compute Cloud (Amazon EC2 ) starts fulfilling the request immediately.\",\n \"ValidUntil\" : \"The end date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ). After the end date and time, Amazon EC2 doesn't request new Spot instances or enable them to fulfill the request.\"\n },\n \"LaunchSpecifications\":{\n \"BlockDeviceMappings\" : [ \"BlockDeviceMapping, ... \"],\n \"EbsOptimized\" : \"Boolean\",\n \"IamInstanceProfile\" : {\n \"Arn\":\"String\"\n },\n \"ImageId\" : \"String\",\n \"InstanceType\" : \"String\",\n \"KernelId\" : \"String\",\n \"KeyName\" : \"String\",\n \"Monitoring\" : \"Boolean\",\n \"NetworkInterfaces\" : [\" NetworkInterface, ... \"],\n \"Placement\" : {\n \"AvailabilityZone\" : \"String\",\n \"GroupName\" : \"String\",\n \"Tenancy\" : \"String\"\n },\n \"RamdiskId\" : \"String\",\n \"SecurityGroups\" : [ \"SecurityGroup, ...\" ],\n \"SpotPrice\" : \"String\",\n \"SubnetId\" : \"String\",\n \"TagSpecifications\" : [ \"SpotFleetTagSpecification, ... \"], \n \"UserData\" : \"String\",\n \"WeightedCapacity\" : \"Number\"\n },\n \"BlockDeviceMappings\":{\n \"DeviceName\" : \"String\",\n \"Ebs\" : {\n \"DeleteOnTermination\" : \"Boolean\",\n \"Encrypted\" : \"Boolean\",\n \"Iops\" : \"Integer\",\n \"SnapshotId\" : \"String\",\n \"VolumeSize\" : \"Integer\",\n \"VolumeType\" : \"String\"\n },\n \"NoDevice\" : \"Boolean\",\n \"VirtualName\" : \"String\"\n },\n \"LaunchTemplateConfig\":{\n \"LaunchTemplateSpecification\" : {\n \"LaunchTemplateId\" : \"String\",\n \"LaunchTemplateName\" : \"String\",\n \"Version\" : \"String\"\n },\n \"Overrides\" : [\" LaunchTemplateOverrides, ... \"]\n },\n \"LaunchTemplateOverrides\":{\n \"AvailabilityZone\" : \"String\",\n \"InstanceType\" : \"String\",\n \"SpotPrice\" : \"String\",\n \"SubnetId\" : \"String\",\n \"WeightedCapacity\" : \"Double\"\n },\n \"SpotFleetTagSpecification\":{\n \"ResourceType\" : \"String\",\n \"Tags\" : [ \"Resource Tag, ... \"]\n },\n \"SecurityGroups\":{\n \"GroupId\" : \"String\"\n },\n \"NetworkInterfaces\":{\n \"AssociatePublicIpAddress\" : \"Boolean\",\n \"DeleteOnTermination\" : \"Boolean\",\n \"Description\" : \"String\",\n \"DeviceIndex\" : \"Integer\",\n \"Groups\" : [\" String, ... \"],\n \"Ipv6AddressCount\" : \"Integer\",\n \"Ipv6Addresses\" : [\" IPv6 Address Type, ... \"],\n \"NetworkInterfaceId\" : \"String\",\n \"PrivateIpAddresses\" : [ \"PrivateIpAddresses, ...\" ],\n \"SecondaryPrivateIpAddressCount\" : \"Integer\",\n \"SubnetId\" : \"String\"\n },\n \"PrivateIpAddresses\":{\n \"Primary\" : \"Boolean\",\n \"PrivateIpAddress\" : \"String\"\n },\n \"TargetGroup\":{\n \"Arn\" : \"String\"\n },\n \"TargetGroupsConfig\":{\n \"TargetGroups\" : [ \"TargetGroup, ...\" ]\n },\n \"Monitoring\":{\n \"Enabled\" : \"Boolean\"\n }\n },\n \"AWS::EC2::NetworkAclEntry\":{\n \"Icmp\":{\n \"Code\" : \"** The Internet Control Message Protocol (ICMP) code. You can use -1 to specify all ICMP codes for the given ICMP type. Required if you specify 1 (ICMP) for the CreateNetworkAclEntry protocol parameter.\",\n \"Type\" : \"**Integer. The Internet Control Message Protocol (ICMP) type. You can use -1 to specify all ICMP types. Required if you specify 1 (ICMP) for the CreateNetworkAclEntry protocol parameter.\"\n },\n \"PortRange\":{\n \"From\" : \"**Integer. The first port in the range. Required if you specify 6 (TCP) or 17 (UDP) for the protocol parameter. \",\n \"To\" : \"**Integer. The last port in the range. Required if you specify 6 (TCP) or 17 (UDP) for the protocol parameter. \"\n },\n },\n \"AWS::EC2::NetworkInterface\":{\n \"Ipv6Addresses\":{\n \"Ipv6Address\" : \"*The IPv6 address to associate with the network interface.\"\n },\n \"PrivateIpAddressSpecification\":{\n \"PrivateIpAddress\" : \"*String. The private IP address of the network interface.\",\n \"Primary\" : \"*Boolean. Sets the private IP address as the primary private address. You can set only one primary private IP address. If you don't specify a primary private IP address, Amazon EC2 automatically assigns a primary private IP address. \"\n }\n },\n \"AWS::Route53::HealthCheck\":{\n \"AlarmIdentifier\":{\n \"Name\" : \"*The name of the Amazon CloudWatch alarm that you want Route 53 health checkers to use to determine whether this health check is healthy.\",\n \"Region\" : \"*A complex type that identifies the CloudWatch alarm that you want Route 53 health checkers to use to determine whether this health check is healthy. For example, us-west-2.\"\n },\n \"HealthCheckConfig\":{\n \"AlarmIdentifier\" : {\n \"Name\" : \"The name of the Amazon CloudWatch alarm that you want Route 53 health checkers to use to determine whether this health check is healthy.\",\n \"Region\" : \"A complex type that identifies the CloudWatch alarm that you want Route 53 health checkers to use to determine whether this health check is healthy. For example, us-west-2.\"\n },\n \"ChildHealthChecks\" : [\"Type: List of String values. (CALCULATED Health Checks Only) A complex type that contains one ChildHealthCheck element for each health check that you want to associate with a CALCULATED health check.\"],\n \"EnableSNI\" : \"Boolean. Specifies whether you want Route 53 to send the value of FullyQualifiedDomainName to the endpoint in the client_hello message during TLS negotiation. This allows the endpoint to respond to HTTPS health check requests with the applicable SSL/TLS certificate.\",\n \"FailureThreshold\" : \"Integer. The number of consecutive health checks that an endpoint must pass or fail for Route 53 to change the current status of the endpoint from unhealthy to healthy or healthy to unhealthy.\",\n \"FullyQualifiedDomainName\" : \"**If you specified the IPAddress property, the value that you want Route 53 to pass in the host header in all health checks except for TCP health checks. If you don't specify an IP address, the domain that Route 53 sends a DNS request to. Route 53 uses the IP address that the DNS returns to check the health of the endpoint.\",\n \"HealthThreshold\" : \"Integer. The number of child health checks that are associated with a CALCULATED health that Route 53 must consider healthy for the CALCULATED health check to be considered healthy.\",\n \"InsufficientDataHealthStatus\" : \"When Amazon CloudWatch has insufficient data about the metric to determine the alarm state, the status that you want Route 53 to assign to the health check (Healthy, Unhealthy, or LastKnownStatus).\",\n \"Inverted\" : \"Specifies whether you want Route 53 to invert the status of a health check, for example, to consider a health check unhealthy when it otherwise would be considered healthy.\",\n \"IPAddress\" : \"The IPv4 IP address of the endpoint on which you want Route 53 to perform health checks. If you don't specify an IP address, Route 53 sends a DNS request to resolve the domain name that you specify in the FullyQualifiedDomainName property.\",\n \"MeasureLatency\" : \"Boolean. Specifies whether you want Route 53 to measure the latency between health checkers in multiple AWS regions and your endpoint and display CloudWatch latency graphs on the Health Checks page in the Route 53 console.\",\n \"Port\" : \"**Integer. Required when you specify TCP for the Type property.\",\n \"Regions\" : [\"Type: List of String values. The regions from which you want Amazon Route 53 health checkers to check the specified endpoint. Duplicates are not allowed.\"],\n \"RequestInterval\" : \"Integer. The number of seconds between the time that Route 53 gets a response from your endpoint and the time that it sends the next health check request.\",\n \"ResourcePath\" : \"The path that you want Route 53 to request when performing health checks. The path can be any value for which your endpoint returns an HTTP status code of 2xx or 3xx when the endpoint is healthy, such as /docs/route53-health-check.html.\",\n \"SearchString\" : \"If the value of the Type property is HTTP_STR_MATCH or HTTPS_STR_MATCH, the string that you want Route 53 to search for in the response body from the specified resource. If the string appears in the response body, Route 53 considers the resource healthy.\",\n \"Type\" : \"*The type of health check that you want to create. This indicates how Route 53 determines whether an endpoint is healthy. You can specify HTTP, HTTPS, HTTP_STR_MATCH, HTTPS_STR_MATCH, TCP, CLOUDWATCH_METRIC, or CALCULATED.\"\n },\n \"HealthCheckTags\":{\n \"Key\" : \"String\",\n \"Value\" : \"String\"\n }\n },\n \"AWS::Route53::HostedZone\":{\n \"HostedZoneConfig\":{\n \"Comment\" : \"String\"\n },\n \"HostedZoneTags\":{\n \"Key\" : \"String\",\n \"Value\" : \"String\"\n },\n \"HostedZoneVPCs\":{\n \"VPCId\" : \"String\",\n \"VPCRegion\" : \"String\"\n },\n \"QueryLoggingConfig\":{\n \"CloudWatchLogsLogGroupArn\" : \"String\"\n }\n },\n \"AWS::Route53::RecordSet\":{\n \"AliasTarget\":{\n \"DNSName\" : \"*The DNS name of the load balancer, the domain name of the CloudFront distribution, the website endpoint of the Amazon S3 bucket, or another record set in the same hosted zone that is the target of the alias.\",\n \"EvaluateTargetHealth\" : \"Boolean. Whether Route 53 checks the health of the resource record sets in the alias target when responding to DNS queries\",\n \"HostedZoneId\" : \"*The hosted zone ID. For load balancers, use the canonical hosted zone ID of the load balancer. For Amazon S3, use the hosted zone ID for your bucket's website endpoint. For CloudFront, use Z2FDTNDATAQYW2. \"\n },\n \"GeoLocation\":{\n \"ContinentCode\" : \"All DNS queries from the continent that you specified are routed to this resource record set. If you specify this property, omit the CountryCode and SubdivisionCode properties.\",\n \"CountryCode\" : \"All DNS queries from the country that you specified are routed to this resource record set. If you specify this property, omit the ContinentCode property. To specify the default location, use * for this property.\",\n \"SubdivisionCode\" : \"If you specified US for the country code, you can specify a state in the United States. All DNS queries from the state that you specified are routed to this resource record set. If you specify this property, you must specify US for the CountryCode and omit the ContinentCode property.\"\n }\n },\n \"AWS::Route53Resolver::ResolverEndpoint\":{\n \"IpAddressRequest\":{\n \"Ip\" : \"String\",\n \"SubnetId\" : \"*The subnet that contains the IP address.\"\n }\n },\n \"AWS::Route53Resolver::ResolverRule\":{\n \"TargetAddress\":{\n \"Ip\" : \"*One IP address that you want to forward DNS queries to. You can specify only IPv4 addresses.\",\n \"Port\" : \"*The port at Ip that you want to forward DNS queries to.\"\n }\n },\n \"AWS::IAM::User\":{\n \"LoginProfile\":{\n \"Password\" : \"*The password for the user.\",\n \"PasswordResetRequired\" : \"Boolean. Specifies whether the user is required to set a new password the next time the user logs in to the AWS Management Console.\"\n }\n },\n \"AWS::IAM::Role\":{\n \"Policies\":{\n \"PolicyDocument\" : \"A JSON object. create a policy object using AWS policy generator\",\n \"PolicyName\" : \"String\"\n }\n },\n \"AWS::AutoScaling::AutoScalingGroup\":{\n \"MixedInstancesPolicy\":{\n \"InstancesDistribution\" : {\n \"OnDemandAllocationStrategy\" : \"String. Indicates how to allocate instance types to fulfill On-Demand capacity. The only valid value is prioritized, which is also the default value. This strategy uses the order of instance types in the Overrides array of LaunchTemplate to define the launch priority of each instance type. The first instance type in the array is prioritized higher than the last. If all your On-Demand capacity cannot be fulfilled using your highest priority instance, then the Auto Scaling groups launches the remaining capacity using the second priority instance type, and so on.\",\n \"OnDemandBaseCapacity\" : \"Integer. The minimum amount of the Auto Scaling group's capacity that must be fulfilled by On-Demand Instances. This base portion is provisioned first as your group scales. The default value is 0. If you leave this parameter set to 0, On-Demand Instances are launched as a percentage of the Auto Scaling group's desired capacity, per the OnDemandPercentageAboveBaseCapacity setting.\",\n \"OnDemandPercentageAboveBaseCapacity\" : \"Integer. Controls the percentages of On-Demand Instances and Spot Instances for your additional capacity beyond OnDemandBaseCapacity. The range is 0–100. The default value is 100. If you leave this parameter set to 100, the percentages are 100% for On-Demand Instances and 0% for Spot Instances.\",\n \"SpotAllocationStrategy\" : \"String. The only valid value is lowest-price, which is also the default value. The Auto Scaling group selects the cheapest Spot pools and evenly allocates your Spot capacity across the number of Spot pools that you specify.\",\n \"SpotInstancePools\" : \"Integer. The number of Spot pools to use to allocate your Spot capacity. The range is 1–20 and the default is 2.\",\n \"SpotMaxPrice\" : \"String. The maximum price per unit hour that you are willing to pay for a Spot Instance. If you leave this value blank (which is the default), the maximum Spot price is set at the On-Demand price. Minimum length of 1. Maximum length of 255.\"\n },\n \"LaunchTemplate\" : {\n \"LaunchTemplateSpecification\" : {\n \"LaunchTemplateId\" : \"String. The ID of the launch template. You must specify either a template ID or a template name.\",\n \"LaunchTemplateName\" : \"String. The name of the launch template. You must specify either a template name or a template ID.\",\n \"Version\" : \"String. The version number. AWS CloudFormation does not support specifying $Latest, or $Default for the template version number.\"\n },\n \"Overrides\" : [\"*Type: List of LaunchTemplateOverrides property types. Any parameters that you specify override the same parameters in the launch template. Currently, the only supported override is instance type. You must specify between 2 and 20 overrides.\" ]\n }\n },\n \"LaunchTemplateOverrides\":{\n \"InstanceType\" : \"String\"\n },\n \"MetricsCollection\":{\n \"Granularity\" : \"*String. The frequency at which Amazon EC2 Auto Scaling sends aggregated data to CloudWatch. The only valid value is 1Minute.\",\n \"Metrics\" : [\"Type: List of String values. The list of metrics to collect. If you don't specify any metrics, all metrics are enabled.\"]\n },\n \"LifecycleHookSpecification\":{\n \"DefaultResult\" : \"The action that the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. Valid values: CONTINUE, ABANDON (default)\",\n \"HeartbeatTimeout\" : \"Integer. The maximum time, in seconds, that can elapse before the lifecycle hook times out. If the lifecycle hook times out, Auto Scaling performs the default action.\",\n \"LifecycleHookName\" : \"*String. The name of the lifecycle hook.\",\n \"LifecycleTransition\" : \"*String. The state of the EC2 instance to attach the lifecycle hook to.\",\n \"NotificationMetadata\" : \"String. Additional information to include when Amazon EC2 Auto Scaling sends a message to the notification target. \",\n \"NotificationTargetARN\" : \"String.The Amazon Resource Name (ARN) of the target that Amazon EC2 Auto Scaling sends notifications to when an instance is in the transition state for the lifecycle hook. The notification target can be either an Amazon SQS queue or an Amazon SNS topic.\",\n \"RoleARN\" : \"String. The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.\"\n },\n \"LaunchTemplateSpecification\":{\n \"LaunchTemplateId\" : \"String. The ID of the launch template. You must specify either a template ID or a template name.\",\n \"LaunchTemplateName\" : \"String. The name of the launch template. You must specify either a template name or a template ID.\",\n \"Version\" : \"String. The version number. AWS CloudFormation does not support specifying $Latest, or $Default for the template version number.\"\n },\n \"NotificationConfiguration\":{\n \"NotificationTypes\" : [\"*list of string values. A list of event types that trigger a notification. Event types can include any of the following types: autoscaling:EC2_INSTANCE_LAUNCH, autoscaling:EC2_INSTANCE_LAUNCH_ERROR, autoscaling:EC2_INSTANCE_TERMINATE, autoscaling:EC2_INSTANCE_TERMINATE_ERROR, and autoscaling:TEST_NOTIFICATION. \"],\n \"TopicARN\" : \"*String. The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.\"\n },\n \"Tags\":{\n \"Key\" : \"*String\",\n \"Value\" : \"*String\",\n \"PropagateAtLaunch\" : \"*Boolean. Set to true if you want AWS CloudFormation to copy the tag to EC2 instances that are launched as part of the Auto Scaling group. Set to false if you want the tag attached only to the Auto Scaling group and not copied to any instances launched as part of the Auto Scaling group.\"\n },\n \"CreationPolicy\":{\n \"AutoScalingCreationPolicy\":{\n \"MinSuccessfulInstancesPercent\":\"Specifies the percentage of instances in an Auto Scaling replacement update that must signal success for the update to succeed. You can specify a value from 0 to 100. AWS CloudFormation rounds to the nearest tenth of a percent. For example, if you update five instances with a minimum successful percentage of 50, three instances must signal success. If an instance doesn't send a signal within the time specified by the Timeout property, AWS CloudFormation assumes that the instance wasn't created. Default: 100\"\n },\n \"ResourceSignal\" : { \n \"Count\" : \"Integer. Default :1 . The number of success signals AWS CloudFormation must receive before it sets the resource status as CREATE_COMPLETE. If the resource receives a failure signal or doesn't receive the specified number of signals before the timeout period expires, the resource creation fails and AWS CloudFormation rolls the stack back.\",\n \"Timeout\" : \"The length of time that AWS CloudFormation waits for the number of signals that was specified in the Count property. The timeout period starts after AWS CloudFormation starts creating the resource, and the timeout expires no sooner than the time you specify but can occur shortly thereafter. The maximum time that you can specify is 12 hours. The value must be in ISO8601 duration format, in the form: 'PT#H#M#S', where each # is the number of hours, minutes, and seconds, respectively. For best results, specify a period of time that gives your instances plenty of time to get up and running. A shorter timeout can cause a rollback. Default: PT5M (5 minutes)\"\n }\n },\n \"AutoScalingReplacingUpdate(UpdatePolicy)\":{\n \"AutoScalingReplacingUpdate\" : {\n \"WillReplace\" : \"Boolean. Specifies whether an Auto Scaling group and the instances it contains are replaced during an update. During replacement, AWS CloudFormation retains the old group until it finishes creating the new one. If the update fails, AWS CloudFormation can roll back to the old Auto Scaling group and delete the new Auto Scaling group. While AWS CloudFormation creates the new group, it doesn't detach or attach any instances. After successfully creating the new Auto Scaling group, AWS CloudFormation deletes the old Auto Scaling group during the cleanup process. When you set the WillReplace parameter, remember to specify a matching CreationPolicy. If the minimum number of instances (specified by the MinSuccessfulInstancesPercent property) don't signal success within the Timeout period (specified in the CreationPolicy policy), the replacement update fails and AWS CloudFormation rolls back to the old Auto Scaling group. \"\n }\n },\n \"AutoScalingRollingUpdate(UpdatePolicy)\":{\n \"AutoScalingRollingUpdate\" : {\n \"MaxBatchSize\" : \"Integer. Specifies the maximum number of instances that AWS CloudFormation updates.\",\n \"MinInstancesInService\" : \"Integer. Specifies the minimum number of instances that must be in service within the Auto Scaling group while AWS CloudFormation updates old instances. This value must be less than the MaxSize of the Auto Scaling group. \",\n \"MinSuccessfulInstancesPercent\" : \"Integer. Specifies the percentage of instances in an Auto Scaling rolling update that must signal success for an update to succeed. You can specify a value from 0 to 100. AWS CloudFormation rounds to the nearest tenth of a percent. For example, if you update five instances with a minimum successful percentage of 50, three instances must signal success. If an instance doesn't send a signal within the time specified in the PauseTime property, AWS CloudFormation assumes that the instance wasn't updated. If you specify this property, you must also enable the WaitOnResourceSignals and PauseTime properties. The MinSuccessfulInstancesPercent parameter applies only to instances only for signaling purpose. Default: 100\",\n \"PauseTime\" : \"String. The amount of time that AWS CloudFormation pauses after making a change to a batch of instances to give those instances time to start software applications. For example, you might need to specify PauseTime when scaling up the number of instances in an Auto Scaling group. If you enable the WaitOnResourceSignals property, PauseTime is the amount of time that AWS CloudFormation should wait for the Auto Scaling group to receive the required number of valid signals from added or replaced instances. If the PauseTime is exceeded before the Auto Scaling group receives the required number of signals, the update fails. For best results, specify a time period that gives your applications sufficient time to get started. If the update needs to be rolled back, a short PauseTime can cause the rollback to fail. Specify PauseTime in the ISO8601 duration format (in the format PT#H#M#S, where each # is the number of hours, minutes, and seconds, respectively). The maximum PauseTime is one hour (PT1H).Default: PT0S (zero seconds). If the WaitOnResourceSignals property is set to true, the default is PT5M. \",\n \"SuspendProcesses\" : [\"Type: List of Auto Scaling processes. Specifies the Auto Scaling processes to suspend during a stack update. Suspending processes prevents Auto Scaling from interfering with a stack update. For example, you can suspend alarming so that Amazon EC2 Auto Scaling doesn't execute scaling policies associated with an alarm.One or more of the following processes. If you omit this parameter, all processes are specified : Launch, Terminate, HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification, ScheduledActions, AddToLoadBalancer\"],\n \"WaitOnResourceSignals\" : \"**Boolean. If you specify the MinSuccessfulInstancesPercent property, you must also enable the WaitOnResourceSignals and PauseTime properties. Specifies whether the Auto Scaling group waits on signals from new instances during an update. Use this property to ensure that instances have completed installing and configuring applications before the Auto Scaling group update proceeds. AWS CloudFormation suspends the update of an Auto Scaling group after new EC2 instances are launched into the group. AWS CloudFormation must receive a signal from each new instance within the specified PauseTime before continuing the update. To have instances wait for an Elastic Load Balancing health check before they signal success, add a health-check verification by using the cfn-init helper script.\"\n }\n },\n \"AutoScalingScheduledAction(UpdatePolicy)\":{\n \"AutoScalingScheduledAction\" : {\n \"IgnoreUnmodifiedGroupSizeProperties\" : \"Boolean. Specifies whether AWS CloudFormation ignores differences in group size properties between your current Auto Scaling group and the Auto Scaling group described in the AWS::AutoScaling::AutoScalingGroup resource of your template during a stack update. If you modify any of the group size property values in your template, AWS CloudFormation uses the modified values and updates your Auto Scaling group. \"\n }\n }\n },\n \"AWS::AutoScaling::LaunchConfiguration\":{\n \"BlockDeviceMapping\":{\n \"DeviceName\" : \"*String\",\n \"Ebs\" : {\n \"DeleteOnTermination\" : \"Boolean. Indicates whether to delete the volume when the instance is terminated. By default, Amazon EC2 Auto Scaling uses true.\",\n \"Encrypted\" : \"Boolean. Indicates whether the volume is encrypted. Encrypted EBS volumes must be attached to instances that support Amazon EBS encryption. Volumes that you create from encrypted snapshots are automatically encrypted. You cannot create an encrypted volume from an unencrypted snapshot or an unencrypted volume from an encrypted snapshot.\",\n \"Iops\" : \"Integer. The number of I/O operations per second (IOPS) that the volume supports. The maximum ratio of IOPS to volume size is 30.\",\n \"SnapshotId\" : \"**String. If you specify both SnapshotId and VolumeSize, VolumeSize must be equal or greater than the size of the snapshot.\",\n \"VolumeSize\" : \"**Integer. If you specify both SnapshotId and VolumeSize, VolumeSize must be equal or greater than the size of the snapshot. The volume size, in Gibibytes (GiB). This can be a number from 1 – 1024. If the volume type is EBS optimized, the minimum value is 10. \",\n \"VolumeType\" : \"String. The volume type. By default, Amazon EC2 Auto Scaling uses the standard volume type. Valid values: standard | io1 | gp2 | st1 | sc1\"\n },\n \"NoDevice\" : \"Boolean. Suppresses the device mapping. If NoDevice is set to true for the root device, the instance might fail the Amazon EC2 health check. \",\n \"VirtualName\" : \"**String. The name of the virtual device. The name must be in the form ephemeralX where X is a number starting from zero (0), for example, ephemeral0. You can specify either VirtualName or Ebs, but not both.\"\n }\n },\n \"AWS::AutoScaling::ScalingPolicy\":{\n \"StepAdjustments\":{\n \"MetricIntervalLowerBound\" : \"**Number. you must specify at least one upper or lower bound. The lower bound of the breach size. The lower bound is the difference between the breach threshold and the aggregated CloudWatch metric value. If the metric value is within the lower and upper bounds, Auto Scaling triggers this step adjustment. If the metric value is above the breach threshold, the metric must be greater than or equal to the threshold plus the lower bound to trigger this step adjustment (the metric value is inclusive). If the metric value is below the breach threshold, the metric must be greater than the threshold plus the lower bound to trigger this step adjustment (the metric value is exclusive). A null value indicates negative infinity.\",\n \"MetricIntervalUpperBound\" : \"**Number. You must specify at least one upper or lower bound. The upper bound of the breach size. The upper bound is the difference between the breach threshold and the CloudWatch metric value. If the metric value is within the lower and upper bounds, Auto Scaling triggers this step adjustment. If the metric value is above the breach threshold, the metric must be less than the threshold plus the upper bound to trigger this step adjustment (the metric value is exclusive). If the metric value is below the breach threshold, the metric must be less than or equal to the threshold plus the upper bound to trigger this step adjustment (the metric value is inclusive). A null value indicates positive infinity.\",\n \"ScalingAdjustment\" : \"*Integer. The amount by which to scale. The adjustment is based on the value that you specified in the AdjustmentType property (either an absolute number or a percentage). A positive value adds to the current capacity and a negative number subtracts from the current capacity.\"\n },\n \"TargetTrackingConfiguration\":{\n \"CustomizedMetricSpecification\" : {\n \"Dimensions\" : [ \"list of MetricDimension\"],\n \"MetricName\" : \"*String\",\n \"Namespace\" : \"*String\",\n \"Statistic\" : \"*String\",\n \"Unit\" : \"String\"\n },\n \"DisableScaleIn\" : \"Boolean. Indicates whether to disable scale-in for the target tracking policy. If true, the target tracking policy will not scale in the Auto Scaling group. The default value is false.\",\n \"PredefinedMetricSpecification\" : {\n \"PredefinedMetricType\" : \"String\",\n \"ResourceLabel\" : \"String\"\n },\n \"TargetValue\" : \"*Double\"\n },\n \"MetricDimension\":{\n \"Name\" : \"*String\",\n \"Value\" : \"*String\"\n }\n },\n \"AWS::ElasticLoadBalancingV2::Listener\":{\n \"Action\":{\n \"AuthenticateCognitoConfig\" : {\n \"AuthenticationRequestExtraParams\" : \"PLEASE NOTE: Type: String to String map. The query parameters (up to 10) to include in the redirect request to the authorization endpoint. \",\n \"OnUnauthenticatedRequest\" : \"String. The behavior if the user is not authenticated. The following are possible values: deny, allow, authenticate\",\n \"Scope\" : \"String. The set of user claims to be requested from the IdP. The default is openid.\",\n \"SessionCookieName\" : \"The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.\" ,\n \"SessionTimeout\" : \"*Number. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).\",\n \"UserPoolArn\" : \"*String. The Amazon Resource Name (ARN) of the Amazon Cognito user pool.\",\n \"UserPoolClientId\" : \"*String. The ID of the Amazon Cognito user pool client.\" ,\n \"UserPoolDomain\" : \"*String. The domain prefix or fully-qualified domain name of the Amazon Cognito user pool.\"\n },\n \"AuthenticateOidcConfig\" : {\n \"AuthenticationRequestExtraParams\" : \"PLEASE NOTE: Type: Map of string-to-string values. The query parameters (up to 10) to include in the redirect request to the authorization endpoint.\",\n \"AuthorizationEndpoint\" : \"*String. The authorization endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.\",\n \"ClientId\" : \"*String. The OAuth 2.0 client identifier.\",\n \"ClientSecret\" : \"*String. The OAuth 2.0 client secret.\",\n \"Issuer\" : \"*String. The OIDC issuer identifier of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.\",\n \"OnUnauthenticatedRequest\" : \"String. The behavior if the user is not authenticated. The following are possible values: allow, deny, authenticate\",\n \"Scope\" : \"String. The set of user claims to be requested from the IdP. The default is openid.\",\n \"SessionCookieName\" : \"String. The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.\",\n \"SessionTimeout\" : \"Number. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).\",\n \"TokenEndpoint\" : \"*String. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).\",\n \"UserInfoEndpoint\" : \"*String. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days). \"\n },\n \"FixedResponseConfig\" : {\n \"ContentType\" : \"String. Valid Values: text/plain | text/css | text/html | application/javascript | application/json\" ,\n \"MessageBody\" : \"String. The message\",\n \"StatusCode\" : \"*String. The HTTP response code (2XX, 4XX, or 5XX).\"\n },\n \"Order\" : \"Integer. The order for the action. This value is required for rules with multiple actions. The action with the lowest value for order is performed first. The final action to be performed must be a forward or a fixed-response action. Valid Range: Minimum value of 1. Maximum value of 50000.\",\n \"RedirectConfig\" : {\n \"Host\" : \"String. The hostname. This component is not percent-encoded. The hostname can contain #{host}.\",\n \"Path\" : \"String. The absolute path, starting with the leading '/'. This component is not percent-encoded. The path can contain #{host}, #{path}, and #{port}.\",\n \"Port\" : \"String\",\n \"Protocol\" : \"String. The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.\",\n \"Query\" : \"String. The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading '?', as it is automatically added. You can specify any of the reserved keywords.\",\n \"StatusCode\" : \"*String. Valid Values: HTTP_301 | HTTP_302\"\n },\n \"TargetGroupArn\" : \"String. The Amazon Resource Name (ARN) of the target group to which Elastic Load Balancing routes the traffic. Specify only when Type is forward.\",\n \"Type\" : \"*String. The type of action. Each rule must include exactly one of the following types of actions: forward | authenticate-oidc | authenticate-cognito | redirect | fixed-response\"\n },\n \"Certificate\":{\n \"CertificateArn\" : \"String\"\n }\n },\n \"AWS::ElasticLoadBalancingV2::ListenerCertificate\":{\n \"Certificate\":{\n \"CertificateArn\" : \"String\"\n }\n },\n \"AWS::ElasticLoadBalancingV2::ListenerRule\":{\n \"Conditions\":{\n \"Field\" : \"String. The name of the condition that you want to define, such as path-pattern (which forwards requests based on the URL of the request). Valid values: host-header | path-pattern\",\n \"Values\" : [\"Type: List of String values. If you specified host-header for Field, you can specify a single host name (for example, my.example.com). A host name is case insensitive. If you specified path-pattern for Field, you can specify a single path pattern (for example, /img/*). A path pattern is case-sensitive, can be up to 128 characters in length. The value for the field that you specified in the Field property. \"]\n },\n \"Action\":{\n \"AuthenticateCognitoConfig\" : {\n \"AuthenticationRequestExtraParams\" : \"PLEASE NOTE: Type: String to String map. The query parameters (up to 10) to include in the redirect request to the authorization endpoint. \",\n \"OnUnauthenticatedRequest\" : \"String. The behavior if the user is not authenticated. The following are possible values: deny, allow, authenticate\",\n \"Scope\" : \"String. The set of user claims to be requested from the IdP. The default is openid.\",\n \"SessionCookieName\" : \"The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.\" ,\n \"SessionTimeout\" : \"*Number. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).\",\n \"UserPoolArn\" : \"*String. The Amazon Resource Name (ARN) of the Amazon Cognito user pool.\",\n \"UserPoolClientId\" : \"*String. The ID of the Amazon Cognito user pool client.\" ,\n \"UserPoolDomain\" : \"*String. The domain prefix or fully-qualified domain name of the Amazon Cognito user pool.\"\n },\n \"AuthenticateOidcConfig\" : {\n \"AuthenticationRequestExtraParams\" : \"PLEASE NOTE: Type: Map of string-to-string values. The query parameters (up to 10) to include in the redirect request to the authorization endpoint.\",\n \"AuthorizationEndpoint\" : \"*String. The authorization endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.\",\n \"ClientId\" : \"*String. The OAuth 2.0 client identifier.\",\n \"ClientSecret\" : \"*String. The OAuth 2.0 client secret.\",\n \"Issuer\" : \"*String. The OIDC issuer identifier of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.\",\n \"OnUnauthenticatedRequest\" : \"String. The behavior if the user is not authenticated. The following are possible values: allow, deny, authenticate\",\n \"Scope\" : \"String. The set of user claims to be requested from the IdP. The default is openid.\",\n \"SessionCookieName\" : \"String. The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.\",\n \"SessionTimeout\" : \"Number. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).\",\n \"TokenEndpoint\" : \"*String. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).\",\n \"UserInfoEndpoint\" : \"*String. The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days). \"\n },\n \"FixedResponseConfig\" : {\n \"ContentType\" : \"String. Valid Values: text/plain | text/css | text/html | application/javascript | application/json\" ,\n \"MessageBody\" : \"String. The message\",\n \"StatusCode\" : \"*String. The HTTP response code (2XX, 4XX, or 5XX).\"\n },\n \"Order\" : \"Integer. The order for the action. This value is required for rules with multiple actions. The action with the lowest value for order is performed first. The final action to be performed must be a forward or a fixed-response action. Valid Range: Minimum value of 1. Maximum value of 50000.\",\n \"RedirectConfig\" : {\n \"Host\" : \"String. The hostname. This component is not percent-encoded. The hostname can contain #{host}.\",\n \"Path\" : \"String. The absolute path, starting with the leading '/'. This component is not percent-encoded. The path can contain #{host}, #{path}, and #{port}.\",\n \"Port\" : \"String\",\n \"Protocol\" : \"String. The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP.\",\n \"Query\" : \"String. The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading '?', as it is automatically added. You can specify any of the reserved keywords.\",\n \"StatusCode\" : \"*String. Valid Values: HTTP_301 | HTTP_302\"\n },\n \"TargetGroupArn\" : \"String. The Amazon Resource Name (ARN) of the target group to which Elastic Load Balancing routes the traffic. Specify only when Type is forward.\",\n \"Type\" : \"*String. The type of action. Each rule must include exactly one of the following types of actions: forward | authenticate-oidc | authenticate-cognito | redirect | fixed-response\"\n }\n },\n \"AWS::ElasticLoadBalancingV2::LoadBalancer\":{\n \"LoadBalancerAttributes\":{\n \"Key\" : \"String. The name of an attribute that you want to configure.The following attributes are supported by both Application Load Balancers and Network Load Balancers:1. access_logs.s3.enabled - Indicates whether access logs are enabled. The value is true or false. The default is false. 2. access_logs.s3.bucket - The name of the S3 bucket for the access logs. This attribute is required if access logs are enabled. The bucket must exist in the same region as the load balancer and have a bucket policy that grants Elastic Load Balancing permissions to write to the bucket. 3. access_logs.s3.prefix - The prefix for the location in the S3 bucket for the access logs. 4.deletion_protection.enabled - Indicates whether deletion protection is enabled. The value is true or false. The default is false.The following attributes are supported by only Application Load Balancers: 1. idle_timeout.timeout_seconds - The idle timeout value, in seconds. The valid range is 1-4000 seconds. The default is 60 seconds. 2. routing.http2.enabled - Indicates whether HTTP/2 is enabled. The value is true orfalse. The default is true.The following attributes are supported by only Network Load Balancers: 1. load_balancing.cross_zone.enabled - Indicates whether cross-zone load balancing is enabled. The value is true or false. The default is false.\",\n \"Value\" : \"String\"\n },\n \"SubnetMappings\":{\n \"SubnetId\" : \"*String\",\n \"AllocationId\" : \"*String. [Network Load Balancer] The ID that represents the allocation of the Elastic IP address.\"\n }\n },\n \"AWS::ElasticLoadBalancingV2::TargetGroup\":{\n \"Matcher\":{\n \"HttpCode\" : \"String. The HTTP codes that a healthy target must use when responding to a health check, such as 200,202 or 200-399. \"\n },\n \"TargetDescription\":{\n \"AvailabilityZone\" : \"String\",\n \"Id\" : \"*String. The ID of the target. If the target type of the target group is instance, specify an instance ID. If the target type is ip, specify an IP address. \",\n \"Port\" : \"Integer. The port number on which the target is listening for traffic.\"\n },\n \"TargetGroupAttributes\":{\n \"Key\" : \"The following attribute is supported by both Application Load Balancers and Network Load Balancers: 1. deregistration_delay.timeout_seconds - The amount of time, in seconds, for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds. If the target is a Lambda function, this attribute is not supported. The following attributes are supported by Application Load Balancers if the target is not a Lambda function: 1. slow_start.duration_seconds - The time period, in seconds, during which a newly registered target receives a linearly increasing share of the traffic to the target group. After this time period ends, the target receives its full share of traffic. The range is 30-900 seconds (15 minutes). Slow start mode is disabled by default. 2. stickiness.enabled - Indicates whether sticky sessions are enabled. The value is true or false. The default is false. 3. stickiness.type - The type of sticky sessions. The possible value is lb_cookie. 4. stickiness.lb_cookie.duration_seconds - The time period, in seconds, during which requests from a client should be routed to the same target. After this time period expires, the load balancer-generated cookie is considered stale. The range is 1 second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).The following attribute is supported only if the target is a Lambda function. 1. lambda.multi_value_headers.enabled - Indicates whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. The value is true or false. The default is false. If the value is false and the request contains a duplicate header field name or query parameter key, the load balancer uses the last value sent by the client. The following attribute is supported only by Network Load Balancers: 1.proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version 2 is enabled. The value is true or false. The default is false.\",\n \"Value\" : \"String\"\n }\n },\n \"AWS::CertificateManager::Certificate\":{\n \"DomainValidationOption\":{\n \"DomainName\" : \"*String. Fully Qualified Domain Name (FQDN) of the Certificate that you are requesting.\",\n \"ValidationDomain\" : \"*String. The domain that domain name registrars use to send validation emails. Registrars use this value as the email address suffix when sending emails to verify your identity. This value must be the same as the domain name or a superdomain of the domain name.\"\n }\n },\n \"AWS::DynamoDB::Table\":{\n \"AttributeDefinition\":{\n \"AttributeName\" : \"*String\",\n \"AttributeType\" : \"*String. The data type for the attribute. You can specify S for string data, N for numeric data, or B for binary data. \"\n },\n \"ProvisionedThroughput\":{\n \"ReadCapacityUnits\" : \"*Number. Sets the desired minimum number of consistent reads of items (up to 4KB in size) per second for the specified table before Amazon DynamoDB balances the load. \",\n \"WriteCapacityUnits\" : \"*Number. Sets the desired minimum number of consistent writes of items (up to 1KB in size) per second for the specified table before Amazon DynamoDB balances the load. \"\n },\n \"SSESpecification\":{\n \"SSEEnabled\" : \"*Boolean. Whether server-side encryption is enabled or not\"\n },\n \"StreamSpecification\":{\n \"StreamViewType\" : \"*String. Determines the information that the stream captures when an item in the table is modified. Valid Values: NEW_IMAGE | OLD_IMAGE | NEW_AND_OLD_IMAGES | KEYS_ONLY\"\n },\n \"TimeToLiveSpecification\":{\n \"AttributeName\" : \"*String. The name of the TTL attribute that stores the expiration time for items in the table. The name can be 1–255 characters long, and has no character restrictions. \",\n \"Enabled\" : \"*Boolean. Indicates whether to enable (by specifying true) or disable (by specifying false) TTL on the table.\"\n },\n \"KeySchema\":{\n \"AttributeName\" : \"*String. The attribute name that is used as the primary key for this table. Primary key element names can be 1 – 255 characters long and have no character restrictions.\",\n \"KeyType\" : \"*Represents the attribute data, consisting of the data type and the attribute value itself. You can specify HASH or RANGE.\"\n },\n \"PointInTimeRecoverySpecification\":{\n \"PointInTimeRecoveryEnabled\" : \"Boolean. Indicates whether point in time recovery is enabled (true) or disabled (false) on the table. \"\n },\n \"LocalSecondaryIndex\":{\n \"IndexName\" : \"*String\",\n \"KeySchema\" : [\"*Type: List of KeySchema. The complete index key schema for the local secondary index, which consists of one or more pairs of attribute names and key types. For local secondary indexes, the hash key must be the same as that of the source table.##\"], \n \"Projection\" : {\n \"NonKeyAttributes\" : [\"Type: List of String values. The non-key attribute names that are projected into the index. For local secondary indexes, the total count of NonKeyAttributes summed across all of the local secondary indexes must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes in determining the total. This limit does not apply for secondary indexes with a ProjectionType of KEYS_ONLY or ALL. \"],\n \"ProjectionType\" : \"*String. KEYS_ONLY=Only the index and primary keys are projected into the index. |INCLUDE= Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes. |ALL=All of the table attributes are projected into the index.. \"\n }\n },\n \"GlobalSecondaryIndex\":{\n \"IndexName\" : \"*String. The name of the global secondary index. \",\n \"KeySchema\" : [\"*Type: List of KeySchema. The complete index key schema for the local secondary index, which consists of one or more pairs of attribute names and key types. For local secondary indexes, the hash key must be the same as that of the source table.##\"],\n \"Projection\" : {\n \"NonKeyAttributes\" : [\"Type: List of String values. The non-key attribute names that are projected into the index. For local secondary indexes, the total count of NonKeyAttributes summed across all of the local secondary indexes must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes in determining the total. This limit does not apply for secondary indexes with a ProjectionType of KEYS_ONLY or ALL. \"],\n \"ProjectionType\" : \"*String. KEYS_ONLY=Only the index and primary keys are projected into the index. |INCLUDE= Only the specified table attributes are projected into the index. The list of projected attributes are in NonKeyAttributes. |ALL=All of the table attributes are projected into the index.. \"\n },\n \"ProvisionedThroughput\" : {\n \"ReadCapacityUnits\" : \"*Number. Sets the desired minimum number of consistent reads of items (up to 4KB in size) per second for the specified table before Amazon DynamoDB balances the load. \",\n \"WriteCapacityUnits\" : \"*Number. Sets the desired minimum number of consistent writes of items (up to 1KB in size) per second for the specified table before Amazon DynamoDB balances the load. \"\n }\n }\n },\n \"AWS::SQS::Queue\":{\n \"RedrivePolicy\":{\n \"deadLetterTargetArn\" : \"*String. The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded. \",\n \"maxReceiveCount\" : \"*Integer. The number of times a message is delivered to the source queue before being moved to the dead-letter queue. \"\n }\n },\n \"AWS::SNS::Topic\":{\n \"Subscription\":{\n \"Endpoint\" : \"*String. The subscription's endpoint (format depends on the protocol).\",\n \"Protocol\" : \"*String. The subscription's protocol.\"\n }\n },\n \"AWS::ECS::Service\":{\n \"NetworkConfiguration\":{\n \"AwsvpcConfiguration\" : {\n \"AssignPublicIp\" : \"String. Allowed Values: DISABLED | ENABLED. Whether the task's elastic network interface receives a public IP address. The default value is DISABLED.\",\n \"SecurityGroups\" : [\"Type: List of String. The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. There is a limit of 5 security groups that can be specified per AwsVpcConfiguration.\"],\n \"Subnets\" : [\"*Type: List of String. The subnets associated with the task or service. There is a limit of 16 subnets that can be specified per AwsVpcConfiguration.\" ]\n }\n },\n \"DeploymentConfiguration\":{\n \"MaximumPercent\" : \"Integer. If a service is using the rolling update (ECS) deployment type, the maximum percent parameter represents an upper limit on the number of tasks in a service that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desired number of tasks (rounded down to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type. This parameter enables you to define the deployment batch size. For example, if your service has a desired number of four tasks and a maximum percent value of 200%, the scheduler may start four new tasks before stopping the four older tasks (provided that the cluster resources required to do this are available). The default value for maximum percent is 200%. If a service is using the blue/green (CODE_DEPLOY) or EXTERNAL deployment types and tasks that use the EC2 launch type, the maximum percent value is set to the default value and is used to define the upper limit on the number of the tasks in the service that remain in the RUNNING state while the container instances are in the DRAINING state. If the tasks in the service use the Fargate launch type, the maximum percent value is not used, although it is returned when describing your service.\",\n \"MinimumHealthyPercent\" : \"Integer. If a service is using the rolling update (ECS) deployment type, the minimum healthy percent represents a lower limit on the number of tasks in a service that must remain in the RUNNING state during a deployment, as a percentage of the desired number of tasks (rounded up to the nearest integer), and while any container instances are in the DRAINING state if the service contains tasks using the EC2 launch type. This parameter enables you to deploy without using additional cluster capacity. For example, if your service has a desired number of four tasks and a minimum healthy percent of 50%, the scheduler may stop two existing tasks to free up cluster capacity before starting two new tasks. Tasks for services that do not use a load balancer are considered healthy if they are in the RUNNING state; tasks for services that do use a load balancer are considered healthy if they are in the RUNNING state and they are reported as healthy by the load balancer. The default value for minimum healthy percent is 100%. If a service is using the blue/green (CODE_DEPLOY) or EXTERNAL deployment types and tasks that use the EC2 launch type, the minimum healthy percent value is set to the default value and is used to define the lower limit on the number of the tasks in the service that remain in the RUNNING state while the container instances are in the DRAINING state. If the tasks in the service use the Fargate launch type, the minimum healthy percent value is not used, although it is returned when describing your service.\"\n },\n \"LoadBalancer\":{\n \"ContainerName\" : \"String. The name of the container (as it appears in a container definition) to associate with the load balancer.\",\n \"ContainerPort\" : \"*Integer. The port on the container to associate with the load balancer. This port must correspond to a containerPort in the service's task definition. Your container instances must allow ingress traffic on the hostPort of the port mapping.\",\n \"LoadBalancerName\" : \"String. The name of the load balancer to associate with the Amazon ECS service.\",\n \"TargetGroupArn\" : \"String. The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service. For services using the ECS deployment controller, you are limited to one target group. For services using the CODE_DEPLOY deployment controller, you are required to define two target groups for the load balancer.\"\n },\n \"PlacementConstraint\":{\n \"Expression\" : \"String. A cluster query language expression to apply to the constraint. You cannot specify an expression if the constraint type is distinctInstance.\",\n \"Type\" : \"*String. The type of constraint. Use distinctInstance to ensure that each task in a particular group is running on a different container instance. Use memberOf to restrict the selection to a group of valid candidates. The value distinctInstance is not supported in task definitions. Allowed Values: distinctInstance | memberOf. \"\n },\n \"PlacementStrategy\":{\n \"Field\" : \"String. The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used.\",\n \"Type\" : \"*String. The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task). Allowed Values: binpack | random | spread. \"\n },\n \"ServiceRegistry\":{\n \"ContainerName\" : \"String. The container name value, already specified in the task definition, to be used for your service discovery service. If the task definition that your service task specifies uses the bridge or host network mode, you must specify a containerName and containerPort combination from the task definition. If the task definition that your service task specifies uses the awsvpc network mode and a type SRV DNS record is used, you must specify either a containerName and containerPort combination or a port value, but not both.\",\n \"ContainerPort\" : \"Integer. The port value, already specified in the task definition, to be used for your service discovery service. If the task definition your service task specifies uses the bridge or host network mode, you must specify a containerName and containerPort combination from the task definition. If the task definition your service task specifies uses the awsvpc network mode and a type SRV DNS record is used, you must specify either a containerName and containerPort combination or a port value, but not both.\",\n \"Port\" : \"Integer. The port value used if your service discovery service specified an SRV record. This field may be used if both the awsvpc network mode and SRV records are used.\",\n \"RegistryArn\" : \"String. The Amazon Resource Name (ARN) of the service registry. The currently supported service registry is AWS Cloud Map.\"\n }\n },\n \"AWS::ECS::TaskDefinition\":{\n \"ContainerDefinition\":{\n \"Command\" : [\"Type: List of String. The command that is passed to the container. \" ],\n \"Cpu\" : \"Integer. The number of cpu units reserved for the container.\",\n \"DisableNetworking\" : \"Boolean. When this parameter is true, networking is disabled within the container.\",\n \"DnsSearchDomains\" : [\"list of strings. A list of DNS search domains that are presented to the container. This parameter maps to DnsSearch in the Create a container section of the Docker Remote API and the --dns-search option to docker run. Not supported for windows containers.\"],\n \"DnsServers\" : [\"List of strings. A list of DNS servers that are presented to the container. This parameter maps to Dns in the Create a container section of the Docker Remote API and the --dns option to docker run.\"],\n \"DockerLabels\" : {\"info\":\"Type: Map of String. A key/value map of labels to add to the container. This parameter maps to Labels in the Create a container section of the Docker Remote API and the --label option to docker run. e.g. a:b,c:d \"},\n \"DockerSecurityOptions\" : [\"List of strings. A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. This field is not valid for containers in tasks using the Fargate launch type.\"],\n \"EntryPoint\" : [\"List of string. The entry point that is passed to the container. This parameter maps to Entrypoint in the Create a container section of the Docker Remote API and the --entrypoint option to docker run. \" ],\n \"Environment\" : [\"Type: List of KeyValuePair. The environment variables to pass to a container. This parameter maps to Env in the Create a container section of the Docker Remote API and the --env option to docker run.##\"],\n \"Essential\" : \"Boolean. If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the essential parameter of a container is marked as false, then its failure does not affect the rest of the containers in a task. If this parameter is omitted, a container is assumed to be essential. All tasks must have at least one essential container. If you have an application that is composed of multiple containers, you should group containers that are used for a common purpose into components, and separate the different components into multiple task definitions.\",\n \"ExtraHosts\" : [\" Type: List of HostEntry. A list of hostnames and IP address mappings to append to the /etc/hosts file on the container. This parameter maps to ExtraHosts in the Create a container section of the Docker Remote API and the --add-host option to docker run. This parameter is not supported for Windows containers or tasks that use the awsvpc network mode. ##\"],\n \"HealthCheck\" : {\n \"Command\" : [ \"*Type: List of String. A string array representing the command that the container runs to determine if it is healthy. The string array must start with CMD to execute the command arguments directly, or CMD-SHELL to run the command with the container's default shell. \" ],\n \"Interval\" : \"Integer. The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds.\",\n \"Retries\" : \"Integer. The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is 3.\",\n \"StartPeriod\" : \"Integer. The optional grace period within which to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You may specify between 0 and 300 seconds. The startPeriod is disabled by default.\",\n \"Timeout\" : \"Integer. The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5.\"\n }\n ,\n \"Hostname\" : \"String. The hostname to use for your container. This parameter maps to Hostname in the Create a container section of the Docker Remote API and the --hostname option to docker run.\",\n \"Image\" : \"String. The image used to start a container. This string is passed directly to the Docker daemon. Images in the Docker Hub registry are available by default. Other repositories are specified with either repository-url/image:tag or repository-url/image@digest . Up to 255 letters (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward slashes, and number signs are allowed. This parameter maps to Image in the Create a container section of the Docker Remote API and the IMAGE parameter of docker run.\",\n \"Links\" : [\"List of strings. The link parameter allows containers to communicate with each other without the need for port mappings. Only supported if the network mode of a task definition is set to bridge. The name:internalName construct is analogous to name:alias in Docker links. Up to 255 letters (uppercase and lowercase), numbers, and hyphens are allowed. This parameter maps to Links in the Create a container section of the Docker Remote API and the --link option to docker run .\"],\n \"LinuxParameters\" : {\n \"Capabilities\" : {\n \"Add\" : [\"List of String. The Linux capabilities for the container that have been added to the default configuration provided by Docker. Valid values: 'ALL' | 'AUDIT_CONTROL' | 'AUDIT_WRITE' | 'BLOCK_SUSPEND' | 'CHOWN' | 'DAC_OVERRIDE' | 'DAC_READ_SEARCH' | 'FOWNER' | 'FSETID' | 'IPC_LOCK' | 'IPC_OWNER' | 'KILL' | 'LEASE' | 'LINUX_IMMUTABLE' | 'MAC_ADMIN' | 'MAC_OVERRIDE' | 'MKNOD' | 'NET_ADMIN' | 'NET_BIND_SERVICE' | 'NET_BROADCAST' | 'NET_RAW' | 'SETFCAP' | 'SETGID' | 'SETPCAP' | 'SETUID' | 'SYS_ADMIN' | 'SYS_BOOT' | 'SYS_CHROOT' | 'SYS_MODULE' | 'SYS_NICE' | 'SYS_PACCT' | 'SYS_PTRACE' | 'SYS_RAWIO' | 'SYS_RESOURCE' | 'SYS_TIME' | 'SYS_TTY_CONFIG' | 'SYSLOG' | 'WAKE_ALARM'\"],\n \"Drop\" : [\"List of string. The Linux capabilities for the container that have been removed from the default configuration provided by Docker. Valid values: 'ALL' | 'AUDIT_CONTROL' | 'AUDIT_WRITE' | 'BLOCK_SUSPEND' | 'CHOWN' | 'DAC_OVERRIDE' | 'DAC_READ_SEARCH' | 'FOWNER' | 'FSETID' | 'IPC_LOCK' | 'IPC_OWNER' | 'KILL' | 'LEASE' | 'LINUX_IMMUTABLE' | 'MAC_ADMIN' | 'MAC_OVERRIDE' | 'MKNOD' | 'NET_ADMIN' | 'NET_BIND_SERVICE' | 'NET_BROADCAST' | 'NET_RAW' | 'SETFCAP' | 'SETGID' | 'SETPCAP' | 'SETUID' | 'SYS_ADMIN' | 'SYS_BOOT' | 'SYS_CHROOT' | 'SYS_MODULE' | 'SYS_NICE' | 'SYS_PACCT' | 'SYS_PTRACE' | 'SYS_RAWIO' | 'SYS_RESOURCE' | 'SYS_TIME' | 'SYS_TTY_CONFIG' | 'SYSLOG' | 'WAKE_ALARM'\" ]\n },\n \"Devices\" : [\"Type: List of Device. Any host devices to expose to the container. This parameter maps to Devices in the Create a container section of the Docker Remote API and the --device option to docker run. If you are using tasks that use the Fargate launch type, the devices parameter is not supported.##\"],\n \"InitProcessEnabled\" : \"Boolean. Run an init process inside the container that forwards signals and reaps processes. This parameter maps to the --init option to docker run. \",\n \"SharedMemorySize\" : \"Integer. The value for the size (in MiB) of the /dev/shm volume. This parameter maps to the --shm-size option to docker run.\",\n \"Tmpfs\" : [\"Type: List of Tmpfs. The container path, mount options, and size (in MiB) of the tmpfs mount. This parameter maps to the --tmpfs option to docker run ##. \"]\n }\n ,\n \"LogConfiguration\" : {\n \"LogDriver\" : \"*String. Allowed Values: awslogs | fluentd | gelf | journald | json-file | splunk | syslog. For tasks using the Fargate launch type, the supported log drivers are awslogs and splunk.\",\n \"Options\" : {\"info\":\"Type: Map of String e.g. a:b,c:d,e:f. The configuration options to send to the log driver. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: sudo docker version --format '{{.Server.APIVersion}}'\"}\n },\n \"Memory\" : \"Integer. The hard limit (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. This parameter maps to Memory in the Create a container section of the Docker Remote API and the --memory option to docker run.If your containers are part of a task using the Fargate launch type, this field is optional and the only requirement is that the total amount of memory reserved for all containers within a task be lower than the task memory value. For containers that are part of a task using the EC2 launch type, you must specify a non-zero integer for one or both of memory or memoryReservation in container definitions. If you specify both, memory must be greater than memoryReservation. If you specify memoryReservation, then that value is subtracted from the available memory resources for the container instance on which the container is placed. Otherwise, the value of memory is used.\",\n \"MemoryReservation\" : \"Integer. The soft limit (in MiB) of memory to reserve for the container. When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit. However, your container can consume more memory when it needs to, up to either the hard limit specified with the memory parameter (if applicable), or all of the available memory on the container instance, whichever comes first. This parameter maps to MemoryReservation in the Create a container section of the Docker Remote API and the --memory-reservation option to docker run.\",\n \"MountPoints\" : [\"Type: List of MountPoint. This parameter maps to Volumes in the Create a container section of the Docker Remote API and the --volume option to docker run. Windows containers can mount whole directories on the same drive as $env:ProgramData. Windows containers cannot mount directories on a different drive, and mount point cannot be across drives. ##\"],\n \"Name\" : \"String. The name of a container. If you are linking multiple containers together in a task definition, the name of one container can be entered in the links of another container to connect the containers. Up to 255 letters (uppercase and lowercase), numbers, and hyphens are allowed. This parameter maps to name in the Create a container section of the Docker Remote API and the --name option to docker run.\",\n \"PortMappings\" : [\"Type: List of PortMapping. The list of port mappings for the container. Port mappings allow containers to access ports on the host container instance to send or receive traffic. Port mappings on Windows use the NetNAT gateway address rather than localhost. There is no loopback for port mappings on Windows, so you cannot access a container's mapped port from the host itself.\"],\n \"Privileged\" : \"Boolean. When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user). This parameter maps to Privileged in the Create a container section of the Docker Remote API and the --privileged option to docker run.\",\n \"ReadonlyRootFilesystem\" : \"Boolean. When this parameter is true, the container is given read-only access to its root file system. This parameter maps to ReadonlyRootfs in the Create a container section of the Docker Remote API and the --read-only option to docker run.\",\n \"RepositoryCredentials\" : {\n \"CredentialsParameter\" : \"The Amazon Resource Name (ARN) of the secret containing the private repository credentials.\"\n },\n \"Ulimits\" : [\"Type: List of Ulimit. A list of ulimits to set in the container. This parameter maps to Ulimits in the Create a container section of the Docker Remote API and the --ulimit option to docker run.\"],\n \"User\" : \"String. The user name to use inside the container. This parameter maps to User in the Create a container section of the Docker Remote API and the --user option to docker run. This parameter is not supported for Windows containers.\",\n \"VolumesFrom\" : [\"Type: List of VolumeFrom. Data volumes to mount from another container. This parameter maps to VolumesFrom in the Create a container section of the Docker Remote API and the --volumes-from option to docker run.\"],\n \"WorkingDirectory\" : \"String. The working directory in which to run commands inside the container. This parameter maps to WorkingDir in the Create a container section of the Docker Remote API and the --workdir option to docker run.\"\n },\n \"Device\":{\n \"ContainerPath\" : \"String. The path inside the container at which to expose the host device.\",\n \"HostPath\" : \"*String. The path for the device on the host container instance.\",\n \"Permissions\" : [\"List of string. The explicit permissions to provide to the container for the device. By default, the container has permissions for read, write, and mknod for the device.\"]\n },\n \"DockerVolumeConfiguration\":{\n \"Autoprovision\" : \"Boolean. If this value is true, the Docker volume is created if it does not already exist.\",\n \"Driver\" : \"String. The Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. If the driver was installed using the Docker plugin CLI, use docker plugin ls to retrieve the driver name from your container instance. If the driver was installed using another method, use Docker plugin discovery to retrieve the driver name. For more information, see Docker plugin discovery. This parameter maps to Driver in the Create a volume section of the Docker Remote API and the xxdriver option to docker volume create .\",\n \"DriverOpts\" : {\"info\":\"Type: Map of String e.g. a:b, c:d, e:f. A map of Docker driver-specific options passed through. This parameter maps to DriverOpts in the Create a volume section of the Docker Remote API and the xxopt option to docker volume create .\"},\n \"Labels\" : {\"info\":\"Type: Map of String e.g. a:b, c:d, e:f. Custom metadata to add to your Docker volume. This parameter maps to Labels in the Create a volume section of the Docker Remote API and the xxlabel option to docker volume create .\"},\n \"Scope\" : \"String. Allowed Values: shared | task. The scope for the Docker volume that determines its lifecycle. Docker volumes that are scoped to a task are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as shared persist after the task stops.\"\n },\n \"HostEntry\":{\n \"Hostname\" : \"*String. The hostname to use in the /etc/hosts entry.\",\n \"IpAddress\" : \"*String. The IP address to use in the /etc/hosts entry.\"\n },\n \"HostVolumeProperties\":{\n \"SourcePath\" : \"String. When the host parameter is used, specify a sourcePath to declare the path on the host container instance that is presented to the container. If this parameter is empty, then the Docker daemon has assigned a host path for you. If the host parameter contains a sourcePath file location, then the data volume persists at the specified location on the host container instance until you delete it manually. If the sourcePath value does not exist on the host container instance, the Docker daemon creates it. If the location does exist, the contents of the source path folder are exported. If you are using the Fargate launch type, the sourcePath parameter is not supported.\"\n },\n \"KeyValuePair\":{\n \"Name\" : \"String\",\n \"Value\" : \"String\"\n },\n \"MountPoint\":{\n \"ContainerPath\" : \"String. The path on the container to mount the host volume at.\",\n \"ReadOnly\" : \"Boolean. If this value is true, the container has read-only access to the volume. If this value is false, then the container can write to the volume. The default value is false.\",\n \"SourceVolume\" : \"String. The name of the volume to mount. Must be a volume name referenced in the name parameter of task definition volume.\"\n },\n \"PortMapping\":{\n \"ContainerPort\" : \"Integer. The port number on the container that is bound to the user-specified or automatically assigned host port.\",\n \"HostPort\" : \"Integer. The port number on the container instance to reserve for your container.\",\n \"Protocol\" : \"String. Allowed Values: tcp | udp\"\n },\n \"Tmpfs\":{\n \"ContainerPath\" : \"String. The absolute file path where the tmpfs volume is to be mounted.\",\n \"MountOptions\" : [\"List of string. Valid values: 'defaults' | 'ro' | 'rw' | 'suid' | 'nosuid' | 'dev' | 'nodev' | 'exec' | 'noexec' | 'sync' | 'async' | 'dirsync' | 'remount' | 'mand' | 'nomand' | 'atime' | 'noatime' | 'diratime' | 'nodiratime' | 'bind' | 'rbind' | 'unbindable' | 'runbindable' | 'private' | 'rprivate' | 'shared' | 'rshared' | 'slave' | 'rslave' | 'relatime' | 'norelatime' | 'strictatime' | 'nostrictatime' | 'mode' | 'uid' | 'gid' | 'nr_inodes' | 'nr_blocks' | 'mpol'\"],\n \"Size\" : \"Integer. The size (in MiB) of the tmpfs volume.\"\n },\n \"Ulimit\":{\n \"HardLimit\" : \"*Integer\",\n \"Name\" : \"*String. Allowed Values: core | cpu | data | fsize | locks | memlock | msgqueue | nice | nofile | nproc | rss | rtprio | rttime | sigpending | stack \",\n \"SoftLimit\" : \"*Integer\"\n },\n \"Volume\":{\n \"DockerVolumeConfiguration\" : {\n \"Autoprovision\" : \"Boolean. If this value is true, the Docker volume is created if it does not already exist.\",\n \"Driver\" : \"String. The Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. If the driver was installed using the Docker plugin CLI, use docker plugin ls to retrieve the driver name from your container instance. If the driver was installed using another method, use Docker plugin discovery to retrieve the driver name. For more information, see Docker plugin discovery. This parameter maps to Driver in the Create a volume section of the Docker Remote API and the xxdriver option to docker volume create .\",\n \"DriverOpts\" : {\"info\":\"Type: Map of String e.g. a:b, c:d, e:f. A map of Docker driver-specific options passed through. This parameter maps to DriverOpts in the Create a volume section of the Docker Remote API and the xxopt option to docker volume create .\"},\n \"Labels\" : {\"info\":\"Type: Map of String e.g. a:b, c:d, e:f. Custom metadata to add to your Docker volume. This parameter maps to Labels in the Create a volume section of the Docker Remote API and the xxlabel option to docker volume create .\"},\n \"Scope\" : \"String. Allowed Values: shared | task. The scope for the Docker volume that determines its lifecycle. Docker volumes that are scoped to a task are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as shared persist after the task stops.\"\n },\n \"Host\" : {\n \"SourcePath\" : \"String. When the host parameter is used, specify a sourcePath to declare the path on the host container instance that is presented to the container. If this parameter is empty, then the Docker daemon has assigned a host path for you. If the host parameter contains a sourcePath file location, then the data volume persists at the specified location on the host container instance until you delete it manually. If the sourcePath value does not exist on the host container instance, the Docker daemon creates it. If the location does exist, the contents of the source path folder are exported. If you are using the Fargate launch type, the sourcePath parameter is not supported.\"\n },\n \"Name\" : \"String. The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, and hyphens are allowed. This name is referenced in the sourceVolume parameter of container definition mountPoints.\"\n },\n \"VolumeFrom\":{\n \"ReadOnly\" : \"Boolean. If this value is true, the container has read-only access to the volume. If this value is false, then the container can write to the volume. The default value is false\",\n \"SourceContainer\" : \"String. The name of another container within the same task definition from which to mount volumes.\"\n } \n },\n \"AWS::CloudTrail::Trail\":{\n \"EventSelector\":{\n \"DataResources\" : [\"Type: List of DataResource. CloudTrail supports data event logging for Amazon S3 objects and AWS Lambda functions. You can specify up to 250 resources for an individual event selector, but the total number of data resources cannot exceed 250 across all event selectors in a trail. This limit does not apply if you configure resource logging for all data events.## \"],\n \"IncludeManagementEvents\" : \"Boolean. Specify if you want your event selector to include management events for your trail.\",\n \"ReadWriteType\" : \"String. Allowed Values: All | ReadOnly | WriteOnly\"\n },\n \"DataResource\":{\n \"Type\" : \"*String. The resource type in which you want to log data events. You can specify AWS::S3::Object or AWS::Lambda::Function resources. \",\n \"Values\" : [\"Type: List of String. An array of Amazon Resource Name (ARN) strings or partial ARN strings for the specified objects. To log data events for all objects in all S3 buckets in your AWS account, specify the prefix as arn:aws:s3:::. To log data events for all objects in an S3 bucket, specify the bucket and an empty object prefix such as arn:aws:s3:::bucket-1/. The trail logs data events for all objects in this S3 bucket. To log data events for specific objects, specify the S3 bucket and object prefix such as arn:aws:s3:::bucket-1/example-images. The trail logs data events for objects in this S3 bucket that match the prefix.To log data events for all functions in your AWS account, specify the prefix as arn:aws:lambda. To log data events for a specific Lambda function, specify the function ARN.\"]\n }\n },\n \"AWS::CloudWatch::Alarm\":{\n \"Dimension\":{\n \"Name\" : \"*String\",\n \"Value\" : \"*String\"\n },\n \"Metric\":{\n \"Dimensions\" : [ \"Type: List of Dimensions##\"],\n \"MetricName\" : \"String\",\n \"Namespace\" : \"String\"\n },\n \"MetricDataQuery\":{\n \"Expression\" : \"String. The math expression to be performed on the returned data, if this object is performing a math expression. This expression can use the Id of the other metrics to refer to those metrics, and can also use the Id of other expressions to use the result of those expressions.\",\n \"Id\" : \"*String. A short name used to tie this object to the results in the response. This name must be unique within a single call to GetMetricData. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscore. The first character must be a lowercase letter.\",\n \"Label\" : \"String. A human-readable label for this metric or expression. This is especially useful if this is an expression, so that you know what the value represents. If the metric or expression is shown in a CloudWatch dashboard widget, the label is shown. If Label is omitted, CloudWatch generates a default.\",\n \"MetricStat\" : {\n \"Metric\" : \"*Type: Metric.## \",\n \"Period\" : \"*Integer. The period, in seconds, to use when retrieving the metric\",\n \"Stat\" : \"*String. The statistic to return. It can include any CloudWatch statistic or extended statistic.\",\n \"Unit\" : \"String. Allowed Values: Bits | Bits/Second | Bytes | Bytes/Second | Count | Count/Second | Gigabits | Gigabits/Second | Gigabytes | Gigabytes/Second | Kilobits | Kilobits/Second | Kilobytes | Kilobytes/Second | Megabits | Megabits/Second | Megabytes | Megabytes/Second | Microseconds | Milliseconds | None | Percent | Seconds | Terabits | Terabits/Second | Terabytes | Terabytes/Second\"\n }\n ,\n \"ReturnData\" : \"Boolean. This option indicates whether to return the timestamps and raw data values of this metric. If you are performing this call just to do math expressions and do not also need the raw data returned, you can specify False. If you omit this, the default of True is used.\"\n } \n },\n \"AWS::Logs::MetricFilter\":{\n \"MetricTransformation\":{\n \"DefaultValue\" : \"Double. (Optional) The value to emit when a filter pattern does not match a log event. This value can be null.\",\n \"MetricName\" : \"*String\",\n \"MetricNamespace\" : \"*String\",\n \"MetricValue\" : \"*String. The value that is published to the CloudWatch metric. For example, if you're counting the occurrences of a particular term like Error, specify 1 for the metric value. If you're counting the number of bytes transferred, reference the value that is in the log event by using $ followed by the name of the field that you specified in the filter pattern, such as $size.\"\n } \n },\n \"AWS::Events::EventBusPolicy\":{\n \"Condition\":{\n \"Key\" : \"String. Specifies the key for the condition. Currently the only supported key is aws:PrincipalOrgID.\",\n \"Type\" : \"String. Specifies the type of condition. Currently the only supported value is StringEquals.\",\n \"Value\" : \"String. Specifies the value for the key. Currently, this must be the ID of the organization.\"\n }\n },\n \"AWS::Events::Rule\":{\n \"Target\":{\n \"Arn\" : \"String\",\n \"EcsParameters\" : {\n \"TaskCount\" : \"Integer. The number of tasks to create based on TaskDefinition. The default is 1.\",\n \"TaskDefinitionArn\" : \"*String. The ARN of the task definition to use. If no task revision is supplied, it defaults to the most recent revision at the time of resource creation.\"\n },\n \"Id\" : \"*String. The ID of the target.\",\n \"Input\" : \"String. Valid JSON text passed to the target. If you use this property, nothing from the event text itself is passed to the target.\",\n \"InputPath\" : \"String. When you don't want to pass the entire matched event, InputPath describes which part of the event to pass to the target.\",\n \"InputTransformer\" : {\n \"InputPathsMap\" : \"Type: Map of String. {Key : Value, ...}. Map of JSON paths to be extracted from the event. You can then insert these in the template in InputTemplate to produce the output you want to be sent to the target. InputPathsMap is an array key-value pairs, where each value is a valid JSON path. You can have as many as 10 key-value pairs. You must use JSON dot notation, not bracket notation. The keys cannot start with 'AWS'\",\n \"InputTemplate\" : \"*String. Input template where you specify placeholders that will be filled with the values of the keys from InputPathsMap to customize the data sent to the target. Enclose each InputPathsMaps value in brackets: <value> The InputTemplate must be valid JSON.\"\n },\n \"KinesisParameters\" :{\n \"PartitionKeyPath\" : \"*String. The JSON path to be extracted from the event and used as the partition key. \"\n },\n \"RoleArn\" : \"String\",\n \"RunCommandParameters\" : {\n \"RunCommandTargets\" : [\"Type: List of RunCommandTarget. The criteria (either InstanceIds or a tag) that specifies which EC2 instances the command is sent to. ##\" ]\n },\n \"SqsParameters\" : {\n \"MessageGroupId\" : \"*String. The FIFO message group ID to use as the target.\"\n } \n },\n \"RunCommandTarget\":{\n \"Key\" : \"*String. Can be either tag: tag-key or InstanceIds.\",\n \"Values\" : [\"*List of strings. If Key is tag: tag-key, Values is a list of tag values. If Key is InstanceIds, Values is a list of Amazon EC2 instance IDs.\" ]\n }\n },\n \"AWS::EKS::Cluster\":{\n \"ResourcesVpcConfig\":{\n \"SecurityGroupIds\" : [\"Type: List of String. Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.\"],\n \"SubnetIds\" : [\"* Type: List of string. Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane.\"]\n } \n },\n \"AWS::EFS::FileSystem\":{\n \"ElasticFileSystemTag\":{\n \"Key\" : \"*String\",\n \"Value\" : \"*String\"\n } \n },\n \"AWS::S3::Bucket\":{\n \"AccelerateConfiguration\":{\n \"AccelerationStatus\" : \"*String. Allowed Values: Enabled | Suspended. \"\n },\n \"AnalyticsConfiguration\":{\n \"Id\" : \"*String\",\n \"Prefix\" : \"String. The prefix that an object must have to be included in the analytics results.\",\n \"StorageClassAnalysis\" : {\n \"DataExport\" : {\n \"Destination\" : {\n \"BucketAccountId\" : \"String. The account ID that owns the destination bucket. If no account ID is provided, the owner will not be validated prior to exporting data.\",\n \"BucketArn\" : \"*String. The Amazon Resource Name (ARN) of the bucket to which data is exported.\",\n \"Format\" : \"*String. Specifies the file format used when exporting data to Amazon S3.\",\n \"Prefix\" : \"String. The prefix to use when exporting data. The prefix is prepended to all results.\"\n },\n \"OutputSchemaVersion\" : \"*String. The version of the output schema to use when exporting data. Must be V_1.\"\n } \n },\n \"TagFilters\" : [\"Type: List of TagFilter. The tags to use when evaluating an analytics filter. The analytics only includes objects that meet the filter's criteria. If no filter is specified, all of the contents of the bucket are included in the analysis.##\" ]\n },\n \"TagFilter\":{\n \"Key\" : \"*String\",\n \"Value\" : \"*String\"\n },\n \"BucketEncryption\":{\n \"ServerSideEncryptionConfiguration\" : [\"*Type: List of ServerSideEncryptionRule. Specifies the default server-side-encryption configuration.##\" ]\n },\n \"ServerSideEncryptionRule\":{\n \"ServerSideEncryptionByDefault\" : {\n \"KMSMasterKeyID\" : \"String. KMS master key ID to use for the default encryption. This parameter is allowed if and only if SSEAlgorithm is set to aws:kms.\",\n \"SSEAlgorithm\" : \"*String. Allowed Values: AES256 | aws:kms\"\n } \n },\n \"CorsConfiguration\":{\n \"CorsRules\" : [\"*Type: List of CorsRule. A set of allowed origins and methods.\" ]\n },\n \"CorsRule\":{\n \"AllowedHeaders\" : [\"Type: List of String. Headers that are specified in the Access-Control-Request-Headers header. These headers are allowed in a preflight OPTIONS request. In response to any preflight OPTIONS request, Amazon S3 returns any requested headers that are allowed.\"],\n \"AllowedMethods\" : [\"*Type: List of String. An HTTP method that you allow the origin to execute. Valid values are GET, PUT, HEAD, POST, and DELETE.\" ],\n \"AllowedOrigins\" : [\"*Type: List of String. One or more origins you want customers to be able to access the bucket from.\"],\n \"ExposedHeaders\" : [\"Type: List of String. One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript XMLHttpRequest object).\"],\n \"Id\" : \"String. A unique identifier for this rule. The value must be no more than 255 characters.\",\n \"MaxAge\" : \"Integer. The time in seconds that your browser is to cache the preflight response for the specified resource.\"\n },\n \"InventoryConfiguration\":{\n \"Destination\" : {\n \"BucketAccountId\" : \"String. The account ID that owns the destination bucket. If no account ID is provided, the owner will not be validated prior to exporting data.\",\n \"BucketArn\" : \"*String. The Amazon Resource Name (ARN) of the bucket to which data is exported.\",\n \"Format\" : \"*String. Specifies the file format used when exporting data to Amazon S3.\",\n \"Prefix\" : \"String. The prefix to use when exporting data. The prefix is prepended to all results.\"\n },\n \"Enabled\" : \"*Boolean. Specifies whether the inventory is enabled or disabled. If set to True, an inventory list is generated. If set to False, no inventory list is generated.\",\n \"Id\" : \"*String. The ID used to identify the inventory configuration.\",\n \"IncludedObjectVersions\" : \"*String. Allowed Values: All | Current. Object versions to include in the inventory list. If set to All, the list includes all the object versions, which adds the version-related fields VersionId, IsLatest, and DeleteMarker to the list. If set to Current, the list does not contain these version-related fields.\",\n \"OptionalFields\" : [\"List of string. Contains the optional fields that are included in the inventory results.\"],\n \"Prefix\" : \"String. The prefix that is prepended to all inventory results.\",\n \"ScheduleFrequency\" : \"*String. Specifies the schedule for generating inventory results.\"\n },\n \"LifecycleConfiguration\":{\n \"Rules\" : [\"*Type: List of Rule. ##\"]\n },\n \"Rule\":{\n \"AbortIncompleteMultipartUpload\" : {\n \"DaysAfterInitiation\" : \"*Integer. Specifies the number of days after which Amazon S3 aborts an incomplete multipart upload.\"\n },\n \"ExpirationDate\" : \"**Type: Timestamp. Indicates when objects are deleted from Amazon S3 and Amazon S3 Glacier. The date value must be in ISO 8601 format. The time is always midnight UTC. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time. You must specify at least one of the following properties: AbortIncompleteMultipartUpload, ExpirationDate, ExpirationInDays, NoncurrentVersionExpirationInDays, NoncurrentVersionTransition, NoncurrentVersionTransitions, Transition, or Transitions.\",\n \"ExpirationInDays\" : \"**Integer. Indicates the number of days after creation when objects are deleted from Amazon S3 and Amazon S3 Glacier. If you specify an expiration and transition time, you must use the same time unit for both properties (either in days or by date). The expiration time must also be later than the transition time.\",\n \"Id\" : \"String. Unique identifier for the rule. The value can't be longer than 255 characters.\",\n \"NoncurrentVersionExpirationInDays\" : \"**Integer. For buckets with versioning enabled (or suspended), specifies the time, in days, between when a new version of the object is uploaded to the bucket and when old versions of the object expire. When object versions expire, Amazon S3 permanently deletes them. If you specify a transition and expiration time, the expiration time must be later than the transition time.\",\n \"NoncurrentVersionTransition\" : {\n \"StorageClass\" : \"*String. Allowed Values: DEEP_ARCHIVE | GLACIER | INTELLIGENT_TIERING | ONEZONE_IA | STANDARD_IA\",\n \"TransitionInDays\" : \"*Integer. Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations.\"\n },\n \"NoncurrentVersionTransitions\" : [\"**Type: List of NoncurrentVersionTransition. \"],\n \"Prefix\" : \"String. Object key prefix that identifies one or more objects to which this rule applies.\",\n \"Status\" : \"*String. If Enabled, the rule is currently being applied. If Disabled, the rule is not currently being applied. Allowed Values: Disabled | Enabled\",\n \"TagFilters\" : [\"Type: List of TagFilters. \"],\n \"Transition\" : {\n \"StorageClass\" : \"*String. Allowed Values: DEEP_ARCHIVE | GLACIER | INTELLIGENT_TIERING | ONEZONE_IA | STANDARD_IA\",\n \"TransitionDate\" : \"**Timestamp. Indicates when objects are transitioned to the specified storage class. The date value must be in ISO 8601 format. The time is always midnight UTC.\",\n \"TransitionInDays\" : \"**Integer. Indicates the number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer.\"\n },\n \"Transitions\" : [\"Type: List of Transition\" ]\n },\n \"NoncurrentVersionTransition\":{\n \"StorageClass\" : \"*String. Allowed Values: DEEP_ARCHIVE | GLACIER | INTELLIGENT_TIERING | ONEZONE_IA | STANDARD_IA\",\n \"TransitionInDays\" : \"*Integer. Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations.\"\n },\n \"Transition\": {\n \"StorageClass\" : \"*String. Allowed Values: DEEP_ARCHIVE | GLACIER | INTELLIGENT_TIERING | ONEZONE_IA | STANDARD_IA\",\n \"TransitionDate\" : \"**Timestamp. Indicates when objects are transitioned to the specified storage class. The date value must be in ISO 8601 format. The time is always midnight UTC.\",\n \"TransitionInDays\" : \"**Integer. Indicates the number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer.\"\n },\n \"LoggingConfiguration\":{\n \"DestinationBucketName\" : \"String. The name of the bucket where Amazon S3 should store server access log files. You can store log files in any bucket that you own. By default, logs are stored in the bucket where the LoggingConfiguration property is defined.\",\n \"LogFilePrefix\" : \"String. A prefix for all log object keys. If you store log files from multiple Amazon S3 buckets in a single bucket, you can use a prefix to distinguish which log files came from which bucket.\"\n },\n \"MetricsConfiguration\":{\n \"Id\" : \"*String\",\n \"Prefix\" : \"String. The prefix that an object must have to be included in the metrics results.\",\n \"TagFilters\" : [\"Type: List of TagFilters\"]\n },\n \"NotificationConfiguration\":{\n \"LambdaConfigurations\" : [ \"List of LambdaConfiguration, ...\" ],\n \"QueueConfigurations\" : [ \"List of QueueConfiguration\"],\n \"TopicConfigurations\" : [ \"List of TopicConfiguration, ...\" ]\n },\n \"LambdaConfiguration\":{\n \"Event\" : \"*String. The Amazon S3 bucket event for which to invoke the AWS Lambda function. s3:ObjectCreated:*, s3:ObjectCreated:Put, s3:ObjectCreated:Post, s3:ObjectCreated:Copy , s3:ObjectCreated:CompleteMultipartUpload, s3:ObjectRemoved:*, s3:ObjectRemoved:Delete, s3:ObjectRemoved:DeleteMarkerCreated, s3:ObjectRestore:Post, s3:ObjectRestore:Completed, s3:ReducedRedundancyLostObject\",\n \"Filter\" : {\n \"S3Key\" : {\n \"Rules\" : [\"*List of FilterRule, ...\" ]\n } \n },\n \"Function\" : \"*String. The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3 invokes when the specified event type occurs.\"\n },\n \"FilterRule\":{\n \"Name\" : \"*String. The object key name prefix or suffix identifying one or more objects to which the filtering rule applies. The maximum length is 1,024 characters. Overlapping prefixes and suffixes are not supported. Allowed Values: prefix | suffix\",\n \"Value\" : \"*String. The value that the filter searches for in object key names.\"\n },\n \"QueueConfiguration\":{\n \"Event\" : \"*String. The Amazon S3 bucket event about which you want to publish messages to Amazon SQS. s3:ObjectCreated:*, s3:ObjectCreated:Put, s3:ObjectCreated:Post, s3:ObjectCreated:Copy , s3:ObjectCreated:CompleteMultipartUpload, s3:ObjectRemoved:*, s3:ObjectRemoved:Delete, s3:ObjectRemoved:DeleteMarkerCreated, s3:ObjectRestore:Post, s3:ObjectRestore:Completed, s3:ReducedRedundancyLostObject\",\n \"Filter\" : {\n \"S3Key\" : {\n \"Rules\" : [\"Type: List of FilterRule, ...\" ]\n } \n },\n \"Queue\" : \"*String. The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3 publishes a message when it detects events of the specified type.\"\n },\n \"TopicConfiguration\":{\n \"Event\" : \"*String. The Amazon S3 bucket event about which to send notifications. Available events from s3: s3:ObjectCreated:*, s3:ObjectCreated:Put, s3:ObjectCreated:Post, s3:ObjectCreated:Copy , s3:ObjectCreated:CompleteMultipartUpload, s3:ObjectRemoved:*, s3:ObjectRemoved:Delete, s3:ObjectRemoved:DeleteMarkerCreated, s3:ObjectRestore:Post, s3:ObjectRestore:Completed, s3:ReducedRedundancyLostObject\",\n \"Filter\" : {\n \"S3Key\" : {\n \"Rules\" : [\"Type: List of FilterRule, ...\" ]\n } \n },\n \"Topic\" : \"*String. The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3 publishes a message when it detects events of the specified type.\"\n },\n \"PublicAccessBlockConfiguration\":{\n \"BlockPublicAcls\" : \"Boolean. Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket and objects in this bucket. Setting this element to TRUE causes the following behavior: PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public., PUT Object calls fail if the request includes a public ACL.\",\n \"BlockPublicPolicy\" : \"Boolean. Specifies whether Amazon S3 should block public bucket policies for this bucket. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access.\",\n \"IgnorePublicAcls\" : \"Boolean. Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on this bucket and objects in this bucket.\",\n \"RestrictPublicBuckets\" : \"Boolean. Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element to TRUE restricts access to this bucket to only AWS services and authorized users within this account if the bucket has a public policy. Enabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked.\"\n },\n \"ReplicationConfiguration\":{\n \"Role\" : \"*String. The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that Amazon S3 assumes when replicating objects. \",\n \"Rules\" : [\"*Type: List of ReplicationRule, ...\" ]\n },\n \"ReplicationRule\":{\n \"Destination\" : {\n \"AccessControlTranslation\" : {\n \"Owner\" : \"*String. Specifies the replica ownership. Allowed Values: Destination\"\n },\n \"Account\" : \"*String. Destination bucket owner account ID. In a cross-account scenario, if you direct Amazon S3 to change replica ownership to the AWS account that owns the destination bucket by specifying the AccessControlTranslation property, this is the account ID of the destination bucket owner. If you specify the AccessControlTranslation property, the Account property is required.\",\n \"Bucket\" : \"*String. The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to store replicas of the object identified by the rule.\",\n \"EncryptionConfiguration\" : {\n \"ReplicaKmsKeyID\" : \"*String. Specifies the AWS KMS Key ID (Key ARN or Alias ARN) for the destination bucket. Amazon S3 uses this key to encrypt replica objects.\"\n },\n \"StorageClass\" : \"String. Allowed Values: DEEP_ARCHIVE | GLACIER | INTELLIGENT_TIERING | ONEZONE_IA | REDUCED_REDUNDANCY | STANDARD | STANDARD_IA\"\n },\n \"Id\" : \"String. A unique identifier for the rule. The maximum value is 255 characters. If you don't specify a value, AWS CloudFormation generates a random ID.\",\n \"Prefix\" : \"String. An object keyname prefix that identifies the object or objects to which the rule applies. The maximum prefix length is 1,024 characters. To include all objects in a bucket, specify an empty string.\",\n \"SourceSelectionCriteria\" : {\n \"SseKmsEncryptedObjects\" : {\n \"Status\" : \"*String. Allowed Values: Disabled | Enabled. Specifies whether Amazon S3 replicates objects created with server-side encryption using an AWS KMS-managed key.\"\n } \n },\n \"Status\" : \"*String. Allowed Values: Disabled | Enabled. Specifies whether the rule is enabled or not.\"\n },\n \"VersioningConfiguration\":{\n \"Status\" : \"String. Allowed Values: Enabled | Suspended\"\n },\n \"WebsiteConfiguration\":{\n \"ErrorDocument\" : \"String\",\n \"IndexDocument\" : \"String\",\n \"RedirectAllRequestsTo\" : {\n \"HostName\" : \"*String. Name of the host where requests are redirected.\",\n \"Protocol\" : \"*String. Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Allowed Values: http | https\"\n },\n \"RoutingRules\" : [\"Type: List of RoutingRule\"]\n },\n \"RoutingRule\":{\n \"RedirectRule\" : {\n \"HostName\" : \"String\",\n \"HttpRedirectCode\" : \"String. The HTTP redirect code to use on the response. Not required if one of the siblings is present.\",\n \"Protocol\" : \"String. Allowed Values: http | https\",\n \"ReplaceKeyPrefixWith\" : \"String. The object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix docs/ (objects in the docs/ folder) to documents/, you can set a condition block with KeyPrefixEquals set to docs/ and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required if one of the siblings is present. Can be present only if ReplaceKeyWith is not provided.\",\n \"ReplaceKeyWith\" : \"String. The specific object key to use in the redirect request. For example, redirect request to error.html. Not required if one of the siblings is present. Can be present only if ReplaceKeyPrefixWith is not provided.\"\n },\n \"RoutingRuleCondition\" : {\n \"HttpErrorCodeReturnedEquals\" : \"**String. The HTTP error code when the redirect is applied. In the event of an error, if the error code equals this value, then the specified redirect is applied. Required when parent element Condition is specified and sibling KeyPrefixEquals is not specified. If both are specified, then both must be true for the redirect to be applied.\",\n \"KeyPrefixEquals\" : \"**String. The object key name prefix when the redirect is applied. For example, to redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html. To redirect request for all pages with the prefix docs/, the key prefix will be /docs, which identifies all objects in the docs/ folder. Required when the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals is not specified. If both conditions are specified, both must be true for the redirect to be applied.\"\n } \n } \n },\n \"AWS::ECR::Repository\":{\n \"LifecyclePolicy\":{\n \"LifecyclePolicyText\" : \"String. The JSON repository policy text to apply to the repository.\",\n \"RegistryId\" : \"String. The AWS account ID associated with the registry that contains the repository. If you do not specify a registry, the default registry is assumed.\"\n } \n },\n \"AWS::CloudFormation::WaitCondition\":{\n \"CreationPolicy\":{\n \"ResourceSignal\" : { \n \"Count\" : \"Integer. Default :1 . The number of success signals AWS CloudFormation must receive before it sets the resource status as CREATE_COMPLETE. If the resource receives a failure signal or doesn't receive the specified number of signals before the timeout period expires, the resource creation fails and AWS CloudFormation rolls the stack back.\",\n \"Timeout\" : \"The length of time that AWS CloudFormation waits for the number of signals that was specified in the Count property. The timeout period starts after AWS CloudFormation starts creating the resource, and the timeout expires no sooner than the time you specify but can occur shortly thereafter. The maximum time that you can specify is 12 hours. The value must be in ISO8601 duration format, in the form: 'PT#H#M#S', where each # is the number of hours, minutes, and seconds, respectively. For best results, specify a period of time that gives your instances plenty of time to get up and running. A shorter timeout can cause a rollback. Default: PT5M (5 minutes)\"\n }\n }\n },\n \"AWS::Lambda::Alias\":{\n \"VersionWeight\":{\n \"FunctionVersion\" : \"*String. The name of the second alias\",\n \"FunctionWeight\" : \"*Double. The percentage of traffic that's routed to the second alias.\"\n } \n },\n \"AWS::Lambda::Function\":{\n \"DeadLetterConfig\":{\n \"TargetArn\" : \"String. The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic.\"\n },\n \"Code\":{\n \"S3Bucket\" : \"**String. An Amazon S3 bucket in the same AWS Region as your function. The bucket can be in a different AWS account.\",\n \"S3Key\" : \"**String. The Amazon S3 key of the deployment package.\",\n \"S3ObjectVersion\" : \"**String. For versioned objects, the version of the deployment package object to use.\",\n \"ZipFile\" : \"**String. (Node.js and Python) The source code of your Lambda function. If you include your function source inline with this parameter, AWS CloudFormation places it in a file named index and zips it to create a deployment package. For the Handler property, the first part of the handler identifier must be index. For example, index.handler. Your source code can contain up to 4096 characters. For JSON, you must escape quotes and special characters such as newline (\\n) with a backslash. f you specify a function that interacts with an AWS CloudFormation custom resource, you don't have to write your own functions to send responses to the custom resource that invoked the function. AWS CloudFormation provides a response module (cfn-response) that simplifies sending responses.\"\n },\n \"Environment\":{\n \"Variables\" : \"Map of string. Environment variable key-value pairs.\"\n },\n \"TracingConfig\":{\n \"Mode\" : \"String. Allowed Values: Active | PassThrough\"\n },\n \"VpcConfig\":{\n \"SecurityGroupIds\" : [\"List of strings. A list of security group ids\"],\n \"SubnetIds\" : [\"list of strings. A list of VPC subnet ids\"]\n }\n },\n \"AWS::Lambda::LayerVersion\":{\n \"Content\":{\n \"S3Bucket\" : \"*String\",\n \"S3Key\" : \"*String\",\n \"S3ObjectVersion\" : \"String\"\n } \n },\n \"AWS::SecretsManager::RotationSchedule\":{\n \"RotationRules\":{\n \"AutomaticallyAfterDays\" : \"Integer. Specifies the number of days after the previous rotation before Secrets Manager triggers the next automatic rotation.\"\n } \n },\n \"AWS::SecretsManager::Secret\":{\n \"GenerateSecretString\":{\n \"ExcludeCharacters\" : \"String. A string that includes characters that should not be included in the generated password. The default is that all characters from the included sets can be used. The string can be a minimum length of 0 characters and a maximum length of 7168 characters.\",\n \"ExcludeLowercase\" : \"Boolean. Specifies that the generated password should not include lowercase letters. The default if you don't include this switch parameter is False, and the generated password can include lowercase letters.\",\n \"ExcludeNumbers\" : \"Boolean. Specifies that the generated password should not include digits. The default if you don't include this switch parameter is False, and the generated password can include digits.\",\n \"ExcludePunctuation\" : \"Boolean. Specifies that the generated password should not include punctuation characters. The default if you do not include this switch parameter is that punctuation characters can be included.\",\n \"ExcludeUppercase\" : \"Boolean. Specifies that the generated password should not include uppercase letters. The default if you do not include this switch parameter is False, and the generated password can include uppercase letters.\",\n \"GenerateStringKey\" : \"String. The JSON key name that's used to add the generated password to the JSON structure specified by the SecretStringTemplateparameter. If you specify this parameter, then you must also specify SecretStringTemplate.\",\n \"IncludeSpace\" : \"Boolean. Specifies that the generated password can include the space character. The default if you do not include this switch parameter is False, and the generated password doesn't include space characters.\",\n \"PasswordLength\" : \"Integer. The desired length of the generated password. The default value if you do not include this parameter is 32 characters.\",\n \"RequireEachIncludedType\" : \"Boolean. Specifies whether the generated password must include at least one of every allowed character type. If you don't include this switch, the default value is True, and the generated password includes at least one of every character type.\",\n \"SecretStringTemplate\" : \"String. A properly structured JSON string that the generated password can be added to. If you specify this parameter, then you must also specify GenerateStringKey. That key is combined with the generated random string and inserted into the JSON structure that's specified by this parameter. The merged JSON string is returned as the completed SecretStringof the secret. The default if you don't include this parameter is that the generated random password string is returned by itself, and isn't embeded in a JSON structure.\"\n } \n },\n \"AWS::CodeBuild::Project\":{\n \"Artifacts\":{\n \"ArtifactIdentifier\" : \"String\",\n \"EncryptionDisabled\" : \"Boolean. Set to true if you do not want your output artifacts encrypted. This option is valid only if your artifacts type is Amazon Simple Storage Service (Amazon S3). If this is set with another artifacts type, an invalidInputException is thrown.\",\n \"Location\" : \"**String. If type is set to CODEPIPELINE, AWS CodePipeline ignores this value if specified. This is because AWS CodePipeline manages its build output locations instead of AWS CodeBuild. If type is set to NO_ARTIFACTS, this value is ignored if specified, because no build output is produced.If type is set to S3, this is the name of the output bucket. If you specify CODEPIPELINE or NO_ARTIFACTS for the Type property, don't specify this property. For all of the other types, you must specify this property.\",\n \"Name\" : \"**String. Along with path and namespaceType, the pattern that AWS CodeBuild uses to name and store the output artifact:\",\n \"NamespaceType\" : \"String. Allowed Values: BUILD_ID | NONE. Along with path and name, the pattern that AWS CodeBuild uses to determine the name and location to store the output artifact: If type is set to CODEPIPELINE, AWS CodePipeline ignores this value if specified. This is because AWS CodePipeline manages its build output names instead of AWS CodeBuild. If type is set to NO_ARTIFACTS, this value is ignored if specified, because no build output is produced. If type is set to S3, valid values include:BUILD_ID: Include the build ID in the location of the build output artifact.NONE: Do not include the build ID. This is the default if namespaceType is not specified. \",\n \"OverrideArtifactName\" : \"Boolean. If set to true a name specified in the buildspec file overrides the artifact name. The name specified in a buildspec file is calculated at build time and uses the Shell command language. For example, you can append a date and time to your artifact name so that it is always unique.\",\n \"Packaging\" : \"String. Allowed Values: NONE | ZIP. The type of build output artifact to create:\",\n \"Path\" : \"String. Along with namespaceType and name, the pattern that AWS CodeBuild uses to name and store the output artifact:\",\n \"Type\" : \"*String. Allowed Values: CODEPIPELINE | NO_ARTIFACTS | S3\"\n },\n \"CloudWatchLogsConfig\":{\n \"GroupName\" : \"String\",\n \"Status\" : \"*String. Allowed Values: DISABLED | ENABLED. The current status of the logs in Amazon CloudWatch Logs for a build project.\",\n \"StreamName\" : \"String. The prefix of the stream name of the Amazon CloudWatch Logs.\"\n },\n \"Environment(CodeBuild)\":{\n \"Certificate\" : \"String. The certificate to use with this build project.\",\n \"ComputeType\" : \"*String. The type of compute environment. This determines the number of CPU cores and memory the build environment uses. BUILD_GENERAL1_SMALL: Use up to 3 GB memory and 2 vCPUs for builds. BUILD_GENERAL1_MEDIUM: Use up to 7 GB memory and 4 vCPUs for builds. BUILD_GENERAL1_LARGE: Use up to 15 GB memory and 8 vCPUs for builds.\",\n \"EnvironmentVariables\" : [\"Type: List of EnvironmentVariable ##\"],\n \"Image\" : \"*String. The image tag or image digest that identifies the Docker image to use for this build project. For an image tag: registry/repository:tag. For example, to specify an image with the tag 'latest,' use registry/repository:latest. For an image digest: registry/repository@digest. For example, to specify an image with the digest 'sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf' use registry/repository@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf.\",\n \"ImagePullCredentialsType\" : \"String. Allowed Values: CODEBUILD | SERVICE_ROLE. CODEBUILD specifies that AWS CodeBuild uses its own credentials. This requires that you modify your ECR repository policy to trust AWS CodeBuild's service principal. SERVICE_ROLE specifies that AWS CodeBuild uses your build project's service role.\",\n \"PrivilegedMode\" : \"Boolean. Enables running the Docker daemon inside a Docker container. Set to true only if the build project is used to build Docker images. Otherwise, a build that attempts to interact with the Docker daemon fails.\",\n \"RegistryCredential\" : {\"info\":\"Type:RegistryCredential. specifies information about credentials that provide access to a private Docker registry.##\"},\n \"Type\" : \"*String. Allowed Values: LINUX_CONTAINER | WINDOWS_CONTAINER\"\n },\n \"EnvironmentVariable\":{\n \"Name\" : \"*String. The name or key of the environment variable.\",\n \"Type\" : \"String. Allowed Values: PARAMETER_STORE | PLAINTEXT\",\n \"Value\" : \"*String. The value of the environment variable. We strongly discourage the use of environment variables to store sensitive values, especially AWS secret key IDs and secret access keys. Environment variables can be displayed in plain text using the AWS CodeBuild console and the AWS Command Line Interface (AWS CLI).\"\n },\n \"GitSubmodulesConfig\":{\n \"FetchSubmodules\" : \"*Boolean. Set to true to fetch Git submodules for your AWS CodeBuild build project.\"\n },\n \"LogsConfig\":{\n \"CloudWatchLogs\" : \"Type: CloudWatchLogsConfig\",\n \"S3Logs\" : \"Type: S3LogsConfig\"\n },\n \"ProjectCache\":{\n \"Location\" : \"String. NO_CACHE or LOCAL: This value is ignored. S3: This is the S3 bucket name/prefix.\",\n \"Modes\" : [\"Type: List of strings. Allowed Values: LOCAL_SOURCE_CACHE || LOCAL_DOCKER_LAYER_CACHE || LOCAL_CUSTOM_CACHE\"],\n \"Type\" : \"*String. Allowed Values: LOCAL | NO_CACHE | S3. NO_CACHE: The build project does not use any cache. S3: The build project reads and writes from and to S3.LOCAL: The build project stores a cache locally on a build host that is only available to that build host.\"\n },\n \"ProjectSourceVersion\":{\n \"SourceIdentifier\" : \"*String\",\n \"SourceVersion\" : \"String\"\n },\n \"ProjectTriggers\":{\n \"FilterGroups\" : [\"Type: List of WebhookFilter ##\" ],\n \"Webhook\" : \"Boolean. Specifies whether or not to begin automatically rebuilding the source code every time a code change is pushed to the repository.\"\n },\n \"WebhookFilter\":{\n \"ExcludeMatchedPattern\" : \"Boolean. Used to indicate that the pattern determines which webhook events do not trigger a build. If true, then a webhook event that does not match the pattern triggers a build. If false, then a webhook event that matches the pattern triggers a build.\",\n \"Pattern\" : \"*String. For a WebHookFilter that uses EVENT type, a comma-separated string that specifies one or more events. For example, the webhook filter PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED allows all push, pull request created, and pull request updated events to trigger a build. For a WebHookFilter that uses any of the other filter types, a regular expression pattern. For example, a WebHookFilter that uses HEAD_REF for its type and the pattern ^refs/heads/ triggers a build when the head reference is a branch with a reference name refs/heads/branch-name.\",\n \"Type\" : \"*String. Allowed Values: ACTOR_ACCOUNT_ID | BASE_REF | EVENT | FILE_PATH | HEAD_REF\"\n },\n \"RegistryCredential\":{\n \"Credential\" : \"*String. The Amazon Resource Name (ARN) or name of credentials created using AWS Secrets Manager.\",\n \"CredentialProvider\" : \"*String. Allowed Values: SECRETS_MANAGER. The service that created the credentials to access a private Docker registry. The valid value, SECRETS_MANAGER, is for AWS Secrets Manager.\"\n },\n \"S3LogsConfig\":{\n \"EncryptionDisabled\" : \"Boolean. Set to true if you do not want your S3 build log output encrypted. By default S3 build logs are encrypted.\",\n \"Location\" : \"String. The ARN of an S3 bucket and the path prefix for S3 logs. If your Amazon S3 bucket name is my-bucket, and your path prefix is build-log, then acceptable formats are my-bucket/build-log or arn:aws:s3:::my-bucket/build-log.\",\n \"Status\" : \"*String. Allowed Values: DISABLED | ENABLED\"\n },\n \"Source\":{\n \"Auth\" : {\n \"Resource\" : \"String. The resource value that applies to the specified authorization type.\",\n \"Type\" : \"*String. The authorization type to use. The only valid value is OAUTH, which represents the OAuth authorization type.\"\n },\n \"BuildSpec\" : \"String. The build specification for the project. If this value is not provided, then the source code must contain a buildspec file named buildspec.yml at the root level. If this value is provided, it can be either a single string containing the entire build specification, or the path to an alternate buildspec file relative to the value of the built-in environment variable CODEBUILD_SRC_DIR. The alternate buildspec file can have a name other than buildspec.yml, for example myspec.yml or build_spec_qa.yml or similar.\",\n \"GitCloneDepth\" : \"Integer. The depth of history to download. Minimum value is 0. If this value is 0, greater than 25, or not provided, then the full history is downloaded with each build project. If your source type is Amazon S3, this value is not supported.\",\n \"GitSubmodulesConfig\" : {\n \"FetchSubmodules\" : \"*Boolean. Set to true to fetch Git submodules for your AWS CodeBuild build project.\"\n },\n \"InsecureSsl\" : \"Boolean. This is used with GitHub Enterprise only. Set to true to ignore SSL warnings while connecting to your GitHub Enterprise project repository. The default value is false. InsecureSsl should be used for testing purposes only. It should not be used in a production environment.\",\n \"Location\" : \"String. Information about the location of the source code to be built. \",\n \"ReportBuildStatus\" : \"Boolean. Set to true to report the status of a build's start and finish to your source provider. This option is valid only when your source provider is GitHub, GitHub Enterprise, or Bitbucket. If this is set and you use a different source provider, an invalidInputException is thrown.\",\n \"SourceIdentifier\" : \"String\",\n \"Type\" : \"String. Allowed Values: BITBUCKET | CODECOMMIT | CODEPIPELINE | GITHUB | GITHUB_ENTERPRISE | NO_SOURCE | S3\"\n },\n \"VpcConfig(CodeBuild)\":{\n \"SecurityGroupIds\" : [\"List of Strings.\" ],\n \"Subnets\" : [ \"List of strings.\" ],\n \"VpcId\" : \"String. The id of the vpc.\"\n }\n },\n \"AWS::MSK::Cluster\":{\n \"BrokerNodeGroupInfo\":{\n \"BrokerAZDistribution\" : \"String. The distribution of broker nodes across Availability Zones.\",\n \"ClientSubnets\" : [\"*List of strings. The list of subnets to connect to in the client virtual private cloud (VPC). AWS creates elastic network interfaces inside these subnets. Client applications use elastic network interfaces to produce and consume data. Client subnets can't be in Availability Zone us-east-1e.\" ],\n \"InstanceType\" : \"*String. The type of Amazon EC2 instances to use for Kafka brokers. The following instance types are allowed: kafka.m5.large, kafka.m5.xlarge, kafka.m5.2xlarge, kafka.m5.4xlarge, kafka.m5.12xlarge, and kafka.m5.24xlarge.\",\n \"SecurityGroups\" : [\"List of strings. The AWS security groups to associate with the elastic network interfaces in order to specify who can connect to and communicate with the Amazon MSK cluster. If you don't specify a security group, Amazon MSK uses the default security group associated with the VPC. If you specify security groups that were shared with you, you must ensure that you have permissions to them. Specifically, you need the ec2:DescribeSecurityGroups permission.\"],\n \"StorageInfo\" : {\n \"EBSStorageInfo\" : {\n \"VolumeSize\" : \"Integer. The size in GiB of the EBS volume for the data drive on each broker node.\"\n } \n }\n },\n \"ClientAuthentication\":{\n \"Tls\" : {\n \"CertificateAuthorityArnList\" : [\"List of strings. List of ACM Certificate Authority ARNs.\" ]\n }\n },\n \"ConfigurationInfo\":{\n \"Arn\" : \"*String. The Amazon Resource Name (ARN) of the MSK configuration to use. For example, arn:aws:kafka:us-east-1:123456789012:configuration/example-configuration-name/abcdabcd-1234-abcd-1234-abcd123e8e8e-1.\",\n \"Revision\" : \"*Integer. The revision of the Amazon MSK configuration to use.\"\n },\n \"EncryptionInfo\":{\n \"EncryptionAtRest\" : {\n \"DataVolumeKMSKeyId\" : \"*String. The ARN of the AWS KMS key for encrypting data at rest. If you don't specify a KMS key, MSK creates one for you and uses it on your behalf.\"\n },\n \"EncryptionInTransit\" : {\n \"ClientBroker\" : \"String. TLS| TLS_PLAINTEXT| PLAINTEXT \",\n \"InCluster\" : \"Boolean. When set to true, it indicates that data communication among the broker nodes of the cluster is encrypted. When set to false, the communication happens in plaintext. The default value is true.\"\n } \n }\n },\n \"AWS::Elasticsearch::Domain\":{\n \"EBSOptions\":{\n \"EBSEnabled\" : \"Boolean. Specifies whether Amazon EBS volumes are attached to data nodes in the Amazon ES domain.\",\n \"Iops\" : \"Integer. The number of I/O operations per second (IOPS) that the volume supports. This property applies only to the Provisioned IOPS (SSD) EBS volume type.\",\n \"VolumeSize\" : \"Integer. The size (in GiB) of the EBS volume for each data node. The minimum and maximum size of an EBS volume depends on the EBS volume type and the instance type to which it is attached. \",\n \"VolumeType\" : \"String. The EBS volume type to use with the Amazon ES domain, such as standard, gp2, io1, st1, or sc1.\"\n },\n \"ElasticsearchClusterConfig\":{\n \"DedicatedMasterCount\" : \"Integer. The number of instances to use for the master node. If you specify this property, you must specify true for the DedicatedMasterEnabled property.\",\n \"DedicatedMasterEnabled\" : \"Boolean. Indicates whether to use a dedicated master node for the Amazon ES domain. A dedicated master node is a cluster node that performs cluster management tasks, but doesn't hold data or respond to data upload requests. Dedicated master nodes offload cluster management tasks to increase the stability of your search clusters.\",\n \"DedicatedMasterType\" : \"String. The hardware configuration of the computer that hosts the dedicated master node, such as m3.medium.elasticsearch. If you specify this property, you must specify true for the DedicatedMasterEnabled property.\",\n \"InstanceCount\" : \"Integer. The number of data nodes (instances) to use in the Amazon ES domain.\",\n \"InstanceType\" : \"String. The instance type for your data nodes, such as m3.medium.elasticsearch.\",\n \"ZoneAwarenessConfig\" : {\n \"AvailabilityZoneCount\" : \"Integer. If you enabled multiple Availability Zones (AZs), the number of AZs that you want the domain to use. Valid values are 2 and 3. Default is 2.\"\n },\n \"ZoneAwarenessEnabled\" : \"Boolean. Indicates whether to enable zone awareness for the Amazon ES domain. When you enable zone awareness, Amazon ES allocates the nodes and replica index shards that belong to a cluster across two Availability Zones (AZs) in the same region to prevent data loss and minimize downtime in the event of node or data center failure. Don't enable zone awareness if your cluster has no replica index shards or is a single-node cluster.\"\n },\n \"EncryptionAtRestOptions\":{\n \"Enabled\" : \"Boolean. Specify true to enable encryption at rest.\",\n \"KmsKeyId\" : \"String. The KMS key ID. Takes the form 1a2a3a4-1a2a-3a4a-5a6a-1a2a3a4a5a6a.\"\n },\n \"NodeToNodeEncryptionOptions\":{\n \"Enabled\" : \"Boolean. Specifies whether node-to-node encryption is enabled, as a Boolean.\"\n },\n \"SnapshotOptions\":{\n \"AutomatedSnapshotStartHour\" : \"Integer. The hour in UTC during which the service takes an automated daily snapshot of the indices in the Amazon ES domain. For example, if you specify 0, Amazon ES takes an automated snapshot everyday between midnight and 1 am. You can specify a value between 0 and 23.\"\n },\n \"VPCOptions\":{\n \"SecurityGroupIds\" : [\"List of string. The list of security group IDs that are associated with the VPC endpoints for the domain. If you don't provide a security group ID, Amazon ES uses the default security group for the VPC. \"],\n \"SubnetIds\" : [\"List of string. Provide one subnet ID for each Availability Zone that your domain uses. For example, you must specify three subnet IDs for a three Availability Zone domain.\"]\n } \n },\n \"AWS::RDS::DBCluster\":{\n \"DBClusterRole\":{\n \"FeatureName\" : \"String. The name of the feature associated with the AWS Identity and Access Management (IAM) role.\",\n \"RoleArn\" : \"*String. The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster.\",\n \"Status\" : \"String. Describes the state of association between the IAM role and the DB cluster. The Status property returns one of the following values: ACTIVE| PENDING|INVALID\"\n },\n \"ScalingConfiguration\":{\n \"AutoPause\" : \"Boolean. A value that indicates whether to allow or disallow automatic pause for an Aurora DB cluster in serverless DB engine mode. A DB cluster can be paused only when it's idle (it has no connections).\",\n \"MaxCapacity\" : \"Integer. The maximum capacity for an Aurora DB cluster in serverless DB engine mode. Valid capacity values are 1, 2, 4, 8, 16, 32, 64, 128, and 256.\",\n \"MinCapacity\" : \"Integer. The minimum capacity for an Aurora DB cluster in serverless DB engine mode. Valid capacity values are 1, 2, 4, 8, 16, 32, 64, 128, and 256.\",\n \"SecondsUntilAutoPause\" : \"Integer. The time, in seconds, before an Aurora DB cluster in 'serverless' mode is paused.\"\n } \n },\n \"AWS::RDS::DBInstance\":{\n \"DBInstanceRole\":{\n \"FeatureName\" : \"*String. The name of the feature associated with the AWS Identity and Access Management (IAM) role. For the list of supported feature names, see DBEngineVersion.\",\n \"RoleArn\" : \"*String. The Amazon Resource Name (ARN) of the IAM role that is associated with the DB instance.\",\n \"Status\" : \"String. Describes the state of association between the IAM role and the DB instance. The Status property returns one of the following values: ACTIVE|PENDING|INVALID\"\n },\n \"ProcessorFeature\":{\n \"Name\" : \"String. The name of the processor feature. Valid names are coreCount| threadsPerCore.\",\n \"Value\" : \"String. The value of a processor feature name.\"\n } \n },\n \"AWS::RDS::DBSecurityGroup\":{\n \"Ingress\":{\n \"CIDRIP\" : \"String. IP range to authorize.\",\n \"EC2SecurityGroupId\" : \"String. Id of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.\",\n \"EC2SecurityGroupName\" : \"String. Name of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.\",\n \"EC2SecurityGroupOwnerId\" : \"String. AWS account number of the owner of the EC2 security group specified in the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.\"\n } \n },\n \"AWS::RDS::OptionGroup\":{\n \"OptionConfiguration\":{\n \"DBSecurityGroupMemberships\" : [\"List of string. A list of DBSecurityGroupMembership name strings used for this option.\" ],\n \"OptionName\" : \"*String. The configuration of options to include in a group.\",\n \"OptionSettings\" : [\"List of OptionSetting\"],\n \"OptionVersion\" : \"String\",\n \"Port\" : \"Integer\",\n \"VpcSecurityGroupMemberships\" : [\"List of string. A list of VpcSecurityGroupMembership name strings used for this option.\" ]\n },\n \"OptionSetting\":{\n \"Name\" : \"String\",\n \"Value\" : \"String\"\n } \n } \n } \n\n}\n\n\n","import { SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER } from 'constants';\r\n\r\nexport interface SubResource{\r\n resourcename:string,\r\n resourcesyntax:string,\r\n resourcecount:number\r\n}\r\n\r\nexport interface AWSResource{\r\n servicename:string,\r\n subresource:SubResource[]\r\n}\r\n\r\nexport interface ResourceSyntax{\r\n Type:string,\r\n Properties:Object\r\n}\r\n\r\nexport var RESOURCE_DATA:AWSResource[]=[\r\n {\r\n servicename:\"EC2\",\r\n subresource:[\r\n {\r\n resourcename:\"CustomerGateway\",\r\n resourcesyntax:\"AWS::EC2::CustomerGateway\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"DHCPOptions\",\r\n resourcesyntax:\"AWS::EC2::DHCPOptions\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"EC2Fleet\",\r\n resourcesyntax:\"AWS::EC2::EC2Fleet\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"EgressOnlyInternetGateway\",\r\n resourcesyntax:\"AWS::EC2::EgressOnlyInternetGateway\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"EIP\",\r\n resourcesyntax:\"AWS::EC2::EIP\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"EIPAssociation\",\r\n resourcesyntax:\"AWS::EC2::EIPAssociation\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"FlowLog\",\r\n resourcesyntax:\"AWS::EC2::FlowLog\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Host\",\r\n resourcesyntax:\"AWS::EC2::Host\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Instance\",\r\n resourcesyntax:\"AWS::EC2::Instance\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"InternetGateway\",\r\n resourcesyntax:\"AWS::EC2::InternetGateway\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LaunchTemplate\",\r\n resourcesyntax:\"AWS::EC2::LaunchTemplate\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"NatGateway\",\r\n resourcesyntax:\"AWS::EC2::NatGateway\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"NetworkACL\",\r\n resourcesyntax:\"AWS::EC2::NetworkAcl\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"NetworkAclEntry\",\r\n resourcesyntax:\"AWS::EC2::NetworkAclEntry\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"NetworkInterface\",\r\n resourcesyntax:\"AWS::EC2::NetworkInterface\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"NetworkInterfaceAttachment\",\r\n resourcesyntax:\"AWS::EC2::NetworkInterfaceAttachment\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"NetworkInterfacePermission\",\r\n resourcesyntax:\"AWS::EC2::NetworkInterfacePermission\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"PlacementGroup\",\r\n resourcesyntax:\"AWS::EC2::PlacementGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Route\",\r\n resourcesyntax:\"AWS::EC2::Route\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"RouteTable\",\r\n resourcesyntax:\"AWS::EC2::RouteTable\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SecurityGroup\",\r\n resourcesyntax:\"AWS::EC2::SecurityGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SecurityGroupEgress\",\r\n resourcesyntax:\"AWS::EC2::SecurityGroupEgress\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SecurityGroupIngress\",\r\n resourcesyntax:\"AWS::EC2::SecurityGroupIngress\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SpotFleet\",\r\n resourcesyntax:\"AWS::EC2::SpotFleet\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Subnet\",\r\n resourcesyntax:\"AWS::EC2::Subnet\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SubnetCidrBlock\",\r\n resourcesyntax:\"AWS::EC2::SubnetCidrBlock\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SubnetNetworkAclAssociation\",\r\n resourcesyntax:\"AWS::EC2::SubnetNetworkAclAssociation\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SubnetRouteTableAssociation\",\r\n resourcesyntax:\"AWS::EC2::SubnetRouteTableAssociation\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TransitGateway\",\r\n resourcesyntax:\"AWS::EC2::TransitGateway\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TransitGatewayAttachment\",\r\n resourcesyntax:\"AWS::EC2::TransitGatewayAttachment\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TransitGatewayRoute\",\r\n resourcesyntax:\"AWS::EC2::TransitGatewayRoute\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TransitGatewayRouteTable\",\r\n resourcesyntax:\"AWS::EC2::TransitGatewayRouteTable\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TransitGatewayRouteTableAssociation\",\r\n resourcesyntax:\"AWS::EC2::TransitGatewayRouteTableAssociation\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TransitGatewayRouteTablePropagation\",\r\n resourcesyntax:\"AWS::EC2::TransitGatewayRouteTablePropagation\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Volume\",\r\n resourcesyntax:\"AWS::EC2::Volume\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VolumeAttachment\",\r\n resourcesyntax:\"AWS::EC2::VolumeAttachment\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPC\",\r\n resourcesyntax:\"AWS::EC2::VPC\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPCCidrBlock\",\r\n resourcesyntax:\"AWS::EC2::VPCCidrBlock\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPCDHCPOptionsAssociation\",\r\n resourcesyntax:\"AWS::EC2::VPCDHCPOptionsAssociation\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPCEndpoint\",\r\n resourcesyntax:\"AWS::EC2::VPCEndpoint\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPCEndpointConnectionNotification\",\r\n resourcesyntax:\"AWS::EC2::VPCEndpointConnectionNotification\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPCEndpointService\",\r\n resourcesyntax:\"AWS::EC2::VPCEndpointService\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPCEndpointServicePermissions\",\r\n resourcesyntax:\"AWS::EC2::VPCEndpointServicePermissions\",\r\n resourcecount: 0\r\n },\r\n {\r\n resourcename:\"VPCGatewayAttachment\",\r\n resourcesyntax:\"AWS::EC2::VPCGatewayAttachment\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPCPeeringConnection\",\r\n resourcesyntax:\"AWS::EC2::VPCPeeringConnection\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPNConnection\",\r\n resourcesyntax:\"AWS::EC2::VPNConnection\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPNConnectionRoute\",\r\n resourcesyntax:\"AWS::EC2::VPNConnectionRoute\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPNGateway\",\r\n resourcesyntax:\"AWS::EC2::VPNGateway\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"VPNGatewayRoutePropagation\",\r\n resourcesyntax:\"AWS::EC2::VPNGatewayRoutePropagation\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"Route53\",\r\n subresource:[\r\n {\r\n resourcename:\"HealthCheck\",\r\n resourcesyntax:\"AWS::Route53::HealthCheck\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"HostedZone\",\r\n resourcesyntax:\"AWS::Route53::HostedZone\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"RecordSet\",\r\n resourcesyntax:\"AWS::Route53::RecordSet\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"RecordSetGroup\",\r\n resourcesyntax:\"AWS::Route53::RecordSetGroup\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"Route53Resolver\",\r\n subresource:[\r\n {\r\n resourcename:\"ResolverEndpoint\",\r\n resourcesyntax:\"AWS::Route53Resolver::ResolverEndpoint\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ResolverRule\",\r\n resourcesyntax:\"AWS::Route53Resolver::ResolverRule\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ResolverRuleAssociation\",\r\n resourcesyntax:\"AWS::Route53Resolver::ResolverRuleAssociation\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"IAM\",\r\n subresource:[\r\n {\r\n resourcename:\"AccessKey\",\r\n resourcesyntax:\"AWS::IAM::AccessKey\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Group\",\r\n resourcesyntax:\"AWS::IAM::Group\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"InstanceProfile\",\r\n resourcesyntax:\"AWS::IAM::InstanceProfile\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ManagedPolicy\",\r\n resourcesyntax:\"AWS::IAM::ManagedPolicy\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Policy\",\r\n resourcesyntax:\"AWS::IAM::Policy\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Role\",\r\n resourcesyntax:\"AWS::IAM::Role\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ServiceLinkedRole\",\r\n resourcesyntax:\"AWS::IAM::ServiceLinkedRole\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"User\",\r\n resourcesyntax:\"AWS::IAM::User\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"UserToGroupAddition\",\r\n resourcesyntax:\"AWS::IAM::UserToGroupAddition\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"AutoScaling\",\r\n subresource:[\r\n {\r\n resourcename:\"AutoScalingGroup\",\r\n resourcesyntax:\"AWS::AutoScaling::AutoScalingGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LaunchConfiguration\",\r\n resourcesyntax:\"AWS::AutoScaling::LaunchConfiguration\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LifecycleHook\",\r\n resourcesyntax:\"AWS::AutoScaling::LifecycleHook\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ScalingPolicy\",\r\n resourcesyntax:\"AWS::AutoScaling::ScalingPolicy\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ScheduledAction\",\r\n resourcesyntax:\"AWS::AutoScaling::ScheduledAction\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"ElasticLoadBalancingV2\",\r\n subresource:[\r\n {\r\n resourcename:\"Listener\",\r\n resourcesyntax:\"AWS::ElasticLoadBalancingV2::Listener\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ListenerCertificate\",\r\n resourcesyntax:\"AWS::ElasticLoadBalancingV2::ListenerCertificate\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"ListenerRule\",\r\n resourcesyntax:\"AWS::ElasticLoadBalancingV2::ListenerRule\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LoadBalancer\",\r\n resourcesyntax:\"AWS::ElasticLoadBalancingV2::LoadBalancer\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TargetGroup\",\r\n resourcesyntax:\"AWS::ElasticLoadBalancingV2::TargetGroup\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"SQS\",\r\n subresource:[\r\n {\r\n resourcename:\"Queue\",\r\n resourcesyntax:\"AWS::SQS::Queue\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"QueuePolicy\",\r\n resourcesyntax:\"AWS::SQS::QueuePolicy\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"SNS\",\r\n subresource:[\r\n {\r\n resourcename:\"Subscription\",\r\n resourcesyntax:\"AWS::SNS::Subscription\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Topic\",\r\n resourcesyntax:\"AWS::SNS::Topic\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TopicPolicy\",\r\n resourcesyntax:\"AWS::SNS::TopicPolicy\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"Certificate Manager\",\r\n subresource:[\r\n {\r\n resourcename:\"Certificate\",\r\n resourcesyntax:\"AWS::CertificateManager::Certificate\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"DynamoDB\",\r\n subresource:[\r\n {\r\n resourcename:\"Table\",\r\n resourcesyntax:\"AWS::DynamoDB::Table\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"ECS\",\r\n subresource:[\r\n {\r\n resourcename:\"Cluster\",\r\n resourcesyntax:\"AWS::ECS::Cluster\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Service\",\r\n resourcesyntax:\"AWS::ECS::Service\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"TaskDefinition\",\r\n resourcesyntax:\"AWS::ECS::TaskDefinition\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"CloudTrail\",\r\n subresource:[\r\n {\r\n resourcename:\"Trail\",\r\n resourcesyntax:\"AWS::CloudTrail::Trail\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"CloudWatch\",\r\n subresource:[\r\n {\r\n resourcename:\"Alarm\",\r\n resourcesyntax:\"AWS::CloudWatch::Alarm\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Dashboard\",\r\n resourcesyntax:\"AWS::CloudWatch::Dashboard\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"CloudWatchLogs\",\r\n subresource:[\r\n {\r\n resourcename:\"Destination\",\r\n resourcesyntax:\"AWS::Logs::Destination\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LogGroup\",\r\n resourcesyntax:\"AWS::Logs::LogGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LogStream\",\r\n resourcesyntax:\"AWS::Logs::LogStream\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"MetricFilter\",\r\n resourcesyntax:\"AWS::Logs::MetricFilter\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SubscriptionFilter\",\r\n resourcesyntax:\"AWS::Logs::SubscriptionFilter\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"CloudWatchEvents\",\r\n subresource:[\r\n {\r\n resourcename:\"EventBusPolicy\",\r\n resourcesyntax:\"AWS::Events::EventBusPolicy\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Rule\",\r\n resourcesyntax:\"AWS::Events::Rule\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"EKS\",\r\n subresource:[\r\n {\r\n resourcename:\"Cluster\",\r\n resourcesyntax:\"AWS::EKS::Cluster\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"EFS\",\r\n subresource:[\r\n {\r\n resourcename:\"FileSystem\",\r\n resourcesyntax:\"AWS::EFS::FileSystem\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"MountTarget\",\r\n resourcesyntax:\"AWS::EFS::MountTarget\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"S3\",\r\n subresource:[\r\n {\r\n resourcename:\"Bucket\",\r\n resourcesyntax:\"AWS::S3::Bucket\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"BucketPolicy\",\r\n resourcesyntax:\"AWS::S3::BucketPolicy\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"ECR\",\r\n subresource:[\r\n {\r\n resourcename:\"Repository\",\r\n resourcesyntax:\"AWS::ECR::Repository\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"CloudFormation\",\r\n subresource:[\r\n {\r\n resourcename:\"CustomResource\",\r\n resourcesyntax:\"AWS::CloudFormation::CustomResource\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Macro\",\r\n resourcesyntax:\"AWS::CloudFormation::Macro\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Stack\",\r\n resourcesyntax:\"AWS::CloudFormation::Stack\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"WaitCondition\",\r\n resourcesyntax:\"AWS::CloudFormation::WaitCondition\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"WaitConditionHandle\",\r\n resourcesyntax:\"AWS::CloudFormation::WaitConditionHandle\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"Lambda\",\r\n subresource:[\r\n {\r\n resourcename:\"Alias\",\r\n resourcesyntax:\"AWS::Lambda::Alias\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"EventSourceMapping\",\r\n resourcesyntax:\"AWS::Lambda::EventSourceMapping\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Function\",\r\n resourcesyntax:\"AWS::Lambda::Function\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LayerVersion\",\r\n resourcesyntax:\"AWS::Lambda::LayerVersion\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"LayerVersionPermission\",\r\n resourcesyntax:\"AWS::Lambda::LayerVersionPermission\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Permission\",\r\n resourcesyntax:\"AWS::Lambda::Permission\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Version\",\r\n resourcesyntax:\"AWS::Lambda::Version\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"RAM\",\r\n subresource:[\r\n {\r\n resourcename:\"ResourceShare\",\r\n resourcesyntax:\"AWS::RAM::ResourceShare\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"SecretsManager\",\r\n subresource:[\r\n {\r\n resourcename:\"ResourcePolicy\",\r\n resourcesyntax:\"AWS::SecretsManager::ResourcePolicy\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"RotationSchedule\",\r\n resourcesyntax:\"AWS::SecretsManager::RotationSchedule\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"Secret\",\r\n resourcesyntax:\"AWS::SecretsManager::Secret\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SecretTargetAttachment\",\r\n resourcesyntax:\"AWS::SecretsManager::SecretTargetAttachment\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"CodeBuild\",\r\n subresource:[\r\n {\r\n resourcename:\"Project\",\r\n resourcesyntax:\"AWS::CodeBuild::Project\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"SourceCredential\",\r\n resourcesyntax:\"AWS::CodeBuild::SourceCredential\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"MSK\",\r\n subresource:[\r\n {\r\n resourcename:\"Cluster\",\r\n resourcesyntax:\"AWS::MSK::Cluster\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"Elasticsearch\",\r\n subresource:[\r\n {\r\n resourcename:\"Domain\",\r\n resourcesyntax:\"AWS::Elasticsearch::Domain\",\r\n resourcecount:0\r\n }\r\n ]\r\n },\r\n {\r\n servicename:\"RDS\",\r\n subresource:[\r\n {\r\n resourcename:\"DBCluster\",\r\n resourcesyntax:\"AWS::RDS::DBCluster\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"DBClusterParameterGroup\",\r\n resourcesyntax:\"AWS::RDS::DBClusterParameterGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"DBInstance\",\r\n resourcesyntax:\"AWS::RDS::DBInstance\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"DBParameterGroup\",\r\n resourcesyntax:\"AWS::RDS::DBParameterGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"DBSecurityGroup\",\r\n resourcesyntax:\"AWS::RDS::DBSecurityGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"DBSecurityGroupIngress\",\r\n resourcesyntax:\"AWS::RDS::DBSecurityGroupIngress\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"DBSubnetGroup\",\r\n resourcesyntax:\"AWS::RDS::DBSubnetGroup\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"EventSubscription\",\r\n resourcesyntax:\"AWS::RDS::EventSubscription\",\r\n resourcecount:0\r\n },\r\n {\r\n resourcename:\"OptionGroup\",\r\n resourcesyntax:\"AWS::RDS::OptionGroup\",\r\n resourcecount:0\r\n }\r\n ]\r\n }\r\n]","module.exports = \".example-container {\\r\\n width: 1240px;\\r\\n height: 440px;\\r\\n border: 1px solid rgba(0, 0, 0, 0.5);\\r\\n }\\r\\n\\r\\n \\r\\n .main-container{\\r\\n display: inline-block;\\r\\n }\\r\\n\\r\\n \\r\\n .example-sidenav-content {\\r\\n display: flex;\\r\\n height: 100%;\\r\\n align-items: left;\\r\\n justify-content: left;\\r\\n }\\r\\n\\r\\n \\r\\n .example-sidenav {\\r\\n padding: 20px;\\r\\n width:350px\\r\\n }\\r\\n\\r\\n \\r\\n .example-sidenav-res {\\r\\n padding: 20px;\\r\\n width:220px\\r\\n }\\r\\n\\r\\n \\r\\n .property-dealer{\\r\\n display:inline-block;\\r\\n\\r\\n }\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzb3VyY2Utdmlldy9yZXNvdXJjZS12aWV3LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxhQUFhO0lBQ2IsYUFBYTtJQUNiLG9DQUFvQztFQUN0Qzs7O0VBR0E7SUFDRSxxQkFBcUI7RUFDdkI7OztFQUVBO0lBQ0UsYUFBYTtJQUNiLFlBQVk7SUFDWixpQkFBaUI7SUFDakIscUJBQXFCO0VBQ3ZCOzs7RUFFQTtJQUNFLGFBQWE7SUFDYjtFQUNGOzs7RUFFQTtJQUNFLGFBQWE7SUFDYjtFQUNGOzs7RUFFQTtJQUNFLG9CQUFvQjs7RUFFdEIiLCJmaWxlIjoic3JjL2FwcC9yZXNvdXJjZS12aWV3L3Jlc291cmNlLXZpZXcuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5leGFtcGxlLWNvbnRhaW5lciB7XHJcbiAgICB3aWR0aDogMTI0MHB4O1xyXG4gICAgaGVpZ2h0OiA0NDBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC41KTtcclxuICB9XHJcblxyXG4gIFxyXG4gIC5tYWluLWNvbnRhaW5lcntcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcbiAgXHJcbiAgLmV4YW1wbGUtc2lkZW5hdi1jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBhbGlnbi1pdGVtczogbGVmdDtcclxuICAgIGp1c3RpZnktY29udGVudDogbGVmdDtcclxuICB9XHJcbiAgXHJcbiAgLmV4YW1wbGUtc2lkZW5hdiB7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgd2lkdGg6MzUwcHhcclxuICB9XHJcblxyXG4gIC5leGFtcGxlLXNpZGVuYXYtcmVzIHtcclxuICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICB3aWR0aDoyMjBweFxyXG4gIH1cclxuXHJcbiAgLnByb3BlcnR5LWRlYWxlcntcclxuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xyXG5cclxuICB9Il19 */\"","module.exports = \"<div >\\n<mat-drawer-container class=\\\"example-container\\\" autosize >\\n <mat-drawer #function class=\\\"example-sidenav\\\" mode=\\\"side\\\" position=\\\"end\\\" >\\n <mat-icon color=\\\"primary\\\" matTooltip=\\\"Two identical function widgets are provided so that one function's output can be used in another function easily. E.g. output of Fn::Join to be used in Fn::Base64 to generate UserData property for AWS::EC2::Instance. Use the scroller at the bottom to scroll to the right to preview lengthy function outputs.\\\" >\\n info\\n </mat-icon>\\n <app-intrinsic-functions></app-intrinsic-functions><br>\\n <app-intrinsic-functions></app-intrinsic-functions>\\n </mat-drawer>\\n <mat-drawer #drawer class=\\\"example-sidenav-res\\\" mode=\\\"side\\\" opened >\\n <button type=\\\"button\\\" mat-button color=\\\"primary\\\" (click)=\\\"function.toggle()\\\"\\n matTooltip=\\\"click to open intrinsic functions side panel. click again to close\\\">\\n Intrinsic Functions\\n </button>\\n <mat-divider></mat-divider>\\n <mat-select *ngFor=\\\"let service of resourcelist\\\" [placeholder]=\\\"service.servicename\\\">\\n <mat-option *ngFor=\\\"let resource of service.subresource\\\">\\n \\n <button mat-raised-button (click)=\\\"serviceAddition(resource)\\\">\\n <span [matBadge]=\\\"resource.resourcecount\\\" matBadgeOverlap=\\\"false\\\">{{resource.resourcename}}</span> \\n </button>\\n </mat-option>\\n </mat-select>\\n <mat-divider></mat-divider>\\n </mat-drawer> \\n <button *ngIf=\\\"!drawer.opened\\\" type=\\\"button\\\" color=\\\"accent\\\" mat-button (click)=\\\"drawer.toggle()\\\" >show resource panel</button>\\n <div>\\n <div *ngFor=\\\"let i of ec2_instance\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_instance\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_volume\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_volume\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_eip\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_eip\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_securitygroup\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_securitygroup\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_customergateway\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_customergateway\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_dhcpoptions\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_dhcpoptions\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_egressonlyinternetgateway\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_egressonlyinternetgateway\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_ec2fleet\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_ec2fleet\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_eipassociation\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_eipassociation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_flowlog\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_flowlog\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_host\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_host\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_internetgateway\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_internetgateway\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_launchtemplate\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_launchtemplate\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_natgateway\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_natgateway\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_networkacl\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_networkacl\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_networkaclentry\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_networkaclentry\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_networkinterface\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_networkinterface\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_networkinterfaceattachment\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_networkinterfaceattachment\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_networkinterfacepermission\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_networkinterfacepermission\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_placementgroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_placementgroup\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_route\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_route\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_routetable\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_routetable\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_securitygroupegress\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_securitygroupegress\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_securitygroupingress\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_securitygroupingress\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_spotfleet\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_spotfleet\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_subnet\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_subnet\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_subnetcidrblock\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_subnetcidrblock\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_subnetnetworkaclassociation\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_subnetnetworkaclassociation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_subnetroutetableassociation\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_subnetroutetableassociation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_transitgateway\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_transitgateway\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_transitgatewayattachment \\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_transitgatewayattachment\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_transitgatewayroute\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_transitgatewayroute\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_transitgatewayroutetable \\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_transitgatewayroutetable\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_transitgatewayroutetableassociation\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_transitgatewayroutetableassociation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_transitgatewayroutetablepropagation\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_transitgatewayroutetablepropagation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_volumeattachment\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_volumeattachment\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpc\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpc\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpccidrblock\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpccidrblock\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpcdhcpoptionsassociation\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpcdhcpoptionsassociation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpcendpoint\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpcendpoint\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpcendpointconnectionnotification\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpcendpointconnectionnotification\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpcendpointservice\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpcendpointservice\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpcendpointservicepermissions\\\"> \\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpcendpointservicepermissions\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpcgatewayattachment\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpcgatewayattachment\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpcpeeringconnection\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpcpeeringconnection\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpnconnection\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpnconnection\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpnconnectionroute\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpnconnectionroute\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpngateway\\\">\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpngateway\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of ec2_vpngatewayroutepropagation\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ec2_vpngatewayroutepropagation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n\\n <div *ngFor=\\\"let i of route53_healthcheck\\\">\\n <app-common-resource [myresource]=\\\"awsresource.route53_healthcheck\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of route53_hostedzone\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.route53_hostedzone\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of route53_recordset\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.route53_recordset\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of route53_recordsetgroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.route53_recordsetgroup\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of r53_resolver_resolverendpoint\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.r53_resolver_resolverendpoint\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of r53_resolver_resolverrule\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.r53_resolver_resolverrule\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of r53_resolver_resolverruleassociation\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.r53_resolver_resolverruleassociation\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n \\n \\n <div *ngFor=\\\"let i of iam_accesskey\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_accesskey\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_group\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_group\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_instanceprofile\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_instanceprofile\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_managedpolicy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_managedpolicy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_policy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_policy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_role\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_role\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_servicelinkedrole\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_servicelinkedrole\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_user\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_user\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of iam_usertogroupaddition\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.iam_usertogroupaddition\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n \\n <div *ngFor=\\\"let i of ag_agGroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ag_agGroup\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of ag_launchConfiguration\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ag_launchConfiguration\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of ag_lifecyclehook\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ag_lifecyclehook\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of ag_scalingpolicy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ag_scalingpolicy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of ag_scheduledAction\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ag_scheduledAction\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n \\n <div *ngFor=\\\"let i of elbv2_listener\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.elbv2_listener\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of elbv2_listenercertificate\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.elbv2_listenercertificate\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of elbv2_listenerrule\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.elbv2_listenerrule\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of elbv2_loadbalancer\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.elbv2_loadbalancer\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of elbv2_targetgroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.elbv2_targetgroup\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of acm_certificate\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.acm_certificate\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of dynamodb_table\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.dynamodb_table\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n\\n <div *ngFor=\\\"let i of sqs_queue\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sqs_queue\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n <div *ngFor=\\\"let i of sqs_queuepolicy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sqs_queuepolicy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of sns_subscription\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sns_subscription\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of sns_topic\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sns_topic\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of sns_topicpolicy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sns_topicpolicy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of ecs_cluster\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ecs_cluster\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of ecs_service\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ecs_service\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of ecs_taskdefinition\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ecs_taskdefinition\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of cloudtrail_trail\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cloudtrail_trail\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div>\\n\\n <div *ngFor=\\\"let i of cw_alarm\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cw_alarm\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cw_dashboard\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cw_dashboard\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of cwlogs_destination\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cwlogs_destination\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cwlogs_loggroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cwlogs_loggroup\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cwlogs_logstream\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cwlogs_logstream\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cwlogs_metricfilter\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cwlogs_metricfilter\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cwlogs_subscriptionfilter\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cwlogs_subscriptionfilter\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of cwevents_eventbuspolicy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cwevents_eventbuspolicy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cwevents_rule\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cwevents_rule\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of eks_cluster\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.eks_cluster\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of efs_filesystem\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.efs_filesystem\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of efs_mounttarget\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.efs_mounttarget\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of s3_bucket\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.s3_bucket\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of s3_bucketpolicy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.s3_bucketpolicy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of ecr_repository\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ecr_repository\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of cfn_customresource\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cfn_customresource\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cfn_macro\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cfn_macro\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cfn_stack\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cfn_stack\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cfn_waitcondition\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cfn_waitcondition\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cfn_waitconditionhandle\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cfn_waitconditionhandle\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n \\n <div *ngFor=\\\"let i of lambda_alias\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.lambda_alias\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of lambda_eventsourcemapping\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.lambda_eventsourcemapping\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of lambda_function\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.lambda_function\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of lambda_layerversion\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.lambda_layerversion\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of lambda_layerversionpermission\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.lambda_layerversionpermission\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of lambda_permission\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.lambda_permission\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of lambda_version\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.lambda_version\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of ram_resourceshare\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.ram_resourceshare\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of sm_resourcepolicy\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sm_resourcepolicy\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of sm_rotationschedule\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sm_rotationschedule\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of sm_secret\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sm_secret\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of sm_secrettargetattachment\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.sm_secrettargetattachment\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of cb_project\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cb_project\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of cb_sourcecredential\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.cb_sourcecredential\\\" [isTagged]=\\\"false\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of msk_cluster\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.msk_cluster\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n\\n <div *ngFor=\\\"let i of es_domain\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.es_domain\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n \\n <div *ngFor=\\\"let i of rds_dbcluster\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_dbcluster\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_dbclusterparametergroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_dbclusterparametergroup\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_dbinstance\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_dbinstance\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_dbparametergroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_dbclusterparametergroup\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_dbsecuritygroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_dbsecuritygroup\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_dbsecuritygroupingress\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_dbsecuritygroupingress\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_dbsubnetgroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_dbsubnetgroup\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_eventsubscription\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_eventsubscription\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n <div *ngFor=\\\"let i of rds_optiongroup\\\" >\\n <app-common-resource [myresource]=\\\"awsresource.rds_optiongroup\\\" [isTagged]=\\\"true\\\" ></app-common-resource>\\n </div> \\n \\n </div>\\n</mat-drawer-container>\\n</div>\\n<!-- <div style=\\\"float:left\\\" >\\n <app-object-help></app-object-help>\\n</div> -->\\n<!-- <div style=\\\"float:left\\\">\\n <app-intrinsic-functions></app-intrinsic-functions>\\n</div>\\n<div style=\\\"float:left\\\">\\n <app-intrinsic-functions></app-intrinsic-functions>\\n</div> -->\"","import { Component, OnInit, Input } from '@angular/core';\nimport {RESOURCE_DATA, ResourceSyntax} from './resource-list';\nimport {AWSResource} from './resource-list';\nimport {SubResource} from './resource-list';\nimport { AwsResourcesService } from '../aws-resources.service';\n\n@Component({\n selector: 'app-resource-view',\n templateUrl: './resource-view.component.html',\n styleUrls: ['./resource-view.component.css']\n})\nexport class ResourceViewComponent implements OnInit {\n\n constructor(public awsresource:AwsResourcesService) {\n }\n\n ngOnInit() {\n }\n\n resourcelist=RESOURCE_DATA;\n resource_detail=[]\n\n //Route53 resources\n route53_healthcheck=[];\n route53_hostedzone=[];\n route53_recordset=[];\n route53_recordsetgroup=[];\n\n //Route53 Resolver resources\n r53_resolver_resolverendpoint=[]\n r53_resolver_resolverrule=[]\n r53_resolver_resolverruleassociation=[]\n\n //IAM resources\n iam_accesskey=[]\n iam_group=[]\n iam_instanceprofile=[]\n iam_managedpolicy=[]\n iam_policy=[]\n iam_role=[]\n iam_servicelinkedrole=[]\n iam_user=[]\n iam_usertogroupaddition=[]\n\n //EC2 resources\n ec2_volume=[];\n ec2_eip=[];\n ec2_instance=[];\n ec2_securitygroup=[];\n ec2_customergateway=[];\n ec2_dhcpoptions=[];\n ec2_ec2fleet=[];\n ec2_egressonlyinternetgateway=[];\n ec2_eipassociation=[];\n ec2_flowlog=[];\n ec2_host=[];\n ec2_internetgateway=[];\n ec2_launchtemplate=[];\n ec2_natgateway=[];\n ec2_networkacl=[];\n ec2_networkaclentry=[];\n ec2_networkinterface=[];\n ec2_networkinterfaceattachment=[];\n ec2_networkinterfacepermission=[];\n ec2_placementgroup=[];\n ec2_route=[];\n ec2_routetable=[];\n ec2_securitygroupegress=[];\n ec2_securitygroupingress=[];\n ec2_spotfleet=[];\n ec2_subnet=[];\n ec2_subnetcidrblock=[];\n ec2_subnetnetworkaclassociation=[];\n ec2_subnetroutetableassociation=[];\n ec2_transitgateway=[];\n ec2_transitgatewayattachment=[];\n ec2_transitgatewayroute=[];\n ec2_transitgatewayroutetable=[];\n ec2_transitgatewayroutetableassociation=[];\n ec2_transitgatewayroutetablepropagation=[];\n ec2_volumeattachment=[];\n ec2_vpc=[];\n ec2_vpccidrblock=[];\n ec2_vpcdhcpoptionsassociation=[];\n ec2_vpcendpoint=[];\n ec2_vpcendpointconnectionnotification=[];\n ec2_vpcendpointservice=[];\n ec2_vpcendpointservicepermissions=[];\n ec2_vpcgatewayattachment=[];\n ec2_vpcpeeringconnection=[];\n ec2_vpnconnection=[];\n ec2_vpnconnectionroute=[];\n ec2_vpngateway=[];\n ec2_vpngatewayroutepropagation=[];\n\n //autoscaling\n ag_agGroup=[];\n ag_launchConfiguration=[];\n ag_lifecyclehook=[];\n ag_scalingpolicy=[];\n ag_scheduledAction=[]\n\n //elbv2\n elbv2_listener=[];\n elbv2_listenercertificate=[];\n elbv2_listenerrule=[];\n elbv2_loadbalancer=[];\n elbv2_targetgroup=[];\n\n //certificate manager\n acm_certificate=[];\n\n //dynamodb\n dynamodb_table=[];\n\n //sqs\n sqs_queue=[];\n sqs_queuepolicy=[];\n\n //sns\n sns_subscription=[];\n sns_topic=[];\n sns_topicpolicy=[]\n\n //ecs\n ecs_cluster=[];\n ecs_service=[];\n ecs_taskdefinition=[];\n\n //cloudtrail\n cloudtrail_trail=[]\n\n //cloudwatch\n cw_alarm=[]\n cw_dashboard=[]\n\n //CloudWatch Logs\n cwlogs_destination=[]\n cwlogs_loggroup=[]\n cwlogs_logstream=[]\n cwlogs_metricfilter=[]\n cwlogs_subscriptionfilter=[]\n\n //CloudWatch Events\n cwevents_eventbuspolicy=[]\n cwevents_rule=[]\n\n //EKS\n eks_cluster=[]\n\n //EFS\n efs_filesystem=[]\n efs_mounttarget=[]\n\n //S3\n s3_bucket=[]\n s3_bucketpolicy=[]\n\n //ecr\n ecr_repository=[]\n\n //cloudformation\n cfn_customresource=[]\n cfn_macro=[]\n cfn_stack=[]\n cfn_waitcondition=[]\n cfn_waitconditionhandle=[]\n\n //lambda\n lambda_alias=[]\n lambda_eventsourcemapping=[]\n lambda_function=[]\n lambda_layerversion=[]\n lambda_layerversionpermission=[]\n lambda_permission=[]\n lambda_version=[]\n\n //RAM\n ram_resourceshare=[]\n\n //secretsmanager\n sm_resourcepolicy=[]\n sm_rotationschedule=[]\n sm_secret=[]\n sm_secrettargetattachment=[]\n\n //codebuild\n cb_project=[]\n cb_sourcecredential=[]\n\n //mks(kafka)\n msk_cluster=[]\n\n //elasticsearch\n es_domain=[]\n\n //rds\n rds_dbcluster=[]\n rds_dbclusterparametergroup=[]\n rds_dbinstance=[]\n rds_dbparametergroup=[]\n rds_dbsecuritygroup=[]\n rds_dbsecuritygroupingress=[]\n rds_dbsubnetgroup=[]\n rds_eventsubscription=[]\n rds_optiongroup=[]\n\n serviceAddition(subresource:SubResource){\n //console.log(`${subresource.resourcename} ${subresource.resourcecount} ${subresource.resourcesyntax}`);\n subresource.resourcecount = subresource.resourcecount + 1;\n //console.log((subresource.resourcesyntax as string).split(\"::\"));\n this.resource_detail=(subresource.resourcesyntax as string).split(\"::\");\n switch (this.resource_detail[1]) {\n case \"Route53\":\n if(this.resource_detail[2]==\"HealthCheck\") this.route53_healthcheck.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"HostedZone\") this.route53_hostedzone.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"RecordSet\") this.route53_recordset.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"RecordSetGroup\") this.route53_recordsetgroup.push(subresource.resourcecount); \n break;\n case \"Route53Resolver\":\n if(this.resource_detail[2]==\"ResolverEndpoint\") this.r53_resolver_resolverendpoint.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ResolverRule\") this.r53_resolver_resolverrule.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ResolverRuleAssociation\") this.r53_resolver_resolverruleassociation.push(subresource.resourcecount);\n break;\n case \"EC2\":\n if(this.resource_detail[2]==\"Volume\") this.ec2_volume.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"EIP\") this.ec2_eip.push(subresource.resourcecount); \n if(this.resource_detail[2]==\"Instance\") this.ec2_instance.push(subresource.resourcecount); \n if(this.resource_detail[2]==\"SecurityGroup\") this.ec2_securitygroup.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"CustomerGateway\") this.ec2_customergateway.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"DHCPOptions\") this.ec2_dhcpoptions.push(subresource.resourcecount); \n if(this.resource_detail[2]==\"EC2Fleet\") this.ec2_ec2fleet.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"EgressOnlyInternetGateway\") this.ec2_egressonlyinternetgateway.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"EIPAssociation\") this.ec2_eipassociation.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"FlowLog\") this.ec2_flowlog.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Host\") this.ec2_host.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"InternetGateway\") this.ec2_internetgateway.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LaunchTemplate\") this.ec2_launchtemplate.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"NatGateway\") this.ec2_natgateway.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"NetworkAcl\") this.ec2_networkacl.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"NetworkAclEntry\") this.ec2_networkaclentry.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"NetworkInterface\") this.ec2_networkinterface.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"NetworkInterfaceAttachment\") this.ec2_networkinterfaceattachment.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"NetworkInterfacePermission\") this.ec2_networkinterfacepermission.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"PlacementGroup\") this.ec2_placementgroup.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Route\") this.ec2_route.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"RouteTable\") this.ec2_routetable.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"SecurityGroupEgress\") this.ec2_securitygroupegress.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"SecurityGroupIngress\") this.ec2_securitygroupingress.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"SpotFleet\") this.ec2_spotfleet.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Subnet\") this.ec2_subnet.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"SubnetCidrBlock\") this.ec2_subnetcidrblock.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"SubnetNetworkAclAssociation\") this.ec2_subnetnetworkaclassociation.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"SubnetRouteTableAssociation\") this.ec2_subnetroutetableassociation.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TransitGateway\") this.ec2_transitgateway.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TransitGatewayAttachment\") this.ec2_transitgatewayattachment.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TransitGatewayRoute\") this.ec2_transitgatewayroute.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TransitGatewayRouteTable\") this.ec2_transitgatewayroutetable.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TransitGatewayRouteTableAssociation\") this.ec2_transitgatewayroutetableassociation.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TransitGatewayRouteTablePropagation\") this.ec2_transitgatewayroutetablepropagation.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VolumeAttachment\") this.ec2_volumeattachment.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPC\") this.ec2_vpc.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCCidrBlock\") this.ec2_vpccidrblock.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCDHCPOptionsAssociation\") this.ec2_vpcdhcpoptionsassociation.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCEndpoint\") this.ec2_vpcendpoint.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCEndpointConnectionNotification\") this.ec2_vpcendpointconnectionnotification.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCEndpointService\") this.ec2_vpcendpointservice.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCEndpointServicePermissions\") this.ec2_vpcendpointservicepermissions.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCGatewayAttachment\") this.ec2_vpcgatewayattachment.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPCPeeringConnection\") this.ec2_vpcpeeringconnection.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPNConnection\") this.ec2_vpnconnection.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPNConnectionRoute\") this.ec2_vpnconnectionroute.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPNGateway\") this.ec2_vpngateway.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"VPNGatewayRoutePropagation\") this.ec2_vpngatewayroutepropagation.push(subresource.resourcecount);\n break;\n case \"IAM\":\n if(this.resource_detail[2]==\"AccessKey\") this.iam_accesskey.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Group\") this.iam_group.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"InstanceProfile\") this.iam_instanceprofile.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ManagedPolicy\") this.iam_managedpolicy.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Policy\") this.iam_policy.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Role\") this.iam_role.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ServiceLinkedRole\") this.iam_servicelinkedrole.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"User\") this.iam_user.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"UserToGroupAddition\") this.iam_usertogroupaddition.push(subresource.resourcecount);\n break;\n\n case \"AutoScaling\":\n if(this.resource_detail[2]==\"AutoScalingGroup\") this.ag_agGroup.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LaunchConfiguration\") this.ag_launchConfiguration.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LifecycleHook\") this.ag_lifecyclehook.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ScalingPolicy\") this.ag_scalingpolicy.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ScheduledAction\") this.ag_scheduledAction.push(subresource.resourcecount);\n break;\n\n case \"ElasticLoadBalancingV2\":\n if(this.resource_detail[2]==\"Listener\") this.elbv2_listener.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ListenerCertificate\") this.elbv2_listenercertificate.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"ListenerRule\") this.elbv2_listenerrule.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LoadBalancer\") this.elbv2_loadbalancer.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TargetGroup\") this.elbv2_targetgroup.push(subresource.resourcecount);\n break;\n\n case \"CertificateManager\":\n if(this.resource_detail[2]==\"Certificate\") this.acm_certificate.push(subresource.resourcecount); \n break;\n\n case \"SNS\":\n if(this.resource_detail[2]==\"Subscription\") this.sns_subscription.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Topic\") this.sns_topic.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TopicPolicy\") this.sns_topicpolicy.push(subresource.resourcecount);\n \n break;\n\n case \"SQS\":\n if(this.resource_detail[2]==\"Queue\") this.sqs_queue.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"QueuePolicy\") this.sqs_queuepolicy.push(subresource.resourcecount);\n break;\n\n case \"DynamoDB\":\n if(this.resource_detail[2]==\"Table\") this.dynamodb_table.push(subresource.resourcecount);\n break;\n\n case \"ECS\":\n if(this.resource_detail[2]==\"Cluster\") this.ecs_cluster.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Service\") this.ecs_service.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"TaskDefinition\") this.ecs_taskdefinition.push(subresource.resourcecount);\n break;\n \n case \"CloudTrail\":\n if(this.resource_detail[2]==\"Trail\") this.cloudtrail_trail.push(subresource.resourcecount);\n break;\n\n case \"CloudWatch\":\n if(this.resource_detail[2]==\"Alarm\") this.cw_alarm.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Dashboard\") this.cw_dashboard.push(subresource.resourcecount);\n break;\n\n case \"Logs\":\n if(this.resource_detail[2]==\"Destination\") this.cwlogs_destination.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LogGroup\") this.cwlogs_loggroup.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LogStream\") this.cwlogs_logstream.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"MetricFilter\") this.cwlogs_metricfilter.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"SubscriptionFilter\") this.cwlogs_subscriptionfilter.push(subresource.resourcecount);\n break;\n\n case \"Events\":\n if(this.resource_detail[2]==\"EventBusPolicy\") this.cwevents_eventbuspolicy.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Rule\") this.cwevents_rule.push(subresource.resourcecount);\n break;\n\n case \"EKS\":\n if(this.resource_detail[2]==\"Cluster\") this.eks_cluster.push(subresource.resourcecount);\n break;\n\n case \"EFS\":\n if(this.resource_detail[2]==\"FileSystem\") this.efs_filesystem.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"MountTarget\") this.efs_mounttarget.push(subresource.resourcecount);\n break;\n\n case \"S3\":\n if(this.resource_detail[2]==\"Bucket\") this.s3_bucket.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"BucketPolicy\") this.s3_bucketpolicy.push(subresource.resourcecount);\n break;\n\n case \"ECR\":\n if(this.resource_detail[2]==\"Repository\") this.ecr_repository.push(subresource.resourcecount);\n break;\n\n case \"CloudFormation\":\n if(this.resource_detail[2]==\"CustomResource\") this.cfn_customresource.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Macro\") this.cfn_macro.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Stack\") this.cfn_stack.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"WaitCondition\") this.cfn_waitcondition.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"WaitConditionHandle\") this.cfn_waitconditionhandle.push(subresource.resourcecount);\n\n case \"Lambda\":\n if(this.resource_detail[2]==\"Alias\") this.lambda_alias.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"EventSourceMapping\") this.lambda_eventsourcemapping.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Function\") this.lambda_function.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LayerVersion\") this.lambda_layerversion.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"LayerVersionPermission\") this.lambda_layerversionpermission.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Permission\") this.lambda_permission.push(subresource.resourcecount);\n if(this.resource_detail[2]==\"Version\") this.lambda_version.push(subresource.resourcecount);\n\n case \"RAM\":\n if(this.resource_detail[2]==\"ResourceShare\") this.ram_resourceshare.push(subresource.resourcecount)\n\n case \"SecretsManager\":\n if(this.resource_detail[2]==\"ResourcePolicy\") this.sm_resourcepolicy.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"RotationSchedule\") this.sm_rotationschedule.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"Secret\") this.sm_secret.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"SecretTargetAttachment\") this.sm_secrettargetattachment.push(subresource.resourcecount)\n\n case \"CodeBuild\":\n if(this.resource_detail[2]==\"Project\") this.cb_project.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"SourceCredential\") this.cb_sourcecredential.push(subresource.resourcecount) \n\n case \"MSK\":\n if(this.resource_detail[2]==\"Cluster\") this.msk_cluster.push(subresource.resourcecount)\n\n case \"Elasticsearch\":\n if(this.resource_detail[2]==\"Domain\") this.es_domain.push(subresource.resourcecount)\n\n case \"RDS\":\n if(this.resource_detail[2]==\"DBCluster\") this.rds_dbcluster.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"DBClusterParameterGroup\") this.rds_dbclusterparametergroup.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"DBInstance\") this.rds_dbinstance.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"DBParameterGroup\") this.rds_dbparametergroup.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"DBSecurityGroup\") this.rds_dbsecuritygroup.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"DBSecurityGroupIngress\") this.rds_dbsecuritygroupingress.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"DBSubnetGroup\") this.rds_dbsubnetgroup.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"EventSubscription\") this.rds_eventsubscription.push(subresource.resourcecount)\n if(this.resource_detail[2]==\"OptionGroup\") this.rds_optiongroup.push(subresource.resourcecount)\n\n\n default:\n break;\n } \n }\n}\n","module.exports = \".example-headers-align .mat-expansion-panel-header-title,\\r\\n.example-headers-align .mat-expansion-panel-header-description {\\r\\n flex-basis: 0;\\r\\n}\\r\\n\\r\\n.example-headers-align .mat-expansion-panel-header-description {\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdWx0L3Jlc3VsdC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFLGFBQWE7QUFDZjs7QUFFQTtFQUNFLDhCQUE4QjtFQUM5QixtQkFBbUI7QUFDckIiLCJmaWxlIjoic3JjL2FwcC9yZXN1bHQvcmVzdWx0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZXhhbXBsZS1oZWFkZXJzLWFsaWduIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZSxcclxuLmV4YW1wbGUtaGVhZGVycy1hbGlnbiAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24ge1xyXG4gIGZsZXgtYmFzaXM6IDA7XHJcbn1cclxuXHJcbi5leGFtcGxlLWhlYWRlcnMtYWxpZ24gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uIHtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG4iXX0= */\"","module.exports = \"<br>\\r\\n<mat-accordion class=\\\"example-headers-align\\\" >\\r\\n <mat-expansion-panel>\\r\\n <mat-expansion-panel-header>\\r\\n <mat-panel-title>Validate Template</mat-panel-title>\\r\\n <mat-panel-description>\\r\\n Enter AWS specific information\\r\\n </mat-panel-description>\\r\\n </mat-expansion-panel-header>\\r\\n <div class=\\\"example-container\\\">\\r\\n <form #loginform=\\\"ngForm\\\" (submit)=\\\"validateTemplate(loginform.value)\\\">\\r\\n <mat-form-field>\\r\\n <input matInput type=\\\"text\\\" name=\\\"access_key\\\" placeholder=\\\"Access Key\\\" required ngModel>\\r\\n </mat-form-field><br>\\r\\n <mat-form-field>\\r\\n <input matInput type=\\\"password\\\" name=\\\"secret_access_key\\\" placeholder=\\\"Secret Access Key\\\" required ngModel\\r\\n matTooltip=\\\"secret access key never leaves your machine, or stored in your browser local storage\\\"> <br> \\r\\n </mat-form-field><br>\\r\\n <mat-form-field>\\r\\n <input matInput type=\\\"text\\\" name=\\\"region\\\" placeholder=\\\"Region\\\" required ngModel> <br>\\r\\n </mat-form-field><br>\\r\\n <mat-form-field>\\r\\n <input matInput type=\\\"text\\\" name=\\\"bucket\\\" placeholder=\\\"Bucket\\\" required ngModel\\r\\n matTooltip=\\\"Make sure your bucket has CORS enabled\\\" > <br>\\r\\n </mat-form-field><br>\\r\\n <mat-form-field>\\r\\n <input matInput type=\\\"text\\\" name=\\\"filename\\\" placeholder=\\\"Filename on S3\\\" required ngModel \\r\\n matTooltip=\\\"File will be created with authenticated-read access\\\"> <br>\\r\\n </mat-form-field><br>\\r\\n <button mat-icon-button color=\\\"primary\\\" [disabled]=\\\"loginform.invalid\\\" type=\\\"submit\\\">\\r\\n <mat-icon>cloud_done</mat-icon>\\r\\n </button>\\r\\n </form>\\r\\n </div>\\r\\n </mat-expansion-panel>\\r\\n</mat-accordion>\\r\\n\\r\\n<br>\\r\\n\\r\\n <a mat-button href=\\\"#\\\" (click)=\\\"getDownloadHref()\\\" matTooltip=\\\"Download Template\\\" >\\r\\n <mat-icon>save</mat-icon>\\r\\n </a> <br>\\r\\n <mat-spinner *ngIf=\\\"(s3message.length==0 || message.length==0) && showSpinner\\\" ></mat-spinner>\\r\\n <span [ngStyle]=\\\"{'color':uploadColor}\\\" *ngIf=\\\"s3message.length!=0\\\"> {{s3message}} </span> <br>\\r\\n <span [ngStyle]=\\\"{'color':validateColor}\\\" *ngIf=\\\"message.length!=0\\\"> {{message}} </span> <br>\\r\\n <button type=\\\"button\\\" color=\\\"primary\\\" [disabled]=\\\"isJsonOn\\\" mat-raised-button (click)=\\\"isJsonOn=true;isYamlOn=false\\\" >json</button>\\r\\n <button type=\\\"button\\\" color=\\\"accent\\\" [disabled]=\\\"isYamlOn\\\" mat-raised-button (click)=\\\"convertToYaml();isYamlOn=true;isJsonOn=false\\\" > yaml(beta) </button>\\r\\n <button *ngIf=\\\"isJsonOn\\\" mat-icon-button color=\\\"primary\\\" matTooltip=\\\"copy Json\\\" (click)=\\\"copyToClipboardJson()\\\"> <mat-icon>file_copy</mat-icon> </button>\\r\\n <button *ngIf=\\\"isYamlOn\\\" mat-icon-button color=\\\"accent\\\" matTooltip=\\\"copy yaml\\\" (click)=\\\"copyToClipboardYaml()\\\"> <mat-icon>file_copy</mat-icon> </button>\\r\\n <pre *ngIf=\\\"isJsonOn\\\" >{{jsonresult.jsonresult | json}}</pre>\\r\\n <pre *ngIf=\\\"isYamlOn\\\" > {{yamlTemplate}} </pre>\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\n//import { saveAs } from 'file-saver';\nvar AWS = require('aws-sdk');\n//var FileSaver = require('file-saver');\nvar yaml = require('js-yaml')\n\n@Component({\n selector: 'app-result',\n templateUrl: './result.component.html',\n styleUrls: ['./result.component.css']\n})\nexport class ResultComponent implements OnInit {\n\n constructor(public jsonresult:JsonResultService) { \n }\n\n s3message:String=\"\";\n message:String=\"\";\n showSpinner=false;\n uploadColor=\"\";\n validateColor=\"\";\n isYamlOn=false;\n isJsonOn=true;\n yamlTemplate;\n \n\n getDownloadHref(){\n var str = \"data:text/json;charset=utf-8,\"\n var data = str + encodeURIComponent(JSON.stringify(this.jsonresult.jsonresult));\n var link = document.createElement('a');\n link.setAttribute('href', data);\n link.setAttribute('download',\"cloudkast.json\")\n link.click();\n var data = str + encodeURIComponent(this.yamlTemplate);\n link.setAttribute('href',data);\n link.setAttribute('download',\"cloudkast.yaml\")\n link.click();\n }\n\n convertToYaml(){\n this.isYamlOn=true;\n this.isJsonOn=false;\n this.yamlTemplate=yaml.safeDump(this.jsonresult.jsonresult,{\"skipInvalid\":true})\n }\n\n copyToClipboardJson(){\n var textArea= document.createElement(\"textarea\");\n textArea.value = JSON.stringify(this.jsonresult.jsonresult);\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n copyToClipboardYaml(){\n var textArea= document.createElement(\"textarea\");\n textArea.value = this.yamlTemplate\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n validateTemplate(value){\n this.showSpinner=true;\n var s3params={\n Body: JSON.stringify(this.jsonresult.jsonresult),\n ACL: \"authenticated-read\",\n Bucket:value.bucket,\n Key:value.filename\n }\n \n var s3=new AWS.S3({\n region:value.region,\n accessKeyId:value.access_key,\n secretAccessKey:value.secret_access_key\n });\n s3.putObject(s3params,(err,data)=>{\n if(err){\n console.log(err, err.stack);\n this.s3message=err;\n this.uploadColor=\"red\";\n }\n else{\n this.s3message=\"object uploaded successfully on S3\";\n this.uploadColor=\"green\"\n var url=\"https://s3-\" + value.region + \".amazonaws.com/\" + value.bucket + \"/\"+value.filename;\n var cloudformation = new AWS.CloudFormation({\n region:value.region,\n accessKeyId:value.access_key,\n secretAccessKey:value.secret_access_key\n });\n var cloudformationParams={\n TemplateURL: url\n }\n cloudformation.validateTemplate(cloudformationParams, (err, data)=>{\n if(err){\n console.log(err,err.stack);\n this.message=err;\n this.validateColor=\"red\"\n }\n else{\n this.message=\"Validation successful\";\n this.validateColor=\"green\"\n }\n })\n }\n })\n\n\n }\n\n ngOnInit() {\n } \n}\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3RyYW5zZm9ybS90cmFuc2Zvcm0uY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<form (submit)=\\\"onDone(myForm.value)\\\" #myForm=\\\"ngForm\\\" >\\n<mat-form-field>\\n <input type=\\\"text\\\" matInput ngModel placeholder=\\\"comma delimited list\\\" name=\\\"transform\\\" required >\\n</mat-form-field>\\n<mat-icon [matTooltip]=\\\"transformInfo\\\" >info</mat-icon>\\n<br>\\n<button color=\\\"primary\\\" [disabled]=\\\"myForm.invalid\\\" mat-icon-button type=\\\"submit\\\" matTooltip=\\\"Add to Transform section.\\\" >\\n <mat-icon>done</mat-icon>\\n</button>\\n<button color=\\\"warn\\\" [disabled]=\\\"myForm.invalid\\\" mat-icon-button type=\\\"button\\\" (click)=\\\"onRemove()\\\" matTooltip=\\\"Remove Transform section entirely.\\\" >\\n <mat-icon>remove_all</mat-icon>\\n</button>\\n</form>\"","import { Component, OnInit } from '@angular/core';\nimport { JsonResultService } from '../json-result.service';\nimport { UsefulUtilsService } from '../useful-utils.service';\n\n@Component({\n selector: 'app-transform',\n templateUrl: './transform.component.html',\n styleUrls: ['./transform.component.css']\n})\nexport class TransformComponent implements OnInit {\n\n transformInfo=\"Provide a list of Strings separated by commas. You can declare one or more macros within a template. AWS CloudFormation executes macros in the order that they are specified. When you create a change set, AWS CloudFormation generates a change set that includes the processed template content. You can then review the changes and execute the change set. AWS CloudFormation also supports the AWS::Serverless and AWS::Include transforms, which are macros hosted by AWS CloudFormation. The AWS::Serverless transform specifies the version of the AWS Serverless Application Model (AWS SAM) to use e.g. AWS::Serverless-2016-10-31. This model defines the AWS SAM syntax that you can use and how AWS CloudFormation processes it. The AWS::Include transform works with template snippets that are stored separately from the main AWS CloudFormation template, You can insert these snippets into your main template using it.\"\n constructor(public jsonresult:JsonResultService, public util:UsefulUtilsService ) { }\n\n ngOnInit() {\n }\n\n onDone(value){\n this.jsonresult.jsonresult.Transform= (value.transform as String).split(\",\");\n }\n\n onRemove(){\n this.jsonresult.jsonresult.Transform=undefined\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ResourceSyntax } from './resource-view/resource-list';\nvar yaml = require('js-yaml')\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsefulUtilsService {\n\n constructor() { }\n getProperJson(val){\n try{\n //any function, any object, not for array of strings or arrays of objects.\n if((val as String).includes(\"{\") && !(val as String).includes(\"{{\") ){\n return JSON.parse(val);\n }\n else{\n if((val as String).includes(\"{{\")){\n console.log(val)\n //var dynamicVal = (val as String)\n if((val as String).length!=0){\n try {\n return JSON.parse(JSON.parse(JSON.stringify(val)))\n }\n catch (e) {\n console.log(e)\n return val\n }\n }\n //return (val as String).length!=0? JSON.parse(JSON.parse(JSON.stringify(val))) :undefined\n }\n else{\n return (val as String).length!=0?val:undefined\n }\n }\n }\n catch(e){\n alert(\"Oops! An error occurred. Please check the input field type.\");\n console.log(e)\n }\n };\n\n getPropertyDialogJson(val){\n try{\n //any function, any object, not for array of strings or arrays of objects.\n if((val as String).includes(\"{\") && !(val as String).includes(\"{{\") ){\n return JSON.parse(val);\n }\n else{\n if((val as String).includes(\"{{\")){\n return (val as String).length!=0?val:undefined\n }\n else{\n return (val as String).length!=0?val:undefined\n }\n }\n }\n catch(e){\n alert(\"Oops! An error occurred. Please check the input field type.\");\n console.log(e)\n }\n };\n\n\n getArray(val){\n try {\n if((val as String).includes(\"{\")){\n //console.log(\"in array of objects...\")\n return JSON.parse(val);\n }\n else{\n //console.log(\"in array of strings...\")\n return val.length!=0?((val as String).split(\",\")):undefined;\n } \n } catch (error) {\n alert(\"Oops! An error occurred. Please check the input field type\");\n console.log(error)\n }\n }\n\n getSemicolonArray(val){\n try{\n if((val as String).includes(\"{\")){\n if ((val as String).includes(\"Fn::Split\")){\n return JSON.parse(val);\n }else{\n var kk=((val as String).split(\";\"));\n var mm =[]\n kk.forEach((i)=>{\n if((i as String).includes(\"{\") && !(val as String).includes(\"{{\") ){\n mm.push(JSON.parse(i));\n }else if((i as String).includes(\"{{\")){\n try {\n mm.push(JSON.parse(JSON.parse(JSON.stringify(i))))\n }\n catch (err) {\n console.log(err)\n mm.push(i)\n }\n }\n else{\n mm.push(i);\n }\n })\n return mm; \n }\n }\n else{\n return val.length!=0?((val as String).split(\";\")):undefined\n }\n }\n catch(error){\n alert(\"Oops! An Error occurred. Please check the input field type\")\n console.log(error)\n } \n }\n\n doUnescape(val){\n //var kk = this.getProperJson(val);\n if(typeof(val)=='string'){\n return val.replace('\\\\n',\"\\n\")\n }\n else{\n return val;\n }\n }\n\n\n addCommonProperties(value:ResourceSyntax){\n value[\"Properties\"][\"DeletionPolicy\"]=\"With the DeletionPolicy attribute you can preserve or (in some cases) backup a resource when its stack is deleted.Possible values : 'Delete', 'Retain','Snapshot'. Snapshot applies to ec2volume, elasticcache-cachecluster and replication group, rds-dbcluster and dbinstance, redshift-cluster, neptune-dbcluster\";\n value[\"Properties\"][\"DependsOn\"]=[\"List of strings. When you add a DependsOn attribute to a resource, that resource is created only after the creation of the resource specified in the DependsOn attribute.\"];\n value[\"Properties\"][\"UpdateReplacePolicy\"]=\"If you update a resource property that requires that the resource be replaced, AWS CloudFormation recreates the resource during the update. By default, AWS CloudFormation then deletes the old resource. Using the UpdateReplacePolicy, you can specify that AWS CloudFormation retain or (in some cases) create a snapshot of the old resource. Acceptable values : Retain, Delete, Snapshot\";\n value[\"Properties\"][\"Condition\"]=\"Use the Condition key and a condition's logical ID to associate it with a resource or output. you can create a condition and then associate it with a resource or output so that AWS CloudFormation only creates the resource or output if the condition is true. Similarly you can associate the condition with a property so that AWS CloudFormation only sets the property to a specific value if the condition is true. If the condition is false, AWS CloudFormation sets the property to a different value that you specify.\";\n value[\"Properties\"][\"Metadata\"]= {\"info\":\"The Metadata attribute enables you to associate structured data with a resource. By adding a Metadata attribute to a resource, you can add data in JSON or YAML to the resource declaration. AWS CloudFormation does not validate the syntax within the Metadata attribute. AWS CloudFormation won't recognize some template changes as an update, such as changes to a deletion policy, update policy, condition declaration, or output declaration. If you need to make such changes without making any other change, you can add or modify a metadata attribute for any of your resources. You can retrieve this data using the AWS command aws cloudformation describe-stack-resource. Note: Use the AWS::CloudFormation::Init type to include metadata on an Amazon EC2 instance for the cfn-init helper script. If your template calls the cfn-init script, the script looks for resource metadata rooted in the AWS::CloudFormation::Init metadata key. \"}\n return value;\n }\n\n copyToClipboardYaml(yamlTemplate){\n yamlTemplate = yaml.safeDump(yamlTemplate,{\"skipInvalid\":true})\n var textArea= document.createElement(\"textarea\");\n textArea.value = yamlTemplate\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","/* (ignored) */"],"sourceRoot":""}