etude_for_aws 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +103 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +10 -0
  6. data/Dockerfile +17 -0
  7. data/Dockerfile-dev +20 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +89 -0
  10. data/Guardfile +22 -0
  11. data/Jenkinsfile +11 -0
  12. data/README.md +26 -0
  13. data/Rakefile +12 -0
  14. data/Vagrantfile +15 -0
  15. data/bin/aws_console.rb +10 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/circle.yml +22 -0
  19. data/config.yml +124 -0
  20. data/docker-compose.yml +9 -0
  21. data/docs/README.md +54 -0
  22. data/docs/_config.yml +6 -0
  23. data/docs/dev/cfm/cfm.md +9 -0
  24. data/docs/dev/cfm/images/vpc_core_model.png +0 -0
  25. data/docs/dev/cfm/images/vpc_type1.png +0 -0
  26. data/docs/dev/cfm/images/vpc_type2.png +0 -0
  27. data/docs/dev/cfm/images/vpc_type3.png +0 -0
  28. data/docs/dev/cfm/images/vpc_type4.png +0 -0
  29. data/docs/dev/cfm/images/vpc_type5.png +0 -0
  30. data/docs/dev/cfm/images/vpc_type6.png +0 -0
  31. data/docs/dev/cfm/images/vpc_type7.png +0 -0
  32. data/docs/dev/cfm/vpc/core_model.puml +35 -0
  33. data/docs/dev/cfm/vpc/vpc.md +39 -0
  34. data/docs/dev/cfm/vpc/vpc_type1.puml +17 -0
  35. data/docs/dev/cfm/vpc/vpc_type2.puml +23 -0
  36. data/docs/dev/cfm/vpc/vpc_type3.puml +24 -0
  37. data/docs/dev/cfm/vpc/vpc_type4.puml +23 -0
  38. data/docs/dev/cfm/vpc/vpc_type5.puml +25 -0
  39. data/docs/dev/cfm/vpc/vpc_type6.puml +26 -0
  40. data/docs/dev/cfm/vpc/vpc_type7.puml +39 -0
  41. data/docs/dev/ec2/core_model.puml +43 -0
  42. data/docs/dev/ec2/ec2.md +36 -0
  43. data/docs/dev/ec2/ec2_type1.puml +27 -0
  44. data/docs/dev/ec2/ec2_type2.puml +43 -0
  45. data/docs/dev/ec2/ec2_type3.puml +44 -0
  46. data/docs/dev/ec2/ec2_type4.puml +43 -0
  47. data/docs/dev/ec2/ec2_type5.puml +45 -0
  48. data/docs/dev/ec2/ec2_type6.puml +46 -0
  49. data/docs/dev/ec2/ec2_type7.puml +79 -0
  50. data/docs/dev/ec2/images/.keep +0 -0
  51. data/docs/dev/ec2/images/ec2_core_model.png +0 -0
  52. data/docs/dev/ec2/images/ec2_type1.png +0 -0
  53. data/docs/dev/ec2/images/ec2_type2.png +0 -0
  54. data/docs/dev/ec2/images/ec2_type3.png +0 -0
  55. data/docs/dev/ec2/images/ec2_type4.png +0 -0
  56. data/docs/dev/ec2/images/ec2_type5.png +0 -0
  57. data/docs/dev/ec2/images/ec2_type6.png +0 -0
  58. data/docs/dev/ec2/images/ec2_type7.png +0 -0
  59. data/docs/dev/vpc/core_model.puml +49 -0
  60. data/docs/dev/vpc/images/core_model.png +0 -0
  61. data/docs/dev/vpc/images/simple.png +0 -0
  62. data/docs/dev/vpc/images/standard.png +0 -0
  63. data/docs/dev/vpc/simple.puml +17 -0
  64. data/docs/dev/vpc/standard.puml +24 -0
  65. data/docs/dev/vpc/vpc.md +19 -0
  66. data/docs/ops/build_aws_sdk_repl.md +19 -0
  67. data/docs/ops/images/.keep +0 -0
  68. data/docs/ops/run_rake_task.md +89 -0
  69. data/docs/ops/ship_circleci.md +9 -0
  70. data/docs/ops/ship_jenkins.md +20 -0
  71. data/docs/ops/ship_ruby_gem.md +26 -0
  72. data/docs/template_catalog.md +6 -0
  73. data/docs/template_pattern.md +13 -0
  74. data/docs/template_recipe.md +6 -0
  75. data/docs/template_spec.md +8 -0
  76. data/etude_for_aws.gemspec +41 -0
  77. data/etude_for_aws.iml +42 -0
  78. data/exe/etude_for_aws +3 -0
  79. data/lib/etude_for_aws.rb +38 -0
  80. data/lib/etude_for_aws/cfm/configuration.rb +39 -0
  81. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-1subnet-pub.template +529 -0
  82. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub-pri.template +790 -0
  83. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub.template +634 -0
  84. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pri.template +645 -0
  85. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub-pri.template +611 -0
  86. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub.template +646 -0
  87. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-4subnet-pub-pri.template +1010 -0
  88. data/lib/etude_for_aws/cfm/vpc/null_vpc.rb +13 -0
  89. data/lib/etude_for_aws/cfm/vpc/one_az_one_public_subnet_vpc.rb +45 -0
  90. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_and_private_subnet_vpc.rb +47 -0
  91. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_subnet_vpc.rb +47 -0
  92. data/lib/etude_for_aws/cfm/vpc/two_az_one_public_subnet_and_private_subnet_vpc.rb +52 -0
  93. data/lib/etude_for_aws/cfm/vpc/two_az_two_private_subnet_vpc.rb +38 -0
  94. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_and_private_subnet_vpc.rb +38 -0
  95. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_vpc.rb +38 -0
  96. data/lib/etude_for_aws/cfm/vpc/vpc.rb +104 -0
  97. data/lib/etude_for_aws/ec2/configuration.rb +66 -0
  98. data/lib/etude_for_aws/ec2/ec2.rb +218 -0
  99. data/lib/etude_for_aws/ec2/ec2_api_gateway.rb +127 -0
  100. data/lib/etude_for_aws/ec2/ec2_instance.rb +107 -0
  101. data/lib/etude_for_aws/ec2/key_pair.rb +46 -0
  102. data/lib/etude_for_aws/ec2/security_group.rb +75 -0
  103. data/lib/etude_for_aws/ec2/vpc_interface.rb +11 -0
  104. data/lib/etude_for_aws/helpers/certification_helper.rb +16 -0
  105. data/lib/etude_for_aws/helpers/configuration_helper.rb +103 -0
  106. data/lib/etude_for_aws/tasks/cfm.rake +73 -0
  107. data/lib/etude_for_aws/tasks/ec2.rake +210 -0
  108. data/lib/etude_for_aws/tasks/vpc.rake +47 -0
  109. data/lib/etude_for_aws/version.rb +3 -0
  110. data/lib/etude_for_aws/vpc/configuration.rb +77 -0
  111. data/lib/etude_for_aws/vpc/customer_gateway.rb +28 -0
  112. data/lib/etude_for_aws/vpc/internet_gateway.rb +15 -0
  113. data/lib/etude_for_aws/vpc/route_table.rb +42 -0
  114. data/lib/etude_for_aws/vpc/simple_vpc.rb +57 -0
  115. data/lib/etude_for_aws/vpc/standard_vpc.rb +94 -0
  116. data/lib/etude_for_aws/vpc/subnet.rb +22 -0
  117. data/lib/etude_for_aws/vpc/vpc.rb +147 -0
  118. data/lib/etude_for_aws/vpc/vpc_api_gateway.rb +277 -0
  119. data/lib/etude_for_aws/vpc/vpc_director.rb +43 -0
  120. data/lib/etude_for_aws/vpc/vpn.rb +244 -0
  121. data/lib/etude_for_aws/vpc/vpn_connection.rb +28 -0
  122. data/lib/etude_for_aws/vpc/vpn_director.rb +47 -0
  123. data/lib/etude_for_aws/vpc/vpn_gateway.rb +36 -0
  124. metadata +280 -0
@@ -0,0 +1,646 @@
1
+ {
2
+ "AWSTemplateFormatVersion": "2010-09-09",
3
+ "Description": "AWS CloudFormation Sample Template.",
4
+ "Parameters" : {
5
+ "AZ1" : {
6
+ "Default" : "ap-northeast-1a",
7
+ "Description" : "AZ",
8
+ "Type" : "String",
9
+ "AllowedValues" : [ "ap-northeast-1a","ap-northeast-1c","us-west-2a","us-west-2b","us-west-2c" ],
10
+ "ConstraintDescription" : "must select a valid availability zone."
11
+ },
12
+ "AZ2" : {
13
+ "Default" : "ap-northeast-1c",
14
+ "Description" : "AZ",
15
+ "Type" : "String",
16
+ "AllowedValues" : [ "ap-northeast-1a","ap-northeast-1c","us-west-2a","us-west-2b","us-west-2c" ],
17
+ "ConstraintDescription" : "must select a valid availability zone."
18
+ }
19
+ },
20
+ "Mappings": {
21
+ "SubnetConfig": {
22
+ "VPC": {
23
+ "CIDR": "10.0.0.0/16"
24
+ },
25
+ "Public-1a": {
26
+ "CIDR": "10.0.0.0/24"
27
+ },
28
+ "Public-1c": {
29
+ "CIDR": "10.0.1.0/24"
30
+ }
31
+ }
32
+ },
33
+ "Resources": {
34
+ "VPC": {
35
+ "Type": "AWS::EC2::VPC",
36
+ "Properties": {
37
+ "CidrBlock": {
38
+ "Fn::FindInMap": [
39
+ "SubnetConfig",
40
+ "VPC",
41
+ "CIDR"
42
+ ]
43
+ },
44
+ "Tags": [
45
+ {
46
+ "Key": "Application",
47
+ "Value": {
48
+ "Ref": "AWS::StackId"
49
+ }
50
+ },
51
+ {
52
+ "Key": "Network",
53
+ "Value": "Public"
54
+ }
55
+ ]
56
+ },
57
+ "Metadata": {
58
+ "AWS::CloudFormation::Designer": {
59
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
60
+ }
61
+ }
62
+ },
63
+ "PublicSubnet1a": {
64
+ "Type": "AWS::EC2::Subnet",
65
+ "Properties": {
66
+ "VpcId": {
67
+ "Ref": "VPC"
68
+ },
69
+ "CidrBlock": {
70
+ "Fn::FindInMap": [
71
+ "SubnetConfig",
72
+ "Public-1a",
73
+ "CIDR"
74
+ ]
75
+ },
76
+ "AvailabilityZone": {"Ref": "AZ1"},
77
+ "Tags": [
78
+ {
79
+ "Key": "Application",
80
+ "Value": {
81
+ "Ref": "AWS::StackId"
82
+ }
83
+ },
84
+ {
85
+ "Key": "Network",
86
+ "Value": "Public"
87
+ }
88
+ ]
89
+ },
90
+ "Metadata": {
91
+ "AWS::CloudFormation::Designer": {
92
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
93
+ }
94
+ }
95
+ },
96
+ "PublicSubnet1c": {
97
+ "Type": "AWS::EC2::Subnet",
98
+ "Properties": {
99
+ "VpcId": {
100
+ "Ref": "VPC"
101
+ },
102
+ "CidrBlock": {
103
+ "Fn::FindInMap": [
104
+ "SubnetConfig",
105
+ "Public-1c",
106
+ "CIDR"
107
+ ]
108
+ },
109
+ "AvailabilityZone": {"Ref": "AZ2"},
110
+ "Tags": [
111
+ {
112
+ "Key": "Application",
113
+ "Value": {
114
+ "Ref": "AWS::StackId"
115
+ }
116
+ },
117
+ {
118
+ "Key": "Network",
119
+ "Value": "Public"
120
+ }
121
+ ]
122
+ },
123
+ "Metadata": {
124
+ "AWS::CloudFormation::Designer": {
125
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
126
+ }
127
+ }
128
+ },
129
+ "InternetGateway": {
130
+ "Type": "AWS::EC2::InternetGateway",
131
+ "Properties": {
132
+ "Tags": [
133
+ {
134
+ "Key": "Application",
135
+ "Value": {
136
+ "Ref": "AWS::StackId"
137
+ }
138
+ },
139
+ {
140
+ "Key": "Network",
141
+ "Value": "Public"
142
+ }
143
+ ]
144
+ },
145
+ "Metadata": {
146
+ "AWS::CloudFormation::Designer": {
147
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
148
+ }
149
+ }
150
+ },
151
+ "GatewayToInternet": {
152
+ "Type": "AWS::EC2::VPCGatewayAttachment",
153
+ "Properties": {
154
+ "VpcId": {
155
+ "Ref": "VPC"
156
+ },
157
+ "InternetGatewayId": {
158
+ "Ref": "InternetGateway"
159
+ }
160
+ },
161
+ "Metadata": {
162
+ "AWS::CloudFormation::Designer": {
163
+ "id": "92a83719-48bf-4e04-a3cd-0f8b99305053"
164
+ }
165
+ }
166
+ },
167
+ "PublicRouteTable": {
168
+ "Type": "AWS::EC2::RouteTable",
169
+ "Properties": {
170
+ "VpcId": {
171
+ "Ref": "VPC"
172
+ },
173
+ "Tags": [
174
+ {
175
+ "Key": "Application",
176
+ "Value": {
177
+ "Ref": "AWS::StackId"
178
+ }
179
+ },
180
+ {
181
+ "Key": "Network",
182
+ "Value": "Public"
183
+ }
184
+ ]
185
+ },
186
+ "Metadata": {
187
+ "AWS::CloudFormation::Designer": {
188
+ "id": "35457506-b697-467e-925b-61a48305e0da"
189
+ }
190
+ }
191
+ },
192
+ "PublicRoute": {
193
+ "Type": "AWS::EC2::Route",
194
+ "DependsOn": "GatewayToInternet",
195
+ "Properties": {
196
+ "RouteTableId": {
197
+ "Ref": "PublicRouteTable"
198
+ },
199
+ "DestinationCidrBlock": "0.0.0.0/0",
200
+ "GatewayId": {
201
+ "Ref": "InternetGateway"
202
+ }
203
+ },
204
+ "Metadata": {
205
+ "AWS::CloudFormation::Designer": {
206
+ "id": "3b3697f1-2874-4073-847a-c2814e9c4336"
207
+ }
208
+ }
209
+ },
210
+ "PublicSubnetRouteTableAssociation1a": {
211
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
212
+ "Properties": {
213
+ "SubnetId": {
214
+ "Ref": "PublicSubnet1a"
215
+ },
216
+ "RouteTableId": {
217
+ "Ref": "PublicRouteTable"
218
+ }
219
+ },
220
+ "Metadata": {
221
+ "AWS::CloudFormation::Designer": {
222
+ "id": "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61"
223
+ }
224
+ }
225
+ },
226
+ "PublicSubnetRouteTableAssociation1c": {
227
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
228
+ "Properties": {
229
+ "SubnetId": {
230
+ "Ref": "PublicSubnet1c"
231
+ },
232
+ "RouteTableId": {
233
+ "Ref": "PublicRouteTable"
234
+ }
235
+ },
236
+ "Metadata": {
237
+ "AWS::CloudFormation::Designer": {
238
+ "id": "ff1a00b2-0c71-4500-a421-08255279d2f0"
239
+ }
240
+ }
241
+ },
242
+ "PublicNetworkAcl": {
243
+ "Type": "AWS::EC2::NetworkAcl",
244
+ "Properties": {
245
+ "VpcId": {
246
+ "Ref": "VPC"
247
+ },
248
+ "Tags": [
249
+ {
250
+ "Key": "Application",
251
+ "Value": {
252
+ "Ref": "AWS::StackId"
253
+ }
254
+ },
255
+ {
256
+ "Key": "Network",
257
+ "Value": "Public"
258
+ }
259
+ ]
260
+ },
261
+ "Metadata": {
262
+ "AWS::CloudFormation::Designer": {
263
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
264
+ }
265
+ }
266
+ },
267
+ "InboundHTTPPublicNetworkAclEntry": {
268
+ "Type": "AWS::EC2::NetworkAclEntry",
269
+ "Properties": {
270
+ "NetworkAclId": {
271
+ "Ref": "PublicNetworkAcl"
272
+ },
273
+ "RuleNumber": "100",
274
+ "Protocol": "6",
275
+ "RuleAction": "allow",
276
+ "Egress": "false",
277
+ "CidrBlock": "0.0.0.0/0",
278
+ "PortRange": {
279
+ "From": "80",
280
+ "To": "80"
281
+ }
282
+ },
283
+ "Metadata": {
284
+ "AWS::CloudFormation::Designer": {
285
+ "id": "fc400079-4e29-449d-9261-802c07e90664"
286
+ }
287
+ }
288
+ },
289
+ "InboundHTTPSPublicNetworkAclEntry": {
290
+ "Type": "AWS::EC2::NetworkAclEntry",
291
+ "Properties": {
292
+ "NetworkAclId": {
293
+ "Ref": "PublicNetworkAcl"
294
+ },
295
+ "RuleNumber": "101",
296
+ "Protocol": "6",
297
+ "RuleAction": "allow",
298
+ "Egress": "false",
299
+ "CidrBlock": "0.0.0.0/0",
300
+ "PortRange": {
301
+ "From": "443",
302
+ "To": "443"
303
+ }
304
+ },
305
+ "Metadata": {
306
+ "AWS::CloudFormation::Designer": {
307
+ "id": "8b8f955d-4b13-43ad-bd92-88a983aba05e"
308
+ }
309
+ }
310
+ },
311
+ "InboundSSHPublicNetworkAclEntry": {
312
+ "Type": "AWS::EC2::NetworkAclEntry",
313
+ "Properties": {
314
+ "NetworkAclId": {
315
+ "Ref": "PublicNetworkAcl"
316
+ },
317
+ "RuleNumber": "102",
318
+ "Protocol": "6",
319
+ "RuleAction": "allow",
320
+ "Egress": "false",
321
+ "CidrBlock": "0.0.0.0/0",
322
+ "PortRange": {
323
+ "From": "22",
324
+ "To": "22"
325
+ }
326
+ },
327
+ "Metadata": {
328
+ "AWS::CloudFormation::Designer": {
329
+ "id": "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966"
330
+ }
331
+ }
332
+ },
333
+ "InboundEphemeralPublicNetworkAclEntry": {
334
+ "Type": "AWS::EC2::NetworkAclEntry",
335
+ "Properties": {
336
+ "NetworkAclId": {
337
+ "Ref": "PublicNetworkAcl"
338
+ },
339
+ "RuleNumber": "103",
340
+ "Protocol": "6",
341
+ "RuleAction": "allow",
342
+ "Egress": "false",
343
+ "CidrBlock": "0.0.0.0/0",
344
+ "PortRange": {
345
+ "From": "1024",
346
+ "To": "65535"
347
+ }
348
+ },
349
+ "Metadata": {
350
+ "AWS::CloudFormation::Designer": {
351
+ "id": "f22aa599-4f7e-4715-a098-41e10c081523"
352
+ }
353
+ }
354
+ },
355
+ "OutboundPublicNetworkAclEntry": {
356
+ "Type": "AWS::EC2::NetworkAclEntry",
357
+ "Properties": {
358
+ "NetworkAclId": {
359
+ "Ref": "PublicNetworkAcl"
360
+ },
361
+ "RuleNumber": "100",
362
+ "Protocol": "6",
363
+ "RuleAction": "allow",
364
+ "Egress": "true",
365
+ "CidrBlock": "0.0.0.0/0",
366
+ "PortRange": {
367
+ "From": "0",
368
+ "To": "65535"
369
+ }
370
+ },
371
+ "Metadata": {
372
+ "AWS::CloudFormation::Designer": {
373
+ "id": "6a00b44b-c40f-4464-aad5-1d54e3772398"
374
+ }
375
+ }
376
+ },
377
+ "PublicSubnetNetworkAclAssociation1a": {
378
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
379
+ "Properties": {
380
+ "SubnetId": {
381
+ "Ref": "PublicSubnet1a"
382
+ },
383
+ "NetworkAclId": {
384
+ "Ref": "PublicNetworkAcl"
385
+ }
386
+ },
387
+ "Metadata": {
388
+ "AWS::CloudFormation::Designer": {
389
+ "id": "de86ddc8-8415-41a5-a905-b1bda5ba3fed"
390
+ }
391
+ }
392
+ },
393
+ "PublicSubnetNetworkAclAssociation1c": {
394
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
395
+ "Properties": {
396
+ "SubnetId": {
397
+ "Ref": "PublicSubnet1c"
398
+ },
399
+ "NetworkAclId": {
400
+ "Ref": "PublicNetworkAcl"
401
+ }
402
+ },
403
+ "Metadata": {
404
+ "AWS::CloudFormation::Designer": {
405
+ "id": "353e5d2f-7968-4636-a916-b4d1305ad23f"
406
+ }
407
+ }
408
+ }
409
+ },
410
+ "Outputs": {
411
+ "VPCID" : {
412
+ "Value" : { "Ref" : "VPC" },
413
+ "Description" : "VPC ID"
414
+ },
415
+ "SUBNETPUB1" : {
416
+ "Value" : { "Ref" : "PublicSubnet1a" },
417
+ "Description" : "PublicSubnet1"
418
+ },
419
+ "SUBNETPUB2" : {
420
+ "Value" : { "Ref" : "PublicSubnet1c" },
421
+ "Description" : "PublicSubnet2 "
422
+ }
423
+ },
424
+ "Metadata": {
425
+ "AWS::CloudFormation::Designer": {
426
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666": {
427
+ "size": {
428
+ "width": 60,
429
+ "height": 60
430
+ },
431
+ "position": {
432
+ "x": 870,
433
+ "y": 570
434
+ },
435
+ "z": 1,
436
+ "embeds": []
437
+ },
438
+ "36f558fe-7a2b-4a24-9edb-3b9a10d33217": {
439
+ "size": {
440
+ "width": 1120,
441
+ "height": 470
442
+ },
443
+ "position": {
444
+ "x": -350,
445
+ "y": 530
446
+ },
447
+ "z": 1,
448
+ "embeds": [
449
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
450
+ "35457506-b697-467e-925b-61a48305e0da",
451
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0",
452
+ "d17f3169-9687-4907-ac33-04ce215fded7"
453
+ ]
454
+ },
455
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766": {
456
+ "size": {
457
+ "width": 300,
458
+ "height": 380
459
+ },
460
+ "position": {
461
+ "x": -310,
462
+ "y": 570
463
+ },
464
+ "z": 2,
465
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
466
+ "embeds": [
467
+ "6a00b44b-c40f-4464-aad5-1d54e3772398",
468
+ "f22aa599-4f7e-4715-a098-41e10c081523",
469
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966",
470
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e",
471
+ "fc400079-4e29-449d-9261-802c07e90664"
472
+ ]
473
+ },
474
+ "6a00b44b-c40f-4464-aad5-1d54e3772398": {
475
+ "size": {
476
+ "width": 60,
477
+ "height": 60
478
+ },
479
+ "position": {
480
+ "x": -250,
481
+ "y": 830
482
+ },
483
+ "z": 3,
484
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
485
+ "embeds": []
486
+ },
487
+ "f22aa599-4f7e-4715-a098-41e10c081523": {
488
+ "size": {
489
+ "width": 60,
490
+ "height": 60
491
+ },
492
+ "position": {
493
+ "x": -140,
494
+ "y": 790
495
+ },
496
+ "z": 3,
497
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
498
+ "embeds": []
499
+ },
500
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966": {
501
+ "size": {
502
+ "width": 60,
503
+ "height": 60
504
+ },
505
+ "position": {
506
+ "x": -250,
507
+ "y": 610
508
+ },
509
+ "z": 3,
510
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
511
+ "embeds": []
512
+ },
513
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e": {
514
+ "size": {
515
+ "width": 60,
516
+ "height": 60
517
+ },
518
+ "position": {
519
+ "x": -250,
520
+ "y": 720
521
+ },
522
+ "z": 3,
523
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
524
+ "embeds": []
525
+ },
526
+ "fc400079-4e29-449d-9261-802c07e90664": {
527
+ "size": {
528
+ "width": 60,
529
+ "height": 60
530
+ },
531
+ "position": {
532
+ "x": -140,
533
+ "y": 690
534
+ },
535
+ "z": 3,
536
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
537
+ "embeds": []
538
+ },
539
+ "35457506-b697-467e-925b-61a48305e0da": {
540
+ "size": {
541
+ "width": 180,
542
+ "height": 330
543
+ },
544
+ "position": {
545
+ "x": 510,
546
+ "y": 580
547
+ },
548
+ "z": 2,
549
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
550
+ "embeds": [
551
+ "3b3697f1-2874-4073-847a-c2814e9c4336"
552
+ ]
553
+ },
554
+ "92a83719-48bf-4e04-a3cd-0f8b99305053": {
555
+ "source": {
556
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
557
+ },
558
+ "target": {
559
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
560
+ },
561
+ "z": 1
562
+ },
563
+ "3b3697f1-2874-4073-847a-c2814e9c4336": {
564
+ "size": {
565
+ "width": 60,
566
+ "height": 60
567
+ },
568
+ "position": {
569
+ "x": 560,
570
+ "y": 720
571
+ },
572
+ "z": 3,
573
+ "parent": "35457506-b697-467e-925b-61a48305e0da",
574
+ "embeds": [],
575
+ "references": [
576
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
577
+ ],
578
+ "dependson": [
579
+ "92a83719-48bf-4e04-a3cd-0f8b99305053"
580
+ ]
581
+ },
582
+ "d17f3169-9687-4907-ac33-04ce215fded7": {
583
+ "size": {
584
+ "width": 290,
585
+ "height": 120
586
+ },
587
+ "position": {
588
+ "x": 90,
589
+ "y": 630
590
+ },
591
+ "z": 2,
592
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
593
+ "embeds": []
594
+ },
595
+ "de86ddc8-8415-41a5-a905-b1bda5ba3fed": {
596
+ "source": {
597
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
598
+ },
599
+ "target": {
600
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
601
+ },
602
+ "z": 2
603
+ },
604
+ "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61": {
605
+ "source": {
606
+ "id": "35457506-b697-467e-925b-61a48305e0da"
607
+ },
608
+ "target": {
609
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
610
+ },
611
+ "z": 2
612
+ },
613
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0": {
614
+ "size": {
615
+ "width": 290,
616
+ "height": 100
617
+ },
618
+ "position": {
619
+ "x": 90,
620
+ "y": 790
621
+ },
622
+ "z": 2,
623
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
624
+ "embeds": []
625
+ },
626
+ "ff1a00b2-0c71-4500-a421-08255279d2f0": {
627
+ "source": {
628
+ "id": "35457506-b697-467e-925b-61a48305e0da"
629
+ },
630
+ "target": {
631
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
632
+ },
633
+ "z": 2
634
+ },
635
+ "353e5d2f-7968-4636-a916-b4d1305ad23f": {
636
+ "source": {
637
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
638
+ },
639
+ "target": {
640
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
641
+ },
642
+ "z": 2
643
+ }
644
+ }
645
+ }
646
+ }